π
← Back to Categories
CCISCOM Sequence (Canada Cargo/Train Manifest response - EDI350)
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
GCCIH Sequence (Canada Cargo/Train Manifest response - EDI350)
Objective: Orchestrates key processes including Initialize Program Control, Prepare IH Notification Data, Format CCN Status Message, Send Initial IMS Message, Write Message Log, and other related sub-functions.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start CCN Status Notification]:::start
B[1:Initialize Program Control]:::process
C[2:Prepare IH Notification Data]:::process
D[3:Format CCN Status Message]:::process
E[4:Send Initial IMS Message]:::process
F[5:Write Message Log]:::process
G[6:Purge IMS Message]:::process
H[End Process]:::final
IMS[(IMS_PCB)]:::datasource
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
IMS -.->|Process Message| E
IMS -.->|Log Message| F
IMS -.->|Cleanup Message| G
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 begins message processing → the current program name is saved and the module name becomes the active program 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_1InitializeProgramControl(["Start Step"])
E_1InitializeProgramControl(["End Step"])
N_1InitializeProgramControl_Node0{"The system begins message
processing"}:::decision N_1InitializeProgramControl_Node0_action["The current program name is saved
and the module name becomes the
active program identifier"]:::main N_1InitializeProgramControl_Node0 -- Yes --> N_1InitializeProgramControl_Node0_action N_1InitializeProgramControl_Node0_action --> E_1InitializeProgramControl S_1InitializeProgramControl --> N_1InitializeProgramControl_Node0 N_1InitializeProgramControl_Node0 -- No --> E_1InitializeProgramControl
processing"}:::decision N_1InitializeProgramControl_Node0_action["The current program name is saved
and the module name becomes the
active program identifier"]:::main N_1InitializeProgramControl_Node0 -- Yes --> N_1InitializeProgramControl_Node0_action N_1InitializeProgramControl_Node0_action --> E_1InitializeProgramControl S_1InitializeProgramControl --> N_1InitializeProgramControl_Node0 N_1InitializeProgramControl_Node0 -- No --> E_1InitializeProgramControl
File: GCCIH.cbl
GIVEN:
A message processing operation is initiated
WHEN:
The system begins message processing
THEN:
- The current program name is saved
- The module name becomes the active program identifier
β Consolidated Acceptance Criteria
- The notification data structure is being prepared → the input structure is initialized and security byte is set to high values for maximum security
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2PrepareIHNotificationData(["Start Step"])
E_2PrepareIHNotificationData(["End Step"])
N_2PrepareIHNotificationData_Node0{"The notification data structure is
being prepared"}:::decision N_2PrepareIHNotificationData_Node0_action["The input structure is initialized
and security byte is set to high
values for maximum security"]:::main N_2PrepareIHNotificationData_Node0 -- Yes --> N_2PrepareIHNotificationData_Node0_action N_2PrepareIHNotificationData_Node0_action --> E_2PrepareIHNotificationData S_2PrepareIHNotificationData --> N_2PrepareIHNotificationData_Node0 N_2PrepareIHNotificationData_Node0 -- No --> E_2PrepareIHNotificationData
being prepared"}:::decision N_2PrepareIHNotificationData_Node0_action["The input structure is initialized
and security byte is set to high
values for maximum security"]:::main N_2PrepareIHNotificationData_Node0 -- Yes --> N_2PrepareIHNotificationData_Node0_action N_2PrepareIHNotificationData_Node0_action --> E_2PrepareIHNotificationData S_2PrepareIHNotificationData --> N_2PrepareIHNotificationData_Node0 N_2PrepareIHNotificationData_Node0 -- No --> E_2PrepareIHNotificationData
File: GCCIH.cbl
GIVEN:
A new IH notification needs to be processed
WHEN:
The notification data structure is being prepared
THEN:
- The input structure is initialized
- Security byte is set to high values for maximum security
β Consolidated Acceptance Criteria
- The CCN status message is being formatted → the 91-byte input data is moved to positions 2-91 of the message structure and the formatted input is copied to the message area
- The message is prepared for transmission → the accept status is set to spaces to indicate a cleared/ready 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_3FormatCCNStatusMessage(["Start Step"])
E_3FormatCCNStatusMessage(["End Step"])
N_3FormatCCNStatusMessage_Node0{"The CCN status message is being
formatted"}:::decision N_3FormatCCNStatusMessage_Node0_action["The 91-byte input data is moved to
positions 2-91 of the message
structure and the formatted input is
copied to the message area"]:::main N_3FormatCCNStatusMessage_Node0 -- Yes --> N_3FormatCCNStatusMessage_Node0_action N_3FormatCCNStatusMessage_Node0_action --> E_3FormatCCNStatusMessage S_3FormatCCNStatusMessage --> N_3FormatCCNStatusMessage_Node0 N_3FormatCCNStatusMessage_Node1{"The message is prepared for
transmission"}:::decision N_3FormatCCNStatusMessage_Node1_action["The accept status is set to spaces
to indicate a clearedready state"]:::main N_3FormatCCNStatusMessage_Node1 -- Yes --> N_3FormatCCNStatusMessage_Node1_action N_3FormatCCNStatusMessage_Node1_action --> E_3FormatCCNStatusMessage N_3FormatCCNStatusMessage_Node0 -- No --> N_3FormatCCNStatusMessage_Node1 N_3FormatCCNStatusMessage_Node1 -- No --> E_3FormatCCNStatusMessage
formatted"}:::decision N_3FormatCCNStatusMessage_Node0_action["The 91-byte input data is moved to
positions 2-91 of the message
structure and the formatted input is
copied to the message area"]:::main N_3FormatCCNStatusMessage_Node0 -- Yes --> N_3FormatCCNStatusMessage_Node0_action N_3FormatCCNStatusMessage_Node0_action --> E_3FormatCCNStatusMessage S_3FormatCCNStatusMessage --> N_3FormatCCNStatusMessage_Node0 N_3FormatCCNStatusMessage_Node1{"The message is prepared for
transmission"}:::decision N_3FormatCCNStatusMessage_Node1_action["The accept status is set to spaces
to indicate a clearedready state"]:::main N_3FormatCCNStatusMessage_Node1 -- Yes --> N_3FormatCCNStatusMessage_Node1_action N_3FormatCCNStatusMessage_Node1_action --> E_3FormatCCNStatusMessage N_3FormatCCNStatusMessage_Node0 -- No --> N_3FormatCCNStatusMessage_Node1 N_3FormatCCNStatusMessage_Node1 -- No --> E_3FormatCCNStatusMessage
File: GCCIH.cbl
GIVEN:
IH notification data is prepared with security controls
WHEN:
The CCN status message is being formatted
THEN:
- The 91-byte input data is moved to positions 2-91 of the message structure
- The formatted input is copied to the message area
File: GCCIH.cbl
GIVEN:
A CCN status message is formatted and ready for processing
WHEN:
The message is prepared for transmission
THEN:
The accept status is set to spaces to indicate a cleared/ready state
β Consolidated Acceptance Criteria
- The message is sent for initial processing → the CIMS service is invoked with change operation parameters to process 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_4SendInitialIMSMessage(["Start Step"])
E_4SendInitialIMSMessage(["End Step"])
N_4SendInitialIMSMessage_Node0{"The message is sent for initial
processing"}:::decision N_4SendInitialIMSMessage_Node0_action["The CIMS service is invoked with
change operation parameters to
process the message"]:::main N_4SendInitialIMSMessage_Node0 -- Yes --> N_4SendInitialIMSMessage_Node0_action N_4SendInitialIMSMessage_Node0_action --> E_4SendInitialIMSMessage S_4SendInitialIMSMessage --> N_4SendInitialIMSMessage_Node0 N_4SendInitialIMSMessage_Node0 -- No --> E_4SendInitialIMSMessage
processing"}:::decision N_4SendInitialIMSMessage_Node0_action["The CIMS service is invoked with
change operation parameters to
process the message"]:::main N_4SendInitialIMSMessage_Node0 -- Yes --> N_4SendInitialIMSMessage_Node0_action N_4SendInitialIMSMessage_Node0_action --> E_4SendInitialIMSMessage S_4SendInitialIMSMessage --> N_4SendInitialIMSMessage_Node0 N_4SendInitialIMSMessage_Node0 -- No --> E_4SendInitialIMSMessage
File: GCCIH.cbl
GIVEN:
A formatted CCN status message with cleared accept status
WHEN:
The message is sent for initial processing
THEN:
The CIMS service is invoked with change operation parameters to process the message
β Consolidated Acceptance Criteria
- The message logging is performed → the WRITMSGL service is invoked with message code, content, length, and module name for complete 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_5WriteMessageLog(["Start Step"])
E_5WriteMessageLog(["End Step"])
N_5WriteMessageLog_Node0{"The message logging is performed"}:::decision
N_5WriteMessageLog_Node0_action["The WRITMSGL service is invoked
with message code, content, length,
and module name for complete audit
logging"]:::main N_5WriteMessageLog_Node0 -- Yes --> N_5WriteMessageLog_Node0_action N_5WriteMessageLog_Node0_action --> E_5WriteMessageLog S_5WriteMessageLog --> N_5WriteMessageLog_Node0 N_5WriteMessageLog_Node0 -- No --> E_5WriteMessageLog
with message code, content, length,
and module name for complete audit
logging"]:::main N_5WriteMessageLog_Node0 -- Yes --> N_5WriteMessageLog_Node0_action N_5WriteMessageLog_Node0_action --> E_5WriteMessageLog S_5WriteMessageLog --> N_5WriteMessageLog_Node0 N_5WriteMessageLog_Node0 -- No --> E_5WriteMessageLog
File: GCCIH.cbl
GIVEN:
A message has been processed through initial IMS processing
WHEN:
The message logging is performed
THEN:
The WRITMSGL service is invoked with message code, content, length, and module name for complete audit logging
β Consolidated Acceptance Criteria
- The cleanup operation is performed → the CIMS service is invoked with purge operation to remove the processed message from the 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_6PurgeIMSMessage(["Start Step"])
E_6PurgeIMSMessage(["End Step"])
N_6PurgeIMSMessage_Node0{"The cleanup operation is performed"}:::decision
N_6PurgeIMSMessage_Node0_action["The CIMS service is invoked with
purge operation to remove the
processed message from the system"]:::main N_6PurgeIMSMessage_Node0 -- Yes --> N_6PurgeIMSMessage_Node0_action N_6PurgeIMSMessage_Node0_action --> E_6PurgeIMSMessage S_6PurgeIMSMessage --> N_6PurgeIMSMessage_Node0 N_6PurgeIMSMessage_Node0 -- No --> E_6PurgeIMSMessage
purge operation to remove the
processed message from the system"]:::main N_6PurgeIMSMessage_Node0 -- Yes --> N_6PurgeIMSMessage_Node0_action N_6PurgeIMSMessage_Node0_action --> E_6PurgeIMSMessage S_6PurgeIMSMessage --> N_6PurgeIMSMessage_Node0 N_6PurgeIMSMessage_Node0 -- No --> E_6PurgeIMSMessage
File: GCCIH.cbl
GIVEN:
A message has been processed and logged successfully
WHEN:
The cleanup operation is performed
THEN:
The CIMS service is invoked with purge operation to remove the processed message from the system
β Consolidated Acceptance Criteria
- The system needs to track the current program context → the current program identifier must be saved to preserve execution 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_SaveCurrentProgramNameCCPROGPROGNAMESAVED(["Start Step"])
E_SaveCurrentProgramNameCCPROGPROGNAMESAVED(["End Step"])
N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0{"The system needs to track the
current program context"}:::decision N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0_action["The current program identifier must
be saved to preserve execution
context"]:::main N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0 -- Yes --> N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0_action N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0_action --> E_SaveCurrentProgramNameCCPROGPROGNAMESAVED S_SaveCurrentProgramNameCCPROGPROGNAMESAVED --> N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0 N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0 -- No --> E_SaveCurrentProgramNameCCPROGPROGNAMESAVED
current program context"}:::decision N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0_action["The current program identifier must
be saved to preserve execution
context"]:::main N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0 -- Yes --> N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0_action N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0_action --> E_SaveCurrentProgramNameCCPROGPROGNAMESAVED S_SaveCurrentProgramNameCCPROGPROGNAMESAVED --> N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0 N_SaveCurrentProgramNameCCPROGPROGNAMESAVED_Node0 -- No --> E_SaveCurrentProgramNameCCPROGPROGNAMESAVED
File: GCCIH.cbl
GIVEN:
A program control initialization process is starting
WHEN:
The system needs to track the current program context
THEN:
The current program identifier must be saved to preserve execution context
β Consolidated Acceptance Criteria
- The system switches to module execution mode → the module name must be assigned as the current program identifier 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_SetModuleNameforTrackingMODULENAMECCPROG(["Start Step"])
E_SetModuleNameforTrackingMODULENAMECCPROG(["End Step"])
N_SetModuleNameforTrackingMODULENAMECCPROG_Node0{"The system switches to module
execution mode"}:::decision N_SetModuleNameforTrackingMODULENAMECCPROG_Node0_action["The module name must be assigned as
the current program identifier for
tracking purposes"]:::main N_SetModuleNameforTrackingMODULENAMECCPROG_Node0 -- Yes --> N_SetModuleNameforTrackingMODULENAMECCPROG_Node0_action N_SetModuleNameforTrackingMODULENAMECCPROG_Node0_action --> E_SetModuleNameforTrackingMODULENAMECCPROG S_SetModuleNameforTrackingMODULENAMECCPROG --> N_SetModuleNameforTrackingMODULENAMECCPROG_Node0 N_SetModuleNameforTrackingMODULENAMECCPROG_Node0 -- No --> E_SetModuleNameforTrackingMODULENAMECCPROG
execution mode"}:::decision N_SetModuleNameforTrackingMODULENAMECCPROG_Node0_action["The module name must be assigned as
the current program identifier for
tracking purposes"]:::main N_SetModuleNameforTrackingMODULENAMECCPROG_Node0 -- Yes --> N_SetModuleNameforTrackingMODULENAMECCPROG_Node0_action N_SetModuleNameforTrackingMODULENAMECCPROG_Node0_action --> E_SetModuleNameforTrackingMODULENAMECCPROG S_SetModuleNameforTrackingMODULENAMECCPROG --> N_SetModuleNameforTrackingMODULENAMECCPROG_Node0 N_SetModuleNameforTrackingMODULENAMECCPROG_Node0 -- No --> E_SetModuleNameforTrackingMODULENAMECCPROG
File: GCCIH.cbl
GIVEN:
The current program context has been preserved
WHEN:
The system switches to module execution mode
THEN:
The module name must be assigned as the current program identifier for tracking purposes
β Consolidated Acceptance Criteria
- The system begins preparing the IH notification data → the GCX153-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_ClearInputStructure(["Start Step"])
E_ClearInputStructure(["End Step"])
N_ClearInputStructure_Node0{"The system begins preparing the IH
notification data"}:::decision N_ClearInputStructure_Node0_action["The GCX153-INPUT structure is
initialized to clear any previous
data"]:::main N_ClearInputStructure_Node0 -- Yes --> N_ClearInputStructure_Node0_action N_ClearInputStructure_Node0_action --> E_ClearInputStructure S_ClearInputStructure --> N_ClearInputStructure_Node0 N_ClearInputStructure_Node0 -- No --> E_ClearInputStructure
notification data"}:::decision N_ClearInputStructure_Node0_action["The GCX153-INPUT structure is
initialized to clear any previous
data"]:::main N_ClearInputStructure_Node0 -- Yes --> N_ClearInputStructure_Node0_action N_ClearInputStructure_Node0_action --> E_ClearInputStructure S_ClearInputStructure --> N_ClearInputStructure_Node0 N_ClearInputStructure_Node0 -- No --> E_ClearInputStructure
File: GCCIH.cbl
GIVEN:
A CCN status notification needs to be processed
WHEN:
The system begins preparing the IH notification data
THEN:
The GCX153-INPUT structure is initialized to clear any previous data
β Consolidated Acceptance Criteria
- Security parameters need to be established → the GCX153-SECURITY-BYTE is set to HIGH-VALUES to enforce 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_SetSecurityParameterstoHighValues(["Start Step"])
E_SetSecurityParameterstoHighValues(["End Step"])
N_SetSecurityParameterstoHighValues_Node0{"Security parameters need to be
established"}:::decision N_SetSecurityParameterstoHighValues_Node0_action["The GCX153-SECURITY-BYTE is set to
HIGH-VALUES to enforce maximum
security level"]:::main N_SetSecurityParameterstoHighValues_Node0 -- Yes --> N_SetSecurityParameterstoHighValues_Node0_action N_SetSecurityParameterstoHighValues_Node0_action --> E_SetSecurityParameterstoHighValues S_SetSecurityParameterstoHighValues --> N_SetSecurityParameterstoHighValues_Node0 N_SetSecurityParameterstoHighValues_Node0 -- No --> E_SetSecurityParameterstoHighValues
established"}:::decision N_SetSecurityParameterstoHighValues_Node0_action["The GCX153-SECURITY-BYTE is set to
HIGH-VALUES to enforce maximum
security level"]:::main N_SetSecurityParameterstoHighValues_Node0 -- Yes --> N_SetSecurityParameterstoHighValues_Node0_action N_SetSecurityParameterstoHighValues_Node0_action --> E_SetSecurityParameterstoHighValues S_SetSecurityParameterstoHighValues --> N_SetSecurityParameterstoHighValues_Node0 N_SetSecurityParameterstoHighValues_Node0 -- No --> E_SetSecurityParameterstoHighValues
File: GCCIH.cbl
GIVEN:
The input structure has been initialized for CCN status notification
WHEN:
Security parameters need to be established
THEN:
The GCX153-SECURITY-BYTE is set to HIGH-VALUES to enforce maximum security level
β Consolidated Acceptance Criteria
- CCN status data needs to be loaded into the notification structure → 91 bytes of GCWIH data are moved to positions 2-91 of GCX153-INPUT 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_InputStructureReadyforCCNStatus(["Start Step"])
E_InputStructureReadyforCCNStatus(["End Step"])
N_InputStructureReadyforCCNStatus_Node0{"CCN status data needs to be loaded
into the notification structure"}:::decision N_InputStructureReadyforCCNStatus_Node0_action["91 bytes of GCWIH data are moved to
positions 2-91 of GCX153-INPUT
structure"]:::main N_InputStructureReadyforCCNStatus_Node0 -- Yes --> N_InputStructureReadyforCCNStatus_Node0_action N_InputStructureReadyforCCNStatus_Node0_action --> E_InputStructureReadyforCCNStatus S_InputStructureReadyforCCNStatus --> N_InputStructureReadyforCCNStatus_Node0 N_InputStructureReadyforCCNStatus_Node0 -- No --> E_InputStructureReadyforCCNStatus
into the notification structure"}:::decision N_InputStructureReadyforCCNStatus_Node0_action["91 bytes of GCWIH data are moved to
positions 2-91 of GCX153-INPUT
structure"]:::main N_InputStructureReadyforCCNStatus_Node0 -- Yes --> N_InputStructureReadyforCCNStatus_Node0_action N_InputStructureReadyforCCNStatus_Node0_action --> E_InputStructureReadyforCCNStatus S_InputStructureReadyforCCNStatus --> N_InputStructureReadyforCCNStatus_Node0 N_InputStructureReadyforCCNStatus_Node0 -- No --> E_InputStructureReadyforCCNStatus
File: GCCIH.cbl
GIVEN:
The input structure is initialized and security parameters are set
WHEN:
CCN status data needs to be loaded into the notification structure
THEN:
91 bytes of GCWIH data are moved to positions 2-91 of GCX153-INPUT structure
β Consolidated Acceptance Criteria
- CCN data extraction is initiated → 91 bytes of CCN data are extracted from GCWIH starting at 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_ExtractCCNDatafromGCWIH(["Start Step"])
E_ExtractCCNDatafromGCWIH(["End Step"])
N_ExtractCCNDatafromGCWIH_Node0{"CCN data extraction is initiated"}:::decision
N_ExtractCCNDatafromGCWIH_Node0_action["91 bytes of CCN data are extracted
from GCWIH starting at position 1"]:::main N_ExtractCCNDatafromGCWIH_Node0 -- Yes --> N_ExtractCCNDatafromGCWIH_Node0_action N_ExtractCCNDatafromGCWIH_Node0_action --> E_ExtractCCNDatafromGCWIH S_ExtractCCNDatafromGCWIH --> N_ExtractCCNDatafromGCWIH_Node0 N_ExtractCCNDatafromGCWIH_Node0 -- No --> E_ExtractCCNDatafromGCWIH
from GCWIH starting at position 1"]:::main N_ExtractCCNDatafromGCWIH_Node0 -- Yes --> N_ExtractCCNDatafromGCWIH_Node0_action N_ExtractCCNDatafromGCWIH_Node0_action --> E_ExtractCCNDatafromGCWIH S_ExtractCCNDatafromGCWIH --> N_ExtractCCNDatafromGCWIH_Node0 N_ExtractCCNDatafromGCWIH_Node0 -- No --> E_ExtractCCNDatafromGCWIH
File: GCCIH.cbl
GIVEN:
GCWIH input structure contains CCN data in positions 1 through 91
WHEN:
CCN data extraction is initiated
THEN:
91 bytes of CCN data are extracted from GCWIH starting at position 1
β Consolidated Acceptance Criteria
- CCN data is moved to the input structure → cCN data is placed in positions 2 through 92 of GCX153-INPUT structure
- Security initialization is performed → the security byte is set to HIGH-VALUES indicating 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_MoveCCNDatatoInputStructurePosition292(["Start Step"])
E_MoveCCNDatatoInputStructurePosition292(["End Step"])
N_MoveCCNDatatoInputStructurePosition292_Node0{"CCN data is moved to the input
structure"}:::decision N_MoveCCNDatatoInputStructurePosition292_Node0_action["CCN data is placed in positions 2
through 92 of GCX153-INPUT structure"]:::main N_MoveCCNDatatoInputStructurePosition292_Node0 -- Yes --> N_MoveCCNDatatoInputStructurePosition292_Node0_action N_MoveCCNDatatoInputStructurePosition292_Node0_action --> E_MoveCCNDatatoInputStructurePosition292 S_MoveCCNDatatoInputStructurePosition292 --> N_MoveCCNDatatoInputStructurePosition292_Node0 N_MoveCCNDatatoInputStructurePosition292_Node1{"Security initialization is
performed"}:::decision N_MoveCCNDatatoInputStructurePosition292_Node1_action["The security byte is set to
HIGH-VALUES indicating maximum
security level"]:::main N_MoveCCNDatatoInputStructurePosition292_Node1 -- Yes --> N_MoveCCNDatatoInputStructurePosition292_Node1_action N_MoveCCNDatatoInputStructurePosition292_Node1_action --> E_MoveCCNDatatoInputStructurePosition292 N_MoveCCNDatatoInputStructurePosition292_Node0 -- No --> N_MoveCCNDatatoInputStructurePosition292_Node1 N_MoveCCNDatatoInputStructurePosition292_Node1 -- No --> E_MoveCCNDatatoInputStructurePosition292
structure"}:::decision N_MoveCCNDatatoInputStructurePosition292_Node0_action["CCN data is placed in positions 2
through 92 of GCX153-INPUT structure"]:::main N_MoveCCNDatatoInputStructurePosition292_Node0 -- Yes --> N_MoveCCNDatatoInputStructurePosition292_Node0_action N_MoveCCNDatatoInputStructurePosition292_Node0_action --> E_MoveCCNDatatoInputStructurePosition292 S_MoveCCNDatatoInputStructurePosition292 --> N_MoveCCNDatatoInputStructurePosition292_Node0 N_MoveCCNDatatoInputStructurePosition292_Node1{"Security initialization is
performed"}:::decision N_MoveCCNDatatoInputStructurePosition292_Node1_action["The security byte is set to
HIGH-VALUES indicating maximum
security level"]:::main N_MoveCCNDatatoInputStructurePosition292_Node1 -- Yes --> N_MoveCCNDatatoInputStructurePosition292_Node1_action N_MoveCCNDatatoInputStructurePosition292_Node1_action --> E_MoveCCNDatatoInputStructurePosition292 N_MoveCCNDatatoInputStructurePosition292_Node0 -- No --> N_MoveCCNDatatoInputStructurePosition292_Node1 N_MoveCCNDatatoInputStructurePosition292_Node1 -- No --> E_MoveCCNDatatoInputStructurePosition292
File: GCCIH.cbl
GIVEN:
91 bytes of CCN data have been extracted from GCWIH
WHEN:
CCN data is moved to the input structure
THEN:
CCN data is placed in positions 2 through 92 of GCX153-INPUT structure
File: GCCIH.cbl
GIVEN:
A CCN status message is being prepared
WHEN:
Security initialization is performed
THEN:
The security byte is set to HIGH-VALUES indicating maximum security level
β Consolidated Acceptance Criteria
- Message structure transfer is initiated → the complete formatted input is transferred to GCT1531E-MSG for IH 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_TransferFormattedInputtoIHMessageStructure(["Start Step"])
E_TransferFormattedInputtoIHMessageStructure(["End Step"])
N_TransferFormattedInputtoIHMessageStructure_Node0{"Message structure transfer is
initiated"}:::decision N_TransferFormattedInputtoIHMessageStructure_Node0_action["The complete formatted input is
transferred to GCT1531E-MSG for IH
processing"]:::main N_TransferFormattedInputtoIHMessageStructure_Node0 -- Yes --> N_TransferFormattedInputtoIHMessageStructure_Node0_action N_TransferFormattedInputtoIHMessageStructure_Node0_action --> E_TransferFormattedInputtoIHMessageStructure S_TransferFormattedInputtoIHMessageStructure --> N_TransferFormattedInputtoIHMessageStructure_Node0 N_TransferFormattedInputtoIHMessageStructure_Node0 -- No --> E_TransferFormattedInputtoIHMessageStructure
initiated"}:::decision N_TransferFormattedInputtoIHMessageStructure_Node0_action["The complete formatted input is
transferred to GCT1531E-MSG for IH
processing"]:::main N_TransferFormattedInputtoIHMessageStructure_Node0 -- Yes --> N_TransferFormattedInputtoIHMessageStructure_Node0_action N_TransferFormattedInputtoIHMessageStructure_Node0_action --> E_TransferFormattedInputtoIHMessageStructure S_TransferFormattedInputtoIHMessageStructure --> N_TransferFormattedInputtoIHMessageStructure_Node0 N_TransferFormattedInputtoIHMessageStructure_Node0 -- No --> E_TransferFormattedInputtoIHMessageStructure
File: GCCIH.cbl
GIVEN:
GCX153-INPUT structure contains properly formatted CCN data with security byte
WHEN:
Message structure transfer is initiated
THEN:
The complete formatted input is transferred to GCT1531E-MSG for IH processing
β Consolidated Acceptance Criteria
- System calls CIMS program with CHNG function using CCCOM, ALT-PCB, and GCT1531E parameters → iMS message processing is initiated for the prepared 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_ExecuteCIMSCallwithCHNGFunction(["Start Step"])
E_ExecuteCIMSCallwithCHNGFunction(["End Step"])
N_ExecuteCIMSCallwithCHNGFunction_Node0{"System calls CIMS program with CHNG
function using CCCOM, ALT-PCB, and
GCT1531E parameters"}:::decision N_ExecuteCIMSCallwithCHNGFunction_Node0_action["IMS message processing is initiated
for the prepared message"]:::main N_ExecuteCIMSCallwithCHNGFunction_Node0 -- Yes --> N_ExecuteCIMSCallwithCHNGFunction_Node0_action N_ExecuteCIMSCallwithCHNGFunction_Node0_action --> E_ExecuteCIMSCallwithCHNGFunction S_ExecuteCIMSCallwithCHNGFunction --> N_ExecuteCIMSCallwithCHNGFunction_Node0 N_ExecuteCIMSCallwithCHNGFunction_Node0 -- No --> E_ExecuteCIMSCallwithCHNGFunction
function using CCCOM, ALT-PCB, and
GCT1531E parameters"}:::decision N_ExecuteCIMSCallwithCHNGFunction_Node0_action["IMS message processing is initiated
for the prepared message"]:::main N_ExecuteCIMSCallwithCHNGFunction_Node0 -- Yes --> N_ExecuteCIMSCallwithCHNGFunction_Node0_action N_ExecuteCIMSCallwithCHNGFunction_Node0_action --> E_ExecuteCIMSCallwithCHNGFunction S_ExecuteCIMSCallwithCHNGFunction --> N_ExecuteCIMSCallwithCHNGFunction_Node0 N_ExecuteCIMSCallwithCHNGFunction_Node0 -- No --> E_ExecuteCIMSCallwithCHNGFunction
File: GCCIH.cbl
GIVEN:
Message input data has been prepared in GCX153-INPUT structure and accept status is cleared
WHEN:
System calls CIMS program with CHNG function using CCCOM, ALT-PCB, and GCT1531E parameters
THEN:
IMS message processing is initiated for the prepared message
β Consolidated Acceptance Criteria
- The system prepares logging parameters → the message code, message content, message length, and module name are made available for the logging 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_PrepareLogParameters(["Start Step"])
E_PrepareLogParameters(["End Step"])
N_PrepareLogParameters_Node0{"The system prepares logging
parameters"}:::decision N_PrepareLogParameters_Node0_action["The message code, message content,
message length, and module name are
made available for the logging
operation"]:::main N_PrepareLogParameters_Node0 -- Yes --> N_PrepareLogParameters_Node0_action N_PrepareLogParameters_Node0_action --> E_PrepareLogParameters S_PrepareLogParameters --> N_PrepareLogParameters_Node0 N_PrepareLogParameters_Node0 -- No --> E_PrepareLogParameters
parameters"}:::decision N_PrepareLogParameters_Node0_action["The message code, message content,
message length, and module name are
made available for the logging
operation"]:::main N_PrepareLogParameters_Node0 -- Yes --> N_PrepareLogParameters_Node0_action N_PrepareLogParameters_Node0_action --> E_PrepareLogParameters S_PrepareLogParameters --> N_PrepareLogParameters_Node0 N_PrepareLogParameters_Node0 -- No --> E_PrepareLogParameters
File: GCCIH.cbl
GIVEN:
A CCN status notification message needs to be logged
WHEN:
The system prepares logging parameters
THEN:
The message code, message content, message length, and module name are made available for the logging operation
β Consolidated Acceptance Criteria
- The system calls the WRITMSGL program with message code, message content, message length, and module name → the WRITMSGL program is invoked to log the CCN status notification 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_CallWRITMSGLProgram(["Start Step"])
E_CallWRITMSGLProgram(["End Step"])
N_CallWRITMSGLProgram_Node0{"The system calls the WRITMSGL
program with message code, message
content, message length, and module
name"}:::decision N_CallWRITMSGLProgram_Node0_action["The WRITMSGL program is invoked to
log the CCN status notification
message"]:::main N_CallWRITMSGLProgram_Node0 -- Yes --> N_CallWRITMSGLProgram_Node0_action N_CallWRITMSGLProgram_Node0_action --> E_CallWRITMSGLProgram S_CallWRITMSGLProgram --> N_CallWRITMSGLProgram_Node0 N_CallWRITMSGLProgram_Node0 -- No --> E_CallWRITMSGLProgram
program with message code, message
content, message length, and module
name"}:::decision N_CallWRITMSGLProgram_Node0_action["The WRITMSGL program is invoked to
log the CCN status notification
message"]:::main N_CallWRITMSGLProgram_Node0 -- Yes --> N_CallWRITMSGLProgram_Node0_action N_CallWRITMSGLProgram_Node0_action --> E_CallWRITMSGLProgram S_CallWRITMSGLProgram --> N_CallWRITMSGLProgram_Node0 N_CallWRITMSGLProgram_Node0 -- No --> E_CallWRITMSGLProgram
File: GCCIH.cbl
GIVEN:
All logging parameters are prepared for the CCN status message
WHEN:
The system calls the WRITMSGL program with message code, message content, message length, and module name
THEN:
The WRITMSGL program is invoked to log the CCN status notification message
β Consolidated Acceptance Criteria
- System initiates message cleanup process → cIMS program is called with PURG function to purge 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_ExecutePURGFunction(["Start Step"])
E_ExecutePURGFunction(["End Step"])
N_ExecutePURGFunction_Node0{"System initiates message cleanup
process"}:::decision N_ExecutePURGFunction_Node0_action["CIMS program is called with PURG
function to purge the message"]:::main N_ExecutePURGFunction_Node0 -- Yes --> N_ExecutePURGFunction_Node0_action N_ExecutePURGFunction_Node0_action --> E_ExecutePURGFunction S_ExecutePURGFunction --> N_ExecutePURGFunction_Node0 N_ExecutePURGFunction_Node0 -- No --> E_ExecutePURGFunction
process"}:::decision N_ExecutePURGFunction_Node0_action["CIMS program is called with PURG
function to purge the message"]:::main N_ExecutePURGFunction_Node0 -- Yes --> N_ExecutePURGFunction_Node0_action N_ExecutePURGFunction_Node0_action --> E_ExecutePURGFunction S_ExecutePURGFunction --> N_ExecutePURGFunction_Node0 N_ExecutePURGFunction_Node0 -- No --> E_ExecutePURGFunction
File: GCCIH.cbl
GIVEN:
Message processing has been completed and logged
WHEN:
System initiates message cleanup process
THEN:
CIMS program is called with PURG function to purge the message
β Consolidated Acceptance Criteria
- All message operations are completed → system returns control to the calling program to complete 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_CompleteMessageProcessing(["Start Step"])
E_CompleteMessageProcessing(["End Step"])
N_CompleteMessageProcessing_Node0{"All message operations are
completed"}:::decision N_CompleteMessageProcessing_Node0_action["System returns control to the
calling program to complete the
process"]:::main N_CompleteMessageProcessing_Node0 -- Yes --> N_CompleteMessageProcessing_Node0_action N_CompleteMessageProcessing_Node0_action --> E_CompleteMessageProcessing S_CompleteMessageProcessing --> N_CompleteMessageProcessing_Node0 N_CompleteMessageProcessing_Node0 -- No --> E_CompleteMessageProcessing
completed"}:::decision N_CompleteMessageProcessing_Node0_action["System returns control to the
calling program to complete the
process"]:::main N_CompleteMessageProcessing_Node0 -- Yes --> N_CompleteMessageProcessing_Node0_action N_CompleteMessageProcessing_Node0_action --> E_CompleteMessageProcessing S_CompleteMessageProcessing --> N_CompleteMessageProcessing_Node0 N_CompleteMessageProcessing_Node0 -- No --> E_CompleteMessageProcessing
File: GCCIH.cbl
GIVEN:
Message has been processed and purge function has been executed
WHEN:
All message operations are completed
THEN:
System returns control to the calling program to complete the process
GCCTBIO Sequence (Canada Cargo/Train Manifest response - EDI350)
Objective: Controls I/O for tabular (TB) manifest records. Reads and writes TB-formatted data blocks, reconciling internal record layouts with the external TB message structure required by US Customs.
πΊοΈ High-Level Visual Map
flowchart TD
A[Module Entry]:::start
B[1:Initialize Module Control]:::process
C[2:Clear Return Status]:::process
D[3:Validate Function Code]:::process
E{Function Code Valid?}:::decision
F[4:Set SSA Type for Get Operations]:::process
G[5:Set SSA Type for Next Operations]:::process
H[6:Set SSA Type for Insert Operations]:::process
I[7:Set SSA Type for Update/Delete Operations]:::process
J{Segment Type?}:::decision
K[8:Initialize Root Segment SSA]:::process
L[9:Initialize Dependent Segment SSA]:::process
M[10:Handle Dependent Segment Unqualified Access]:::process
N{PCB Selection?}:::decision
O[11:Route Root Segment Access]:::process
P[12:Execute Root Segment Database Call with Primary PCB]:::process
Q[13:Execute Root Segment Database Call with Secondary PCB]:::process
R[14:Route Dependent Segment Access]:::process
S[15:Execute Dependent Segment Database Call with Primary PCB]:::process
T[16:Execute Dependent Segment Database Call with Secondary PCB]:::process
U[17:Evaluate Operation Success]:::process
V{Operation Successful?}:::decision
W[Success]:::success
X[Error]:::error
Y[18:Restore Calling Program Context]:::process
Z[Module Exit]:::final
GCSTBRT[(GCSTBRT Root Segment)]:::datasource
GCSTBDP[(GCSTBDP Dependent Segment)]:::datasource
A --> B
B --> C
C --> D
D --> E
E -->|Valid| F
E -->|Invalid| X
F --> G
G --> H
H --> I
I --> J
J -->|Root Segment| K
J -->|Dependent Segment| L
K --> N
L --> M
M --> N
N -->|Primary PCB| O
N -->|Secondary PCB| O
O -->|Root Access| P
O -->|Root Access Alt| Q
O -->|Dependent Access| R
R -->|Primary PCB| S
R -->|Secondary PCB| T
P --> U
Q --> U
S --> U
T --> U
U --> V
V -->|Success| W
V -->|Failure| X
W --> Y
X --> Y
Y --> Z
GCSTBRT -.->|Read/Write Root Data| P
GCSTBRT -.->|Read/Write Root Data| Q
GCSTBRT -.->|Access Root Key| S
GCSTBRT -.->|Access Root Key| T
GCSTBDP -.->|Read/Write Dependent Data| S
GCSTBDP -.->|Read/Write Dependent Data| T
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 function code is not GHU, GU, GHN, GHNP, GN, GNP, ISRT, DLET, or REPL → the system marks the operation as not valid and prevents 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_3ValidateFunctionCode(["Start Step"])
E_3ValidateFunctionCode(["End Step"])
N_3ValidateFunctionCode_Node0{"The function code is not GHU, GU,
GHN, GHNP, GN, GNP, ISRT, DLET, or
REPL"}:::decision N_3ValidateFunctionCode_Node0_action["The system marks the operation as
not valid and prevents further
processing"]:::main N_3ValidateFunctionCode_Node0 -- Yes --> N_3ValidateFunctionCode_Node0_action N_3ValidateFunctionCode_Node0_action --> E_3ValidateFunctionCode S_3ValidateFunctionCode --> N_3ValidateFunctionCode_Node0 N_3ValidateFunctionCode_Node0 -- No --> E_3ValidateFunctionCode
GHN, GHNP, GN, GNP, ISRT, DLET, or
REPL"}:::decision N_3ValidateFunctionCode_Node0_action["The system marks the operation as
not valid and prevents further
processing"]:::main N_3ValidateFunctionCode_Node0 -- Yes --> N_3ValidateFunctionCode_Node0_action N_3ValidateFunctionCode_Node0_action --> E_3ValidateFunctionCode S_3ValidateFunctionCode --> N_3ValidateFunctionCode_Node0 N_3ValidateFunctionCode_Node0 -- No --> E_3ValidateFunctionCode
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A user requests a database operation with a function code
WHEN:
The function code is not GHU, GU, GHN, GHNP, GN, GNP, ISRT, DLET, or REPL
THEN:
- The system marks the operation as not valid
- Prevents further processing
β Consolidated Acceptance Criteria
- The function code is GHU (Get Hold Unique) or GU (Get Unique) → the system sets accept status to GE and configures qualified SSA for precise record targeting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4SetSSATypeforGetOperations(["Start Step"])
E_4SetSSATypeforGetOperations(["End Step"])
N_4SetSSATypeforGetOperations_Node0{"The function code is GHU Get Hold
Unique or GU Get Unique"}:::decision N_4SetSSATypeforGetOperations_Node0_action["The system sets accept status to GE
and configures qualified SSA for
precise record targeting"]:::main N_4SetSSATypeforGetOperations_Node0 -- Yes --> N_4SetSSATypeforGetOperations_Node0_action N_4SetSSATypeforGetOperations_Node0_action --> E_4SetSSATypeforGetOperations S_4SetSSATypeforGetOperations --> N_4SetSSATypeforGetOperations_Node0 N_4SetSSATypeforGetOperations_Node0 -- No --> E_4SetSSATypeforGetOperations
Unique or GU Get Unique"}:::decision N_4SetSSATypeforGetOperations_Node0_action["The system sets accept status to GE
and configures qualified SSA for
precise record targeting"]:::main N_4SetSSATypeforGetOperations_Node0 -- Yes --> N_4SetSSATypeforGetOperations_Node0_action N_4SetSSATypeforGetOperations_Node0_action --> E_4SetSSATypeforGetOperations S_4SetSSATypeforGetOperations --> N_4SetSSATypeforGetOperations_Node0 N_4SetSSATypeforGetOperations_Node0 -- No --> E_4SetSSATypeforGetOperations
File: GCCTBIO.cbl
GIVEN:
A user requests a database operation with a function code
WHEN:
The function code is GHU (Get Hold Unique) or GU (Get Unique)
THEN:
- The system sets accept status to ge
- Configures qualified ssa for precise record targeting
β Consolidated Acceptance Criteria
- The function code is GHN, GHNP, GN, or GNP (sequential navigation operations) → the system sets accept status to GAGBGEGK and determines SSA qualification based on unqualified SSA flag setting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5SetSSATypeforNextOperations(["Start Step"])
E_5SetSSATypeforNextOperations(["End Step"])
N_5SetSSATypeforNextOperations_Node0{"The function code is GHN, GHNP, GN,
or GNP sequential navigation
operations"}:::decision N_5SetSSATypeforNextOperations_Node0_action["The system sets accept status to
GAGBGEGK and determines SSA
qualification based on unqualified
SSA flag setting"]:::main N_5SetSSATypeforNextOperations_Node0 -- Yes --> N_5SetSSATypeforNextOperations_Node0_action N_5SetSSATypeforNextOperations_Node0_action --> E_5SetSSATypeforNextOperations S_5SetSSATypeforNextOperations --> N_5SetSSATypeforNextOperations_Node0 N_5SetSSATypeforNextOperations_Node0 -- No --> E_5SetSSATypeforNextOperations
or GNP sequential navigation
operations"}:::decision N_5SetSSATypeforNextOperations_Node0_action["The system sets accept status to
GAGBGEGK and determines SSA
qualification based on unqualified
SSA flag setting"]:::main N_5SetSSATypeforNextOperations_Node0 -- Yes --> N_5SetSSATypeforNextOperations_Node0_action N_5SetSSATypeforNextOperations_Node0_action --> E_5SetSSATypeforNextOperations S_5SetSSATypeforNextOperations --> N_5SetSSATypeforNextOperations_Node0 N_5SetSSATypeforNextOperations_Node0 -- No --> E_5SetSSATypeforNextOperations
File: GCCTBIO.cbl
GIVEN:
A user requests a database operation with a function code
WHEN:
The function code is GHN, GHNP, GN, or GNP (sequential navigation operations)
THEN:
- The system sets accept status to gagbgegk
- Determines ssa qualification based on unqualified ssa flag setting
β Consolidated Acceptance Criteria
- The function code is ISRT (Insert) → the system sets accept status to II and configures unqualified SSA for record insertion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6SetSSATypeforInsertOperations(["Start Step"])
E_6SetSSATypeforInsertOperations(["End Step"])
N_6SetSSATypeforInsertOperations_Node0{"The function code is ISRT Insert"}:::decision
N_6SetSSATypeforInsertOperations_Node0_action["The system sets accept status to II
and configures unqualified SSA for
record insertion"]:::main N_6SetSSATypeforInsertOperations_Node0 -- Yes --> N_6SetSSATypeforInsertOperations_Node0_action N_6SetSSATypeforInsertOperations_Node0_action --> E_6SetSSATypeforInsertOperations S_6SetSSATypeforInsertOperations --> N_6SetSSATypeforInsertOperations_Node0 N_6SetSSATypeforInsertOperations_Node0 -- No --> E_6SetSSATypeforInsertOperations
and configures unqualified SSA for
record insertion"]:::main N_6SetSSATypeforInsertOperations_Node0 -- Yes --> N_6SetSSATypeforInsertOperations_Node0_action N_6SetSSATypeforInsertOperations_Node0_action --> E_6SetSSATypeforInsertOperations S_6SetSSATypeforInsertOperations --> N_6SetSSATypeforInsertOperations_Node0 N_6SetSSATypeforInsertOperations_Node0 -- No --> E_6SetSSATypeforInsertOperations
File: GCCTBIO.cbl
GIVEN:
A user requests a database operation with a function code
WHEN:
The function code is ISRT (Insert)
THEN:
- The system sets accept status to ii
- Configures unqualified ssa for record insertion
β Consolidated Acceptance Criteria
- The function code is DLET (Delete) or REPL (Replace) → the system configures no SSA requirement for the modification 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_7SetSSATypeforUpdateDeleteOperations(["Start Step"])
E_7SetSSATypeforUpdateDeleteOperations(["End Step"])
N_7SetSSATypeforUpdateDeleteOperations_Node0{"The function code is DLET Delete or
REPL Replace"}:::decision N_7SetSSATypeforUpdateDeleteOperations_Node0_action["The system configures no SSA
requirement for the modification
operation"]:::main N_7SetSSATypeforUpdateDeleteOperations_Node0 -- Yes --> N_7SetSSATypeforUpdateDeleteOperations_Node0_action N_7SetSSATypeforUpdateDeleteOperations_Node0_action --> E_7SetSSATypeforUpdateDeleteOperations S_7SetSSATypeforUpdateDeleteOperations --> N_7SetSSATypeforUpdateDeleteOperations_Node0 N_7SetSSATypeforUpdateDeleteOperations_Node0 -- No --> E_7SetSSATypeforUpdateDeleteOperations
REPL Replace"}:::decision N_7SetSSATypeforUpdateDeleteOperations_Node0_action["The system configures no SSA
requirement for the modification
operation"]:::main N_7SetSSATypeforUpdateDeleteOperations_Node0 -- Yes --> N_7SetSSATypeforUpdateDeleteOperations_Node0_action N_7SetSSATypeforUpdateDeleteOperations_Node0_action --> E_7SetSSATypeforUpdateDeleteOperations S_7SetSSATypeforUpdateDeleteOperations --> N_7SetSSATypeforUpdateDeleteOperations_Node0 N_7SetSSATypeforUpdateDeleteOperations_Node0 -- No --> E_7SetSSATypeforUpdateDeleteOperations
File: GCCTBIO.cbl
GIVEN:
A user requests a database operation with a function code
WHEN:
The function code is DLET (Delete) or REPL (Replace)
THEN:
The system configures no SSA requirement for the modification operation
β Consolidated Acceptance Criteria
- The SSA flag indicates qualified search is required → the system sets the root segment key value for targeted 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_8InitializeRootSegmentSSA(["Start Step"])
E_8InitializeRootSegmentSSA(["End Step"])
N_8InitializeRootSegmentSSA_Node0{"The SSA flag indicates qualified
search is required"}:::decision N_8InitializeRootSegmentSSA_Node0_action["The system sets the root segment
key value for targeted access"]:::main N_8InitializeRootSegmentSSA_Node0 -- Yes --> N_8InitializeRootSegmentSSA_Node0_action N_8InitializeRootSegmentSSA_Node0_action --> E_8InitializeRootSegmentSSA S_8InitializeRootSegmentSSA --> N_8InitializeRootSegmentSSA_Node0 N_8InitializeRootSegmentSSA_Node0 -- No --> E_8InitializeRootSegmentSSA
search is required"}:::decision N_8InitializeRootSegmentSSA_Node0_action["The system sets the root segment
key value for targeted access"]:::main N_8InitializeRootSegmentSSA_Node0 -- Yes --> N_8InitializeRootSegmentSSA_Node0_action N_8InitializeRootSegmentSSA_Node0_action --> E_8InitializeRootSegmentSSA S_8InitializeRootSegmentSSA --> N_8InitializeRootSegmentSSA_Node0 N_8InitializeRootSegmentSSA_Node0 -- No --> E_8InitializeRootSegmentSSA
File: GCCTBIO.cbl
GIVEN:
A validated operation targets the root segment GCSTBRT
WHEN:
The SSA flag indicates qualified search is required
THEN:
The system sets the root segment key value for targeted access
β Consolidated Acceptance Criteria
- The unqualified SSA flag is not set → the system sets both root segment key value and dependent segment key value for hierarchical access
- The segment name is neither GCSTBRT (root) nor GCSTBDP (dependent) → the system marks the operation as not valid and prevents 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_9InitializeDependentSegmentSSA(["Start Step"])
E_9InitializeDependentSegmentSSA(["End Step"])
N_9InitializeDependentSegmentSSA_Node0{"The unqualified SSA flag is not set"}:::decision
N_9InitializeDependentSegmentSSA_Node0_action["The system sets both root segment
key value and dependent segment key
value for hierarchical access"]:::main N_9InitializeDependentSegmentSSA_Node0 -- Yes --> N_9InitializeDependentSegmentSSA_Node0_action N_9InitializeDependentSegmentSSA_Node0_action --> E_9InitializeDependentSegmentSSA S_9InitializeDependentSegmentSSA --> N_9InitializeDependentSegmentSSA_Node0 N_9InitializeDependentSegmentSSA_Node1{"The segment name is neither GCSTBRT
root nor GCSTBDP dependent"}:::decision N_9InitializeDependentSegmentSSA_Node1_action["The system marks the operation as
not valid and prevents database
access"]:::main N_9InitializeDependentSegmentSSA_Node1 -- Yes --> N_9InitializeDependentSegmentSSA_Node1_action N_9InitializeDependentSegmentSSA_Node1_action --> E_9InitializeDependentSegmentSSA N_9InitializeDependentSegmentSSA_Node0 -- No --> N_9InitializeDependentSegmentSSA_Node1 N_9InitializeDependentSegmentSSA_Node1 -- No --> E_9InitializeDependentSegmentSSA
key value and dependent segment key
value for hierarchical access"]:::main N_9InitializeDependentSegmentSSA_Node0 -- Yes --> N_9InitializeDependentSegmentSSA_Node0_action N_9InitializeDependentSegmentSSA_Node0_action --> E_9InitializeDependentSegmentSSA S_9InitializeDependentSegmentSSA --> N_9InitializeDependentSegmentSSA_Node0 N_9InitializeDependentSegmentSSA_Node1{"The segment name is neither GCSTBRT
root nor GCSTBDP dependent"}:::decision N_9InitializeDependentSegmentSSA_Node1_action["The system marks the operation as
not valid and prevents database
access"]:::main N_9InitializeDependentSegmentSSA_Node1 -- Yes --> N_9InitializeDependentSegmentSSA_Node1_action N_9InitializeDependentSegmentSSA_Node1_action --> E_9InitializeDependentSegmentSSA N_9InitializeDependentSegmentSSA_Node0 -- No --> N_9InitializeDependentSegmentSSA_Node1 N_9InitializeDependentSegmentSSA_Node1 -- No --> E_9InitializeDependentSegmentSSA
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A validated operation targets the dependent segment GCSTBDP with qualified SSA
WHEN:
The unqualified SSA flag is not set
THEN:
- The system sets both root segment key value
- Dependent segment key value for hierarchical access
File: GCCTBIO.cbl
GIVEN:
A validated operation specifies a segment name
WHEN:
The segment name is neither GCSTBRT (root) nor GCSTBDP (dependent)
THEN:
- The system marks the operation as not valid
- Prevents database access
β Consolidated Acceptance Criteria
- Either the unqualified SSA flag is set or the SSA flag indicates unqualified search → the system sets only the root segment key value and configures unqualified SSA for broader search scope
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_10HandleDependentSegmentUnqualifiedAccess(["Start Step"])
E_10HandleDependentSegmentUnqualifiedAccess(["End Step"])
N_10HandleDependentSegmentUnqualifiedAccess_Node0{"Either the unqualified SSA flag is
set or the SSA flag indicates
unqualified search"}:::decision N_10HandleDependentSegmentUnqualifiedAccess_Node0_action["The system sets only the root
segment key value and configures
unqualified SSA for broader search
scope"]:::main N_10HandleDependentSegmentUnqualifiedAccess_Node0 -- Yes --> N_10HandleDependentSegmentUnqualifiedAccess_Node0_action N_10HandleDependentSegmentUnqualifiedAccess_Node0_action --> E_10HandleDependentSegmentUnqualifiedAccess S_10HandleDependentSegmentUnqualifiedAccess --> N_10HandleDependentSegmentUnqualifiedAccess_Node0 N_10HandleDependentSegmentUnqualifiedAccess_Node0 -- No --> E_10HandleDependentSegmentUnqualifiedAccess
set or the SSA flag indicates
unqualified search"}:::decision N_10HandleDependentSegmentUnqualifiedAccess_Node0_action["The system sets only the root
segment key value and configures
unqualified SSA for broader search
scope"]:::main N_10HandleDependentSegmentUnqualifiedAccess_Node0 -- Yes --> N_10HandleDependentSegmentUnqualifiedAccess_Node0_action N_10HandleDependentSegmentUnqualifiedAccess_Node0_action --> E_10HandleDependentSegmentUnqualifiedAccess S_10HandleDependentSegmentUnqualifiedAccess --> N_10HandleDependentSegmentUnqualifiedAccess_Node0 N_10HandleDependentSegmentUnqualifiedAccess_Node0 -- No --> E_10HandleDependentSegmentUnqualifiedAccess
File: GCCTBIO.cbl
GIVEN:
A validated operation targets the dependent segment GCSTBDP
WHEN:
Either the unqualified SSA flag is set or the SSA flag indicates unqualified search
THEN:
- The system sets only the root segment key value
- Configures unqualified ssa for broader search scope
β Consolidated Acceptance Criteria
- The operation is ready for database access → the system routes to primary PCB if second PCB flag is not set, otherwise routes to secondary 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_11RouteRootSegmentAccess(["Start Step"])
E_11RouteRootSegmentAccess(["End Step"])
N_11RouteRootSegmentAccess_Node0{"The operation is ready for database
access"}:::decision N_11RouteRootSegmentAccess_Node0_action["The system routes to primary PCB if
second PCB flag is not set,
otherwise routes to secondary PCB"]:::main N_11RouteRootSegmentAccess_Node0 -- Yes --> N_11RouteRootSegmentAccess_Node0_action N_11RouteRootSegmentAccess_Node0_action --> E_11RouteRootSegmentAccess S_11RouteRootSegmentAccess --> N_11RouteRootSegmentAccess_Node0 N_11RouteRootSegmentAccess_Node0 -- No --> E_11RouteRootSegmentAccess
access"}:::decision N_11RouteRootSegmentAccess_Node0_action["The system routes to primary PCB if
second PCB flag is not set,
otherwise routes to secondary PCB"]:::main N_11RouteRootSegmentAccess_Node0 -- Yes --> N_11RouteRootSegmentAccess_Node0_action N_11RouteRootSegmentAccess_Node0_action --> E_11RouteRootSegmentAccess S_11RouteRootSegmentAccess --> N_11RouteRootSegmentAccess_Node0 N_11RouteRootSegmentAccess_Node0 -- No --> E_11RouteRootSegmentAccess
File: GCCTBIO.cbl
GIVEN:
A validated operation targets the root segment with initialized SSA
WHEN:
The operation is ready for database access
THEN:
The system routes to primary PCB if second PCB flag is not set, otherwise routes to secondary PCB
β Consolidated Acceptance Criteria
- The SSA configuration determines the call parameters → the system calls CIMS with appropriate SSA parameters: qualified SSA for targeted access, unqualified SSA for broader access, or no SSA for direct 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_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB(["Start Step"])
E_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB(["End Step"])
N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0{"The SSA configuration determines
the call parameters"}:::decision N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0_action["The system calls CIMS with
appropriate SSA parameters:
qualified SSA for targeted access,
unqualified SSA for broader access,
or no SSA for direct operations"]:::main N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0 -- Yes --> N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0_action N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0_action --> E_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB S_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB --> N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0 N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0 -- No --> E_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB
the call parameters"}:::decision N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0_action["The system calls CIMS with
appropriate SSA parameters:
qualified SSA for targeted access,
unqualified SSA for broader access,
or no SSA for direct operations"]:::main N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0 -- Yes --> N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0_action N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0_action --> E_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB S_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB --> N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0 N_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB_Node0 -- No --> E_12ExecuteRootSegmentDatabaseCallwithPrimaryPCB
File: GCCTBIO.cbl
GIVEN:
A root segment operation is routed to primary PCB
WHEN:
The SSA configuration determines the call parameters
THEN:
The system calls CIMS with appropriate SSA parameters: qualified SSA for targeted access, unqualified SSA for broader access, or no SSA for direct operations
β Consolidated Acceptance Criteria
- The SSA configuration determines the call parameters → the system calls CIMS with secondary PCB and appropriate SSA parameters: qualified SSA for targeted access, unqualified SSA for broader access, or no SSA for direct 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_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB(["Start Step"])
E_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB(["End Step"])
N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0{"The SSA configuration determines
the call parameters"}:::decision N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0_action["The system calls CIMS with
secondary PCB and appropriate SSA
parameters: qualified SSA for
targeted access, unqualified SSA for
broader access, or no SSA for direct
operations"]:::main N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0 -- Yes --> N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0_action N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0_action --> E_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB S_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB --> N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0 N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0 -- No --> E_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB
the call parameters"}:::decision N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0_action["The system calls CIMS with
secondary PCB and appropriate SSA
parameters: qualified SSA for
targeted access, unqualified SSA for
broader access, or no SSA for direct
operations"]:::main N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0 -- Yes --> N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0_action N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0_action --> E_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB S_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB --> N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0 N_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB_Node0 -- No --> E_13ExecuteRootSegmentDatabaseCallwithSecondaryPCB
File: GCCTBIO.cbl
GIVEN:
A root segment operation is routed to secondary PCB
WHEN:
The SSA configuration determines the call parameters
THEN:
- The system calls cims with secondary pcb
- Appropriate ssa parameters: qualified ssa for targeted access, unqualified ssa for broader access, or no ssa for direct operations
β Consolidated Acceptance Criteria
- The operation is ready for database access → the system routes to primary PCB if second PCB flag is not set, otherwise routes to secondary 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_14RouteDependentSegmentAccess(["Start Step"])
E_14RouteDependentSegmentAccess(["End Step"])
N_14RouteDependentSegmentAccess_Node0{"The operation is ready for database
access"}:::decision N_14RouteDependentSegmentAccess_Node0_action["The system routes to primary PCB if
second PCB flag is not set,
otherwise routes to secondary PCB"]:::main N_14RouteDependentSegmentAccess_Node0 -- Yes --> N_14RouteDependentSegmentAccess_Node0_action N_14RouteDependentSegmentAccess_Node0_action --> E_14RouteDependentSegmentAccess S_14RouteDependentSegmentAccess --> N_14RouteDependentSegmentAccess_Node0 N_14RouteDependentSegmentAccess_Node0 -- No --> E_14RouteDependentSegmentAccess
access"}:::decision N_14RouteDependentSegmentAccess_Node0_action["The system routes to primary PCB if
second PCB flag is not set,
otherwise routes to secondary PCB"]:::main N_14RouteDependentSegmentAccess_Node0 -- Yes --> N_14RouteDependentSegmentAccess_Node0_action N_14RouteDependentSegmentAccess_Node0_action --> E_14RouteDependentSegmentAccess S_14RouteDependentSegmentAccess --> N_14RouteDependentSegmentAccess_Node0 N_14RouteDependentSegmentAccess_Node0 -- No --> E_14RouteDependentSegmentAccess
File: GCCTBIO.cbl
GIVEN:
A validated operation targets the dependent segment with initialized SSA
WHEN:
The operation is ready for database access
THEN:
The system routes to primary PCB if second PCB flag is not set, otherwise routes to secondary PCB
β Consolidated Acceptance Criteria
- The SSA configuration determines the call parameters → the system calls CIMS with hierarchical SSA parameters: both root and dependent qualified SSAs for targeted access, root qualified and dependent unqualified SSAs for mixed access, or no SSA for direct 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_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB(["Start Step"])
E_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB(["End Step"])
N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0{"The SSA configuration determines
the call parameters"}:::decision N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0_action["The system calls CIMS with
hierarchical SSA parameters: both
root and dependent qualified SSAs
for targeted access, root qualified
and dependent unqualified SSAs for
mixed access, or no SSA for direct
operations"]:::main N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0 -- Yes --> N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0_action N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0_action --> E_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB S_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB --> N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0 N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0 -- No --> E_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB
the call parameters"}:::decision N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0_action["The system calls CIMS with
hierarchical SSA parameters: both
root and dependent qualified SSAs
for targeted access, root qualified
and dependent unqualified SSAs for
mixed access, or no SSA for direct
operations"]:::main N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0 -- Yes --> N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0_action N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0_action --> E_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB S_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB --> N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0 N_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB_Node0 -- No --> E_15ExecuteDependentSegmentDatabaseCallwithPrimaryPCB
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to primary PCB
WHEN:
The SSA configuration determines the call parameters
THEN:
- The system calls cims with hierarchical ssa parameters: both root
- Dependent qualified ssas for targeted access, root qualified
- Dependent unqualified ssas for mixed access, or no ssa for direct operations
β Consolidated Acceptance Criteria
- The SSA configuration determines the call parameters → the system calls CIMS with secondary PCB and hierarchical SSA parameters: both root and dependent qualified SSAs for targeted access, root qualified and dependent unqualified SSAs for mixed access, or no SSA for direct 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_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB(["Start Step"])
E_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB(["End Step"])
N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0{"The SSA configuration determines
the call parameters"}:::decision N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0_action["The system calls CIMS with
secondary PCB and hierarchical SSA
parameters: both root and dependent
qualified SSAs for targeted access,
root qualified and dependent
unqualified SSAs for mixed access,
or no SSA for direct operations"]:::main N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0 -- Yes --> N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0_action N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0_action --> E_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB S_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB --> N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0 N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0 -- No --> E_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB
the call parameters"}:::decision N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0_action["The system calls CIMS with
secondary PCB and hierarchical SSA
parameters: both root and dependent
qualified SSAs for targeted access,
root qualified and dependent
unqualified SSAs for mixed access,
or no SSA for direct operations"]:::main N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0 -- Yes --> N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0_action N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0_action --> E_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB S_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB --> N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0 N_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB_Node0 -- No --> E_16ExecuteDependentSegmentDatabaseCallwithSecondaryPCB
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to secondary PCB
WHEN:
The SSA configuration determines the call parameters
THEN:
- The system calls cims with secondary pcb
- Hierarchical ssa parameters: both root
- Dependent qualified ssas for targeted access, root qualified
- Dependent unqualified ssas for mixed access, or no ssa for direct operations
β Consolidated Acceptance Criteria
- The operation completes and returns a status code → the system sets return flag to SUCCESSFUL if status code is spaces, otherwise sets return flag to UNSUCCESSFUL
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_17EvaluateOperationSuccess(["Start Step"])
E_17EvaluateOperationSuccess(["End Step"])
N_17EvaluateOperationSuccess_Node0{"The operation completes and returns
a status code"}:::decision N_17EvaluateOperationSuccess_Node0_action["The system sets return flag to
SUCCESSFUL if status code is spaces,
otherwise sets return flag to
UNSUCCESSFUL"]:::main N_17EvaluateOperationSuccess_Node0 -- Yes --> N_17EvaluateOperationSuccess_Node0_action N_17EvaluateOperationSuccess_Node0_action --> E_17EvaluateOperationSuccess S_17EvaluateOperationSuccess --> N_17EvaluateOperationSuccess_Node0 N_17EvaluateOperationSuccess_Node0 -- No --> E_17EvaluateOperationSuccess
a status code"}:::decision N_17EvaluateOperationSuccess_Node0_action["The system sets return flag to
SUCCESSFUL if status code is spaces,
otherwise sets return flag to
UNSUCCESSFUL"]:::main N_17EvaluateOperationSuccess_Node0 -- Yes --> N_17EvaluateOperationSuccess_Node0_action N_17EvaluateOperationSuccess_Node0_action --> E_17EvaluateOperationSuccess S_17EvaluateOperationSuccess --> N_17EvaluateOperationSuccess_Node0 N_17EvaluateOperationSuccess_Node0 -- No --> E_17EvaluateOperationSuccess
File: GCCTBIO.cbl
GIVEN:
A database operation has been executed through CIMS
WHEN:
- The operation completes
- Returns a status code
THEN:
The system sets return flag to SUCCESSFUL if status code is spaces, otherwise sets return flag to UNSUCCESSFUL
β Consolidated Acceptance Criteria
- The system begins module control setup → the current program name (CC-PROG) is saved to PROG-NAME-SAVED for later restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveCurrentProgramNametoPROGNAMESAVED(["Start Step"])
E_SaveCurrentProgramNametoPROGNAMESAVED(["End Step"])
N_SaveCurrentProgramNametoPROGNAMESAVED_Node0{"The system begins module control
setup"}:::decision N_SaveCurrentProgramNametoPROGNAMESAVED_Node0_action["The current program name CC-PROG is
saved to PROG-NAME-SAVED for later
restoration"]:::main N_SaveCurrentProgramNametoPROGNAMESAVED_Node0 -- Yes --> N_SaveCurrentProgramNametoPROGNAMESAVED_Node0_action N_SaveCurrentProgramNametoPROGNAMESAVED_Node0_action --> E_SaveCurrentProgramNametoPROGNAMESAVED S_SaveCurrentProgramNametoPROGNAMESAVED --> N_SaveCurrentProgramNametoPROGNAMESAVED_Node0 N_SaveCurrentProgramNametoPROGNAMESAVED_Node0 -- No --> E_SaveCurrentProgramNametoPROGNAMESAVED
setup"}:::decision N_SaveCurrentProgramNametoPROGNAMESAVED_Node0_action["The current program name CC-PROG is
saved to PROG-NAME-SAVED for later
restoration"]:::main N_SaveCurrentProgramNametoPROGNAMESAVED_Node0 -- Yes --> N_SaveCurrentProgramNametoPROGNAMESAVED_Node0_action N_SaveCurrentProgramNametoPROGNAMESAVED_Node0_action --> E_SaveCurrentProgramNametoPROGNAMESAVED S_SaveCurrentProgramNametoPROGNAMESAVED --> N_SaveCurrentProgramNametoPROGNAMESAVED_Node0 N_SaveCurrentProgramNametoPROGNAMESAVED_Node0 -- No --> E_SaveCurrentProgramNametoPROGNAMESAVED
File: GCCTBIO.cbl
GIVEN:
A module control initialization is requested
WHEN:
The system begins module control setup
THEN:
The current program name (CC-PROG) is saved to PROG-NAME-SAVED for later restoration
β Consolidated Acceptance Criteria
- Module control initialization continues → the MODULE-NAME is set as the current program (CC-PROG)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetModuleNameasCurrentProgram(["Start Step"])
E_SetModuleNameasCurrentProgram(["End Step"])
N_SetModuleNameasCurrentProgram_Node0{"Module control initialization
continues"}:::decision N_SetModuleNameasCurrentProgram_Node0_action["The MODULE-NAME is set as the
current program CC-PROG"]:::main N_SetModuleNameasCurrentProgram_Node0 -- Yes --> N_SetModuleNameasCurrentProgram_Node0_action N_SetModuleNameasCurrentProgram_Node0_action --> E_SetModuleNameasCurrentProgram S_SetModuleNameasCurrentProgram --> N_SetModuleNameasCurrentProgram_Node0 N_SetModuleNameasCurrentProgram_Node0 -- No --> E_SetModuleNameasCurrentProgram
continues"}:::decision N_SetModuleNameasCurrentProgram_Node0_action["The MODULE-NAME is set as the
current program CC-PROG"]:::main N_SetModuleNameasCurrentProgram_Node0 -- Yes --> N_SetModuleNameasCurrentProgram_Node0_action N_SetModuleNameasCurrentProgram_Node0_action --> E_SetModuleNameasCurrentProgram S_SetModuleNameasCurrentProgram --> N_SetModuleNameasCurrentProgram_Node0 N_SetModuleNameasCurrentProgram_Node0 -- No --> E_SetModuleNameasCurrentProgram
File: GCCTBIO.cbl
GIVEN:
The calling program name has been saved
WHEN:
Module control initialization continues
THEN:
The MODULE-NAME is set as the current program (CC-PROG)
β Consolidated Acceptance Criteria
- Control field initialization is performed → rETURN-FLAG, CC-ACCEPT-STATUS, and WS-SSA-FLAG are 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_ModuleControlInitialized(["Start Step"])
E_ModuleControlInitialized(["End Step"])
N_ModuleControlInitialized_Node0{"Control field initialization is
performed"}:::decision N_ModuleControlInitialized_Node0_action["RETURN-FLAG, CC-ACCEPT-STATUS, and
WS-SSA-FLAG are cleared to spaces"]:::main N_ModuleControlInitialized_Node0 -- Yes --> N_ModuleControlInitialized_Node0_action N_ModuleControlInitialized_Node0_action --> E_ModuleControlInitialized S_ModuleControlInitialized --> N_ModuleControlInitialized_Node0 N_ModuleControlInitialized_Node0 -- No --> E_ModuleControlInitialized
performed"}:::decision N_ModuleControlInitialized_Node0_action["RETURN-FLAG, CC-ACCEPT-STATUS, and
WS-SSA-FLAG are cleared to spaces"]:::main N_ModuleControlInitialized_Node0 -- Yes --> N_ModuleControlInitialized_Node0_action N_ModuleControlInitialized_Node0_action --> E_ModuleControlInitialized S_ModuleControlInitialized --> N_ModuleControlInitialized_Node0 N_ModuleControlInitialized_Node0 -- No --> E_ModuleControlInitialized
File: GCCTBIO.cbl
GIVEN:
Module control setup is in progress
WHEN:
Control field initialization is performed
THEN:
RETURN-FLAG, CC-ACCEPT-STATUS, and WS-SSA-FLAG are cleared to spaces
β Consolidated Acceptance Criteria
- The system begins operation initialization → the return flag is set to spaces, the accept status is set to spaces, and the SSA flag 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_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues(["Start Step"])
E_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues(["End Step"])
N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0{"The system begins operation
initialization"}:::decision N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0_action["The return flag is set to spaces,
the accept status is set to spaces,
and the SSA flag is set to spaces"]:::main N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0 -- Yes --> N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0_action N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0_action --> E_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues S_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues --> N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0 N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0 -- No --> E_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues
initialization"}:::decision N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0_action["The return flag is set to spaces,
the accept status is set to spaces,
and the SSA flag is set to spaces"]:::main N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0 -- Yes --> N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0_action N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0_action --> E_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues S_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues --> N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0 N_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues_Node0 -- No --> E_ClearReturnStatusInitializereturnflagacceptstatusandSSAflagtodefaultvalues
File: GCCTBIO.cbl
GIVEN:
A database operation is about to be processed
WHEN:
The system begins operation initialization
THEN:
The return flag is set to spaces, the accept status is set to spaces, and the SSA flag is set to spaces
β Consolidated Acceptance Criteria
- The function code is GHU (Get Hold Unique) or GU (Get Unique) → the system sets accept status to GE and configures the request to use qualified SSA for precise 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_FunctionCodeGHUorGU(["Start Step"])
E_FunctionCodeGHUorGU(["End Step"])
N_FunctionCodeGHUorGU_Node0{"The function code is GHU Get Hold
Unique or GU Get Unique"}:::decision N_FunctionCodeGHUorGU_Node0_action["The system sets accept status to GE
and configures the request to use
qualified SSA for precise record
retrieval"]:::main N_FunctionCodeGHUorGU_Node0 -- Yes --> N_FunctionCodeGHUorGU_Node0_action N_FunctionCodeGHUorGU_Node0_action --> E_FunctionCodeGHUorGU S_FunctionCodeGHUorGU --> N_FunctionCodeGHUorGU_Node0 N_FunctionCodeGHUorGU_Node0 -- No --> E_FunctionCodeGHUorGU
Unique or GU Get Unique"}:::decision N_FunctionCodeGHUorGU_Node0_action["The system sets accept status to GE
and configures the request to use
qualified SSA for precise record
retrieval"]:::main N_FunctionCodeGHUorGU_Node0 -- Yes --> N_FunctionCodeGHUorGU_Node0_action N_FunctionCodeGHUorGU_Node0_action --> E_FunctionCodeGHUorGU S_FunctionCodeGHUorGU --> N_FunctionCodeGHUorGU_Node0 N_FunctionCodeGHUorGU_Node0 -- No --> E_FunctionCodeGHUorGU
File: GCCTBIO.cbl
GIVEN:
A user function code is provided for validation
WHEN:
The function code is GHU (Get Hold Unique) or GU (Get Unique)
THEN:
- The system sets accept status to ge
- Configures the request to use qualified ssa for precise record retrieval
β Consolidated Acceptance Criteria
- The function code is GHN (Get Hold Next), GHNP (Get Hold Next in Parent), GN (Get Next), or GNP (Get Next in Parent) → the system sets accept status to GAGBGEGK to enable sequential processing capabilities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FunctionCodeGHNGHNPGNorGNP(["Start Step"])
E_FunctionCodeGHNGHNPGNorGNP(["End Step"])
N_FunctionCodeGHNGHNPGNorGNP_Node0{"The function code is GHN Get Hold
Next, GHNP Get Hold Next in Parent,
GN Get Next, or GNP Get Next in
Parent"}:::decision N_FunctionCodeGHNGHNPGNorGNP_Node0_action["The system sets accept status to
GAGBGEGK to enable sequential
processing capabilities"]:::main N_FunctionCodeGHNGHNPGNorGNP_Node0 -- Yes --> N_FunctionCodeGHNGHNPGNorGNP_Node0_action N_FunctionCodeGHNGHNPGNorGNP_Node0_action --> E_FunctionCodeGHNGHNPGNorGNP S_FunctionCodeGHNGHNPGNorGNP --> N_FunctionCodeGHNGHNPGNorGNP_Node0 N_FunctionCodeGHNGHNPGNorGNP_Node0 -- No --> E_FunctionCodeGHNGHNPGNorGNP
Next, GHNP Get Hold Next in Parent,
GN Get Next, or GNP Get Next in
Parent"}:::decision N_FunctionCodeGHNGHNPGNorGNP_Node0_action["The system sets accept status to
GAGBGEGK to enable sequential
processing capabilities"]:::main N_FunctionCodeGHNGHNPGNorGNP_Node0 -- Yes --> N_FunctionCodeGHNGHNPGNorGNP_Node0_action N_FunctionCodeGHNGHNPGNorGNP_Node0_action --> E_FunctionCodeGHNGHNPGNorGNP S_FunctionCodeGHNGHNPGNorGNP --> N_FunctionCodeGHNGHNPGNorGNP_Node0 N_FunctionCodeGHNGHNPGNorGNP_Node0 -- No --> E_FunctionCodeGHNGHNPGNorGNP
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A user function code is provided that is not GHU or GU
WHEN:
The function code is GHN (Get Hold Next), GHNP (Get Hold Next in Parent), GN (Get Next), or GNP (Get Next in Parent)
THEN:
The system sets accept status to GAGBGEGK to enable sequential processing capabilities
β Consolidated Acceptance Criteria
- The unqualified SSA flag is set to SPACE (not specified) → the system configures the request to use qualified SSA for structured searching, otherwise it uses unqualified SSA for broader 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_UnqualifiedSSAFlagSPACE(["Start Step"])
E_UnqualifiedSSAFlagSPACE(["End Step"])
N_UnqualifiedSSAFlagSPACE_Node0{"The unqualified SSA flag is set to
SPACE not specified"}:::decision N_UnqualifiedSSAFlagSPACE_Node0_action["The system configures the request
to use qualified SSA for structured
searching, otherwise it uses
unqualified SSA for broader
searching"]:::main N_UnqualifiedSSAFlagSPACE_Node0 -- Yes --> N_UnqualifiedSSAFlagSPACE_Node0_action N_UnqualifiedSSAFlagSPACE_Node0_action --> E_UnqualifiedSSAFlagSPACE S_UnqualifiedSSAFlagSPACE --> N_UnqualifiedSSAFlagSPACE_Node0 N_UnqualifiedSSAFlagSPACE_Node0 -- No --> E_UnqualifiedSSAFlagSPACE
SPACE not specified"}:::decision N_UnqualifiedSSAFlagSPACE_Node0_action["The system configures the request
to use qualified SSA for structured
searching, otherwise it uses
unqualified SSA for broader
searching"]:::main N_UnqualifiedSSAFlagSPACE_Node0 -- Yes --> N_UnqualifiedSSAFlagSPACE_Node0_action N_UnqualifiedSSAFlagSPACE_Node0_action --> E_UnqualifiedSSAFlagSPACE S_UnqualifiedSSAFlagSPACE --> N_UnqualifiedSSAFlagSPACE_Node0 N_UnqualifiedSSAFlagSPACE_Node0 -- No --> E_UnqualifiedSSAFlagSPACE
File: GCCTBIO.cbl
GIVEN:
A sequential read operation (GHN, GHNP, GN, or GNP) has been validated
WHEN:
The unqualified SSA flag is set to SPACE (not specified)
THEN:
The system configures the request to use qualified SSA for structured searching, otherwise it uses unqualified SSA for broader searching
β Consolidated Acceptance Criteria
- The function code is ISRT (Insert) → the system sets accept status to II and configures the request to use unqualified SSA for insert operations
- The function code equals ISRT (Insert) → the system should set the accept status to insert indicator (II) and configure unqualified SSA for the 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_FunctionCodeISRT(["Start Step"])
E_FunctionCodeISRT(["End Step"])
N_FunctionCodeISRT_Node0{"The function code is ISRT Insert"}:::decision
N_FunctionCodeISRT_Node0_action["The system sets accept status to II
and configures the request to use
unqualified SSA for insert
operations"]:::main N_FunctionCodeISRT_Node0 -- Yes --> N_FunctionCodeISRT_Node0_action N_FunctionCodeISRT_Node0_action --> E_FunctionCodeISRT S_FunctionCodeISRT --> N_FunctionCodeISRT_Node0 N_FunctionCodeISRT_Node1{"The function code equals ISRT
Insert"}:::decision N_FunctionCodeISRT_Node1_action["The system should set the accept
status to insert indicator II and
configure unqualified SSA for the
insert operation"]:::main N_FunctionCodeISRT_Node1 -- Yes --> N_FunctionCodeISRT_Node1_action N_FunctionCodeISRT_Node1_action --> E_FunctionCodeISRT N_FunctionCodeISRT_Node0 -- No --> N_FunctionCodeISRT_Node1 N_FunctionCodeISRT_Node1 -- No --> E_FunctionCodeISRT
and configures the request to use
unqualified SSA for insert
operations"]:::main N_FunctionCodeISRT_Node0 -- Yes --> N_FunctionCodeISRT_Node0_action N_FunctionCodeISRT_Node0_action --> E_FunctionCodeISRT S_FunctionCodeISRT --> N_FunctionCodeISRT_Node0 N_FunctionCodeISRT_Node1{"The function code equals ISRT
Insert"}:::decision N_FunctionCodeISRT_Node1_action["The system should set the accept
status to insert indicator II and
configure unqualified SSA for the
insert operation"]:::main N_FunctionCodeISRT_Node1 -- Yes --> N_FunctionCodeISRT_Node1_action N_FunctionCodeISRT_Node1_action --> E_FunctionCodeISRT N_FunctionCodeISRT_Node0 -- No --> N_FunctionCodeISRT_Node1 N_FunctionCodeISRT_Node1 -- No --> E_FunctionCodeISRT
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A user function code is provided that is not a read or sequential read operation
WHEN:
The function code is ISRT (Insert)
THEN:
- The system sets accept status to ii
- Configures the request to use unqualified ssa for insert operations
File: GCCTBIO.cbl
GIVEN:
A function code is provided for database operation
WHEN:
The function code equals ISRT (Insert)
THEN:
The system should set the accept status to insert indicator (II) and configure unqualified SSA for the insert operation
β Consolidated Acceptance Criteria
- The function code is DLET (Delete) or REPL (Replace) → the system configures the request to use no SSA since modification operations work on already positioned 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_FunctionCodeDLETorREPL(["Start Step"])
E_FunctionCodeDLETorREPL(["End Step"])
N_FunctionCodeDLETorREPL_Node0{"The function code is DLET Delete or
REPL Replace"}:::decision N_FunctionCodeDLETorREPL_Node0_action["The system configures the request
to use no SSA since modification
operations work on already
positioned records"]:::main N_FunctionCodeDLETorREPL_Node0 -- Yes --> N_FunctionCodeDLETorREPL_Node0_action N_FunctionCodeDLETorREPL_Node0_action --> E_FunctionCodeDLETorREPL S_FunctionCodeDLETorREPL --> N_FunctionCodeDLETorREPL_Node0 N_FunctionCodeDLETorREPL_Node0 -- No --> E_FunctionCodeDLETorREPL
REPL Replace"}:::decision N_FunctionCodeDLETorREPL_Node0_action["The system configures the request
to use no SSA since modification
operations work on already
positioned records"]:::main N_FunctionCodeDLETorREPL_Node0 -- Yes --> N_FunctionCodeDLETorREPL_Node0_action N_FunctionCodeDLETorREPL_Node0_action --> E_FunctionCodeDLETorREPL S_FunctionCodeDLETorREPL --> N_FunctionCodeDLETorREPL_Node0 N_FunctionCodeDLETorREPL_Node0 -- No --> E_FunctionCodeDLETorREPL
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A user function code is provided that is not a read, sequential read, or insert operation
WHEN:
The function code is DLET (Delete) or REPL (Replace)
THEN:
The system configures the request to use no SSA since modification operations work on already positioned records
β Consolidated Acceptance Criteria
- The function code is not GHU, GU, GHN, GHNP, GN, GNP, ISRT, DLET, or REPL → the system sets the return flag to NOT-VALID to indicate the function code is not supported
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReturnFlagtoNOTVALID(["Start Step"])
E_SetReturnFlagtoNOTVALID(["End Step"])
N_SetReturnFlagtoNOTVALID_Node0{"The function code is not GHU, GU,
GHN, GHNP, GN, GNP, ISRT, DLET, or
REPL"}:::decision N_SetReturnFlagtoNOTVALID_Node0_action["The system sets the return flag to
NOT-VALID to indicate the function
code is not supported"]:::main N_SetReturnFlagtoNOTVALID_Node0 -- Yes --> N_SetReturnFlagtoNOTVALID_Node0_action N_SetReturnFlagtoNOTVALID_Node0_action --> E_SetReturnFlagtoNOTVALID S_SetReturnFlagtoNOTVALID --> N_SetReturnFlagtoNOTVALID_Node0 N_SetReturnFlagtoNOTVALID_Node0 -- No --> E_SetReturnFlagtoNOTVALID
GHN, GHNP, GN, GNP, ISRT, DLET, or
REPL"}:::decision N_SetReturnFlagtoNOTVALID_Node0_action["The system sets the return flag to
NOT-VALID to indicate the function
code is not supported"]:::main N_SetReturnFlagtoNOTVALID_Node0 -- Yes --> N_SetReturnFlagtoNOTVALID_Node0_action N_SetReturnFlagtoNOTVALID_Node0_action --> E_SetReturnFlagtoNOTVALID S_SetReturnFlagtoNOTVALID --> N_SetReturnFlagtoNOTVALID_Node0 N_SetReturnFlagtoNOTVALID_Node0 -- No --> E_SetReturnFlagtoNOTVALID
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A user function code is provided for validation
WHEN:
The function code is not GHU, GU, GHN, GHNP, GN, GNP, ISRT, DLET, or REPL
THEN:
The system sets the return flag to NOT-VALID to indicate the function code is not supported
β Consolidated Acceptance Criteria
- The function code is GHU (Get Hold Unique) OR the function code is GU (Get Unique) → set the accept status to GE AND set the SSA type to qualified SSA for precise 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_CheckFunctionCode(["Start Step"])
E_CheckFunctionCode(["End Step"])
N_CheckFunctionCode_Node0{"The function code is GHU Get Hold
Unique OR the function code is GU
Get Unique"}:::decision N_CheckFunctionCode_Node0_action["Set the accept status to GE AND set
the SSA type to qualified SSA for
precise record retrieval"]:::main N_CheckFunctionCode_Node0 -- Yes --> N_CheckFunctionCode_Node0_action N_CheckFunctionCode_Node0_action --> E_CheckFunctionCode S_CheckFunctionCode --> N_CheckFunctionCode_Node0 N_CheckFunctionCode_Node0 -- No --> E_CheckFunctionCode
Unique OR the function code is GU
Get Unique"}:::decision N_CheckFunctionCode_Node0_action["Set the accept status to GE AND set
the SSA type to qualified SSA for
precise record retrieval"]:::main N_CheckFunctionCode_Node0 -- Yes --> N_CheckFunctionCode_Node0_action N_CheckFunctionCode_Node0_action --> E_CheckFunctionCode S_CheckFunctionCode --> N_CheckFunctionCode_Node0 N_CheckFunctionCode_Node0 -- No --> E_CheckFunctionCode
File: GCCTBIO.cbl
GIVEN:
A function code is provided for database operation
WHEN:
The function code is GHU (Get Hold Unique) OR the function code is GU (Get Unique)
THEN:
- Set the accept status to ge
- Set the ssa type to qualified ssa for precise record retrieval
β Consolidated Acceptance Criteria
- The system processes the validated GET operation → set the accept status to GE to indicate 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_SetAcceptStatustoGE(["Start Step"])
E_SetAcceptStatustoGE(["End Step"])
N_SetAcceptStatustoGE_Node0{"The system processes the validated
GET operation"}:::decision N_SetAcceptStatustoGE_Node0_action["Set the accept status to GE to
indicate the operation type"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node0 -- No --> E_SetAcceptStatustoGE
GET operation"}:::decision N_SetAcceptStatustoGE_Node0_action["Set the accept status to GE to
indicate the operation type"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node0 -- No --> E_SetAcceptStatustoGE
File: GCCTBIO.cbl
GIVEN:
The function code has been validated as either GHU or GU
WHEN:
The system processes the validated GET operation
THEN:
Set the accept status to GE to indicate the operation type
β Consolidated Acceptance Criteria
- The system configures the search parameters → set the SSA type to qualified SSA to enable specific record targeting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSSATypetoQualified(["Start Step"])
E_SetSSATypetoQualified(["End Step"])
N_SetSSATypetoQualified_Node0{"The system configures the search
parameters"}:::decision N_SetSSATypetoQualified_Node0_action["Set the SSA type to qualified SSA
to enable specific record targeting"]:::main N_SetSSATypetoQualified_Node0 -- Yes --> N_SetSSATypetoQualified_Node0_action N_SetSSATypetoQualified_Node0_action --> E_SetSSATypetoQualified S_SetSSATypetoQualified --> N_SetSSATypetoQualified_Node0 N_SetSSATypetoQualified_Node0 -- No --> E_SetSSATypetoQualified
parameters"}:::decision N_SetSSATypetoQualified_Node0_action["Set the SSA type to qualified SSA
to enable specific record targeting"]:::main N_SetSSATypetoQualified_Node0 -- Yes --> N_SetSSATypetoQualified_Node0_action N_SetSSATypetoQualified_Node0_action --> E_SetSSATypetoQualified S_SetSSATypetoQualified --> N_SetSSATypetoQualified_Node0 N_SetSSATypetoQualified_Node0 -- No --> E_SetSSATypetoQualified
File: GCCTBIO.cbl
GIVEN:
The function code has been validated as either GHU or GU
WHEN:
The system configures the search parameters
THEN:
Set the SSA type to qualified SSA to enable specific record targeting
β Consolidated Acceptance Criteria
- The function code is GHN (Get Hold Next), GHNP (Get Hold Next in Parent), GN (Get Next), or GNP (Get Next in Parent) → the system recognizes it as a valid NEXT operation and proceeds with NEXT operation 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_CheckFunctionCodeforNEXTOperations(["Start Step"])
E_CheckFunctionCodeforNEXTOperations(["End Step"])
N_CheckFunctionCodeforNEXTOperations_Node0{"The function code is GHN Get Hold
Next, GHNP Get Hold Next in Parent,
GN Get Next, or GNP Get Next in
Parent"}:::decision N_CheckFunctionCodeforNEXTOperations_Node0_action["The system recognizes it as a valid
NEXT operation and proceeds with
NEXT operation configuration"]:::main N_CheckFunctionCodeforNEXTOperations_Node0 -- Yes --> N_CheckFunctionCodeforNEXTOperations_Node0_action N_CheckFunctionCodeforNEXTOperations_Node0_action --> E_CheckFunctionCodeforNEXTOperations S_CheckFunctionCodeforNEXTOperations --> N_CheckFunctionCodeforNEXTOperations_Node0 N_CheckFunctionCodeforNEXTOperations_Node0 -- No --> E_CheckFunctionCodeforNEXTOperations
Next, GHNP Get Hold Next in Parent,
GN Get Next, or GNP Get Next in
Parent"}:::decision N_CheckFunctionCodeforNEXTOperations_Node0_action["The system recognizes it as a valid
NEXT operation and proceeds with
NEXT operation configuration"]:::main N_CheckFunctionCodeforNEXTOperations_Node0 -- Yes --> N_CheckFunctionCodeforNEXTOperations_Node0_action N_CheckFunctionCodeforNEXTOperations_Node0_action --> E_CheckFunctionCodeforNEXTOperations S_CheckFunctionCodeforNEXTOperations --> N_CheckFunctionCodeforNEXTOperations_Node0 N_CheckFunctionCodeforNEXTOperations_Node0 -- No --> E_CheckFunctionCodeforNEXTOperations
File: GCCTBIO.cbl
GIVEN:
A user function code is provided for database operation
WHEN:
The function code is GHN (Get Hold Next), GHNP (Get Hold Next in Parent), GN (Get Next), or GNP (Get Next in Parent)
THEN:
- The system recognizes it as a valid next operation
- Proceeds with next operation configuration
β Consolidated Acceptance Criteria
- The system processes the NEXT operation configuration → the accept status is set to GAGBGEGK to indicate NEXT operation acceptance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAcceptStatusforNEXTOperations(["Start Step"])
E_SetAcceptStatusforNEXTOperations(["End Step"])
N_SetAcceptStatusforNEXTOperations_Node0{"The system processes the NEXT
operation configuration"}:::decision N_SetAcceptStatusforNEXTOperations_Node0_action["The accept status is set to
GAGBGEGK to indicate NEXT operation
acceptance"]:::main N_SetAcceptStatusforNEXTOperations_Node0 -- Yes --> N_SetAcceptStatusforNEXTOperations_Node0_action N_SetAcceptStatusforNEXTOperations_Node0_action --> E_SetAcceptStatusforNEXTOperations S_SetAcceptStatusforNEXTOperations --> N_SetAcceptStatusforNEXTOperations_Node0 N_SetAcceptStatusforNEXTOperations_Node0 -- No --> E_SetAcceptStatusforNEXTOperations
operation configuration"}:::decision N_SetAcceptStatusforNEXTOperations_Node0_action["The accept status is set to
GAGBGEGK to indicate NEXT operation
acceptance"]:::main N_SetAcceptStatusforNEXTOperations_Node0 -- Yes --> N_SetAcceptStatusforNEXTOperations_Node0_action N_SetAcceptStatusforNEXTOperations_Node0_action --> E_SetAcceptStatusforNEXTOperations S_SetAcceptStatusforNEXTOperations --> N_SetAcceptStatusforNEXTOperations_Node0 N_SetAcceptStatusforNEXTOperations_Node0 -- No --> E_SetAcceptStatusforNEXTOperations
File: GCCTBIO.cbl
GIVEN:
The function code has been validated as a NEXT operation (GHN, GHNP, GN, or GNP)
WHEN:
The system processes the NEXT operation configuration
THEN:
The accept status is set to GAGBGEGK to indicate NEXT operation acceptance
β Consolidated Acceptance Criteria
- The unqualified SSA flag is checked and found to be space (not set) → the system configures qualified SSA type for the database 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_UnqualifiedSSAFlagSet(["Start Step"])
E_UnqualifiedSSAFlagSet(["End Step"])
N_UnqualifiedSSAFlagSet_Node0{"The unqualified SSA flag is checked
and found to be space not set"}:::decision N_UnqualifiedSSAFlagSet_Node0_action["The system configures qualified SSA
type for the database search"]:::main N_UnqualifiedSSAFlagSet_Node0 -- Yes --> N_UnqualifiedSSAFlagSet_Node0_action N_UnqualifiedSSAFlagSet_Node0_action --> E_UnqualifiedSSAFlagSet S_UnqualifiedSSAFlagSet --> N_UnqualifiedSSAFlagSet_Node0 N_UnqualifiedSSAFlagSet_Node0 -- No --> E_UnqualifiedSSAFlagSet
and found to be space not set"}:::decision N_UnqualifiedSSAFlagSet_Node0_action["The system configures qualified SSA
type for the database search"]:::main N_UnqualifiedSSAFlagSet_Node0 -- Yes --> N_UnqualifiedSSAFlagSet_Node0_action N_UnqualifiedSSAFlagSet_Node0_action --> E_UnqualifiedSSAFlagSet S_UnqualifiedSSAFlagSet --> N_UnqualifiedSSAFlagSet_Node0 N_UnqualifiedSSAFlagSet_Node0 -- No --> E_UnqualifiedSSAFlagSet
File: GCCTBIO.cbl
GIVEN:
A NEXT operation has been validated and accept status is configured
WHEN:
- The unqualified ssa flag is checked
- Found to be space (not set)
THEN:
The system configures qualified SSA type for the database search
β Consolidated Acceptance Criteria
- The system determines SSA type configuration → the system configures unqualified SSA type for the database 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_ConfigureUnqualifiedSSAType(["Start Step"])
E_ConfigureUnqualifiedSSAType(["End Step"])
N_ConfigureUnqualifiedSSAType_Node0{"The system determines SSA type
configuration"}:::decision N_ConfigureUnqualifiedSSAType_Node0_action["The system configures unqualified
SSA type for the database search"]:::main N_ConfigureUnqualifiedSSAType_Node0 -- Yes --> N_ConfigureUnqualifiedSSAType_Node0_action N_ConfigureUnqualifiedSSAType_Node0_action --> E_ConfigureUnqualifiedSSAType S_ConfigureUnqualifiedSSAType --> N_ConfigureUnqualifiedSSAType_Node0 N_ConfigureUnqualifiedSSAType_Node0 -- No --> E_ConfigureUnqualifiedSSAType
configuration"}:::decision N_ConfigureUnqualifiedSSAType_Node0_action["The system configures unqualified
SSA type for the database search"]:::main N_ConfigureUnqualifiedSSAType_Node0 -- Yes --> N_ConfigureUnqualifiedSSAType_Node0_action N_ConfigureUnqualifiedSSAType_Node0_action --> E_ConfigureUnqualifiedSSAType S_ConfigureUnqualifiedSSAType --> N_ConfigureUnqualifiedSSAType_Node0 N_ConfigureUnqualifiedSSAType_Node0 -- No --> E_ConfigureUnqualifiedSSAType
File: GCCTBIO.cbl
GIVEN:
A NEXT operation has been validated and the unqualified SSA flag is set (not space)
WHEN:
The system determines SSA type configuration
THEN:
The system configures unqualified SSA type for the database search
β Consolidated Acceptance Criteria
- The system processes the insert operation configuration → the accept status should be set to II (Insert 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_SetAcceptStatustoInsertIndicator(["Start Step"])
E_SetAcceptStatustoInsertIndicator(["End Step"])
N_SetAcceptStatustoInsertIndicator_Node0{"The system processes the insert
operation configuration"}:::decision N_SetAcceptStatustoInsertIndicator_Node0_action["The accept status should be set to
II Insert Indicator"]:::main N_SetAcceptStatustoInsertIndicator_Node0 -- Yes --> N_SetAcceptStatustoInsertIndicator_Node0_action N_SetAcceptStatustoInsertIndicator_Node0_action --> E_SetAcceptStatustoInsertIndicator S_SetAcceptStatustoInsertIndicator --> N_SetAcceptStatustoInsertIndicator_Node0 N_SetAcceptStatustoInsertIndicator_Node0 -- No --> E_SetAcceptStatustoInsertIndicator
operation configuration"}:::decision N_SetAcceptStatustoInsertIndicator_Node0_action["The accept status should be set to
II Insert Indicator"]:::main N_SetAcceptStatustoInsertIndicator_Node0 -- Yes --> N_SetAcceptStatustoInsertIndicator_Node0_action N_SetAcceptStatustoInsertIndicator_Node0_action --> E_SetAcceptStatustoInsertIndicator S_SetAcceptStatustoInsertIndicator --> N_SetAcceptStatustoInsertIndicator_Node0 N_SetAcceptStatustoInsertIndicator_Node0 -- No --> E_SetAcceptStatustoInsertIndicator
File: GCCTBIO.cbl
GIVEN:
The function code has been validated as ISRT (Insert)
WHEN:
The system processes the insert operation configuration
THEN:
The accept status should be set to II (Insert Indicator)
β Consolidated Acceptance Criteria
- The system configures the segment search argument → the SSA flag should be set to unqualified SSA type for insert 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_ConfigureUnqualifiedSSAforInsert(["Start Step"])
E_ConfigureUnqualifiedSSAforInsert(["End Step"])
N_ConfigureUnqualifiedSSAforInsert_Node0{"The system configures the segment
search argument"}:::decision N_ConfigureUnqualifiedSSAforInsert_Node0_action["The SSA flag should be set to
unqualified SSA type for insert
processing"]:::main N_ConfigureUnqualifiedSSAforInsert_Node0 -- Yes --> N_ConfigureUnqualifiedSSAforInsert_Node0_action N_ConfigureUnqualifiedSSAforInsert_Node0_action --> E_ConfigureUnqualifiedSSAforInsert S_ConfigureUnqualifiedSSAforInsert --> N_ConfigureUnqualifiedSSAforInsert_Node0 N_ConfigureUnqualifiedSSAforInsert_Node0 -- No --> E_ConfigureUnqualifiedSSAforInsert
search argument"}:::decision N_ConfigureUnqualifiedSSAforInsert_Node0_action["The SSA flag should be set to
unqualified SSA type for insert
processing"]:::main N_ConfigureUnqualifiedSSAforInsert_Node0 -- Yes --> N_ConfigureUnqualifiedSSAforInsert_Node0_action N_ConfigureUnqualifiedSSAforInsert_Node0_action --> E_ConfigureUnqualifiedSSAforInsert S_ConfigureUnqualifiedSSAforInsert --> N_ConfigureUnqualifiedSSAforInsert_Node0 N_ConfigureUnqualifiedSSAforInsert_Node0 -- No --> E_ConfigureUnqualifiedSSAforInsert
File: GCCTBIO.cbl
GIVEN:
The function code is ISRT and accept status is configured for insert
WHEN:
The system configures the segment search argument
THEN:
The SSA flag should be set to unqualified SSA type for insert processing
β Consolidated Acceptance Criteria
- The function code is DLET (Delete) → the system sets the SSA flag to NO-SSA indicating no search argument 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_FunctionCodeDLET(["Start Step"])
E_FunctionCodeDLET(["End Step"])
N_FunctionCodeDLET_Node0{"The function code is DLET Delete"}:::decision
N_FunctionCodeDLET_Node0_action["The system sets the SSA flag to
NO-SSA indicating no search argument
is required"]:::main N_FunctionCodeDLET_Node0 -- Yes --> N_FunctionCodeDLET_Node0_action N_FunctionCodeDLET_Node0_action --> E_FunctionCodeDLET S_FunctionCodeDLET --> N_FunctionCodeDLET_Node0 N_FunctionCodeDLET_Node0 -- No --> E_FunctionCodeDLET
NO-SSA indicating no search argument
is required"]:::main N_FunctionCodeDLET_Node0 -- Yes --> N_FunctionCodeDLET_Node0_action N_FunctionCodeDLET_Node0_action --> E_FunctionCodeDLET S_FunctionCodeDLET --> N_FunctionCodeDLET_Node0 N_FunctionCodeDLET_Node0 -- No --> E_FunctionCodeDLET
File: GCCTBIO.cbl
GIVEN:
A function code is being validated for database operation
WHEN:
The function code is DLET (Delete)
THEN:
The system sets the SSA flag to NO-SSA indicating no search argument is required
β Consolidated Acceptance Criteria
- The function code is REPL (Replace) → the system sets the SSA flag to NO-SSA indicating no search argument 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_FunctionCodeREPL(["Start Step"])
E_FunctionCodeREPL(["End Step"])
N_FunctionCodeREPL_Node0{"The function code is REPL Replace"}:::decision
N_FunctionCodeREPL_Node0_action["The system sets the SSA flag to
NO-SSA indicating no search argument
is required"]:::main N_FunctionCodeREPL_Node0 -- Yes --> N_FunctionCodeREPL_Node0_action N_FunctionCodeREPL_Node0_action --> E_FunctionCodeREPL S_FunctionCodeREPL --> N_FunctionCodeREPL_Node0 N_FunctionCodeREPL_Node0 -- No --> E_FunctionCodeREPL
NO-SSA indicating no search argument
is required"]:::main N_FunctionCodeREPL_Node0 -- Yes --> N_FunctionCodeREPL_Node0_action N_FunctionCodeREPL_Node0_action --> E_FunctionCodeREPL S_FunctionCodeREPL --> N_FunctionCodeREPL_Node0 N_FunctionCodeREPL_Node0 -- No --> E_FunctionCodeREPL
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A function code is being validated for database operation and it is not a delete operation
WHEN:
The function code is REPL (Replace)
THEN:
The system sets the SSA flag to NO-SSA indicating no search argument is required
β Consolidated Acceptance Criteria
- The function code does not match any supported update/delete operations → the system sets the return flag to NOT-VALID indicating an unsupported 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_ContinuetoNextValidation(["Start Step"])
E_ContinuetoNextValidation(["End Step"])
N_ContinuetoNextValidation_Node0{"The function code does not match
any supported updatedelete
operations"}:::decision N_ContinuetoNextValidation_Node0_action["The system sets the return flag to
NOT-VALID indicating an unsupported
operation"]:::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
any supported updatedelete
operations"}:::decision N_ContinuetoNextValidation_Node0_action["The system sets the return flag to
NOT-VALID indicating an unsupported
operation"]:::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: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A function code is being validated for database operation and it is neither DLET nor REPL
WHEN:
The function code does not match any supported update/delete operations
THEN:
The system sets the return flag to NOT-VALID indicating an unsupported operation
β Consolidated Acceptance Criteria
- The function code is GHU (Get Hold Unique) or GU (Get Unique) → the system sets the accept status to GE and configures the SSA type to QUALIFIED-SSA for precise record 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_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations(["Start Step"])
E_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations(["End Step"])
N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0{"The function code is GHU Get Hold
Unique or GU Get Unique"}:::decision N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0_action["The system sets the accept status
to GE and configures the SSA type to
QUALIFIED-SSA for precise record
matching"]:::main N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0 -- Yes --> N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0_action N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0_action --> E_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations S_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations --> N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0 N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0 -- No --> E_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations
Unique or GU Get Unique"}:::decision N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0_action["The system sets the accept status
to GE and configures the SSA type to
QUALIFIED-SSA for precise record
matching"]:::main N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0 -- Yes --> N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0_action N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0_action --> E_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations S_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations --> N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0 N_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations_Node0 -- No --> E_SetSSATypeforGetOperationsDeterminewhethertousequalifiedorunqualifiedSSAforGETUNIQUEandGETHOLDUNIQUEoperations
File: GCCTBIO.cbl
GIVEN:
A database operation request is being processed
WHEN:
The function code is GHU (Get Hold Unique) or GU (Get Unique)
THEN:
- The system sets the accept status to ge
- Configures the ssa type to qualified-ssa for precise record matching
β Consolidated Acceptance Criteria
- The function code is GHN (Get Hold Next):
- GHNP (Get Hold Next in Parent)
- GN (Get Next)
- GNP (Get Next in Parent)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAcceptStatustoGAGBGEGK(["Start Step"])
E_SetAcceptStatustoGAGBGEGK(["End Step"])
N_SetAcceptStatustoGAGBGEGK_Node0{"The function code is GHN Get Hold
Next OR GHNP Get Hold Next in Parent
OR GN Get Next OR GNP Get Next in
Parent"}:::decision N_SetAcceptStatustoGAGBGEGK_Node0_action["The accept status should be set to
GAGBGEGK to allow sequential data
access"]:::main N_SetAcceptStatustoGAGBGEGK_Node0 -- Yes --> N_SetAcceptStatustoGAGBGEGK_Node0_action N_SetAcceptStatustoGAGBGEGK_Node0_action --> E_SetAcceptStatustoGAGBGEGK S_SetAcceptStatustoGAGBGEGK --> N_SetAcceptStatustoGAGBGEGK_Node0 N_SetAcceptStatustoGAGBGEGK_Node0 -- No --> E_SetAcceptStatustoGAGBGEGK
Next OR GHNP Get Hold Next in Parent
OR GN Get Next OR GNP Get Next in
Parent"}:::decision N_SetAcceptStatustoGAGBGEGK_Node0_action["The accept status should be set to
GAGBGEGK to allow sequential data
access"]:::main N_SetAcceptStatustoGAGBGEGK_Node0 -- Yes --> N_SetAcceptStatustoGAGBGEGK_Node0_action N_SetAcceptStatustoGAGBGEGK_Node0_action --> E_SetAcceptStatustoGAGBGEGK S_SetAcceptStatustoGAGBGEGK --> N_SetAcceptStatustoGAGBGEGK_Node0 N_SetAcceptStatustoGAGBGEGK_Node0 -- No --> E_SetAcceptStatustoGAGBGEGK
File: GCCTBIO.cbl
GIVEN:
A user function code is provided for database operation
WHEN:
The function code is GHN (Get Hold Next) OR GHNP (Get Hold Next in Parent) OR GN (Get Next) OR GNP (Get Next in Parent)
THEN:
The accept status should be set to GAGBGEGK to allow sequential data access
β Consolidated Acceptance Criteria
- The unqualified SSA flag is checked → if the unqualified SSA flag is not set (SPACE), use qualified SSA type; if the unqualified SSA flag is set, use unqualified SSA 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_IsUnqualifiedSSAFlagSet(["Start Step"])
E_IsUnqualifiedSSAFlagSet(["End Step"])
N_IsUnqualifiedSSAFlagSet_Node0{"The unqualified SSA flag is checked"}:::decision
N_IsUnqualifiedSSAFlagSet_Node0_action["If the unqualified SSA flag is not
set SPACE, use qualified SSA type if
the unqualified SSA flag is set, use
unqualified SSA type"]:::main N_IsUnqualifiedSSAFlagSet_Node0 -- Yes --> N_IsUnqualifiedSSAFlagSet_Node0_action N_IsUnqualifiedSSAFlagSet_Node0_action --> E_IsUnqualifiedSSAFlagSet S_IsUnqualifiedSSAFlagSet --> N_IsUnqualifiedSSAFlagSet_Node0 N_IsUnqualifiedSSAFlagSet_Node0 -- No --> E_IsUnqualifiedSSAFlagSet
set SPACE, use qualified SSA type if
the unqualified SSA flag is set, use
unqualified SSA type"]:::main N_IsUnqualifiedSSAFlagSet_Node0 -- Yes --> N_IsUnqualifiedSSAFlagSet_Node0_action N_IsUnqualifiedSSAFlagSet_Node0_action --> E_IsUnqualifiedSSAFlagSet S_IsUnqualifiedSSAFlagSet --> N_IsUnqualifiedSSAFlagSet_Node0 N_IsUnqualifiedSSAFlagSet_Node0 -- No --> E_IsUnqualifiedSSAFlagSet
File: GCCTBIO.cbl
GIVEN:
A GET NEXT type operation (GHN, GHNP, GN, or GNP) is being processed
WHEN:
The unqualified SSA flag is checked
THEN:
If the unqualified SSA flag is not set (SPACE), use qualified SSA type; if the unqualified SSA flag is set, use unqualified SSA type
β Consolidated Acceptance Criteria
- The function code is ISRT (Insert) → the system sets the accept status to II and configures unqualified SSA flag for the 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_SetAcceptStatustoII(["Start Step"])
E_SetAcceptStatustoII(["End Step"])
N_SetAcceptStatustoII_Node0{"The function code is ISRT Insert"}:::decision
N_SetAcceptStatustoII_Node0_action["The system sets the accept status
to II and configures unqualified SSA
flag for the insert operation"]:::main N_SetAcceptStatustoII_Node0 -- Yes --> N_SetAcceptStatustoII_Node0_action N_SetAcceptStatustoII_Node0_action --> E_SetAcceptStatustoII S_SetAcceptStatustoII --> N_SetAcceptStatustoII_Node0 N_SetAcceptStatustoII_Node0 -- No --> E_SetAcceptStatustoII
to II and configures unqualified SSA
flag for the insert operation"]:::main N_SetAcceptStatustoII_Node0 -- Yes --> N_SetAcceptStatustoII_Node0_action N_SetAcceptStatustoII_Node0_action --> E_SetAcceptStatustoII S_SetAcceptStatustoII --> N_SetAcceptStatustoII_Node0 N_SetAcceptStatustoII_Node0 -- No --> E_SetAcceptStatustoII
File: GCCTBIO.cbl
GIVEN:
A database operation request is being processed
WHEN:
The function code is ISRT (Insert)
THEN:
- The system sets the accept status to ii
- Configures unqualified ssa flag for the insert operation
β Consolidated Acceptance Criteria
- The function code is ISRT (Insert) → the system sets the SSA flag to unqualified SSA 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_ConfigureUnqualifiedSSAFlag(["Start Step"])
E_ConfigureUnqualifiedSSAFlag(["End Step"])
N_ConfigureUnqualifiedSSAFlag_Node0{"The function code is ISRT Insert"}:::decision
N_ConfigureUnqualifiedSSAFlag_Node0_action["The system sets the SSA flag to
unqualified SSA type"]:::main N_ConfigureUnqualifiedSSAFlag_Node0 -- Yes --> N_ConfigureUnqualifiedSSAFlag_Node0_action N_ConfigureUnqualifiedSSAFlag_Node0_action --> E_ConfigureUnqualifiedSSAFlag S_ConfigureUnqualifiedSSAFlag --> N_ConfigureUnqualifiedSSAFlag_Node0 N_ConfigureUnqualifiedSSAFlag_Node0 -- No --> E_ConfigureUnqualifiedSSAFlag
unqualified SSA type"]:::main N_ConfigureUnqualifiedSSAFlag_Node0 -- Yes --> N_ConfigureUnqualifiedSSAFlag_Node0_action N_ConfigureUnqualifiedSSAFlag_Node0_action --> E_ConfigureUnqualifiedSSAFlag S_ConfigureUnqualifiedSSAFlag --> N_ConfigureUnqualifiedSSAFlag_Node0 N_ConfigureUnqualifiedSSAFlag_Node0 -- No --> E_ConfigureUnqualifiedSSAFlag
File: GCCTBIO.cbl
GIVEN:
A database insert operation is being configured
WHEN:
The function code is ISRT (Insert)
THEN:
The system sets the SSA flag to unqualified SSA type
β Consolidated Acceptance Criteria
- The function code is DLET (Delete) OR the function code is REPL (Replace) → the system sets the SSA flag to NO-SSA to indicate no search arguments are 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_SetSSAFlagtoNOSSA(["Start Step"])
E_SetSSAFlagtoNOSSA(["End Step"])
N_SetSSAFlagtoNOSSA_Node0{"The function code is DLET Delete OR
the function code is REPL Replace"}:::decision N_SetSSAFlagtoNOSSA_Node0_action["The system sets the SSA flag to
NO-SSA to indicate no search
arguments are required"]:::main N_SetSSAFlagtoNOSSA_Node0 -- Yes --> N_SetSSAFlagtoNOSSA_Node0_action N_SetSSAFlagtoNOSSA_Node0_action --> E_SetSSAFlagtoNOSSA S_SetSSAFlagtoNOSSA --> N_SetSSAFlagtoNOSSA_Node0 N_SetSSAFlagtoNOSSA_Node0 -- No --> E_SetSSAFlagtoNOSSA
the function code is REPL Replace"}:::decision N_SetSSAFlagtoNOSSA_Node0_action["The system sets the SSA flag to
NO-SSA to indicate no search
arguments are required"]:::main N_SetSSAFlagtoNOSSA_Node0 -- Yes --> N_SetSSAFlagtoNOSSA_Node0_action N_SetSSAFlagtoNOSSA_Node0_action --> E_SetSSAFlagtoNOSSA S_SetSSAFlagtoNOSSA --> N_SetSSAFlagtoNOSSA_Node0 N_SetSSAFlagtoNOSSA_Node0 -- No --> E_SetSSAFlagtoNOSSA
File: GCCTBIO.cbl
GIVEN:
A database operation request is being processed
WHEN:
The function code is DLET (Delete) OR the function code is REPL (Replace)
THEN:
The system sets the SSA flag to NO-SSA to indicate no search arguments are required
β Consolidated Acceptance Criteria
- If the segment name against the root segment identifier → the system determines if the segment is a root segment type and routes 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_CheckifSegmentisRootSegment(["Start Step"])
E_CheckifSegmentisRootSegment(["End Step"])
N_CheckifSegmentisRootSegment_Node0{"The system evaluates the segment
name against the root segment
identifier"}:::decision N_CheckifSegmentisRootSegment_Node0_action["The system determines if the
segment is a root segment type and
routes accordingly"]:::main N_CheckifSegmentisRootSegment_Node0 -- Yes --> N_CheckifSegmentisRootSegment_Node0_action N_CheckifSegmentisRootSegment_Node0_action --> E_CheckifSegmentisRootSegment S_CheckifSegmentisRootSegment --> N_CheckifSegmentisRootSegment_Node0 N_CheckifSegmentisRootSegment_Node0 -- No --> E_CheckifSegmentisRootSegment
name against the root segment
identifier"}:::decision N_CheckifSegmentisRootSegment_Node0_action["The system determines if the
segment is a root segment type and
routes accordingly"]:::main N_CheckifSegmentisRootSegment_Node0 -- Yes --> N_CheckifSegmentisRootSegment_Node0_action N_CheckifSegmentisRootSegment_Node0_action --> E_CheckifSegmentisRootSegment S_CheckifSegmentisRootSegment --> N_CheckifSegmentisRootSegment_Node0 N_CheckifSegmentisRootSegment_Node0 -- No --> E_CheckifSegmentisRootSegment
File: GCCTBIO.cbl
GIVEN:
A segment name is provided for processing
WHEN:
The system evaluates the segment name against the root segment identifier
THEN:
- The system determines if the segment is a root segment type
- Routes accordingly
β Consolidated Acceptance Criteria
- The system checks the SSA flag type for qualified search requirements → the system determines whether to use qualified or unqualified SSA for the root segment 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_SSATypeQUALIFIEDSSA(["Start Step"])
E_SSATypeQUALIFIEDSSA(["End Step"])
N_SSATypeQUALIFIEDSSA_Node0{"The system checks the SSA flag type
for qualified search requirements"}:::decision N_SSATypeQUALIFIEDSSA_Node0_action["The system determines whether to
use qualified or unqualified SSA for
the root segment access"]:::main N_SSATypeQUALIFIEDSSA_Node0 -- Yes --> N_SSATypeQUALIFIEDSSA_Node0_action N_SSATypeQUALIFIEDSSA_Node0_action --> E_SSATypeQUALIFIEDSSA S_SSATypeQUALIFIEDSSA --> N_SSATypeQUALIFIEDSSA_Node0 N_SSATypeQUALIFIEDSSA_Node0 -- No --> E_SSATypeQUALIFIEDSSA
for qualified search requirements"}:::decision N_SSATypeQUALIFIEDSSA_Node0_action["The system determines whether to
use qualified or unqualified SSA for
the root segment access"]:::main N_SSATypeQUALIFIEDSSA_Node0 -- Yes --> N_SSATypeQUALIFIEDSSA_Node0_action N_SSATypeQUALIFIEDSSA_Node0_action --> E_SSATypeQUALIFIEDSSA S_SSATypeQUALIFIEDSSA --> N_SSATypeQUALIFIEDSSA_Node0 N_SSATypeQUALIFIEDSSA_Node0 -- No --> E_SSATypeQUALIFIEDSSA
File: GCCTBIO.cbl
GIVEN:
A root segment has been identified for processing
WHEN:
The system checks the SSA flag type for qualified search requirements
THEN:
The system determines whether to use qualified or unqualified SSA for the root segment access
β Consolidated Acceptance Criteria
- The SSA flag indicates qualified search is needed → the system assigns the root segment key value to enable precise segment access
- The system initializes the SSA configuration → the system sets both the root segment key value from GCSTBRT-KEY and the dependent segment key value from GCSTBDP-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_SetRootSegmentKeyValue(["Start Step"])
E_SetRootSegmentKeyValue(["End Step"])
N_SetRootSegmentKeyValue_Node0{"The SSA flag indicates qualified
search is needed"}:::decision N_SetRootSegmentKeyValue_Node0_action["The system assigns the root segment
key value to enable precise segment
access"]:::main N_SetRootSegmentKeyValue_Node0 -- Yes --> N_SetRootSegmentKeyValue_Node0_action N_SetRootSegmentKeyValue_Node0_action --> E_SetRootSegmentKeyValue S_SetRootSegmentKeyValue --> N_SetRootSegmentKeyValue_Node0 N_SetRootSegmentKeyValue_Node1{"The system initializes the SSA
configuration"}:::decision N_SetRootSegmentKeyValue_Node1_action["The system sets both the root
segment key value from GCSTBRT-KEY
and the dependent segment key value
from GCSTBDP-KEY"]:::main N_SetRootSegmentKeyValue_Node1 -- Yes --> N_SetRootSegmentKeyValue_Node1_action N_SetRootSegmentKeyValue_Node1_action --> E_SetRootSegmentKeyValue N_SetRootSegmentKeyValue_Node0 -- No --> N_SetRootSegmentKeyValue_Node1 N_SetRootSegmentKeyValue_Node1 -- No --> E_SetRootSegmentKeyValue
search is needed"}:::decision N_SetRootSegmentKeyValue_Node0_action["The system assigns the root segment
key value to enable precise segment
access"]:::main N_SetRootSegmentKeyValue_Node0 -- Yes --> N_SetRootSegmentKeyValue_Node0_action N_SetRootSegmentKeyValue_Node0_action --> E_SetRootSegmentKeyValue S_SetRootSegmentKeyValue --> N_SetRootSegmentKeyValue_Node0 N_SetRootSegmentKeyValue_Node1{"The system initializes the SSA
configuration"}:::decision N_SetRootSegmentKeyValue_Node1_action["The system sets both the root
segment key value from GCSTBRT-KEY
and the dependent segment key value
from GCSTBDP-KEY"]:::main N_SetRootSegmentKeyValue_Node1 -- Yes --> N_SetRootSegmentKeyValue_Node1_action N_SetRootSegmentKeyValue_Node1_action --> E_SetRootSegmentKeyValue N_SetRootSegmentKeyValue_Node0 -- No --> N_SetRootSegmentKeyValue_Node1 N_SetRootSegmentKeyValue_Node1 -- No --> E_SetRootSegmentKeyValue
File: GCCTBIO.cbl
GIVEN:
A root segment requires qualified SSA processing
WHEN:
The SSA flag indicates qualified search is needed
THEN:
The system assigns the root segment key value to enable precise segment access
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
The segment name is a dependent segment (GCSTBDP-KEY-NAME) and the SSA flag is qualified and the unqualified SSA flag is not set (space)
WHEN:
The system initializes the SSA configuration
THEN:
- The system sets both the root segment key value from gcstbrt-key
- The dependent segment key value from gcstbdp-key
β Consolidated Acceptance Criteria
- The SSA flag indicates unqualified search is acceptable → the system skips the key value assignment and continues processing without specific key setup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipKeySetup(["Start Step"])
E_SkipKeySetup(["End Step"])
N_SkipKeySetup_Node0{"The SSA flag indicates unqualified
search is acceptable"}:::decision N_SkipKeySetup_Node0_action["The system skips the key value
assignment and continues processing
without specific key setup"]:::main N_SkipKeySetup_Node0 -- Yes --> N_SkipKeySetup_Node0_action N_SkipKeySetup_Node0_action --> E_SkipKeySetup S_SkipKeySetup --> N_SkipKeySetup_Node0 N_SkipKeySetup_Node0 -- No --> E_SkipKeySetup
search is acceptable"}:::decision N_SkipKeySetup_Node0_action["The system skips the key value
assignment and continues processing
without specific key setup"]:::main N_SkipKeySetup_Node0 -- Yes --> N_SkipKeySetup_Node0_action N_SkipKeySetup_Node0_action --> E_SkipKeySetup S_SkipKeySetup --> N_SkipKeySetup_Node0 N_SkipKeySetup_Node0 -- No --> E_SkipKeySetup
File: GCCTBIO.cbl
GIVEN:
A root segment is being processed with unqualified SSA requirements
WHEN:
The SSA flag indicates unqualified search is acceptable
THEN:
- The system skips the key value assignment
- Continues processing without specific key setup
β Consolidated Acceptance Criteria
- The system initializes the SSA structure for dependent segment access → the system sets the root segment key value from GCSTBRT-KEY and sets the dependent segment key value from GCSTBDP-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_SetRootSegmentKeyValueSetDependentSegmentKeyValue(["Start Step"])
E_SetRootSegmentKeyValueSetDependentSegmentKeyValue(["End Step"])
N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0{"The system initializes the SSA
structure for dependent segment
access"}:::decision N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0_action["The system sets the root segment
key value from GCSTBRT-KEY and sets
the dependent segment key value from
GCSTBDP-KEY"]:::main N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0 -- Yes --> N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0_action N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0_action --> E_SetRootSegmentKeyValueSetDependentSegmentKeyValue S_SetRootSegmentKeyValueSetDependentSegmentKeyValue --> N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0 N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0 -- No --> E_SetRootSegmentKeyValueSetDependentSegmentKeyValue
structure for dependent segment
access"}:::decision N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0_action["The system sets the root segment
key value from GCSTBRT-KEY and sets
the dependent segment key value from
GCSTBDP-KEY"]:::main N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0 -- Yes --> N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0_action N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0_action --> E_SetRootSegmentKeyValueSetDependentSegmentKeyValue S_SetRootSegmentKeyValueSetDependentSegmentKeyValue --> N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0 N_SetRootSegmentKeyValueSetDependentSegmentKeyValue_Node0 -- No --> E_SetRootSegmentKeyValueSetDependentSegmentKeyValue
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
The segment name is a dependent segment (GCSTBDP-KEY-NAME) and the SSA flag is set to qualified SSA and the unqualified SSA flag is not set (equals space)
WHEN:
The system initializes the SSA structure for dependent segment access
THEN:
- The system sets the root segment key value from gcstbrt-key
- Sets the dependent segment key value from gcstbdp-key
β Consolidated Acceptance Criteria
- The system initializes the SSA structure for dependent segment access → the system sets the root segment key value from GCSTBRT-KEY and changes the SSA flag to unqualified SSA
- The system initializes the SSA structure for dependent segment access → the system sets the root segment key value from GCSTBRT-KEY and ensures the SSA flag is set to unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRootSegmentKeyValueChangeSSATypetoUnqualified(["Start Step"])
E_SetRootSegmentKeyValueChangeSSATypetoUnqualified(["End Step"])
N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0{"The system initializes the SSA
structure for dependent segment
access"}:::decision N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0_action["The system sets the root segment
key value from GCSTBRT-KEY and
changes the SSA flag to unqualified
SSA"]:::main N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0 -- Yes --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0_action N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0_action --> E_SetRootSegmentKeyValueChangeSSATypetoUnqualified S_SetRootSegmentKeyValueChangeSSATypetoUnqualified --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0 N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1{"The system initializes the SSA
structure for dependent segment
access"}:::decision N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1_action["The system sets the root segment
key value from GCSTBRT-KEY and
ensures the SSA flag is set to
unqualified SSA"]:::main N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1 -- Yes --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1_action N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1_action --> E_SetRootSegmentKeyValueChangeSSATypetoUnqualified N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0 -- No --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1 N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1 -- No --> E_SetRootSegmentKeyValueChangeSSATypetoUnqualified
structure for dependent segment
access"}:::decision N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0_action["The system sets the root segment
key value from GCSTBRT-KEY and
changes the SSA flag to unqualified
SSA"]:::main N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0 -- Yes --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0_action N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0_action --> E_SetRootSegmentKeyValueChangeSSATypetoUnqualified S_SetRootSegmentKeyValueChangeSSATypetoUnqualified --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0 N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1{"The system initializes the SSA
structure for dependent segment
access"}:::decision N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1_action["The system sets the root segment
key value from GCSTBRT-KEY and
ensures the SSA flag is set to
unqualified SSA"]:::main N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1 -- Yes --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1_action N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1_action --> E_SetRootSegmentKeyValueChangeSSATypetoUnqualified N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node0 -- No --> N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1 N_SetRootSegmentKeyValueChangeSSATypetoUnqualified_Node1 -- No --> E_SetRootSegmentKeyValueChangeSSATypetoUnqualified
File: GCCTBIO.cbl
GIVEN:
The segment name is a dependent segment (GCSTBDP-KEY-NAME) and the SSA flag is set to qualified SSA and the unqualified SSA flag is set (not equal to space)
WHEN:
The system initializes the SSA structure for dependent segment access
THEN:
- The system sets the root segment key value from gcstbrt-key
- Changes the ssa flag to unqualified ssa
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
The segment name is a dependent segment (GCSTBDP-KEY-NAME) and the SSA flag is not set to qualified SSA
WHEN:
The system initializes the SSA structure for dependent segment access
THEN:
- The system sets the root segment key value from gcstbrt-key
- Ensures the ssa flag is set to unqualified ssa
β Consolidated Acceptance Criteria
- The system initializes the SSA configuration → the system sets only the root segment key value from GCSTBRT-KEY and changes the SSA flag to unqualified
- The system initializes the SSA configuration → the system sets the root segment key value from GCSTBRT-KEY and ensures the SSA flag is set to unqualified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseAlternativeSSAConfiguration(["Start Step"])
E_UseAlternativeSSAConfiguration(["End Step"])
N_UseAlternativeSSAConfiguration_Node0{"The system initializes the SSA
configuration"}:::decision N_UseAlternativeSSAConfiguration_Node0_action["The system sets only the root
segment key value from GCSTBRT-KEY
and changes the SSA flag to
unqualified"]:::main N_UseAlternativeSSAConfiguration_Node0 -- Yes --> N_UseAlternativeSSAConfiguration_Node0_action N_UseAlternativeSSAConfiguration_Node0_action --> E_UseAlternativeSSAConfiguration S_UseAlternativeSSAConfiguration --> N_UseAlternativeSSAConfiguration_Node0 N_UseAlternativeSSAConfiguration_Node1{"The system initializes the SSA
configuration"}:::decision N_UseAlternativeSSAConfiguration_Node1_action["The system sets the root segment
key value from GCSTBRT-KEY and
ensures the SSA flag is set to
unqualified"]:::main N_UseAlternativeSSAConfiguration_Node1 -- Yes --> N_UseAlternativeSSAConfiguration_Node1_action N_UseAlternativeSSAConfiguration_Node1_action --> E_UseAlternativeSSAConfiguration N_UseAlternativeSSAConfiguration_Node0 -- No --> N_UseAlternativeSSAConfiguration_Node1 N_UseAlternativeSSAConfiguration_Node1 -- No --> E_UseAlternativeSSAConfiguration
configuration"}:::decision N_UseAlternativeSSAConfiguration_Node0_action["The system sets only the root
segment key value from GCSTBRT-KEY
and changes the SSA flag to
unqualified"]:::main N_UseAlternativeSSAConfiguration_Node0 -- Yes --> N_UseAlternativeSSAConfiguration_Node0_action N_UseAlternativeSSAConfiguration_Node0_action --> E_UseAlternativeSSAConfiguration S_UseAlternativeSSAConfiguration --> N_UseAlternativeSSAConfiguration_Node0 N_UseAlternativeSSAConfiguration_Node1{"The system initializes the SSA
configuration"}:::decision N_UseAlternativeSSAConfiguration_Node1_action["The system sets the root segment
key value from GCSTBRT-KEY and
ensures the SSA flag is set to
unqualified"]:::main N_UseAlternativeSSAConfiguration_Node1 -- Yes --> N_UseAlternativeSSAConfiguration_Node1_action N_UseAlternativeSSAConfiguration_Node1_action --> E_UseAlternativeSSAConfiguration N_UseAlternativeSSAConfiguration_Node0 -- No --> N_UseAlternativeSSAConfiguration_Node1 N_UseAlternativeSSAConfiguration_Node1 -- No --> E_UseAlternativeSSAConfiguration
File: GCCTBIO.cbl
GIVEN:
The segment name is a dependent segment (GCSTBDP-KEY-NAME) and the SSA flag is qualified and the unqualified SSA flag is set (not space)
WHEN:
The system initializes the SSA configuration
THEN:
- The system sets only the root segment key value from gcstbrt-key
- Changes the ssa flag to unqualified
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
The segment name is a dependent segment (GCSTBDP-KEY-NAME) and the SSA flag is not qualified
WHEN:
The system initializes the SSA configuration
THEN:
- The system sets the root segment key value from gcstbrt-key
- Ensures the ssa flag is set to unqualified
β Consolidated Acceptance Criteria
- SSA initialization is performed → root key value is set from GCSTBRT-KEY AND dependent key value is set from GCSTBDP-KEY
- SSA initialization is performed → root key value is set from GCSTBRT-KEY AND SSA type is set to unqualified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRootKeyValue(["Start Step"])
E_SetRootKeyValue(["End Step"])
N_SetRootKeyValue_Node0{"SSA initialization is performed"}:::decision
N_SetRootKeyValue_Node0_action["Root key value is set from
GCSTBRT-KEY AND dependent key value
is set from GCSTBDP-KEY"]:::main N_SetRootKeyValue_Node0 -- Yes --> N_SetRootKeyValue_Node0_action N_SetRootKeyValue_Node0_action --> E_SetRootKeyValue S_SetRootKeyValue --> N_SetRootKeyValue_Node0 N_SetRootKeyValue_Node1{"SSA initialization is performed"}:::decision N_SetRootKeyValue_Node1_action["Root key value is set from
GCSTBRT-KEY AND SSA type is set to
unqualified"]:::main N_SetRootKeyValue_Node1 -- Yes --> N_SetRootKeyValue_Node1_action N_SetRootKeyValue_Node1_action --> E_SetRootKeyValue N_SetRootKeyValue_Node0 -- No --> N_SetRootKeyValue_Node1 N_SetRootKeyValue_Node1 -- No --> E_SetRootKeyValue
GCSTBRT-KEY AND dependent key value
is set from GCSTBDP-KEY"]:::main N_SetRootKeyValue_Node0 -- Yes --> N_SetRootKeyValue_Node0_action N_SetRootKeyValue_Node0_action --> E_SetRootKeyValue S_SetRootKeyValue --> N_SetRootKeyValue_Node0 N_SetRootKeyValue_Node1{"SSA initialization is performed"}:::decision N_SetRootKeyValue_Node1_action["Root key value is set from
GCSTBRT-KEY AND SSA type is set to
unqualified"]:::main N_SetRootKeyValue_Node1 -- Yes --> N_SetRootKeyValue_Node1_action N_SetRootKeyValue_Node1_action --> E_SetRootKeyValue N_SetRootKeyValue_Node0 -- No --> N_SetRootKeyValue_Node1 N_SetRootKeyValue_Node1 -- No --> E_SetRootKeyValue
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
Segment name is GCSTBDP dependent segment AND SSA type is qualified AND unqualified SSA flag is not set (space)
WHEN:
SSA initialization is performed
THEN:
- Root key value is set from gcstbrt-key
- Dependent key value is set from gcstbdp-key
File: GCCTBIO.cbl
GIVEN:
Segment name is GCSTBDP dependent segment AND SSA type is unqualified
WHEN:
SSA initialization is performed
THEN:
- Root key value is set from gcstbrt-key
- Ssa type is set to unqualified
β Consolidated Acceptance Criteria
- SSA initialization is performed → root key value is set from GCSTBRT-KEY AND SSA type is changed to unqualified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRootKeyValueOnly(["Start Step"])
E_SetRootKeyValueOnly(["End Step"])
N_SetRootKeyValueOnly_Node0{"SSA initialization is performed"}:::decision
N_SetRootKeyValueOnly_Node0_action["Root key value is set from
GCSTBRT-KEY AND SSA type is changed
to unqualified"]:::main N_SetRootKeyValueOnly_Node0 -- Yes --> N_SetRootKeyValueOnly_Node0_action N_SetRootKeyValueOnly_Node0_action --> E_SetRootKeyValueOnly S_SetRootKeyValueOnly --> N_SetRootKeyValueOnly_Node0 N_SetRootKeyValueOnly_Node0 -- No --> E_SetRootKeyValueOnly
GCSTBRT-KEY AND SSA type is changed
to unqualified"]:::main N_SetRootKeyValueOnly_Node0 -- Yes --> N_SetRootKeyValueOnly_Node0_action N_SetRootKeyValueOnly_Node0_action --> E_SetRootKeyValueOnly S_SetRootKeyValueOnly --> N_SetRootKeyValueOnly_Node0 N_SetRootKeyValueOnly_Node0 -- No --> E_SetRootKeyValueOnly
File: GCCTBIO.cbl
GIVEN:
Segment name is GCSTBDP dependent segment AND SSA type is qualified AND unqualified SSA flag is set
WHEN:
SSA initialization is performed
THEN:
- Root key value is set from gcstbrt-key
- Ssa type is changed to unqualified
β Consolidated Acceptance Criteria
- The system checks the segment type → the system identifies whether it is a dependent segment (GCSTBDP-KEY-NAME) 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_IsSegmentGCSTBDP(["Start Step"])
E_IsSegmentGCSTBDP(["End Step"])
N_IsSegmentGCSTBDP_Node0{"The system checks the segment type"}:::decision
N_IsSegmentGCSTBDP_Node0_action["The system identifies whether it is
a dependent segment GCSTBDP-KEY-NAME
or not"]:::main N_IsSegmentGCSTBDP_Node0 -- Yes --> N_IsSegmentGCSTBDP_Node0_action N_IsSegmentGCSTBDP_Node0_action --> E_IsSegmentGCSTBDP S_IsSegmentGCSTBDP --> N_IsSegmentGCSTBDP_Node0 N_IsSegmentGCSTBDP_Node0 -- No --> E_IsSegmentGCSTBDP
a dependent segment GCSTBDP-KEY-NAME
or not"]:::main N_IsSegmentGCSTBDP_Node0 -- Yes --> N_IsSegmentGCSTBDP_Node0_action N_IsSegmentGCSTBDP_Node0_action --> E_IsSegmentGCSTBDP S_IsSegmentGCSTBDP --> N_IsSegmentGCSTBDP_Node0 N_IsSegmentGCSTBDP_Node0 -- No --> E_IsSegmentGCSTBDP
File: GCCTBIO.cbl
GIVEN:
A segment name is provided for processing
WHEN:
The system checks the segment type
THEN:
The system identifies whether it is a dependent segment (GCSTBDP-KEY-NAME) or not
β Consolidated Acceptance Criteria
- If the SSA flag type → the system determines if the SSA type is qualified 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_IsSSATypeQualified(["Start Step"])
E_IsSSATypeQualified(["End Step"])
N_IsSSATypeQualified_Node0{"The system evaluates the SSA flag
type"}:::decision N_IsSSATypeQualified_Node0_action["The system determines if the SSA
type is qualified or not"]:::main N_IsSSATypeQualified_Node0 -- Yes --> N_IsSSATypeQualified_Node0_action N_IsSSATypeQualified_Node0_action --> E_IsSSATypeQualified S_IsSSATypeQualified --> N_IsSSATypeQualified_Node0 N_IsSSATypeQualified_Node0 -- No --> E_IsSSATypeQualified
type"}:::decision N_IsSSATypeQualified_Node0_action["The system determines if the SSA
type is qualified or not"]:::main N_IsSSATypeQualified_Node0 -- Yes --> N_IsSSATypeQualified_Node0_action N_IsSSATypeQualified_Node0_action --> E_IsSSATypeQualified S_IsSSATypeQualified --> N_IsSSATypeQualified_Node0 N_IsSSATypeQualified_Node0 -- No --> E_IsSSATypeQualified
File: GCCTBIO.cbl
GIVEN:
A dependent segment is being processed
WHEN:
The system evaluates the SSA flag type
THEN:
The system determines if the SSA type is qualified or not
β Consolidated Acceptance Criteria
- The system checks the unqualified SSA flag status → the system determines if the unqualified flag is set (not space) or not set (space)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsUnqualifiedFlagSet(["Start Step"])
E_IsUnqualifiedFlagSet(["End Step"])
N_IsUnqualifiedFlagSet_Node0{"The system checks the unqualified
SSA flag status"}:::decision N_IsUnqualifiedFlagSet_Node0_action["The system determines if the
unqualified flag is set not space or
not set space"]:::main N_IsUnqualifiedFlagSet_Node0 -- Yes --> N_IsUnqualifiedFlagSet_Node0_action N_IsUnqualifiedFlagSet_Node0_action --> E_IsUnqualifiedFlagSet S_IsUnqualifiedFlagSet --> N_IsUnqualifiedFlagSet_Node0 N_IsUnqualifiedFlagSet_Node0 -- No --> E_IsUnqualifiedFlagSet
SSA flag status"}:::decision N_IsUnqualifiedFlagSet_Node0_action["The system determines if the
unqualified flag is set not space or
not set space"]:::main N_IsUnqualifiedFlagSet_Node0 -- Yes --> N_IsUnqualifiedFlagSet_Node0_action N_IsUnqualifiedFlagSet_Node0_action --> E_IsUnqualifiedFlagSet S_IsUnqualifiedFlagSet --> N_IsUnqualifiedFlagSet_Node0 N_IsUnqualifiedFlagSet_Node0 -- No --> E_IsUnqualifiedFlagSet
File: GCCTBIO.cbl
GIVEN:
A dependent segment with qualified SSA type is being processed
WHEN:
The system checks the unqualified SSA flag status
THEN:
The system determines if the unqualified flag is set (not space) or not set (space)
β Consolidated Acceptance Criteria
- The system configures the SSA parameters → the system sets both root key value and dependent key value while maintaining qualified SSA 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_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType(["Start Step"])
E_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType(["End Step"])
N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0{"The system configures the SSA
parameters"}:::decision N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0_action["The system sets both root key value
and dependent key value while
maintaining qualified SSA type"]:::main N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0 -- Yes --> N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0_action N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0_action --> E_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType S_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType --> N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0 N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0 -- No --> E_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType
parameters"}:::decision N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0_action["The system sets both root key value
and dependent key value while
maintaining qualified SSA type"]:::main N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0 -- Yes --> N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0_action N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0_action --> E_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType S_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType --> N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0 N_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType_Node0 -- No --> E_SetRootKeyValueSetDependentKeyValueKeepQualifiedSSAType
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A dependent segment with qualified SSA type and unqualified flag not set
WHEN:
The system configures the SSA parameters
THEN:
- The system sets both root key value
- Dependent key value while maintaining qualified ssa type
β Consolidated Acceptance Criteria
- The system configures the SSA parameters → the system sets only the root key value and changes the SSA type to unqualified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRootKeyValueOnlyChangetoUnqualifiedSSAType(["Start Step"])
E_SetRootKeyValueOnlyChangetoUnqualifiedSSAType(["End Step"])
N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0{"The system configures the SSA
parameters"}:::decision N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0_action["The system sets only the root key
value and changes the SSA type to
unqualified"]:::main N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0 -- Yes --> N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0_action N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0_action --> E_SetRootKeyValueOnlyChangetoUnqualifiedSSAType S_SetRootKeyValueOnlyChangetoUnqualifiedSSAType --> N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0 N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0 -- No --> E_SetRootKeyValueOnlyChangetoUnqualifiedSSAType
parameters"}:::decision N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0_action["The system sets only the root key
value and changes the SSA type to
unqualified"]:::main N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0 -- Yes --> N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0_action N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0_action --> E_SetRootKeyValueOnlyChangetoUnqualifiedSSAType S_SetRootKeyValueOnlyChangetoUnqualifiedSSAType --> N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0 N_SetRootKeyValueOnlyChangetoUnqualifiedSSAType_Node0 -- No --> E_SetRootKeyValueOnlyChangetoUnqualifiedSSAType
File: GCCTBIO.cbl
GIVEN:
A dependent segment with qualified SSA type and unqualified flag set
WHEN:
The system configures the SSA parameters
THEN:
- The system sets only the root key value
- Changes the ssa type to unqualified
β Consolidated Acceptance Criteria
- If the SSA flag type → the system determines if the SSA type is unqualified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSSATypeUnqualified(["Start Step"])
E_IsSSATypeUnqualified(["End Step"])
N_IsSSATypeUnqualified_Node0{"The system evaluates the SSA flag
type"}:::decision N_IsSSATypeUnqualified_Node0_action["The system determines if the SSA
type is unqualified"]:::main N_IsSSATypeUnqualified_Node0 -- Yes --> N_IsSSATypeUnqualified_Node0_action N_IsSSATypeUnqualified_Node0_action --> E_IsSSATypeUnqualified S_IsSSATypeUnqualified --> N_IsSSATypeUnqualified_Node0 N_IsSSATypeUnqualified_Node0 -- No --> E_IsSSATypeUnqualified
type"}:::decision N_IsSSATypeUnqualified_Node0_action["The system determines if the SSA
type is unqualified"]:::main N_IsSSATypeUnqualified_Node0 -- Yes --> N_IsSSATypeUnqualified_Node0_action N_IsSSATypeUnqualified_Node0_action --> E_IsSSATypeUnqualified S_IsSSATypeUnqualified --> N_IsSSATypeUnqualified_Node0 N_IsSSATypeUnqualified_Node0 -- No --> E_IsSSATypeUnqualified
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A dependent segment is being processed and SSA type is not qualified
WHEN:
The system evaluates the SSA flag type
THEN:
The system determines if the SSA type is unqualified
β Consolidated Acceptance Criteria
- The system configures the SSA parameters → the system sets the root key value and forces the SSA type to unqualified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRootKeyValueForceUnqualifiedSSAType(["Start Step"])
E_SetRootKeyValueForceUnqualifiedSSAType(["End Step"])
N_SetRootKeyValueForceUnqualifiedSSAType_Node0{"The system configures the SSA
parameters"}:::decision N_SetRootKeyValueForceUnqualifiedSSAType_Node0_action["The system sets the root key value
and forces the SSA type to
unqualified"]:::main N_SetRootKeyValueForceUnqualifiedSSAType_Node0 -- Yes --> N_SetRootKeyValueForceUnqualifiedSSAType_Node0_action N_SetRootKeyValueForceUnqualifiedSSAType_Node0_action --> E_SetRootKeyValueForceUnqualifiedSSAType S_SetRootKeyValueForceUnqualifiedSSAType --> N_SetRootKeyValueForceUnqualifiedSSAType_Node0 N_SetRootKeyValueForceUnqualifiedSSAType_Node0 -- No --> E_SetRootKeyValueForceUnqualifiedSSAType
parameters"}:::decision N_SetRootKeyValueForceUnqualifiedSSAType_Node0_action["The system sets the root key value
and forces the SSA type to
unqualified"]:::main N_SetRootKeyValueForceUnqualifiedSSAType_Node0 -- Yes --> N_SetRootKeyValueForceUnqualifiedSSAType_Node0_action N_SetRootKeyValueForceUnqualifiedSSAType_Node0_action --> E_SetRootKeyValueForceUnqualifiedSSAType S_SetRootKeyValueForceUnqualifiedSSAType --> N_SetRootKeyValueForceUnqualifiedSSAType_Node0 N_SetRootKeyValueForceUnqualifiedSSAType_Node0 -- No --> E_SetRootKeyValueForceUnqualifiedSSAType
File: GCCTBIO.cbl
GIVEN:
A dependent segment with unqualified SSA type
WHEN:
The system configures the SSA parameters
THEN:
- The system sets the root key value
- Forces the ssa type to unqualified
β Consolidated Acceptance Criteria
- The system processes the segment → the system sets the return flag to indicate an invalid segment 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_InvalidSegmentSetErrorFlag(["Start Step"])
E_InvalidSegmentSetErrorFlag(["End Step"])
N_InvalidSegmentSetErrorFlag_Node0{"The system processes the segment"}:::decision
N_InvalidSegmentSetErrorFlag_Node0_action["The system sets the return flag to
indicate an invalid segment error"]:::main N_InvalidSegmentSetErrorFlag_Node0 -- Yes --> N_InvalidSegmentSetErrorFlag_Node0_action N_InvalidSegmentSetErrorFlag_Node0_action --> E_InvalidSegmentSetErrorFlag S_InvalidSegmentSetErrorFlag --> N_InvalidSegmentSetErrorFlag_Node0 N_InvalidSegmentSetErrorFlag_Node0 -- No --> E_InvalidSegmentSetErrorFlag
indicate an invalid segment error"]:::main N_InvalidSegmentSetErrorFlag_Node0 -- Yes --> N_InvalidSegmentSetErrorFlag_Node0_action N_InvalidSegmentSetErrorFlag_Node0_action --> E_InvalidSegmentSetErrorFlag S_InvalidSegmentSetErrorFlag --> N_InvalidSegmentSetErrorFlag_Node0 N_InvalidSegmentSetErrorFlag_Node0 -- No --> E_InvalidSegmentSetErrorFlag
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A segment name that is not a recognized segment type
WHEN:
The system processes the segment
THEN:
The system sets the return flag to indicate an invalid segment error
β Consolidated Acceptance Criteria
- The second PCB flag is spaces (not set) → the system routes the request to primary PCB processing (B310-ACCESS-ROOT-PCB1)
- The system routes the operation → the operation is directed to the primary PCB dependent segment 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_RoutetoPrimaryPCB(["Start Step"])
E_RoutetoPrimaryPCB(["End Step"])
N_RoutetoPrimaryPCB_Node0{"The second PCB flag is spaces not
set"}:::decision N_RoutetoPrimaryPCB_Node0_action["The system routes the request to
primary PCB processing
B310-ACCESS-ROOT-PCB1"]:::main N_RoutetoPrimaryPCB_Node0 -- Yes --> N_RoutetoPrimaryPCB_Node0_action N_RoutetoPrimaryPCB_Node0_action --> E_RoutetoPrimaryPCB S_RoutetoPrimaryPCB --> N_RoutetoPrimaryPCB_Node0 N_RoutetoPrimaryPCB_Node1{"The system routes the operation"}:::decision N_RoutetoPrimaryPCB_Node1_action["The operation is directed to the
primary PCB dependent segment
processing routine"]:::main N_RoutetoPrimaryPCB_Node1 -- Yes --> N_RoutetoPrimaryPCB_Node1_action N_RoutetoPrimaryPCB_Node1_action --> E_RoutetoPrimaryPCB N_RoutetoPrimaryPCB_Node0 -- No --> N_RoutetoPrimaryPCB_Node1 N_RoutetoPrimaryPCB_Node1 -- No --> E_RoutetoPrimaryPCB
set"}:::decision N_RoutetoPrimaryPCB_Node0_action["The system routes the request to
primary PCB processing
B310-ACCESS-ROOT-PCB1"]:::main N_RoutetoPrimaryPCB_Node0 -- Yes --> N_RoutetoPrimaryPCB_Node0_action N_RoutetoPrimaryPCB_Node0_action --> E_RoutetoPrimaryPCB S_RoutetoPrimaryPCB --> N_RoutetoPrimaryPCB_Node0 N_RoutetoPrimaryPCB_Node1{"The system routes the operation"}:::decision N_RoutetoPrimaryPCB_Node1_action["The operation is directed to the
primary PCB dependent segment
processing routine"]:::main N_RoutetoPrimaryPCB_Node1 -- Yes --> N_RoutetoPrimaryPCB_Node1_action N_RoutetoPrimaryPCB_Node1_action --> E_RoutetoPrimaryPCB N_RoutetoPrimaryPCB_Node0 -- No --> N_RoutetoPrimaryPCB_Node1 N_RoutetoPrimaryPCB_Node1 -- No --> E_RoutetoPrimaryPCB
File: GCCTBIO.cbl
GIVEN:
A root segment access request is being processed
WHEN:
The second PCB flag is spaces (not set)
THEN:
The system routes the request to primary PCB processing (B310-ACCESS-ROOT-PCB1)
File: GCCTBIO.cbl
GIVEN:
A dependent segment access operation is requested and the second PCB flag is spaces
WHEN:
The system routes the operation
THEN:
The operation is directed to the primary PCB dependent segment processing routine
β Consolidated Acceptance Criteria
- The second PCB flag is not spaces (is set) → the system routes the request to secondary PCB processing (B320-ACCESS-ROOT-PCB2)
- The system routes the operation → the operation is directed to the secondary PCB dependent segment 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_RoutetoSecondaryPCB(["Start Step"])
E_RoutetoSecondaryPCB(["End Step"])
N_RoutetoSecondaryPCB_Node0{"The second PCB flag is not spaces
is set"}:::decision N_RoutetoSecondaryPCB_Node0_action["The system routes the request to
secondary PCB processing
B320-ACCESS-ROOT-PCB2"]:::main N_RoutetoSecondaryPCB_Node0 -- Yes --> N_RoutetoSecondaryPCB_Node0_action N_RoutetoSecondaryPCB_Node0_action --> E_RoutetoSecondaryPCB S_RoutetoSecondaryPCB --> N_RoutetoSecondaryPCB_Node0 N_RoutetoSecondaryPCB_Node1{"The system routes the operation"}:::decision N_RoutetoSecondaryPCB_Node1_action["The operation is directed to the
secondary PCB dependent segment
processing routine"]:::main N_RoutetoSecondaryPCB_Node1 -- Yes --> N_RoutetoSecondaryPCB_Node1_action N_RoutetoSecondaryPCB_Node1_action --> E_RoutetoSecondaryPCB N_RoutetoSecondaryPCB_Node0 -- No --> N_RoutetoSecondaryPCB_Node1 N_RoutetoSecondaryPCB_Node1 -- No --> E_RoutetoSecondaryPCB
is set"}:::decision N_RoutetoSecondaryPCB_Node0_action["The system routes the request to
secondary PCB processing
B320-ACCESS-ROOT-PCB2"]:::main N_RoutetoSecondaryPCB_Node0 -- Yes --> N_RoutetoSecondaryPCB_Node0_action N_RoutetoSecondaryPCB_Node0_action --> E_RoutetoSecondaryPCB S_RoutetoSecondaryPCB --> N_RoutetoSecondaryPCB_Node0 N_RoutetoSecondaryPCB_Node1{"The system routes the operation"}:::decision N_RoutetoSecondaryPCB_Node1_action["The operation is directed to the
secondary PCB dependent segment
processing routine"]:::main N_RoutetoSecondaryPCB_Node1 -- Yes --> N_RoutetoSecondaryPCB_Node1_action N_RoutetoSecondaryPCB_Node1_action --> E_RoutetoSecondaryPCB N_RoutetoSecondaryPCB_Node0 -- No --> N_RoutetoSecondaryPCB_Node1 N_RoutetoSecondaryPCB_Node1 -- No --> E_RoutetoSecondaryPCB
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A root segment access request is being processed
WHEN:
The second PCB flag is not spaces (is set)
THEN:
The system routes the request to secondary PCB processing (B320-ACCESS-ROOT-PCB2)
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A dependent segment access operation is requested and the second PCB flag is not spaces
WHEN:
The system routes the operation
THEN:
The operation is directed to the secondary PCB dependent segment processing routine
β Consolidated Acceptance Criteria
- The database call is executed for root segment using primary PCB → the system calls the database interface with qualified root segment search arguments to retrieve specific records
- The system determines the SSA type for the database operation → the system executes the database call using qualified SSA parameters
- A database operation is requested on the root segment → execute database call using secondary PCB with qualified root segment search arguments
- A database operation is requested for dependent segment access → the system calls the database interface with the secondary PCB, user function code, segment data, and both qualified root and dependent SSA parameters
- The system determines the SSA type for database call execution → the system calls the database interface with both root segment qualified SSA and dependent segment qualified SSA parameters
- The database call is executed for dependent segment access → the system calls the database interface with secondary PCB, function code, segment data, root segment SSA, and dependent segment SSA
- Database call is executed for dependent segment operation → system calls CIMS with user function code, secondary PCB, segment data, root qualified SSA, and dependent qualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseCallwithQualifiedSSA(["Start Step"])
E_ExecuteDatabaseCallwithQualifiedSSA(["End Step"])
N_ExecuteDatabaseCallwithQualifiedSSA_Node0{"The database call is executed for
root segment using primary PCB"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node0_action["The system calls the database
interface with qualified root
segment search arguments to retrieve
specific records"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node0_action N_ExecuteDatabaseCallwithQualifiedSSA_Node0_action --> E_ExecuteDatabaseCallwithQualifiedSSA S_ExecuteDatabaseCallwithQualifiedSSA --> N_ExecuteDatabaseCallwithQualifiedSSA_Node0 N_ExecuteDatabaseCallwithQualifiedSSA_Node1{"The system determines the SSA type
for the database operation"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node1_action["The system executes the database
call using qualified SSA parameters"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node1 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node1_action N_ExecuteDatabaseCallwithQualifiedSSA_Node1_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node0 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node1 N_ExecuteDatabaseCallwithQualifiedSSA_Node2{"A database operation is requested
on the root segment"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node2_action["Execute database call using
secondary PCB with qualified root
segment search arguments"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node2 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node2_action N_ExecuteDatabaseCallwithQualifiedSSA_Node2_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node1 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node2 N_ExecuteDatabaseCallwithQualifiedSSA_Node3{"A database operation is requested
for dependent segment access"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node3_action["The system calls the database
interface with the secondary PCB,
user function code, segment data,
and both qualified root and
dependent SSA parameters"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node3 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node3_action N_ExecuteDatabaseCallwithQualifiedSSA_Node3_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node2 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node3 N_ExecuteDatabaseCallwithQualifiedSSA_Node4{"The system determines the SSA type
for database call execution"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node4_action["The system calls the database
interface with both root segment
qualified SSA and dependent segment
qualified SSA parameters"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node4 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node4_action N_ExecuteDatabaseCallwithQualifiedSSA_Node4_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node3 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node4 N_ExecuteDatabaseCallwithQualifiedSSA_Node5{"The database call is executed for
dependent segment access"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node5_action["The system calls the database
interface with secondary PCB,
function code, segment data, root
segment SSA, and dependent segment
SSA"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node5 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node5_action N_ExecuteDatabaseCallwithQualifiedSSA_Node5_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node4 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node5 N_ExecuteDatabaseCallwithQualifiedSSA_Node6{"database call is executed for
dependent segment operation"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node6_action["system calls CIMS with user
function code, secondary PCB,
segment data, root qualified SSA,
and dependent qualified SSA"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node6 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node6_action N_ExecuteDatabaseCallwithQualifiedSSA_Node6_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node5 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node6 N_ExecuteDatabaseCallwithQualifiedSSA_Node6 -- No --> E_ExecuteDatabaseCallwithQualifiedSSA
root segment using primary PCB"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node0_action["The system calls the database
interface with qualified root
segment search arguments to retrieve
specific records"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node0_action N_ExecuteDatabaseCallwithQualifiedSSA_Node0_action --> E_ExecuteDatabaseCallwithQualifiedSSA S_ExecuteDatabaseCallwithQualifiedSSA --> N_ExecuteDatabaseCallwithQualifiedSSA_Node0 N_ExecuteDatabaseCallwithQualifiedSSA_Node1{"The system determines the SSA type
for the database operation"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node1_action["The system executes the database
call using qualified SSA parameters"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node1 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node1_action N_ExecuteDatabaseCallwithQualifiedSSA_Node1_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node0 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node1 N_ExecuteDatabaseCallwithQualifiedSSA_Node2{"A database operation is requested
on the root segment"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node2_action["Execute database call using
secondary PCB with qualified root
segment search arguments"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node2 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node2_action N_ExecuteDatabaseCallwithQualifiedSSA_Node2_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node1 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node2 N_ExecuteDatabaseCallwithQualifiedSSA_Node3{"A database operation is requested
for dependent segment access"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node3_action["The system calls the database
interface with the secondary PCB,
user function code, segment data,
and both qualified root and
dependent SSA parameters"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node3 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node3_action N_ExecuteDatabaseCallwithQualifiedSSA_Node3_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node2 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node3 N_ExecuteDatabaseCallwithQualifiedSSA_Node4{"The system determines the SSA type
for database call execution"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node4_action["The system calls the database
interface with both root segment
qualified SSA and dependent segment
qualified SSA parameters"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node4 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node4_action N_ExecuteDatabaseCallwithQualifiedSSA_Node4_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node3 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node4 N_ExecuteDatabaseCallwithQualifiedSSA_Node5{"The database call is executed for
dependent segment access"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node5_action["The system calls the database
interface with secondary PCB,
function code, segment data, root
segment SSA, and dependent segment
SSA"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node5 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node5_action N_ExecuteDatabaseCallwithQualifiedSSA_Node5_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node4 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node5 N_ExecuteDatabaseCallwithQualifiedSSA_Node6{"database call is executed for
dependent segment operation"}:::decision N_ExecuteDatabaseCallwithQualifiedSSA_Node6_action["system calls CIMS with user
function code, secondary PCB,
segment data, root qualified SSA,
and dependent qualified SSA"]:::main N_ExecuteDatabaseCallwithQualifiedSSA_Node6 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSA_Node6_action N_ExecuteDatabaseCallwithQualifiedSSA_Node6_action --> E_ExecuteDatabaseCallwithQualifiedSSA N_ExecuteDatabaseCallwithQualifiedSSA_Node5 -- No --> N_ExecuteDatabaseCallwithQualifiedSSA_Node6 N_ExecuteDatabaseCallwithQualifiedSSA_Node6 -- No --> E_ExecuteDatabaseCallwithQualifiedSSA
File: GCCTBIO.cbl
GIVEN:
The system is processing a root segment access request and the SSA flag indicates qualified SSA is required
WHEN:
The database call is executed for root segment using primary PCB
THEN:
The system calls the database interface with qualified root segment search arguments to retrieve specific records
File: GCCTBIO.cbl
GIVEN:
A database call request is received and the SSA flag is set to QUALIFIED-SSA
WHEN:
The system determines the SSA type for the database operation
THEN:
The system executes the database call using qualified SSA parameters
File: GCCTBIO.cbl
GIVEN:
The SSA type is qualified SSA and secondary PCB is selected for root segment access
WHEN:
A database operation is requested on the root segment
THEN:
Execute database call using secondary PCB with qualified root segment search arguments
File: GCCTBIO.cbl
GIVEN:
The SSA flag is set to qualified SSA and the system is configured to use the secondary PCB
WHEN:
A database operation is requested for dependent segment access
THEN:
- The system calls the database interface with the secondary pcb, user function code, segment data, and both qualified root
- Dependent ssa parameters
File: GCCTBIO.cbl
GIVEN:
A dependent segment access request is being processed using primary PCB and the SSA flag is set to qualified SSA
WHEN:
The system determines the SSA type for database call execution
THEN:
- The system calls the database interface with both root segment qualified ssa
- Dependent segment qualified ssa parameters
File: GCCTBIO.cbl
GIVEN:
The system is processing a dependent segment access request AND the SSA flag is set to qualified SSA AND the second PCB flag is set
WHEN:
The database call is executed for dependent segment access
THEN:
The system calls the database interface with secondary PCB, function code, segment data, root segment SSA, and dependent segment SSA
File: GCCTBIO.cbl
GIVEN:
SSA type is qualified SSA and secondary PCB is being used for dependent segment access
WHEN:
database call is executed for dependent segment operation
THEN:
system calls CIMS with user function code, secondary PCB, segment data, root qualified SSA, and dependent qualified SSA
β Consolidated Acceptance Criteria
- The database call is executed for root segment using primary PCB → the system calls the database interface with unqualified root segment search arguments to retrieve records without specific criteria
- The system determines the SSA type for the database operation → the system executes the database call using unqualified SSA parameters
- A database operation is requested on the root segment → execute database call using secondary PCB with unqualified root segment search arguments
- A database operation is requested for dependent segment access → the system calls the database interface with the secondary PCB, user function code, segment data, qualified root SSA, and unqualified dependent SSA parameters
- The system determines the SSA type for database call execution → the system calls the database interface with root segment qualified SSA and dependent segment unqualified SSA parameters
- The database call is executed for dependent segment access → the system calls the database interface with secondary PCB, function code, segment data, root segment SSA, and dependent segment unqualified SSA
- Database call is executed for dependent segment operation → system calls CIMS with user function code, secondary PCB, segment data, root qualified SSA, and dependent unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseCallwithUnqualifiedSSA(["Start Step"])
E_ExecuteDatabaseCallwithUnqualifiedSSA(["End Step"])
N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0{"The database call is executed for
root segment using primary PCB"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0_action["The system calls the database
interface with unqualified root
segment search arguments to retrieve
records without specific criteria"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA S_ExecuteDatabaseCallwithUnqualifiedSSA --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1{"The system determines the SSA type
for the database operation"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1_action["The system executes the database
call using unqualified SSA
parameters"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2{"A database operation is requested
on the root segment"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2_action["Execute database call using
secondary PCB with unqualified root
segment search arguments"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3{"A database operation is requested
for dependent segment access"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3_action["The system calls the database
interface with the secondary PCB,
user function code, segment data,
qualified root SSA, and unqualified
dependent SSA parameters"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4{"The system determines the SSA type
for database call execution"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4_action["The system calls the database
interface with root segment
qualified SSA and dependent segment
unqualified SSA parameters"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5{"The database call is executed for
dependent segment access"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5_action["The system calls the database
interface with secondary PCB,
function code, segment data, root
segment SSA, and dependent segment
unqualified SSA"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6{"database call is executed for
dependent segment operation"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6_action["system calls CIMS with user
function code, secondary PCB,
segment data, root qualified SSA,
and dependent unqualified SSA"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6 -- No --> E_ExecuteDatabaseCallwithUnqualifiedSSA
root segment using primary PCB"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0_action["The system calls the database
interface with unqualified root
segment search arguments to retrieve
records without specific criteria"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA S_ExecuteDatabaseCallwithUnqualifiedSSA --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1{"The system determines the SSA type
for the database operation"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1_action["The system executes the database
call using unqualified SSA
parameters"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node0 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2{"A database operation is requested
on the root segment"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2_action["Execute database call using
secondary PCB with unqualified root
segment search arguments"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node1 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3{"A database operation is requested
for dependent segment access"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3_action["The system calls the database
interface with the secondary PCB,
user function code, segment data,
qualified root SSA, and unqualified
dependent SSA parameters"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node2 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4{"The system determines the SSA type
for database call execution"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4_action["The system calls the database
interface with root segment
qualified SSA and dependent segment
unqualified SSA parameters"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node3 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5{"The database call is executed for
dependent segment access"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5_action["The system calls the database
interface with secondary PCB,
function code, segment data, root
segment SSA, and dependent segment
unqualified SSA"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node4 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6{"database call is executed for
dependent segment operation"}:::decision N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6_action["system calls CIMS with user
function code, secondary PCB,
segment data, root qualified SSA,
and dependent unqualified SSA"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6_action N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6_action --> E_ExecuteDatabaseCallwithUnqualifiedSSA N_ExecuteDatabaseCallwithUnqualifiedSSA_Node5 -- No --> N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6 N_ExecuteDatabaseCallwithUnqualifiedSSA_Node6 -- No --> E_ExecuteDatabaseCallwithUnqualifiedSSA
File: GCCTBIO.cbl
GIVEN:
The system is processing a root segment access request and the SSA flag indicates unqualified SSA is required
WHEN:
The database call is executed for root segment using primary PCB
THEN:
The system calls the database interface with unqualified root segment search arguments to retrieve records without specific criteria
File: GCCTBIO.cbl
GIVEN:
A database call request is received and the SSA flag is set to UNQUALIFIED-SSA
WHEN:
The system determines the SSA type for the database operation
THEN:
The system executes the database call using unqualified SSA parameters
File: GCCTBIO.cbl
GIVEN:
The SSA type is unqualified SSA and secondary PCB is selected for root segment access
WHEN:
A database operation is requested on the root segment
THEN:
Execute database call using secondary PCB with unqualified root segment search arguments
File: GCCTBIO.cbl
GIVEN:
The SSA flag is set to unqualified SSA and the system is configured to use the secondary PCB
WHEN:
A database operation is requested for dependent segment access
THEN:
The system calls the database interface with the secondary PCB, user function code, segment data, qualified root SSA, and unqualified dependent SSA parameters
File: GCCTBIO.cbl
GIVEN:
A dependent segment access request is being processed using primary PCB and the SSA flag is set to unqualified SSA
WHEN:
The system determines the SSA type for database call execution
THEN:
- The system calls the database interface with root segment qualified ssa
- Dependent segment unqualified ssa parameters
File: GCCTBIO.cbl
GIVEN:
The system is processing a dependent segment access request AND the SSA flag is set to unqualified SSA AND the second PCB flag is set
WHEN:
The database call is executed for dependent segment access
THEN:
The system calls the database interface with secondary PCB, function code, segment data, root segment SSA, and dependent segment unqualified SSA
File: GCCTBIO.cbl
GIVEN:
SSA type is unqualified SSA and secondary PCB is being used for dependent segment access
WHEN:
database call is executed for dependent segment operation
THEN:
system calls CIMS with user function code, secondary PCB, segment data, root qualified SSA, and dependent unqualified SSA
β Consolidated Acceptance Criteria
- The database call is executed for root segment using primary PCB → the system calls the database interface without any segment search arguments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseCallwithoutSSA(["Start Step"])
E_ExecuteDatabaseCallwithoutSSA(["End Step"])
N_ExecuteDatabaseCallwithoutSSA_Node0{"The database call is executed for
root segment using primary PCB"}:::decision N_ExecuteDatabaseCallwithoutSSA_Node0_action["The system calls the database
interface without any segment search
arguments"]:::main N_ExecuteDatabaseCallwithoutSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithoutSSA_Node0_action N_ExecuteDatabaseCallwithoutSSA_Node0_action --> E_ExecuteDatabaseCallwithoutSSA S_ExecuteDatabaseCallwithoutSSA --> N_ExecuteDatabaseCallwithoutSSA_Node0 N_ExecuteDatabaseCallwithoutSSA_Node0 -- No --> E_ExecuteDatabaseCallwithoutSSA
root segment using primary PCB"}:::decision N_ExecuteDatabaseCallwithoutSSA_Node0_action["The system calls the database
interface without any segment search
arguments"]:::main N_ExecuteDatabaseCallwithoutSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithoutSSA_Node0_action N_ExecuteDatabaseCallwithoutSSA_Node0_action --> E_ExecuteDatabaseCallwithoutSSA S_ExecuteDatabaseCallwithoutSSA --> N_ExecuteDatabaseCallwithoutSSA_Node0 N_ExecuteDatabaseCallwithoutSSA_Node0 -- No --> E_ExecuteDatabaseCallwithoutSSA
File: GCCTBIO.cbl
GIVEN:
The system is processing a root segment access request and no SSA is required for the operation
WHEN:
The database call is executed for root segment using primary PCB
THEN:
The system calls the database interface without any segment search arguments
β Consolidated Acceptance Criteria
- The SSA type needs to be determined for the database operation → the system checks the WS-SSA-FLAG to determine whether to use qualified SSA, unqualified SSA, or no SSA for the 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_SSATypeCheck(["Start Step"])
E_SSATypeCheck(["End Step"])
N_SSATypeCheck_Node0{"The SSA type needs to be determined
for the database operation"}:::decision N_SSATypeCheck_Node0_action["The system checks the WS-SSA-FLAG
to determine whether to use
qualified SSA, unqualified SSA, or
no SSA for the database call"]:::main N_SSATypeCheck_Node0 -- Yes --> N_SSATypeCheck_Node0_action N_SSATypeCheck_Node0_action --> E_SSATypeCheck S_SSATypeCheck --> N_SSATypeCheck_Node0 N_SSATypeCheck_Node0 -- No --> E_SSATypeCheck
for the database operation"}:::decision N_SSATypeCheck_Node0_action["The system checks the WS-SSA-FLAG
to determine whether to use
qualified SSA, unqualified SSA, or
no SSA for the database call"]:::main N_SSATypeCheck_Node0 -- Yes --> N_SSATypeCheck_Node0_action N_SSATypeCheck_Node0_action --> E_SSATypeCheck S_SSATypeCheck --> N_SSATypeCheck_Node0 N_SSATypeCheck_Node0 -- No --> E_SSATypeCheck
File: GCCTBIO.cbl
GIVEN:
The system is preparing to execute a database call for root segment access using primary PCB
WHEN:
The SSA type needs to be determined for the database operation
THEN:
The system checks the WS-SSA-FLAG to determine whether to use qualified SSA, unqualified SSA, or no SSA for the database call
β Consolidated Acceptance Criteria
- The system determines the SSA type for the database operation → the system executes the database call without SSA parameters
- A database operation is requested on the root segment → execute database call using secondary PCB without any search arguments
- A database operation is requested for dependent segment access → the system calls the database interface with only the secondary PCB, user function code, and segment data parameters
- The system determines the SSA type for database call execution → the system calls the database interface without any SSA parameters, using only basic operation parameters
- The database call is executed for dependent segment access → the system calls the database interface with secondary PCB, function code, and segment data only
- Database call is executed for dependent segment operation → system calls CIMS with user function code, secondary PCB, and segment data 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_ExecuteDatabaseCallwithNoSSA(["Start Step"])
E_ExecuteDatabaseCallwithNoSSA(["End Step"])
N_ExecuteDatabaseCallwithNoSSA_Node0{"The system determines the SSA type
for the database operation"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node0_action["The system executes the database
call without SSA parameters"]:::main N_ExecuteDatabaseCallwithNoSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node0_action N_ExecuteDatabaseCallwithNoSSA_Node0_action --> E_ExecuteDatabaseCallwithNoSSA S_ExecuteDatabaseCallwithNoSSA --> N_ExecuteDatabaseCallwithNoSSA_Node0 N_ExecuteDatabaseCallwithNoSSA_Node1{"A database operation is requested
on the root segment"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node1_action["Execute database call using
secondary PCB without any search
arguments"]:::main N_ExecuteDatabaseCallwithNoSSA_Node1 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node1_action N_ExecuteDatabaseCallwithNoSSA_Node1_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node0 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node1 N_ExecuteDatabaseCallwithNoSSA_Node2{"A database operation is requested
for dependent segment access"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node2_action["The system calls the database
interface with only the secondary
PCB, user function code, and segment
data parameters"]:::main N_ExecuteDatabaseCallwithNoSSA_Node2 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node2_action N_ExecuteDatabaseCallwithNoSSA_Node2_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node1 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node2 N_ExecuteDatabaseCallwithNoSSA_Node3{"The system determines the SSA type
for database call execution"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node3_action["The system calls the database
interface without any SSA
parameters, using only basic
operation parameters"]:::main N_ExecuteDatabaseCallwithNoSSA_Node3 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node3_action N_ExecuteDatabaseCallwithNoSSA_Node3_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node2 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node3 N_ExecuteDatabaseCallwithNoSSA_Node4{"The database call is executed for
dependent segment access"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node4_action["The system calls the database
interface with secondary PCB,
function code, and segment data only"]:::main N_ExecuteDatabaseCallwithNoSSA_Node4 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node4_action N_ExecuteDatabaseCallwithNoSSA_Node4_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node3 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node4 N_ExecuteDatabaseCallwithNoSSA_Node5{"database call is executed for
dependent segment operation"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node5_action["system calls CIMS with user
function code, secondary PCB, and
segment data only"]:::main N_ExecuteDatabaseCallwithNoSSA_Node5 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node5_action N_ExecuteDatabaseCallwithNoSSA_Node5_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node4 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node5 N_ExecuteDatabaseCallwithNoSSA_Node5 -- No --> E_ExecuteDatabaseCallwithNoSSA
for the database operation"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node0_action["The system executes the database
call without SSA parameters"]:::main N_ExecuteDatabaseCallwithNoSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node0_action N_ExecuteDatabaseCallwithNoSSA_Node0_action --> E_ExecuteDatabaseCallwithNoSSA S_ExecuteDatabaseCallwithNoSSA --> N_ExecuteDatabaseCallwithNoSSA_Node0 N_ExecuteDatabaseCallwithNoSSA_Node1{"A database operation is requested
on the root segment"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node1_action["Execute database call using
secondary PCB without any search
arguments"]:::main N_ExecuteDatabaseCallwithNoSSA_Node1 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node1_action N_ExecuteDatabaseCallwithNoSSA_Node1_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node0 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node1 N_ExecuteDatabaseCallwithNoSSA_Node2{"A database operation is requested
for dependent segment access"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node2_action["The system calls the database
interface with only the secondary
PCB, user function code, and segment
data parameters"]:::main N_ExecuteDatabaseCallwithNoSSA_Node2 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node2_action N_ExecuteDatabaseCallwithNoSSA_Node2_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node1 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node2 N_ExecuteDatabaseCallwithNoSSA_Node3{"The system determines the SSA type
for database call execution"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node3_action["The system calls the database
interface without any SSA
parameters, using only basic
operation parameters"]:::main N_ExecuteDatabaseCallwithNoSSA_Node3 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node3_action N_ExecuteDatabaseCallwithNoSSA_Node3_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node2 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node3 N_ExecuteDatabaseCallwithNoSSA_Node4{"The database call is executed for
dependent segment access"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node4_action["The system calls the database
interface with secondary PCB,
function code, and segment data only"]:::main N_ExecuteDatabaseCallwithNoSSA_Node4 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node4_action N_ExecuteDatabaseCallwithNoSSA_Node4_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node3 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node4 N_ExecuteDatabaseCallwithNoSSA_Node5{"database call is executed for
dependent segment operation"}:::decision N_ExecuteDatabaseCallwithNoSSA_Node5_action["system calls CIMS with user
function code, secondary PCB, and
segment data only"]:::main N_ExecuteDatabaseCallwithNoSSA_Node5 -- Yes --> N_ExecuteDatabaseCallwithNoSSA_Node5_action N_ExecuteDatabaseCallwithNoSSA_Node5_action --> E_ExecuteDatabaseCallwithNoSSA N_ExecuteDatabaseCallwithNoSSA_Node4 -- No --> N_ExecuteDatabaseCallwithNoSSA_Node5 N_ExecuteDatabaseCallwithNoSSA_Node5 -- No --> E_ExecuteDatabaseCallwithNoSSA
File: GCCTBIO.cbl
GIVEN:
A database call request is received and the SSA flag is set to NO-SSA or neither QUALIFIED-SSA nor UNQUALIFIED-SSA
WHEN:
The system determines the SSA type for the database operation
THEN:
The system executes the database call without SSA parameters
File: GCCTBIO.cbl
GIVEN:
No SSA is required and secondary PCB is selected for root segment access
WHEN:
A database operation is requested on the root segment
THEN:
Execute database call using secondary PCB without any search arguments
File: GCCTBIO.cbl
GIVEN:
The SSA flag indicates no SSA is required and the system is configured to use the secondary PCB
WHEN:
A database operation is requested for dependent segment access
THEN:
The system calls the database interface with only the secondary PCB, user function code, and segment data parameters
File: GCCTBIO.cbl
GIVEN:
A dependent segment access request is being processed using primary PCB and the SSA flag is set to no SSA
WHEN:
The system determines the SSA type for database call execution
THEN:
The system calls the database interface without any SSA parameters, using only basic operation parameters
File: GCCTBIO.cbl
GIVEN:
The system is processing a dependent segment access request AND the SSA flag is set to no SSA AND the second PCB flag is set
WHEN:
The database call is executed for dependent segment access
THEN:
The system calls the database interface with secondary PCB, function code, and segment data only
File: GCCTBIO.cbl
GIVEN:
SSA type requires no SSA parameters and secondary PCB is being used for dependent segment access
WHEN:
database call is executed for dependent segment operation
THEN:
system calls CIMS with user function code, secondary PCB, and segment data only
β Consolidated Acceptance Criteria
- The system checks the second PCB flag status → if the second PCB flag is spaces (not set), route to primary PCB processing, otherwise route to secondary PCB 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_CheckPCBSelectionFlag(["Start Step"])
E_CheckPCBSelectionFlag(["End Step"])
N_CheckPCBSelectionFlag_Node0{"The system checks the second PCB
flag status"}:::decision N_CheckPCBSelectionFlag_Node0_action["If the second PCB flag is spaces
not set, route to primary PCB
processing, otherwise route to
secondary PCB processing"]:::main N_CheckPCBSelectionFlag_Node0 -- Yes --> N_CheckPCBSelectionFlag_Node0_action N_CheckPCBSelectionFlag_Node0_action --> E_CheckPCBSelectionFlag S_CheckPCBSelectionFlag --> N_CheckPCBSelectionFlag_Node0 N_CheckPCBSelectionFlag_Node0 -- No --> E_CheckPCBSelectionFlag
flag status"}:::decision N_CheckPCBSelectionFlag_Node0_action["If the second PCB flag is spaces
not set, route to primary PCB
processing, otherwise route to
secondary PCB processing"]:::main N_CheckPCBSelectionFlag_Node0 -- Yes --> N_CheckPCBSelectionFlag_Node0_action N_CheckPCBSelectionFlag_Node0_action --> E_CheckPCBSelectionFlag S_CheckPCBSelectionFlag --> N_CheckPCBSelectionFlag_Node0 N_CheckPCBSelectionFlag_Node0 -- No --> E_CheckPCBSelectionFlag
File: GCCTBIO.cbl
GIVEN:
A dependent segment access operation is requested
WHEN:
The system checks the second PCB flag status
THEN:
If the second PCB flag is spaces (not set), route to primary PCB processing, otherwise route to secondary PCB processing
β Consolidated Acceptance Criteria
- The system executes the database operation → call the database interface with primary PCB, function code, segment data, qualified root SSA, and qualified dependent SSA
- The system executes the database operation → call the database interface with primary PCB, function code, segment data, qualified root SSA, and unqualified dependent SSA
- The system executes the database operation → call the database interface with primary PCB, function code, and segment data 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_ExecuteDependentSegmentOperationviaPrimaryPCB(["Start Step"])
E_ExecuteDependentSegmentOperationviaPrimaryPCB(["End Step"])
N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0_action["Call the database interface with
primary PCB, function code, segment
data, qualified root SSA, and
qualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0 -- Yes --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0_action N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0_action --> E_ExecuteDependentSegmentOperationviaPrimaryPCB S_ExecuteDependentSegmentOperationviaPrimaryPCB --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0 N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1_action["Call the database interface with
primary PCB, function code, segment
data, qualified root SSA, and
unqualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1 -- Yes --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1_action N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1_action --> E_ExecuteDependentSegmentOperationviaPrimaryPCB N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0 -- No --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1 N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2_action["Call the database interface with
primary PCB, function code, and
segment data only"]:::main N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2 -- Yes --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2_action N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2_action --> E_ExecuteDependentSegmentOperationviaPrimaryPCB N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1 -- No --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2 N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2 -- No --> E_ExecuteDependentSegmentOperationviaPrimaryPCB
operation"}:::decision N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0_action["Call the database interface with
primary PCB, function code, segment
data, qualified root SSA, and
qualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0 -- Yes --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0_action N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0_action --> E_ExecuteDependentSegmentOperationviaPrimaryPCB S_ExecuteDependentSegmentOperationviaPrimaryPCB --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0 N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1_action["Call the database interface with
primary PCB, function code, segment
data, qualified root SSA, and
unqualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1 -- Yes --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1_action N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1_action --> E_ExecuteDependentSegmentOperationviaPrimaryPCB N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node0 -- No --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1 N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2_action["Call the database interface with
primary PCB, function code, and
segment data only"]:::main N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2 -- Yes --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2_action N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2_action --> E_ExecuteDependentSegmentOperationviaPrimaryPCB N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node1 -- No --> N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2 N_ExecuteDependentSegmentOperationviaPrimaryPCB_Node2 -- No --> E_ExecuteDependentSegmentOperationviaPrimaryPCB
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to primary PCB and the SSA flag indicates qualified SSA
WHEN:
The system executes the database operation
THEN:
Call the database interface with primary PCB, function code, segment data, qualified root SSA, and qualified dependent SSA
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to primary PCB and the SSA flag indicates unqualified SSA
WHEN:
The system executes the database operation
THEN:
Call the database interface with primary PCB, function code, segment data, qualified root SSA, and unqualified dependent SSA
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to primary PCB and the SSA flag indicates no SSA
WHEN:
The system executes the database operation
THEN:
Call the database interface with primary PCB, function code, and segment data only
β Consolidated Acceptance Criteria
- The system executes the database operation → call the database interface with secondary PCB, function code, segment data, qualified root SSA, and qualified dependent SSA
- The system executes the database operation → call the database interface with secondary PCB, function code, segment data, qualified root SSA, and unqualified dependent SSA
- The system executes the database operation → call the database interface with secondary PCB, function code, and segment data 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_ExecuteDependentSegmentOperationviaSecondaryPCB(["Start Step"])
E_ExecuteDependentSegmentOperationviaSecondaryPCB(["End Step"])
N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0_action["Call the database interface with
secondary PCB, function code,
segment data, qualified root SSA,
and qualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0 -- Yes --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0_action N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0_action --> E_ExecuteDependentSegmentOperationviaSecondaryPCB S_ExecuteDependentSegmentOperationviaSecondaryPCB --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0 N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1_action["Call the database interface with
secondary PCB, function code,
segment data, qualified root SSA,
and unqualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1 -- Yes --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1_action N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1_action --> E_ExecuteDependentSegmentOperationviaSecondaryPCB N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0 -- No --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1 N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2_action["Call the database interface with
secondary PCB, function code, and
segment data only"]:::main N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2 -- Yes --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2_action N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2_action --> E_ExecuteDependentSegmentOperationviaSecondaryPCB N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1 -- No --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2 N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2 -- No --> E_ExecuteDependentSegmentOperationviaSecondaryPCB
operation"}:::decision N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0_action["Call the database interface with
secondary PCB, function code,
segment data, qualified root SSA,
and qualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0 -- Yes --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0_action N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0_action --> E_ExecuteDependentSegmentOperationviaSecondaryPCB S_ExecuteDependentSegmentOperationviaSecondaryPCB --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0 N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1_action["Call the database interface with
secondary PCB, function code,
segment data, qualified root SSA,
and unqualified dependent SSA"]:::main N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1 -- Yes --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1_action N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1_action --> E_ExecuteDependentSegmentOperationviaSecondaryPCB N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node0 -- No --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1 N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2{"The system executes the database
operation"}:::decision N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2_action["Call the database interface with
secondary PCB, function code, and
segment data only"]:::main N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2 -- Yes --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2_action N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2_action --> E_ExecuteDependentSegmentOperationviaSecondaryPCB N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node1 -- No --> N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2 N_ExecuteDependentSegmentOperationviaSecondaryPCB_Node2 -- No --> E_ExecuteDependentSegmentOperationviaSecondaryPCB
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to secondary PCB and the SSA flag indicates qualified SSA
WHEN:
The system executes the database operation
THEN:
Call the database interface with secondary PCB, function code, segment data, qualified root SSA, and qualified dependent SSA
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to secondary PCB and the SSA flag indicates unqualified SSA
WHEN:
The system executes the database operation
THEN:
Call the database interface with secondary PCB, function code, segment data, qualified root SSA, and unqualified dependent SSA
File: GCCTBIO.cbl
GIVEN:
A dependent segment operation is routed to secondary PCB and the SSA flag indicates no SSA
WHEN:
The system executes the database operation
THEN:
Call the database interface with secondary PCB, function code, and segment data only
β Consolidated Acceptance Criteria
- The system checks the operation status code → if the status code is spaces, set return flag to successful, otherwise set return flag to unsuccessful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckOperationStatus(["Start Step"])
E_CheckOperationStatus(["End Step"])
N_CheckOperationStatus_Node0{"The system checks the operation
status code"}:::decision N_CheckOperationStatus_Node0_action["If the status code is spaces, set
return flag to successful, otherwise
set return flag to unsuccessful"]:::main N_CheckOperationStatus_Node0 -- Yes --> N_CheckOperationStatus_Node0_action N_CheckOperationStatus_Node0_action --> E_CheckOperationStatus S_CheckOperationStatus --> N_CheckOperationStatus_Node0 N_CheckOperationStatus_Node0 -- No --> E_CheckOperationStatus
status code"}:::decision N_CheckOperationStatus_Node0_action["If the status code is spaces, set
return flag to successful, otherwise
set return flag to unsuccessful"]:::main N_CheckOperationStatus_Node0 -- Yes --> N_CheckOperationStatus_Node0_action N_CheckOperationStatus_Node0_action --> E_CheckOperationStatus S_CheckOperationStatus --> N_CheckOperationStatus_Node0 N_CheckOperationStatus_Node0 -- No --> E_CheckOperationStatus
File: GCCTBIO.cbl
GIVEN:
A dependent segment database operation has been executed
WHEN:
The system checks the operation status code
THEN:
If the status code is spaces, set return flag to successful, otherwise set return flag to unsuccessful
β Consolidated Acceptance Criteria
- The database call is executed → the system calls the database interface with the function code, primary PCB, segment data, root segment qualified SSA, and dependent segment qualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA(["Start Step"])
E_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA(["End Step"])
N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0{"The database call is executed"}:::decision
N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0_action["The system calls the database
interface with the function code,
primary PCB, segment data, root
segment qualified SSA, and dependent
segment qualified SSA"]:::main N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0_action N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0_action --> E_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA S_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA --> N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0 N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0 -- No --> E_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA
interface with the function code,
primary PCB, segment data, root
segment qualified SSA, and dependent
segment qualified SSA"]:::main N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0_action N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0_action --> E_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA S_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA --> N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0 N_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA_Node0 -- No --> E_ExecuteDatabaseCallwithQualifiedSSARootSegmentSSADependentSegmentSSA
File: GCCTBIO.cbl
GIVEN:
A dependent segment database operation is requested using primary PCB and the SSA flag is set to qualified SSA
WHEN:
The database call is executed
THEN:
The system calls the database interface with the function code, primary PCB, segment data, root segment qualified SSA, and dependent segment qualified SSA
β Consolidated Acceptance Criteria
- The database call is executed → the system calls the database interface with the function code, primary PCB, segment data, root segment qualified SSA, and dependent segment unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA(["Start Step"])
E_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA(["End Step"])
N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0{"The database call is executed"}:::decision
N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0_action["The system calls the database
interface with the function code,
primary PCB, segment data, root
segment qualified SSA, and dependent
segment unqualified SSA"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0_action N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0_action --> E_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA S_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA --> N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0 N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0 -- No --> E_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA
interface with the function code,
primary PCB, segment data, root
segment qualified SSA, and dependent
segment unqualified SSA"]:::main N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0 -- Yes --> N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0_action N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0_action --> E_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA S_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA --> N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0 N_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA_Node0 -- No --> E_ExecuteDatabaseCallwithUnqualifiedSSARootSegmentSSAUnqualifiedDependentSSA
File: GCCTBIO.cbl
GIVEN:
A dependent segment database operation is requested using primary PCB and the SSA flag is set to unqualified SSA
WHEN:
The database call is executed
THEN:
The system calls the database interface with the function code, primary PCB, segment data, root segment qualified SSA, and dependent segment unqualified SSA
β Consolidated Acceptance Criteria
- The database call is executed → the system calls the database interface with only the function code, primary PCB, and segment data without any 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_ExecuteDatabaseCallwithNoSSANoSSAParameters(["Start Step"])
E_ExecuteDatabaseCallwithNoSSANoSSAParameters(["End Step"])
N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0{"The database call is executed"}:::decision
N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0_action["The system calls the database
interface with only the function
code, primary PCB, and segment data
without any SSA parameters"]:::main N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0 -- Yes --> N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0_action N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0_action --> E_ExecuteDatabaseCallwithNoSSANoSSAParameters S_ExecuteDatabaseCallwithNoSSANoSSAParameters --> N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0 N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0 -- No --> E_ExecuteDatabaseCallwithNoSSANoSSAParameters
interface with only the function
code, primary PCB, and segment data
without any SSA parameters"]:::main N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0 -- Yes --> N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0_action N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0_action --> E_ExecuteDatabaseCallwithNoSSANoSSAParameters S_ExecuteDatabaseCallwithNoSSANoSSAParameters --> N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0 N_ExecuteDatabaseCallwithNoSSANoSSAParameters_Node0 -- No --> E_ExecuteDatabaseCallwithNoSSANoSSAParameters
File: GCCTBIO.cbl
GIVEN:
A dependent segment database operation is requested using primary PCB and the SSA flag is set to no SSA
WHEN:
The database call is executed
THEN:
The system calls the database interface with only the function code, primary PCB, and segment data without any SSA parameters
β Consolidated Acceptance Criteria
- The system checks the SSA flag value → the system routes to qualified SSA call if flag equals qualified SSA, routes to unqualified SSA call if flag equals unqualified SSA, or routes to no SSA call for any other 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_SSAType(["Start Step"])
E_SSAType(["End Step"])
N_SSAType_Node0{"The system checks the SSA flag
value"}:::decision N_SSAType_Node0_action["The system routes to qualified SSA
call if flag equals qualified SSA,
routes to unqualified SSA call if
flag equals unqualified SSA, or
routes to no SSA call for any other
value"]:::main N_SSAType_Node0 -- Yes --> N_SSAType_Node0_action N_SSAType_Node0_action --> E_SSAType S_SSAType --> N_SSAType_Node0 N_SSAType_Node0 -- No --> E_SSAType
value"}:::decision N_SSAType_Node0_action["The system routes to qualified SSA
call if flag equals qualified SSA,
routes to unqualified SSA call if
flag equals unqualified SSA, or
routes to no SSA call for any other
value"]:::main N_SSAType_Node0 -- Yes --> N_SSAType_Node0_action N_SSAType_Node0_action --> E_SSAType S_SSAType --> N_SSAType_Node0 N_SSAType_Node0 -- No --> E_SSAType
File: GCCTBIO.cbl
GIVEN:
A dependent segment database operation is being processed with primary PCB
WHEN:
The system checks the SSA flag value
THEN:
The system routes to qualified SSA call if flag equals qualified SSA, routes to unqualified SSA call if flag equals unqualified SSA, or routes to no SSA call for any other value
β Consolidated Acceptance Criteria
- The system checks the CC-STATUS-CODE value → if CC-STATUS-CODE is spaces (empty), set RETURN-FLAG to SUCCESSFUL, otherwise set RETURN-FLAG to UNSUCCESSFUL
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCCSTATUSCODE(["Start Step"])
E_CheckCCSTATUSCODE(["End Step"])
N_CheckCCSTATUSCODE_Node0{"The system checks the
CC-STATUS-CODE value"}:::decision N_CheckCCSTATUSCODE_Node0_action["If CC-STATUS-CODE is spaces empty,
set RETURN-FLAG to SUCCESSFUL,
otherwise set RETURN-FLAG to
UNSUCCESSFUL"]:::main N_CheckCCSTATUSCODE_Node0 -- Yes --> N_CheckCCSTATUSCODE_Node0_action N_CheckCCSTATUSCODE_Node0_action --> E_CheckCCSTATUSCODE S_CheckCCSTATUSCODE --> N_CheckCCSTATUSCODE_Node0 N_CheckCCSTATUSCODE_Node0 -- No --> E_CheckCCSTATUSCODE
CC-STATUS-CODE value"}:::decision N_CheckCCSTATUSCODE_Node0_action["If CC-STATUS-CODE is spaces empty,
set RETURN-FLAG to SUCCESSFUL,
otherwise set RETURN-FLAG to
UNSUCCESSFUL"]:::main N_CheckCCSTATUSCODE_Node0 -- Yes --> N_CheckCCSTATUSCODE_Node0_action N_CheckCCSTATUSCODE_Node0_action --> E_CheckCCSTATUSCODE S_CheckCCSTATUSCODE --> N_CheckCCSTATUSCODE_Node0 N_CheckCCSTATUSCODE_Node0 -- No --> E_CheckCCSTATUSCODE
File: GCCTBIO.cbl
GIVEN:
A database operation has been completed and CC-STATUS-CODE contains the operation result status
WHEN:
The system checks the CC-STATUS-CODE value
THEN:
If CC-STATUS-CODE is spaces (empty), set RETURN-FLAG to SUCCESSFUL, otherwise set RETURN-FLAG to UNSUCCESSFUL
β Consolidated Acceptance Criteria
- The system processes the successful operation status → set RETURN-FLAG to SUCCESSFUL to indicate 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_SetRETURNFLAGtoSUCCESSFUL(["Start Step"])
E_SetRETURNFLAGtoSUCCESSFUL(["End Step"])
N_SetRETURNFLAGtoSUCCESSFUL_Node0{"The system processes the successful
operation status"}:::decision N_SetRETURNFLAGtoSUCCESSFUL_Node0_action["Set RETURN-FLAG to SUCCESSFUL to
indicate the operation completed
successfully"]:::main N_SetRETURNFLAGtoSUCCESSFUL_Node0 -- Yes --> N_SetRETURNFLAGtoSUCCESSFUL_Node0_action N_SetRETURNFLAGtoSUCCESSFUL_Node0_action --> E_SetRETURNFLAGtoSUCCESSFUL S_SetRETURNFLAGtoSUCCESSFUL --> N_SetRETURNFLAGtoSUCCESSFUL_Node0 N_SetRETURNFLAGtoSUCCESSFUL_Node0 -- No --> E_SetRETURNFLAGtoSUCCESSFUL
operation status"}:::decision N_SetRETURNFLAGtoSUCCESSFUL_Node0_action["Set RETURN-FLAG to SUCCESSFUL to
indicate the operation completed
successfully"]:::main N_SetRETURNFLAGtoSUCCESSFUL_Node0 -- Yes --> N_SetRETURNFLAGtoSUCCESSFUL_Node0_action N_SetRETURNFLAGtoSUCCESSFUL_Node0_action --> E_SetRETURNFLAGtoSUCCESSFUL S_SetRETURNFLAGtoSUCCESSFUL --> N_SetRETURNFLAGtoSUCCESSFUL_Node0 N_SetRETURNFLAGtoSUCCESSFUL_Node0 -- No --> E_SetRETURNFLAGtoSUCCESSFUL
File: GCCTBIO.cbl
GIVEN:
A database operation has completed and CC-STATUS-CODE equals spaces (indicating success)
WHEN:
The system processes the successful operation status
THEN:
Set RETURN-FLAG to SUCCESSFUL to indicate the operation completed successfully
β Consolidated Acceptance Criteria
- The system processes the failed operation status → set RETURN-FLAG to UNSUCCESSFUL to indicate the operation 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_SetRETURNFLAGtoUNSUCCESSFUL(["Start Step"])
E_SetRETURNFLAGtoUNSUCCESSFUL(["End Step"])
N_SetRETURNFLAGtoUNSUCCESSFUL_Node0{"The system processes the failed
operation status"}:::decision N_SetRETURNFLAGtoUNSUCCESSFUL_Node0_action["Set RETURN-FLAG to UNSUCCESSFUL to
indicate the operation failed"]:::exclusion N_SetRETURNFLAGtoUNSUCCESSFUL_Node0 -- Yes -->|Alternative| N_SetRETURNFLAGtoUNSUCCESSFUL_Node0_action N_SetRETURNFLAGtoUNSUCCESSFUL_Node0_action --> E_SetRETURNFLAGtoUNSUCCESSFUL S_SetRETURNFLAGtoUNSUCCESSFUL --> N_SetRETURNFLAGtoUNSUCCESSFUL_Node0 N_SetRETURNFLAGtoUNSUCCESSFUL_Node0 -- No --> E_SetRETURNFLAGtoUNSUCCESSFUL
operation status"}:::decision N_SetRETURNFLAGtoUNSUCCESSFUL_Node0_action["Set RETURN-FLAG to UNSUCCESSFUL to
indicate the operation failed"]:::exclusion N_SetRETURNFLAGtoUNSUCCESSFUL_Node0 -- Yes -->|Alternative| N_SetRETURNFLAGtoUNSUCCESSFUL_Node0_action N_SetRETURNFLAGtoUNSUCCESSFUL_Node0_action --> E_SetRETURNFLAGtoUNSUCCESSFUL S_SetRETURNFLAGtoUNSUCCESSFUL --> N_SetRETURNFLAGtoUNSUCCESSFUL_Node0 N_SetRETURNFLAGtoUNSUCCESSFUL_Node0 -- No --> E_SetRETURNFLAGtoUNSUCCESSFUL
File: GCCTBIO.cbl
Exclusion / Alternative Path
GIVEN:
A database operation has completed and CC-STATUS-CODE is not spaces (indicating failure or error)
WHEN:
The system processes the failed operation status
THEN:
Set RETURN-FLAG to UNSUCCESSFUL to indicate the operation failed
β Consolidated Acceptance Criteria
- The database access module finishes processing → the system restores the original program name from the saved value 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_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller(["Start Step"])
E_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller(["End Step"])
N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0{"The database access module finishes
processing"}:::decision N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0_action["The system restores the original
program name from the saved value
and returns control to the calling
program"]:::main N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0 -- Yes --> N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0_action N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0_action --> E_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller S_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller --> N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0 N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0 -- No --> E_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller
processing"}:::decision N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0_action["The system restores the original
program name from the saved value
and returns control to the calling
program"]:::main N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0 -- Yes --> N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0_action N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0_action --> E_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller S_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller --> N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0 N_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller_Node0 -- No --> E_RestoreCallingProgramContextRestoreoriginalprogramnamebeforereturningcontroltocaller
File: GCCTBIO.cbl
GIVEN:
A database access operation has been completed and the original program name was previously saved
WHEN:
The database access module finishes processing
THEN:
- The system restores the original program name from the saved value
- Returns control to the calling program
GCCUSIO Sequence (Canada Cargo/Train Manifest response - EDI350)
Objective: US Customs system I/O handler. Manages the final write of approved manifest data to the Customs submission file, applies record-level sequencing, and enforces file-level control totals before submission.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start GCCUSIO Processing]:::start
B{1:Parameter Validation}:::decision
C{Segment Type?}:::decision
%% GCSUSRT Primary Processing Branch
D{Function Code?}:::decision
E[2:Primary Cargo Record Insert]:::process
F[3:Primary Cargo Record Update]:::process
G[4:Primary Cargo Record Delete]:::process
H[5:Primary Cargo Record Retrieval]:::process
I{Secondary Index Search?}:::decision
J[8:Secondary Index Processing]:::process
%% GCSA2RT Secondary Processing Branch
K{Secondary Function?}:::decision
L[11:Secondary Database Processing]:::process
%% GCSA8RT Message Processing Branch
M[12:GCSA8RT Message Processing]:::process
%% GCST2RT Table Processing Branch
N[13:Table Lookup Processing]:::process
%% Supporting Processes
O[6:Index Field Management]:::process
P[7:Cargo Status Description Setting]:::process
Q[14:GCSB1RT Index Database Management]:::process
R[15:Iron Highway Notification Processing]:::process
S[16:Reference Number Processing]:::process
T[17:Audit Trail Management]:::process
U[18:Bond Control Number Processing]:::process
V[19:Station Code Processing]:::process
W[20:Cargo Status Transition Management]:::process
%% End States
X[Processing Complete]:::success
Y[Parameter Error]:::error
%% Datasources
DS1[(GCSUSRT Primary Cargo)]:::datasource
DS2[(GCSA2RT Secondary Cargo)]:::datasource
DS3[(GCSA8RT Message Segments)]:::datasource
DS4[(GCST2RT Station Tables)]:::datasource
DS5[(GCSB1RT Index Database)]:::datasource
DS6[(GCSTBRT Table Segments)]:::datasource
%% Main Flow
A --> B
B -->|Valid Parameters| C
B -->|Invalid Parameters| Y
%% Segment Type Routing
C -->|GCSUSRT| D
C -->|GCSA2RT| K
C -->|GCSA8RT| M
C -->|GCST2RT| N
%% GCSUSRT Function Processing
D -->|ISRT| E
D -->|REPL| F
D -->|DLET| G
D -->|GU/GN| I
I -->|Primary Key| H
I -->|Secondary Index| J
%% GCSA2RT Processing
K -->|ISRT/REPL/DLET| L
K -->|GU/GN| L
%% Supporting Process Connections
E --> O
E --> T
E --> P
E --> Q
E --> R
F --> O
F --> T
F --> P
F --> Q
F --> R
G --> W
G --> Q
G --> R
H --> DS1
J --> DS5
L --> DS2
M --> DS3
N --> DS4
O --> U
O --> V
Q --> DS5
R --> S
%% Datasource Interactions
DS1 -.->|Read/Write Primary Cargo Records| E
DS1 -.->|Read/Write Primary Cargo Records| F
DS1 -.->|Read/Write Primary Cargo Records| G
DS1 -.->|Read Primary Cargo Records| H
DS1 -.->|Read Primary Cargo Records| J
DS2 -.->|Read/Write Secondary Cargo Data| L
DS3 -.->|Read/Write Message Segments| M
DS4 -.->|Read Station Information| N
DS6 -.->|Read Table Data| V
DS6 -.->|Read Station Codes| R
DS5 -.->|Read/Write Index Records| Q
DS5 -.->|Read Index Records| J
%% End Flow
E --> X
F --> X
G --> X
H --> X
J --> X
L --> X
M --> X
N --> X
%% 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 segment name is not one of GCSUSRT, GCSA2RT, GCSA8RT, or GCST2RT → the system rejects the request with error code 0012 and message 'SEGMENT NAME INVALID'
- The function code is not GU, GN, ISRT, REPL, or DLET → the system rejects the request with error code 0012 and message 'FUNCTION CODE INVALID'
- The function code is not GU (Get Unique) → the system rejects the request with error code 0012 and message 'INVALID FUNCTION CODE'
- The operator field is empty or contains spaces → the system sets the operator to equals (=) 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_1ParameterValidation(["Start Step"])
E_1ParameterValidation(["End Step"])
N_1ParameterValidation_Node0{"The segment name is not one of
GCSUSRT, GCSA2RT, GCSA8RT, or
GCST2RT"}:::decision N_1ParameterValidation_Node0_action["The system rejects the request with
error code 0012 and message SEGMENT
NAME INVALID"]:::main N_1ParameterValidation_Node0 -- Yes --> N_1ParameterValidation_Node0_action N_1ParameterValidation_Node0_action --> E_1ParameterValidation S_1ParameterValidation --> N_1ParameterValidation_Node0 N_1ParameterValidation_Node1{"The function code is not GU, GN,
ISRT, REPL, or DLET"}:::decision N_1ParameterValidation_Node1_action["The system rejects the request with
error code 0012 and message FUNCTION
CODE INVALID"]:::main N_1ParameterValidation_Node1 -- Yes --> N_1ParameterValidation_Node1_action N_1ParameterValidation_Node1_action --> E_1ParameterValidation N_1ParameterValidation_Node0 -- No --> N_1ParameterValidation_Node1 N_1ParameterValidation_Node2{"The function code is not GU Get
Unique"}:::decision N_1ParameterValidation_Node2_action["The system rejects the request with
error code 0012 and message INVALID
FUNCTION CODE"]:::main N_1ParameterValidation_Node2 -- Yes --> N_1ParameterValidation_Node2_action N_1ParameterValidation_Node2_action --> E_1ParameterValidation N_1ParameterValidation_Node1 -- No --> N_1ParameterValidation_Node2 N_1ParameterValidation_Node3{"The operator field is empty or
contains spaces"}:::decision N_1ParameterValidation_Node3_action["The system sets the operator to
equals as default"]:::main N_1ParameterValidation_Node3 -- Yes --> N_1ParameterValidation_Node3_action N_1ParameterValidation_Node3_action --> E_1ParameterValidation N_1ParameterValidation_Node2 -- No --> N_1ParameterValidation_Node3 N_1ParameterValidation_Node3 -- No --> E_1ParameterValidation
GCSUSRT, GCSA2RT, GCSA8RT, or
GCST2RT"}:::decision N_1ParameterValidation_Node0_action["The system rejects the request with
error code 0012 and message SEGMENT
NAME INVALID"]:::main N_1ParameterValidation_Node0 -- Yes --> N_1ParameterValidation_Node0_action N_1ParameterValidation_Node0_action --> E_1ParameterValidation S_1ParameterValidation --> N_1ParameterValidation_Node0 N_1ParameterValidation_Node1{"The function code is not GU, GN,
ISRT, REPL, or DLET"}:::decision N_1ParameterValidation_Node1_action["The system rejects the request with
error code 0012 and message FUNCTION
CODE INVALID"]:::main N_1ParameterValidation_Node1 -- Yes --> N_1ParameterValidation_Node1_action N_1ParameterValidation_Node1_action --> E_1ParameterValidation N_1ParameterValidation_Node0 -- No --> N_1ParameterValidation_Node1 N_1ParameterValidation_Node2{"The function code is not GU Get
Unique"}:::decision N_1ParameterValidation_Node2_action["The system rejects the request with
error code 0012 and message INVALID
FUNCTION CODE"]:::main N_1ParameterValidation_Node2 -- Yes --> N_1ParameterValidation_Node2_action N_1ParameterValidation_Node2_action --> E_1ParameterValidation N_1ParameterValidation_Node1 -- No --> N_1ParameterValidation_Node2 N_1ParameterValidation_Node3{"The operator field is empty or
contains spaces"}:::decision N_1ParameterValidation_Node3_action["The system sets the operator to
equals as default"]:::main N_1ParameterValidation_Node3 -- Yes --> N_1ParameterValidation_Node3_action N_1ParameterValidation_Node3_action --> E_1ParameterValidation N_1ParameterValidation_Node2 -- No --> N_1ParameterValidation_Node3 N_1ParameterValidation_Node3 -- No --> E_1ParameterValidation
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo processing request is received with a segment name
WHEN:
The segment name is not one of GCSUSRT, GCSA2RT, GCSA8RT, or GCST2RT
THEN:
- The system rejects the request with error code 0012
- Message 'segment name invalid'
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo processing request is received with a function code
WHEN:
The function code is not GU, GN, ISRT, REPL, or DLET
THEN:
- The system rejects the request with error code 0012
- Message 'function code invalid'
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A request targets GCST2RT segment
WHEN:
The function code is not GU (Get Unique)
THEN:
- The system rejects the request with error code 0012
- Message 'invalid function code'
File: GCCUSIO.cbl
GIVEN:
A cargo processing request is received
WHEN:
The operator field is empty or contains spaces
THEN:
The system sets the operator to equals (=) as default
β Consolidated Acceptance Criteria
- The creation timestamp field is empty → the system sets creation date, time, terminal, and user ID from current system values and copies to last-modify fields
- The creation timestamp field already contains data → the system updates only the last-modify date, time, terminal, and user ID with current system 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_2PrimaryCargoRecordInsert(["Start Step"])
E_2PrimaryCargoRecordInsert(["End Step"])
N_2PrimaryCargoRecordInsert_Node0{"The creation timestamp field is
empty"}:::decision N_2PrimaryCargoRecordInsert_Node0_action["The system sets creation date,
time, terminal, and user ID from
current system values and copies to
last-modify fields"]:::main N_2PrimaryCargoRecordInsert_Node0 -- Yes --> N_2PrimaryCargoRecordInsert_Node0_action N_2PrimaryCargoRecordInsert_Node0_action --> E_2PrimaryCargoRecordInsert S_2PrimaryCargoRecordInsert --> N_2PrimaryCargoRecordInsert_Node0 N_2PrimaryCargoRecordInsert_Node1{"The creation timestamp field
already contains data"}:::decision N_2PrimaryCargoRecordInsert_Node1_action["The system updates only the
last-modify date, time, terminal,
and user ID with current system
values"]:::main N_2PrimaryCargoRecordInsert_Node1 -- Yes --> N_2PrimaryCargoRecordInsert_Node1_action N_2PrimaryCargoRecordInsert_Node1_action --> E_2PrimaryCargoRecordInsert N_2PrimaryCargoRecordInsert_Node0 -- No --> N_2PrimaryCargoRecordInsert_Node1 N_2PrimaryCargoRecordInsert_Node1 -- No --> E_2PrimaryCargoRecordInsert
empty"}:::decision N_2PrimaryCargoRecordInsert_Node0_action["The system sets creation date,
time, terminal, and user ID from
current system values and copies to
last-modify fields"]:::main N_2PrimaryCargoRecordInsert_Node0 -- Yes --> N_2PrimaryCargoRecordInsert_Node0_action N_2PrimaryCargoRecordInsert_Node0_action --> E_2PrimaryCargoRecordInsert S_2PrimaryCargoRecordInsert --> N_2PrimaryCargoRecordInsert_Node0 N_2PrimaryCargoRecordInsert_Node1{"The creation timestamp field
already contains data"}:::decision N_2PrimaryCargoRecordInsert_Node1_action["The system updates only the
last-modify date, time, terminal,
and user ID with current system
values"]:::main N_2PrimaryCargoRecordInsert_Node1 -- Yes --> N_2PrimaryCargoRecordInsert_Node1_action N_2PrimaryCargoRecordInsert_Node1_action --> E_2PrimaryCargoRecordInsert N_2PrimaryCargoRecordInsert_Node0 -- No --> N_2PrimaryCargoRecordInsert_Node1 N_2PrimaryCargoRecordInsert_Node1 -- No --> E_2PrimaryCargoRecordInsert
File: GCCUSIO.cbl
GIVEN:
A new cargo record is being inserted
WHEN:
The creation timestamp field is empty
THEN:
- The system sets creation date, time, terminal, and user id from current system values
- Copies to last-modify fields
File: GCCUSIO.cbl
GIVEN:
A cargo record is being inserted
WHEN:
The creation timestamp field already contains data
THEN:
The system updates only the last-modify date, time, terminal, and user ID with current system values
β Consolidated Acceptance Criteria
- The replace operation is performed → the system updates last-modify date, time, terminal, and user ID with current system 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_3PrimaryCargoRecordUpdate(["Start Step"])
E_3PrimaryCargoRecordUpdate(["End Step"])
N_3PrimaryCargoRecordUpdate_Node0{"The replace operation is performed"}:::decision
N_3PrimaryCargoRecordUpdate_Node0_action["The system updates last-modify
date, time, terminal, and user ID
with current system values"]:::main N_3PrimaryCargoRecordUpdate_Node0 -- Yes --> N_3PrimaryCargoRecordUpdate_Node0_action N_3PrimaryCargoRecordUpdate_Node0_action --> E_3PrimaryCargoRecordUpdate S_3PrimaryCargoRecordUpdate --> N_3PrimaryCargoRecordUpdate_Node0 N_3PrimaryCargoRecordUpdate_Node0 -- No --> E_3PrimaryCargoRecordUpdate
date, time, terminal, and user ID
with current system values"]:::main N_3PrimaryCargoRecordUpdate_Node0 -- Yes --> N_3PrimaryCargoRecordUpdate_Node0_action N_3PrimaryCargoRecordUpdate_Node0_action --> E_3PrimaryCargoRecordUpdate S_3PrimaryCargoRecordUpdate --> N_3PrimaryCargoRecordUpdate_Node0 N_3PrimaryCargoRecordUpdate_Node0 -- No --> E_3PrimaryCargoRecordUpdate
File: GCCUSIO.cbl
GIVEN:
A cargo record replacement is requested
WHEN:
The replace operation is performed
THEN:
The system updates last-modify date, time, terminal, and user ID with current system values
β Consolidated Acceptance Criteria
- The delete operation is initiated → the system retrieves the record, blanks index fields, sets status to DELETED, and updates the 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_4PrimaryCargoRecordDelete(["Start Step"])
E_4PrimaryCargoRecordDelete(["End Step"])
N_4PrimaryCargoRecordDelete_Node0{"The delete operation is initiated"}:::decision
N_4PrimaryCargoRecordDelete_Node0_action["The system retrieves the record,
blanks index fields, sets status to
DELETED, and updates the record"]:::main N_4PrimaryCargoRecordDelete_Node0 -- Yes --> N_4PrimaryCargoRecordDelete_Node0_action N_4PrimaryCargoRecordDelete_Node0_action --> E_4PrimaryCargoRecordDelete S_4PrimaryCargoRecordDelete --> N_4PrimaryCargoRecordDelete_Node0 N_4PrimaryCargoRecordDelete_Node0 -- No --> E_4PrimaryCargoRecordDelete
blanks index fields, sets status to
DELETED, and updates the record"]:::main N_4PrimaryCargoRecordDelete_Node0 -- Yes --> N_4PrimaryCargoRecordDelete_Node0_action N_4PrimaryCargoRecordDelete_Node0_action --> E_4PrimaryCargoRecordDelete S_4PrimaryCargoRecordDelete --> N_4PrimaryCargoRecordDelete_Node0 N_4PrimaryCargoRecordDelete_Node0 -- No --> E_4PrimaryCargoRecordDelete
File: GCCUSIO.cbl
GIVEN:
A cargo record deletion is requested
WHEN:
The delete operation is initiated
THEN:
The system retrieves the record, blanks index fields, sets status to DELETED, and updates the record
β Consolidated Acceptance Criteria
- The cargo status indicates the record is deleted → the system skips all index field setting 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_6IndexFieldManagement(["Start Step"])
E_6IndexFieldManagement(["End Step"])
N_6IndexFieldManagement_Node0{"The cargo status indicates the
record is deleted"}:::decision N_6IndexFieldManagement_Node0_action["The system skips all index field
setting operations"]:::main N_6IndexFieldManagement_Node0 -- Yes --> N_6IndexFieldManagement_Node0_action N_6IndexFieldManagement_Node0_action --> E_6IndexFieldManagement S_6IndexFieldManagement --> N_6IndexFieldManagement_Node0 N_6IndexFieldManagement_Node0 -- No --> E_6IndexFieldManagement
record is deleted"}:::decision N_6IndexFieldManagement_Node0_action["The system skips all index field
setting operations"]:::main N_6IndexFieldManagement_Node0 -- Yes --> N_6IndexFieldManagement_Node0_action N_6IndexFieldManagement_Node0_action --> E_6IndexFieldManagement S_6IndexFieldManagement --> N_6IndexFieldManagement_Node0 N_6IndexFieldManagement_Node0 -- No --> E_6IndexFieldManagement
File: GCCUSIO.cbl
GIVEN:
A cargo record index update is requested
WHEN:
The cargo status indicates the record is deleted
THEN:
The system skips all index field setting operations
β Consolidated Acceptance Criteria
- The internal status is OK, PENDING, ACKNWLG, ERROR, SENT, DELETED, DELPEND, RELSD, ARRIVAL, AARR, EXPORT, AEXP, IMED-EX, or XFERED → the system maps to corresponding business descriptions: OK, PENDING, ACK, ERROR, SENT, DELETED, DELPEND, RELEASED, MNL-ARRV, AUT-ARRV, MNL-EXP, AUT-EXP, IMED-EXP, XFERED respectively
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7CargoStatusDescriptionSetting(["Start Step"])
E_7CargoStatusDescriptionSetting(["End Step"])
N_7CargoStatusDescriptionSetting_Node0{"The internal status is OK, PENDING,
ACKNWLG, ERROR, SENT, DELETED,
DELPEND, RELSD, ARRIVAL, AARR,
EXPORT, AEXP, IMED-EX, or XFERED"}:::decision N_7CargoStatusDescriptionSetting_Node0_action["The system maps to corresponding
business descriptions: OK, PENDING,
ACK, ERROR, SENT, DELETED, DELPEND,
RELEASED, MNL-ARRV, AUT-ARRV,
MNL-EXP, AUT-EXP, IMED-EXP, XFERED
respectively"]:::exclusion N_7CargoStatusDescriptionSetting_Node0 -- Yes -->|Alternative| N_7CargoStatusDescriptionSetting_Node0_action N_7CargoStatusDescriptionSetting_Node0_action --> E_7CargoStatusDescriptionSetting S_7CargoStatusDescriptionSetting --> N_7CargoStatusDescriptionSetting_Node0 N_7CargoStatusDescriptionSetting_Node0 -- No --> E_7CargoStatusDescriptionSetting
ACKNWLG, ERROR, SENT, DELETED,
DELPEND, RELSD, ARRIVAL, AARR,
EXPORT, AEXP, IMED-EX, or XFERED"}:::decision N_7CargoStatusDescriptionSetting_Node0_action["The system maps to corresponding
business descriptions: OK, PENDING,
ACK, ERROR, SENT, DELETED, DELPEND,
RELEASED, MNL-ARRV, AUT-ARRV,
MNL-EXP, AUT-EXP, IMED-EXP, XFERED
respectively"]:::exclusion N_7CargoStatusDescriptionSetting_Node0 -- Yes -->|Alternative| N_7CargoStatusDescriptionSetting_Node0_action N_7CargoStatusDescriptionSetting_Node0_action --> E_7CargoStatusDescriptionSetting S_7CargoStatusDescriptionSetting --> N_7CargoStatusDescriptionSetting_Node0 N_7CargoStatusDescriptionSetting_Node0 -- No --> E_7CargoStatusDescriptionSetting
File: GCCUSIO.cbl
GIVEN:
A cargo status code needs to be displayed or processed
WHEN:
The internal status is OK, PENDING, ACKNWLG, ERROR, SENT, DELETED, DELPEND, RELSD, ARRIVAL, AARR, EXPORT, AEXP, IMED-EX, or XFERED
THEN:
The system maps to corresponding business descriptions: OK, PENDING, ACK, ERROR, SENT, DELETED, DELPEND, RELEASED, MNL-ARRV, AUT-ARRV, MNL-EXP, AUT-EXP, IMED-EXP, XFERED respectively
β Consolidated Acceptance Criteria
- The index type is CAR-ID, WAYBILL, CAR-WB, BOND, MANIFEST, DEST, LEAD-CCN, HELD-DEST, HELD-BORDER, ERR-ORIG, ERR-BORDER, or ERR-DEST → the system routes to the appropriate index processing for that search 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_8SecondaryIndexProcessing(["Start Step"])
E_8SecondaryIndexProcessing(["End Step"])
N_8SecondaryIndexProcessing_Node0{"The index type is CAR-ID, WAYBILL,
CAR-WB, BOND, MANIFEST, DEST,
LEAD-CCN, HELD-DEST, HELD-BORDER,
ERR-ORIG, ERR-BORDER, or ERR-DEST"}:::decision N_8SecondaryIndexProcessing_Node0_action["The system routes to the
appropriate index processing for
that search type"]:::main N_8SecondaryIndexProcessing_Node0 -- Yes --> N_8SecondaryIndexProcessing_Node0_action N_8SecondaryIndexProcessing_Node0_action --> E_8SecondaryIndexProcessing S_8SecondaryIndexProcessing --> N_8SecondaryIndexProcessing_Node0 N_8SecondaryIndexProcessing_Node0 -- No --> E_8SecondaryIndexProcessing
CAR-WB, BOND, MANIFEST, DEST,
LEAD-CCN, HELD-DEST, HELD-BORDER,
ERR-ORIG, ERR-BORDER, or ERR-DEST"}:::decision N_8SecondaryIndexProcessing_Node0_action["The system routes to the
appropriate index processing for
that search type"]:::main N_8SecondaryIndexProcessing_Node0 -- Yes --> N_8SecondaryIndexProcessing_Node0_action N_8SecondaryIndexProcessing_Node0_action --> E_8SecondaryIndexProcessing S_8SecondaryIndexProcessing --> N_8SecondaryIndexProcessing_Node0 N_8SecondaryIndexProcessing_Node0 -- No --> E_8SecondaryIndexProcessing
File: GCCUSIO.cbl
GIVEN:
A cargo search request with secondary index specified
WHEN:
The index type is CAR-ID, WAYBILL, CAR-WB, BOND, MANIFEST, DEST, LEAD-CCN, HELD-DEST, HELD-BORDER, ERR-ORIG, ERR-BORDER, or ERR-DEST
THEN:
The system routes to the appropriate index processing for that search type
β Consolidated Acceptance Criteria
- For REPL function: if record exists and new data is empty, delete; if record exists and new data has content, replace; if record not found and new data has content, insert → the system performs the appropriate database operation based on the content and existence logic
- The function is GU or GN and the secondary key is empty or spaces → the system returns error code 0012 with message 'SECN-KEY EQUAL 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_11SecondaryDatabaseProcessing(["Start Step"])
E_11SecondaryDatabaseProcessing(["End Step"])
N_11SecondaryDatabaseProcessing_Node0{"For REPL function: if record exists
and new data is empty, delete if
record exists and new data has
content, replace if record not found
and new data has content, insert"}:::decision N_11SecondaryDatabaseProcessing_Node0_action["The system performs the appropriate
database operation based on the
content and existence logic"]:::main N_11SecondaryDatabaseProcessing_Node0 -- Yes --> N_11SecondaryDatabaseProcessing_Node0_action N_11SecondaryDatabaseProcessing_Node0_action --> E_11SecondaryDatabaseProcessing S_11SecondaryDatabaseProcessing --> N_11SecondaryDatabaseProcessing_Node0 N_11SecondaryDatabaseProcessing_Node1{"The function is GU or GN and the
secondary key is empty or spaces"}:::decision N_11SecondaryDatabaseProcessing_Node1_action["The system returns error code 0012
with message SECN-KEY EQUAL SPACES"]:::main N_11SecondaryDatabaseProcessing_Node1 -- Yes --> N_11SecondaryDatabaseProcessing_Node1_action N_11SecondaryDatabaseProcessing_Node1_action --> E_11SecondaryDatabaseProcessing N_11SecondaryDatabaseProcessing_Node0 -- No --> N_11SecondaryDatabaseProcessing_Node1 N_11SecondaryDatabaseProcessing_Node1 -- No --> E_11SecondaryDatabaseProcessing
and new data is empty, delete if
record exists and new data has
content, replace if record not found
and new data has content, insert"}:::decision N_11SecondaryDatabaseProcessing_Node0_action["The system performs the appropriate
database operation based on the
content and existence logic"]:::main N_11SecondaryDatabaseProcessing_Node0 -- Yes --> N_11SecondaryDatabaseProcessing_Node0_action N_11SecondaryDatabaseProcessing_Node0_action --> E_11SecondaryDatabaseProcessing S_11SecondaryDatabaseProcessing --> N_11SecondaryDatabaseProcessing_Node0 N_11SecondaryDatabaseProcessing_Node1{"The function is GU or GN and the
secondary key is empty or spaces"}:::decision N_11SecondaryDatabaseProcessing_Node1_action["The system returns error code 0012
with message SECN-KEY EQUAL SPACES"]:::main N_11SecondaryDatabaseProcessing_Node1 -- Yes --> N_11SecondaryDatabaseProcessing_Node1_action N_11SecondaryDatabaseProcessing_Node1_action --> E_11SecondaryDatabaseProcessing N_11SecondaryDatabaseProcessing_Node0 -- No --> N_11SecondaryDatabaseProcessing_Node1 N_11SecondaryDatabaseProcessing_Node1 -- No --> E_11SecondaryDatabaseProcessing
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A secondary cargo data operation is requested
WHEN:
- For repl function: if record exists
- New data is empty, delete; if record exists
- New data has content, replace; if record not found
- New data has content, insert
THEN:
- The system performs the appropriate database operation based on the content
- Existence logic
File: GCCUSIO.cbl
GIVEN:
A secondary segment retrieval operation is requested
WHEN:
- The function is gu or gn
- The secondary key is empty or spaces
THEN:
The system returns error code 0012 with message 'SECN-KEY EQUAL SPACES'
β Consolidated Acceptance Criteria
- The function is GU or GN and the GCSA8RT key is empty or spaces → the system returns error code 0012 with message 'GCSA8RT-KEY EQUAL SPACES'
- A record with the same key already exists, perform replace operation; if no existing record, perform insert operation → the system executes the appropriate database operation and restructures the message data 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_12GCSA8RTMessageProcessing(["Start Step"])
E_12GCSA8RTMessageProcessing(["End Step"])
N_12GCSA8RTMessageProcessing_Node0{"The function is GU or GN and the
GCSA8RT key is empty or spaces"}:::decision N_12GCSA8RTMessageProcessing_Node0_action["The system returns error code 0012
with message GCSA8RT-KEY EQUAL
SPACES"]:::main N_12GCSA8RTMessageProcessing_Node0 -- Yes --> N_12GCSA8RTMessageProcessing_Node0_action N_12GCSA8RTMessageProcessing_Node0_action --> E_12GCSA8RTMessageProcessing S_12GCSA8RTMessageProcessing --> N_12GCSA8RTMessageProcessing_Node0 N_12GCSA8RTMessageProcessing_Node1{"A record with the same key already
exists, perform replace operation if
no existing record, perform insert
operation"}:::decision N_12GCSA8RTMessageProcessing_Node1_action["The system executes the appropriate
database operation and restructures
the message data format"]:::main N_12GCSA8RTMessageProcessing_Node1 -- Yes --> N_12GCSA8RTMessageProcessing_Node1_action N_12GCSA8RTMessageProcessing_Node1_action --> E_12GCSA8RTMessageProcessing N_12GCSA8RTMessageProcessing_Node0 -- No --> N_12GCSA8RTMessageProcessing_Node1 N_12GCSA8RTMessageProcessing_Node1 -- No --> E_12GCSA8RTMessageProcessing
GCSA8RT key is empty or spaces"}:::decision N_12GCSA8RTMessageProcessing_Node0_action["The system returns error code 0012
with message GCSA8RT-KEY EQUAL
SPACES"]:::main N_12GCSA8RTMessageProcessing_Node0 -- Yes --> N_12GCSA8RTMessageProcessing_Node0_action N_12GCSA8RTMessageProcessing_Node0_action --> E_12GCSA8RTMessageProcessing S_12GCSA8RTMessageProcessing --> N_12GCSA8RTMessageProcessing_Node0 N_12GCSA8RTMessageProcessing_Node1{"A record with the same key already
exists, perform replace operation if
no existing record, perform insert
operation"}:::decision N_12GCSA8RTMessageProcessing_Node1_action["The system executes the appropriate
database operation and restructures
the message data format"]:::main N_12GCSA8RTMessageProcessing_Node1 -- Yes --> N_12GCSA8RTMessageProcessing_Node1_action N_12GCSA8RTMessageProcessing_Node1_action --> E_12GCSA8RTMessageProcessing N_12GCSA8RTMessageProcessing_Node0 -- No --> N_12GCSA8RTMessageProcessing_Node1 N_12GCSA8RTMessageProcessing_Node1 -- No --> E_12GCSA8RTMessageProcessing
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message segment retrieval operation is requested
WHEN:
- The function is gu or gn
- The gcsa8rt key is empty or spaces
THEN:
The system returns error code 0012 with message 'GCSA8RT-KEY EQUAL SPACES'
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message segment insert operation is requested
WHEN:
A record with the same key already exists, perform replace operation; if no existing record, perform insert operation
THEN:
- The system executes the appropriate database operation
- Restructures the message data format
β Consolidated Acceptance Criteria
- The cargo has no error conditions and no hold conditions (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA) → the system deletes the cargo record from the GCSB1RT status index
- The cargo status indicates CPCARGO-ERROR, CPCARGO-PENDING, or USCARGO-ERROR → the system fills error fields and either updates existing status record or inserts new status record
- The cargo status indicates any hold condition (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA) → the system fills hold fields and either updates existing status record or inserts new status 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_14GCSB1RTIndexDatabaseManagement(["Start Step"])
E_14GCSB1RTIndexDatabaseManagement(["End Step"])
N_14GCSB1RTIndexDatabaseManagement_Node0{"The cargo has no error conditions
and no hold conditions HOLD,
HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO,
HOLD-D, PR-H-DE, HOLDFDA"}:::decision N_14GCSB1RTIndexDatabaseManagement_Node0_action["The system deletes the cargo record
from the GCSB1RT status index"]:::exclusion N_14GCSB1RTIndexDatabaseManagement_Node0 -- Yes -->|Alternative| N_14GCSB1RTIndexDatabaseManagement_Node0_action N_14GCSB1RTIndexDatabaseManagement_Node0_action --> E_14GCSB1RTIndexDatabaseManagement S_14GCSB1RTIndexDatabaseManagement --> N_14GCSB1RTIndexDatabaseManagement_Node0 N_14GCSB1RTIndexDatabaseManagement_Node1{"The cargo status indicates
CPCARGO-ERROR, CPCARGO-PENDING, or
USCARGO-ERROR"}:::decision N_14GCSB1RTIndexDatabaseManagement_Node1_action["The system fills error fields and
either updates existing status
record or inserts new status record"]:::exclusion N_14GCSB1RTIndexDatabaseManagement_Node1 -- Yes -->|Alternative| N_14GCSB1RTIndexDatabaseManagement_Node1_action N_14GCSB1RTIndexDatabaseManagement_Node1_action --> E_14GCSB1RTIndexDatabaseManagement N_14GCSB1RTIndexDatabaseManagement_Node0 -- No --> N_14GCSB1RTIndexDatabaseManagement_Node1 N_14GCSB1RTIndexDatabaseManagement_Node2{"The cargo status indicates any hold
condition HOLD, HOLDPCS, PR-HPCS,
HOLD-B, PR-H-BO, HOLD-D, PR-H-DE,
HOLDFDA"}:::decision N_14GCSB1RTIndexDatabaseManagement_Node2_action["The system fills hold fields and
either updates existing status
record or inserts new status record"]:::main N_14GCSB1RTIndexDatabaseManagement_Node2 -- Yes --> N_14GCSB1RTIndexDatabaseManagement_Node2_action N_14GCSB1RTIndexDatabaseManagement_Node2_action --> E_14GCSB1RTIndexDatabaseManagement N_14GCSB1RTIndexDatabaseManagement_Node1 -- No --> N_14GCSB1RTIndexDatabaseManagement_Node2 N_14GCSB1RTIndexDatabaseManagement_Node2 -- No --> E_14GCSB1RTIndexDatabaseManagement
and no hold conditions HOLD,
HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO,
HOLD-D, PR-H-DE, HOLDFDA"}:::decision N_14GCSB1RTIndexDatabaseManagement_Node0_action["The system deletes the cargo record
from the GCSB1RT status index"]:::exclusion N_14GCSB1RTIndexDatabaseManagement_Node0 -- Yes -->|Alternative| N_14GCSB1RTIndexDatabaseManagement_Node0_action N_14GCSB1RTIndexDatabaseManagement_Node0_action --> E_14GCSB1RTIndexDatabaseManagement S_14GCSB1RTIndexDatabaseManagement --> N_14GCSB1RTIndexDatabaseManagement_Node0 N_14GCSB1RTIndexDatabaseManagement_Node1{"The cargo status indicates
CPCARGO-ERROR, CPCARGO-PENDING, or
USCARGO-ERROR"}:::decision N_14GCSB1RTIndexDatabaseManagement_Node1_action["The system fills error fields and
either updates existing status
record or inserts new status record"]:::exclusion N_14GCSB1RTIndexDatabaseManagement_Node1 -- Yes -->|Alternative| N_14GCSB1RTIndexDatabaseManagement_Node1_action N_14GCSB1RTIndexDatabaseManagement_Node1_action --> E_14GCSB1RTIndexDatabaseManagement N_14GCSB1RTIndexDatabaseManagement_Node0 -- No --> N_14GCSB1RTIndexDatabaseManagement_Node1 N_14GCSB1RTIndexDatabaseManagement_Node2{"The cargo status indicates any hold
condition HOLD, HOLDPCS, PR-HPCS,
HOLD-B, PR-H-BO, HOLD-D, PR-H-DE,
HOLDFDA"}:::decision N_14GCSB1RTIndexDatabaseManagement_Node2_action["The system fills hold fields and
either updates existing status
record or inserts new status record"]:::main N_14GCSB1RTIndexDatabaseManagement_Node2 -- Yes --> N_14GCSB1RTIndexDatabaseManagement_Node2_action N_14GCSB1RTIndexDatabaseManagement_Node2_action --> E_14GCSB1RTIndexDatabaseManagement N_14GCSB1RTIndexDatabaseManagement_Node1 -- No --> N_14GCSB1RTIndexDatabaseManagement_Node2 N_14GCSB1RTIndexDatabaseManagement_Node2 -- No --> E_14GCSB1RTIndexDatabaseManagement
File: GCCUSIO.cbl
GIVEN:
A cargo record status update is processed
WHEN:
- The cargo has no error conditions
- No hold conditions (hold, holdpcs, pr-hpcs, hold-b, pr-h-bo, hold-d, pr-h-de, holdfda)
THEN:
The system deletes the cargo record from the GCSB1RT status index
File: GCCUSIO.cbl
GIVEN:
A cargo record has error or pending status
WHEN:
The cargo status indicates CPCARGO-ERROR, CPCARGO-PENDING, or USCARGO-ERROR
THEN:
- The system fills error fields
- Either updates existing status record or inserts new status record
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status
WHEN:
The cargo status indicates any hold condition (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA)
THEN:
- The system fills hold fields
- Either updates existing status record or inserts new status record
β Consolidated Acceptance Criteria
- Both US cargo status and CP cargo status are empty, or the status matches the previous notification, or the status is RELEASE → the system skips sending the notification
- US cargo status is empty and CP status is SENT, use SENT; for DELETED or RELEASE status, always process; otherwise use US cargo short description → the system selects the appropriate status value according to the priority 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_15IronHighwayNotificationProcessing(["Start Step"])
E_15IronHighwayNotificationProcessing(["End Step"])
N_15IronHighwayNotificationProcessing_Node0{"Both US cargo status and CP cargo
status are empty, or the status
matches the previous notification,
or the status is RELEASE"}:::decision N_15IronHighwayNotificationProcessing_Node0_action["The system skips sending the
notification"]:::main N_15IronHighwayNotificationProcessing_Node0 -- Yes --> N_15IronHighwayNotificationProcessing_Node0_action N_15IronHighwayNotificationProcessing_Node0_action --> E_15IronHighwayNotificationProcessing S_15IronHighwayNotificationProcessing --> N_15IronHighwayNotificationProcessing_Node0 N_15IronHighwayNotificationProcessing_Node1{"US cargo status is empty and CP
status is SENT, use SENT for DELETED
or RELEASE status, always process
otherwise use US cargo short
description"}:::decision N_15IronHighwayNotificationProcessing_Node1_action["The system selects the appropriate
status value according to the
priority rules"]:::main N_15IronHighwayNotificationProcessing_Node1 -- Yes --> N_15IronHighwayNotificationProcessing_Node1_action N_15IronHighwayNotificationProcessing_Node1_action --> E_15IronHighwayNotificationProcessing N_15IronHighwayNotificationProcessing_Node0 -- No --> N_15IronHighwayNotificationProcessing_Node1 N_15IronHighwayNotificationProcessing_Node1 -- No --> E_15IronHighwayNotificationProcessing
status are empty, or the status
matches the previous notification,
or the status is RELEASE"}:::decision N_15IronHighwayNotificationProcessing_Node0_action["The system skips sending the
notification"]:::main N_15IronHighwayNotificationProcessing_Node0 -- Yes --> N_15IronHighwayNotificationProcessing_Node0_action N_15IronHighwayNotificationProcessing_Node0_action --> E_15IronHighwayNotificationProcessing S_15IronHighwayNotificationProcessing --> N_15IronHighwayNotificationProcessing_Node0 N_15IronHighwayNotificationProcessing_Node1{"US cargo status is empty and CP
status is SENT, use SENT for DELETED
or RELEASE status, always process
otherwise use US cargo short
description"}:::decision N_15IronHighwayNotificationProcessing_Node1_action["The system selects the appropriate
status value according to the
priority rules"]:::main N_15IronHighwayNotificationProcessing_Node1 -- Yes --> N_15IronHighwayNotificationProcessing_Node1_action N_15IronHighwayNotificationProcessing_Node1_action --> E_15IronHighwayNotificationProcessing N_15IronHighwayNotificationProcessing_Node0 -- No --> N_15IronHighwayNotificationProcessing_Node1 N_15IronHighwayNotificationProcessing_Node1 -- No --> E_15IronHighwayNotificationProcessing
File: GCCUSIO.cbl
GIVEN:
A cargo status change triggers notification processing
WHEN:
- Both us cargo status
- Cp cargo status are empty, or the status matches the previous notification, or the status is release
THEN:
The system skips sending the notification
File: GCCUSIO.cbl
GIVEN:
A cargo status notification is being prepared
WHEN:
- Us cargo status is empty
- Cp status is sent, use sent; for deleted or release status, always process; otherwise use us cargo short description
THEN:
The system selects the appropriate status value according to the priority rules
β Consolidated Acceptance Criteria
- N9 reference segments exist for the cargo with qualifier 'CN' → the system extracts the reference number as shipment ID for the 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_16ReferenceNumberProcessing(["Start Step"])
E_16ReferenceNumberProcessing(["End Step"])
N_16ReferenceNumberProcessing_Node0{"N9 reference segments exist for the
cargo with qualifier CN"}:::decision N_16ReferenceNumberProcessing_Node0_action["The system extracts the reference
number as shipment ID for the
notification"]:::main N_16ReferenceNumberProcessing_Node0 -- Yes --> N_16ReferenceNumberProcessing_Node0_action N_16ReferenceNumberProcessing_Node0_action --> E_16ReferenceNumberProcessing S_16ReferenceNumberProcessing --> N_16ReferenceNumberProcessing_Node0 N_16ReferenceNumberProcessing_Node0 -- No --> E_16ReferenceNumberProcessing
cargo with qualifier CN"}:::decision N_16ReferenceNumberProcessing_Node0_action["The system extracts the reference
number as shipment ID for the
notification"]:::main N_16ReferenceNumberProcessing_Node0 -- Yes --> N_16ReferenceNumberProcessing_Node0_action N_16ReferenceNumberProcessing_Node0_action --> E_16ReferenceNumberProcessing S_16ReferenceNumberProcessing --> N_16ReferenceNumberProcessing_Node0 N_16ReferenceNumberProcessing_Node0 -- No --> E_16ReferenceNumberProcessing
File: GCCUSIO.cbl
GIVEN:
A cargo notification requires shipment reference information
WHEN:
N9 reference segments exist for the cargo with qualifier 'CN'
THEN:
The system extracts the reference number as shipment ID for the notification
β Consolidated Acceptance Criteria
- In-bond control number exists, use it; else if entry number exists, use entry number; else set to spaces → the system sets the bond index field according to the priority hierarchy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_18BondControlNumberProcessing(["Start Step"])
E_18BondControlNumberProcessing(["End Step"])
N_18BondControlNumberProcessing_Node0{"In-bond control number exists, use
it else if entry number exists, use
entry number else set to spaces"}:::decision N_18BondControlNumberProcessing_Node0_action["The system sets the bond index
field according to the priority
hierarchy"]:::main N_18BondControlNumberProcessing_Node0 -- Yes --> N_18BondControlNumberProcessing_Node0_action N_18BondControlNumberProcessing_Node0_action --> E_18BondControlNumberProcessing S_18BondControlNumberProcessing --> N_18BondControlNumberProcessing_Node0 N_18BondControlNumberProcessing_Node0 -- No --> E_18BondControlNumberProcessing
it else if entry number exists, use
entry number else set to spaces"}:::decision N_18BondControlNumberProcessing_Node0_action["The system sets the bond index
field according to the priority
hierarchy"]:::main N_18BondControlNumberProcessing_Node0 -- Yes --> N_18BondControlNumberProcessing_Node0_action N_18BondControlNumberProcessing_Node0_action --> E_18BondControlNumberProcessing S_18BondControlNumberProcessing --> N_18BondControlNumberProcessing_Node0 N_18BondControlNumberProcessing_Node0 -- No --> E_18BondControlNumberProcessing
File: GCCUSIO.cbl
GIVEN:
A cargo record requires bond number indexing
WHEN:
In-bond control number exists, use it; else if entry number exists, use entry number; else set to spaces
THEN:
The system sets the bond index field according to the priority hierarchy
β Consolidated Acceptance Criteria
- The system needs to resolve location codes to station numbers → the system retrieves station information from GCSTBRT table segments using location 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_19StationCodeProcessing(["Start Step"])
E_19StationCodeProcessing(["End Step"])
N_19StationCodeProcessing_Node0{"The system needs to resolve
location codes to station numbers"}:::decision N_19StationCodeProcessing_Node0_action["The system retrieves station
information from GCSTBRT table
segments using location ID"]:::main N_19StationCodeProcessing_Node0 -- Yes --> N_19StationCodeProcessing_Node0_action N_19StationCodeProcessing_Node0_action --> E_19StationCodeProcessing S_19StationCodeProcessing --> N_19StationCodeProcessing_Node0 N_19StationCodeProcessing_Node0 -- No --> E_19StationCodeProcessing
location codes to station numbers"}:::decision N_19StationCodeProcessing_Node0_action["The system retrieves station
information from GCSTBRT table
segments using location ID"]:::main N_19StationCodeProcessing_Node0 -- Yes --> N_19StationCodeProcessing_Node0_action N_19StationCodeProcessing_Node0_action --> E_19StationCodeProcessing S_19StationCodeProcessing --> N_19StationCodeProcessing_Node0 N_19StationCodeProcessing_Node0 -- No --> E_19StationCodeProcessing
File: GCCUSIO.cbl
GIVEN:
A cargo operation requires station or border information
WHEN:
The system needs to resolve location codes to station numbers
THEN:
The system retrieves station information from GCSTBRT table segments using location ID
β Consolidated Acceptance Criteria
- The new status represents a valid business transition from the current status → the system updates the cargo status and triggers appropriate downstream processing including notifications and index 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_20CargoStatusTransitionManagement(["Start Step"])
E_20CargoStatusTransitionManagement(["End Step"])
N_20CargoStatusTransitionManagement_Node0{"The new status represents a valid
business transition from the current
status"}:::decision N_20CargoStatusTransitionManagement_Node0_action["The system updates the cargo status
and triggers appropriate downstream
processing including notifications
and index updates"]:::main N_20CargoStatusTransitionManagement_Node0 -- Yes --> N_20CargoStatusTransitionManagement_Node0_action N_20CargoStatusTransitionManagement_Node0_action --> E_20CargoStatusTransitionManagement S_20CargoStatusTransitionManagement --> N_20CargoStatusTransitionManagement_Node0 N_20CargoStatusTransitionManagement_Node0 -- No --> E_20CargoStatusTransitionManagement
business transition from the current
status"}:::decision N_20CargoStatusTransitionManagement_Node0_action["The system updates the cargo status
and triggers appropriate downstream
processing including notifications
and index updates"]:::main N_20CargoStatusTransitionManagement_Node0 -- Yes --> N_20CargoStatusTransitionManagement_Node0_action N_20CargoStatusTransitionManagement_Node0_action --> E_20CargoStatusTransitionManagement S_20CargoStatusTransitionManagement --> N_20CargoStatusTransitionManagement_Node0 N_20CargoStatusTransitionManagement_Node0 -- No --> E_20CargoStatusTransitionManagement
File: GCCUSIO.cbl
GIVEN:
A cargo status change is requested
WHEN:
The new status represents a valid business transition from the current status
THEN:
- The system updates the cargo status
- Triggers appropriate downstream processing including notifications
- Index updates
β Consolidated Acceptance Criteria
- The segment type is GCSUSRT, GCSA2RT, GCSA8RT, or GCST2RT → the system routes to primary, secondary, message, or table processing respectively
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SegmentType(["Start Step"])
E_SegmentType(["End Step"])
N_SegmentType_Node0{"The segment type is GCSUSRT,
GCSA2RT, GCSA8RT, or GCST2RT"}:::decision N_SegmentType_Node0_action["The system routes to primary,
secondary, message, or table
processing respectively"]:::main N_SegmentType_Node0 -- Yes --> N_SegmentType_Node0_action N_SegmentType_Node0_action --> E_SegmentType S_SegmentType --> N_SegmentType_Node0 N_SegmentType_Node0 -- No --> E_SegmentType
GCSA2RT, GCSA8RT, or GCST2RT"}:::decision N_SegmentType_Node0_action["The system routes to primary,
secondary, message, or table
processing respectively"]:::main N_SegmentType_Node0 -- Yes --> N_SegmentType_Node0_action N_SegmentType_Node0_action --> E_SegmentType S_SegmentType --> N_SegmentType_Node0 N_SegmentType_Node0 -- No --> E_SegmentType
File: GCCUSIO.cbl
GIVEN:
A validated cargo processing request
WHEN:
The segment type is GCSUSRT, GCSA2RT, GCSA8RT, or GCST2RT
THEN:
The system routes to primary, secondary, message, or table processing respectively
β Consolidated Acceptance Criteria
- The function code is ISRT, DLET, REPL, or ZAP → the system sets the update-by-module field to the current transaction 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_FunctionCode(["Start Step"])
E_FunctionCode(["End Step"])
N_FunctionCode_Node0{"The function code is ISRT, DLET,
REPL, or ZAP"}:::decision N_FunctionCode_Node0_action["The system sets the
update-by-module field to the
current transaction code"]:::main N_FunctionCode_Node0 -- Yes --> N_FunctionCode_Node0_action N_FunctionCode_Node0_action --> E_FunctionCode S_FunctionCode --> N_FunctionCode_Node0 N_FunctionCode_Node0 -- No --> E_FunctionCode
REPL, or ZAP"}:::decision N_FunctionCode_Node0_action["The system sets the
update-by-module field to the
current transaction code"]:::main N_FunctionCode_Node0 -- Yes --> N_FunctionCode_Node0_action N_FunctionCode_Node0_action --> E_FunctionCode S_FunctionCode --> N_FunctionCode_Node0 N_FunctionCode_Node0 -- No --> E_FunctionCode
File: GCCUSIO.cbl
GIVEN:
A cargo record modification request
WHEN:
The function code is ISRT, DLET, REPL, or ZAP
THEN:
The system sets the update-by-module field to the current transaction code
β Consolidated Acceptance Criteria
- The system begins validation → the parameter valid flag should be set to TRUE 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_SetParameterValidFlagtoTRUE(["Start Step"])
E_SetParameterValidFlagtoTRUE(["End Step"])
N_SetParameterValidFlagtoTRUE_Node0{"The system begins validation"}:::decision
N_SetParameterValidFlagtoTRUE_Node0_action["The parameter valid flag should be
set to TRUE as the initial state"]:::main N_SetParameterValidFlagtoTRUE_Node0 -- Yes --> N_SetParameterValidFlagtoTRUE_Node0_action N_SetParameterValidFlagtoTRUE_Node0_action --> E_SetParameterValidFlagtoTRUE S_SetParameterValidFlagtoTRUE --> N_SetParameterValidFlagtoTRUE_Node0 N_SetParameterValidFlagtoTRUE_Node0 -- No --> E_SetParameterValidFlagtoTRUE
set to TRUE as the initial state"]:::main N_SetParameterValidFlagtoTRUE_Node0 -- Yes --> N_SetParameterValidFlagtoTRUE_Node0_action N_SetParameterValidFlagtoTRUE_Node0_action --> E_SetParameterValidFlagtoTRUE S_SetParameterValidFlagtoTRUE --> N_SetParameterValidFlagtoTRUE_Node0 N_SetParameterValidFlagtoTRUE_Node0 -- No --> E_SetParameterValidFlagtoTRUE
File: GCCUSIO.cbl
GIVEN:
The parameter validation process is starting
WHEN:
The system begins validation
THEN:
The parameter valid flag should be set to TRUE as the initial state
β Consolidated Acceptance Criteria
- Time capture is required → the current machine time should be stored in working storage for later 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_GetCurrentMachineTime(["Start Step"])
E_GetCurrentMachineTime(["End Step"])
N_GetCurrentMachineTime_Node0{"Time capture is required"}:::decision
N_GetCurrentMachineTime_Node0_action["The current machine time should be
stored in working storage for later
use"]:::main N_GetCurrentMachineTime_Node0 -- Yes --> N_GetCurrentMachineTime_Node0_action N_GetCurrentMachineTime_Node0_action --> E_GetCurrentMachineTime S_GetCurrentMachineTime --> N_GetCurrentMachineTime_Node0 N_GetCurrentMachineTime_Node0 -- No --> E_GetCurrentMachineTime
stored in working storage for later
use"]:::main N_GetCurrentMachineTime_Node0 -- Yes --> N_GetCurrentMachineTime_Node0_action N_GetCurrentMachineTime_Node0_action --> E_GetCurrentMachineTime S_GetCurrentMachineTime --> N_GetCurrentMachineTime_Node0 N_GetCurrentMachineTime_Node0 -- No --> E_GetCurrentMachineTime
File: GCCUSIO.cbl
GIVEN:
The system is initializing for parameter validation
WHEN:
Time capture is required
THEN:
The current machine time should be stored in working storage for later use
β Consolidated Acceptance Criteria
- The segment name is not GCSUSRT and not GCSA2RT and not GCSA8RT and not GCST2RT → the parameter should be marked as invalid with error code '0012' and message 'SEGMENT NAME 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_IsSegmentNameValid(["Start Step"])
E_IsSegmentNameValid(["End Step"])
N_IsSegmentNameValid_Node0{"The segment name is not GCSUSRT and
not GCSA2RT and not GCSA8RT and not
GCST2RT"}:::decision N_IsSegmentNameValid_Node0_action["The parameter should be marked as
invalid with error code 0012 and
message SEGMENT NAME INVALID"]:::main N_IsSegmentNameValid_Node0 -- Yes --> N_IsSegmentNameValid_Node0_action N_IsSegmentNameValid_Node0_action --> E_IsSegmentNameValid S_IsSegmentNameValid --> N_IsSegmentNameValid_Node0 N_IsSegmentNameValid_Node0 -- No --> E_IsSegmentNameValid
not GCSA2RT and not GCSA8RT and not
GCST2RT"}:::decision N_IsSegmentNameValid_Node0_action["The parameter should be marked as
invalid with error code 0012 and
message SEGMENT NAME INVALID"]:::main N_IsSegmentNameValid_Node0 -- Yes --> N_IsSegmentNameValid_Node0_action N_IsSegmentNameValid_Node0_action --> E_IsSegmentNameValid S_IsSegmentNameValid --> N_IsSegmentNameValid_Node0 N_IsSegmentNameValid_Node0 -- No --> E_IsSegmentNameValid
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A segment name is provided for processing
WHEN:
- The segment name is not gcsusrt
- Not gcsa2rt
- Not gcsa8rt
- Not gcst2rt
THEN:
The parameter should be marked as invalid with error code '0012' and message 'SEGMENT NAME INVALID'
β Consolidated Acceptance Criteria
- The function code is not equal to 'GU ' and not equal to 'GN ' and not equal to 'ISRT' and not equal to 'REPL' and not equal to 'DLET' → the parameter should be marked as invalid with error code '0012' and message 'FUNCTION CODE 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_IsFunctionCodeValid(["Start Step"])
E_IsFunctionCodeValid(["End Step"])
N_IsFunctionCodeValid_Node0{"The function code is not equal to
GU and not equal to GN and not equal
to ISRT and not equal to REPL and
not equal to DLET"}:::decision N_IsFunctionCodeValid_Node0_action["The parameter should be marked as
invalid with error code 0012 and
message FUNCTION CODE INVALID"]:::main N_IsFunctionCodeValid_Node0 -- Yes --> N_IsFunctionCodeValid_Node0_action N_IsFunctionCodeValid_Node0_action --> E_IsFunctionCodeValid S_IsFunctionCodeValid --> N_IsFunctionCodeValid_Node0 N_IsFunctionCodeValid_Node0 -- No --> E_IsFunctionCodeValid
GU and not equal to GN and not equal
to ISRT and not equal to REPL and
not equal to DLET"}:::decision N_IsFunctionCodeValid_Node0_action["The parameter should be marked as
invalid with error code 0012 and
message FUNCTION CODE INVALID"]:::main N_IsFunctionCodeValid_Node0 -- Yes --> N_IsFunctionCodeValid_Node0_action N_IsFunctionCodeValid_Node0_action --> E_IsFunctionCodeValid S_IsFunctionCodeValid --> N_IsFunctionCodeValid_Node0 N_IsFunctionCodeValid_Node0 -- No --> E_IsFunctionCodeValid
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A function code is provided for processing
WHEN:
The function code is not equal to 'GU ' and not equal to 'GN ' and not equal to 'ISRT' and not equal to 'REPL' and not equal to 'DLET'
THEN:
The parameter should be marked as invalid with error code '0012' and message 'FUNCTION CODE INVALID'
β Consolidated Acceptance Criteria
- The function code is not 'GU ' → the parameter should be marked as invalid with error code '0012' and message 'INVALID FUNCTION 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_SpecialValidationGCST2RTwithNonGUFunction(["Start Step"])
E_SpecialValidationGCST2RTwithNonGUFunction(["End Step"])
N_SpecialValidationGCST2RTwithNonGUFunction_Node0{"The function code is not GU"}:::decision
N_SpecialValidationGCST2RTwithNonGUFunction_Node0_action["The parameter should be marked as
invalid with error code 0012 and
message INVALID FUNCTION CODE"]:::main N_SpecialValidationGCST2RTwithNonGUFunction_Node0 -- Yes --> N_SpecialValidationGCST2RTwithNonGUFunction_Node0_action N_SpecialValidationGCST2RTwithNonGUFunction_Node0_action --> E_SpecialValidationGCST2RTwithNonGUFunction S_SpecialValidationGCST2RTwithNonGUFunction --> N_SpecialValidationGCST2RTwithNonGUFunction_Node0 N_SpecialValidationGCST2RTwithNonGUFunction_Node0 -- No --> E_SpecialValidationGCST2RTwithNonGUFunction
invalid with error code 0012 and
message INVALID FUNCTION CODE"]:::main N_SpecialValidationGCST2RTwithNonGUFunction_Node0 -- Yes --> N_SpecialValidationGCST2RTwithNonGUFunction_Node0_action N_SpecialValidationGCST2RTwithNonGUFunction_Node0_action --> E_SpecialValidationGCST2RTwithNonGUFunction S_SpecialValidationGCST2RTwithNonGUFunction --> N_SpecialValidationGCST2RTwithNonGUFunction_Node0 N_SpecialValidationGCST2RTwithNonGUFunction_Node0 -- No --> E_SpecialValidationGCST2RTwithNonGUFunction
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
The segment name is GCST2RT
WHEN:
The function code is not 'GU '
THEN:
The parameter should be marked as invalid with error code '0012' and message 'INVALID FUNCTION CODE'
β Consolidated Acceptance Criteria
- The operator field contains only spaces → the operator should be set to ' =' 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_SetDefaultOperatorto(["Start Step"])
E_SetDefaultOperatorto(["End Step"])
N_SetDefaultOperatorto_Node0{"The operator field contains only
spaces"}:::decision N_SetDefaultOperatorto_Node0_action["The operator should be set to as
the default value"]:::main N_SetDefaultOperatorto_Node0 -- Yes --> N_SetDefaultOperatorto_Node0_action N_SetDefaultOperatorto_Node0_action --> E_SetDefaultOperatorto S_SetDefaultOperatorto --> N_SetDefaultOperatorto_Node0 N_SetDefaultOperatorto_Node0 -- No --> E_SetDefaultOperatorto
spaces"}:::decision N_SetDefaultOperatorto_Node0_action["The operator should be set to as
the default value"]:::main N_SetDefaultOperatorto_Node0 -- Yes --> N_SetDefaultOperatorto_Node0_action N_SetDefaultOperatorto_Node0_action --> E_SetDefaultOperatorto S_SetDefaultOperatorto --> N_SetDefaultOperatorto_Node0 N_SetDefaultOperatorto_Node0 -- No --> E_SetDefaultOperatorto
File: GCCUSIO.cbl
GIVEN:
An operator field is provided in the input parameters
WHEN:
The operator field contains only spaces
THEN:
The operator should be set to ' =' as the default value
β Consolidated Acceptance Criteria
- The creation timestamp field is empty or spaces → the system sets creation century, date, time, terminal, and user ID from current system values and copies this information to last modify 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_SetCreationAuditTrail(["Start Step"])
E_SetCreationAuditTrail(["End Step"])
N_SetCreationAuditTrail_Node0{"The creation timestamp field is
empty or spaces"}:::decision N_SetCreationAuditTrail_Node0_action["The system sets creation century,
date, time, terminal, and user ID
from current system values and
copies this information to last
modify fields"]:::main N_SetCreationAuditTrail_Node0 -- Yes --> N_SetCreationAuditTrail_Node0_action N_SetCreationAuditTrail_Node0_action --> E_SetCreationAuditTrail S_SetCreationAuditTrail --> N_SetCreationAuditTrail_Node0 N_SetCreationAuditTrail_Node0 -- No --> E_SetCreationAuditTrail
empty or spaces"}:::decision N_SetCreationAuditTrail_Node0_action["The system sets creation century,
date, time, terminal, and user ID
from current system values and
copies this information to last
modify fields"]:::main N_SetCreationAuditTrail_Node0 -- Yes --> N_SetCreationAuditTrail_Node0_action N_SetCreationAuditTrail_Node0_action --> E_SetCreationAuditTrail S_SetCreationAuditTrail --> N_SetCreationAuditTrail_Node0 N_SetCreationAuditTrail_Node0 -- No --> E_SetCreationAuditTrail
File: GCCUSIO.cbl
GIVEN:
A cargo record is being inserted into the primary database
WHEN:
The creation timestamp field is empty or spaces
THEN:
- The system sets creation century, date, time, terminal, and user id from current system values
- Copies this information to last modify fields
β Consolidated Acceptance Criteria
- The creation timestamp field already contains data → the system updates only the last modify century, date, time, terminal, and user ID with current system values while preserving the original creation timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLastModifyAuditTrail(["Start Step"])
E_SetLastModifyAuditTrail(["End Step"])
N_SetLastModifyAuditTrail_Node0{"The creation timestamp field
already contains data"}:::decision N_SetLastModifyAuditTrail_Node0_action["The system updates only the last
modify century, date, time,
terminal, and user ID with current
system values while preserving the
original creation timestamp"]:::main N_SetLastModifyAuditTrail_Node0 -- Yes --> N_SetLastModifyAuditTrail_Node0_action N_SetLastModifyAuditTrail_Node0_action --> E_SetLastModifyAuditTrail S_SetLastModifyAuditTrail --> N_SetLastModifyAuditTrail_Node0 N_SetLastModifyAuditTrail_Node0 -- No --> E_SetLastModifyAuditTrail
already contains data"}:::decision N_SetLastModifyAuditTrail_Node0_action["The system updates only the last
modify century, date, time,
terminal, and user ID with current
system values while preserving the
original creation timestamp"]:::main N_SetLastModifyAuditTrail_Node0 -- Yes --> N_SetLastModifyAuditTrail_Node0_action N_SetLastModifyAuditTrail_Node0_action --> E_SetLastModifyAuditTrail S_SetLastModifyAuditTrail --> N_SetLastModifyAuditTrail_Node0 N_SetLastModifyAuditTrail_Node0 -- No --> E_SetLastModifyAuditTrail
File: GCCUSIO.cbl
GIVEN:
A cargo record is being inserted into the primary database
WHEN:
The creation timestamp field already contains data
THEN:
The system updates only the last modify century, date, time, terminal, and user ID with current system values while preserving the original creation timestamp
β Consolidated Acceptance Criteria
- The cargo status indicates the record is marked as deleted → the system skips all index field population and exits the index setting process
- Index fields are being populated → the system copies the CCN key to car ID index, waybill index, and car-waybill index fields
- The destination index field is not empty or spaces → the system copies the CCN key to the destination index field
- The cargo record is marked as deleted → the system skips all index field population and exits the process
- Index fields need to be populated → the system copies the US CCN key to RT071, RT072, and RT073 index fields
- The destination index field is not empty → the system copies the US CCN key to the RT076 destination index 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_PopulateIndexFields(["Start Step"])
E_PopulateIndexFields(["End Step"])
N_PopulateIndexFields_Node0{"The cargo status indicates the
record is marked as deleted"}:::decision N_PopulateIndexFields_Node0_action["The system skips all index field
population and exits the index
setting process"]:::main N_PopulateIndexFields_Node0 -- Yes --> N_PopulateIndexFields_Node0_action N_PopulateIndexFields_Node0_action --> E_PopulateIndexFields S_PopulateIndexFields --> N_PopulateIndexFields_Node0 N_PopulateIndexFields_Node1{"Index fields are being populated"}:::decision N_PopulateIndexFields_Node1_action["The system copies the CCN key to
car ID index, waybill index, and
car-waybill index fields"]:::main N_PopulateIndexFields_Node1 -- Yes --> N_PopulateIndexFields_Node1_action N_PopulateIndexFields_Node1_action --> E_PopulateIndexFields N_PopulateIndexFields_Node0 -- No --> N_PopulateIndexFields_Node1 N_PopulateIndexFields_Node2{"The destination index field is not
empty or spaces"}:::decision N_PopulateIndexFields_Node2_action["The system copies the CCN key to
the destination index field"]:::main N_PopulateIndexFields_Node2 -- Yes --> N_PopulateIndexFields_Node2_action N_PopulateIndexFields_Node2_action --> E_PopulateIndexFields N_PopulateIndexFields_Node1 -- No --> N_PopulateIndexFields_Node2 N_PopulateIndexFields_Node3{"The cargo record is marked as
deleted"}:::decision N_PopulateIndexFields_Node3_action["The system skips all index field
population and exits the process"]:::main N_PopulateIndexFields_Node3 -- Yes --> N_PopulateIndexFields_Node3_action N_PopulateIndexFields_Node3_action --> E_PopulateIndexFields N_PopulateIndexFields_Node2 -- No --> N_PopulateIndexFields_Node3 N_PopulateIndexFields_Node4{"Index fields need to be populated"}:::decision N_PopulateIndexFields_Node4_action["The system copies the US CCN key to
RT071, RT072, and RT073 index fields"]:::main N_PopulateIndexFields_Node4 -- Yes --> N_PopulateIndexFields_Node4_action N_PopulateIndexFields_Node4_action --> E_PopulateIndexFields N_PopulateIndexFields_Node3 -- No --> N_PopulateIndexFields_Node4 N_PopulateIndexFields_Node5{"The destination index field is not
empty"}:::decision N_PopulateIndexFields_Node5_action["The system copies the US CCN key to
the RT076 destination index field"]:::main N_PopulateIndexFields_Node5 -- Yes --> N_PopulateIndexFields_Node5_action N_PopulateIndexFields_Node5_action --> E_PopulateIndexFields N_PopulateIndexFields_Node4 -- No --> N_PopulateIndexFields_Node5 N_PopulateIndexFields_Node5 -- No --> E_PopulateIndexFields
record is marked as deleted"}:::decision N_PopulateIndexFields_Node0_action["The system skips all index field
population and exits the index
setting process"]:::main N_PopulateIndexFields_Node0 -- Yes --> N_PopulateIndexFields_Node0_action N_PopulateIndexFields_Node0_action --> E_PopulateIndexFields S_PopulateIndexFields --> N_PopulateIndexFields_Node0 N_PopulateIndexFields_Node1{"Index fields are being populated"}:::decision N_PopulateIndexFields_Node1_action["The system copies the CCN key to
car ID index, waybill index, and
car-waybill index fields"]:::main N_PopulateIndexFields_Node1 -- Yes --> N_PopulateIndexFields_Node1_action N_PopulateIndexFields_Node1_action --> E_PopulateIndexFields N_PopulateIndexFields_Node0 -- No --> N_PopulateIndexFields_Node1 N_PopulateIndexFields_Node2{"The destination index field is not
empty or spaces"}:::decision N_PopulateIndexFields_Node2_action["The system copies the CCN key to
the destination index field"]:::main N_PopulateIndexFields_Node2 -- Yes --> N_PopulateIndexFields_Node2_action N_PopulateIndexFields_Node2_action --> E_PopulateIndexFields N_PopulateIndexFields_Node1 -- No --> N_PopulateIndexFields_Node2 N_PopulateIndexFields_Node3{"The cargo record is marked as
deleted"}:::decision N_PopulateIndexFields_Node3_action["The system skips all index field
population and exits the process"]:::main N_PopulateIndexFields_Node3 -- Yes --> N_PopulateIndexFields_Node3_action N_PopulateIndexFields_Node3_action --> E_PopulateIndexFields N_PopulateIndexFields_Node2 -- No --> N_PopulateIndexFields_Node3 N_PopulateIndexFields_Node4{"Index fields need to be populated"}:::decision N_PopulateIndexFields_Node4_action["The system copies the US CCN key to
RT071, RT072, and RT073 index fields"]:::main N_PopulateIndexFields_Node4 -- Yes --> N_PopulateIndexFields_Node4_action N_PopulateIndexFields_Node4_action --> E_PopulateIndexFields N_PopulateIndexFields_Node3 -- No --> N_PopulateIndexFields_Node4 N_PopulateIndexFields_Node5{"The destination index field is not
empty"}:::decision N_PopulateIndexFields_Node5_action["The system copies the US CCN key to
the RT076 destination index field"]:::main N_PopulateIndexFields_Node5 -- Yes --> N_PopulateIndexFields_Node5_action N_PopulateIndexFields_Node5_action --> E_PopulateIndexFields N_PopulateIndexFields_Node4 -- No --> N_PopulateIndexFields_Node5 N_PopulateIndexFields_Node5 -- No --> E_PopulateIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field population
WHEN:
The cargo status indicates the record is marked as deleted
THEN:
- The system skips all index field population
- Exits the index setting process
File: GCCUSIO.cbl
GIVEN:
A cargo record with a CCN key is being processed
WHEN:
Index fields are being populated
THEN:
The system copies the CCN key to car ID index, waybill index, and car-waybill index fields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for index population
WHEN:
The destination index field is not empty or spaces
THEN:
The system copies the CCN key to the destination index field
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field updates
WHEN:
The cargo record is marked as deleted
THEN:
- The system skips all index field population
- Exits the process
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being updated and is not marked as deleted
WHEN:
Index fields need to be populated
THEN:
The system copies the US CCN key to RT071, RT072, and RT073 index fields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being updated with index fields
WHEN:
The destination index field is not empty
THEN:
The system copies the US CCN key to the RT076 destination index field
β Consolidated Acceptance Criteria
- Car ID indexes are being populated → the system assigns the equipment car value to both the car ID number index and car-waybill car ID index
- Car identification information is available → the system copies the equipment car number to both RT071 and RT073 car ID index 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_SetCarIDIndex(["Start Step"])
E_SetCarIDIndex(["End Step"])
N_SetCarIDIndex_Node0{"Car ID indexes are being populated"}:::decision
N_SetCarIDIndex_Node0_action["The system assigns the equipment
car value to both the car ID number
index and car-waybill car ID index"]:::main N_SetCarIDIndex_Node0 -- Yes --> N_SetCarIDIndex_Node0_action N_SetCarIDIndex_Node0_action --> E_SetCarIDIndex S_SetCarIDIndex --> N_SetCarIDIndex_Node0 N_SetCarIDIndex_Node1{"Car identification information is
available"}:::decision N_SetCarIDIndex_Node1_action["The system copies the equipment car
number to both RT071 and RT073 car
ID index fields"]:::main N_SetCarIDIndex_Node1 -- Yes --> N_SetCarIDIndex_Node1_action N_SetCarIDIndex_Node1_action --> E_SetCarIDIndex N_SetCarIDIndex_Node0 -- No --> N_SetCarIDIndex_Node1 N_SetCarIDIndex_Node1 -- No --> E_SetCarIDIndex
car value to both the car ID number
index and car-waybill car ID index"]:::main N_SetCarIDIndex_Node0 -- Yes --> N_SetCarIDIndex_Node0_action N_SetCarIDIndex_Node0_action --> E_SetCarIDIndex S_SetCarIDIndex --> N_SetCarIDIndex_Node0 N_SetCarIDIndex_Node1{"Car identification information is
available"}:::decision N_SetCarIDIndex_Node1_action["The system copies the equipment car
number to both RT071 and RT073 car
ID index fields"]:::main N_SetCarIDIndex_Node1 -- Yes --> N_SetCarIDIndex_Node1_action N_SetCarIDIndex_Node1_action --> E_SetCarIDIndex N_SetCarIDIndex_Node0 -- No --> N_SetCarIDIndex_Node1 N_SetCarIDIndex_Node1 -- No --> E_SetCarIDIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record contains equipment car information
WHEN:
Car ID indexes are being populated
THEN:
- The system assigns the equipment car value to both the car id number index
- Car-waybill car id index
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated with index fields
WHEN:
Car identification information is available
THEN:
- The system copies the equipment car number to both rt071
- Rt073 car id index fields
β Consolidated Acceptance Criteria
- Waybill indexes are being populated → the system assigns road number to road index, station number to station index, waybill number to waybill index, waybill date to waybill date index, and copies waybill number to car-waybill index
- Waybill information is available in the cargo record → the system populates RT072 index with road number, station number, waybill number and waybill date, and copies waybill number to RT073 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_SetWaybillIndexFields(["Start Step"])
E_SetWaybillIndexFields(["End Step"])
N_SetWaybillIndexFields_Node0{"Waybill indexes are being populated"}:::decision
N_SetWaybillIndexFields_Node0_action["The system assigns road number to
road index, station number to
station index, waybill number to
waybill index, waybill date to
waybill date index, and copies
waybill number to car-waybill index"]:::main N_SetWaybillIndexFields_Node0 -- Yes --> N_SetWaybillIndexFields_Node0_action N_SetWaybillIndexFields_Node0_action --> E_SetWaybillIndexFields S_SetWaybillIndexFields --> N_SetWaybillIndexFields_Node0 N_SetWaybillIndexFields_Node1{"Waybill information is available in
the cargo record"}:::decision N_SetWaybillIndexFields_Node1_action["The system populates RT072 index
with road number, station number,
waybill number and waybill date, and
copies waybill number to RT073 index"]:::main N_SetWaybillIndexFields_Node1 -- Yes --> N_SetWaybillIndexFields_Node1_action N_SetWaybillIndexFields_Node1_action --> E_SetWaybillIndexFields N_SetWaybillIndexFields_Node0 -- No --> N_SetWaybillIndexFields_Node1 N_SetWaybillIndexFields_Node1 -- No --> E_SetWaybillIndexFields
road index, station number to
station index, waybill number to
waybill index, waybill date to
waybill date index, and copies
waybill number to car-waybill index"]:::main N_SetWaybillIndexFields_Node0 -- Yes --> N_SetWaybillIndexFields_Node0_action N_SetWaybillIndexFields_Node0_action --> E_SetWaybillIndexFields S_SetWaybillIndexFields --> N_SetWaybillIndexFields_Node0 N_SetWaybillIndexFields_Node1{"Waybill information is available in
the cargo record"}:::decision N_SetWaybillIndexFields_Node1_action["The system populates RT072 index
with road number, station number,
waybill number and waybill date, and
copies waybill number to RT073 index"]:::main N_SetWaybillIndexFields_Node1 -- Yes --> N_SetWaybillIndexFields_Node1_action N_SetWaybillIndexFields_Node1_action --> E_SetWaybillIndexFields N_SetWaybillIndexFields_Node0 -- No --> N_SetWaybillIndexFields_Node1 N_SetWaybillIndexFields_Node1 -- No --> E_SetWaybillIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record contains waybill information including road number, station number, waybill number, and waybill date
WHEN:
Waybill indexes are being populated
THEN:
The system assigns road number to road index, station number to station index, waybill number to waybill index, waybill date to waybill date index, and copies waybill number to car-waybill index
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated with index fields
WHEN:
Waybill information is available in the cargo record
THEN:
- The system populates rt072 index with road number, station number, waybill number
- Waybill date, and copies waybill number to rt073 index
β Consolidated Acceptance Criteria
- Bond number index is being populated → the system uses in-bond control number if available, otherwise uses entry number if available, otherwise sets bond index 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_SetBondControlNumberIndex(["Start Step"])
E_SetBondControlNumberIndex(["End Step"])
N_SetBondControlNumberIndex_Node0{"Bond number index is being
populated"}:::decision N_SetBondControlNumberIndex_Node0_action["The system uses in-bond control
number if available, otherwise uses
entry number if available, otherwise
sets bond index to spaces"]:::main N_SetBondControlNumberIndex_Node0 -- Yes --> N_SetBondControlNumberIndex_Node0_action N_SetBondControlNumberIndex_Node0_action --> E_SetBondControlNumberIndex S_SetBondControlNumberIndex --> N_SetBondControlNumberIndex_Node0 N_SetBondControlNumberIndex_Node0 -- No --> E_SetBondControlNumberIndex
populated"}:::decision N_SetBondControlNumberIndex_Node0_action["The system uses in-bond control
number if available, otherwise uses
entry number if available, otherwise
sets bond index to spaces"]:::main N_SetBondControlNumberIndex_Node0 -- Yes --> N_SetBondControlNumberIndex_Node0_action N_SetBondControlNumberIndex_Node0_action --> E_SetBondControlNumberIndex S_SetBondControlNumberIndex --> N_SetBondControlNumberIndex_Node0 N_SetBondControlNumberIndex_Node0 -- No --> E_SetBondControlNumberIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record may contain in-bond control number or entry number
WHEN:
Bond number index is being populated
THEN:
The system uses in-bond control number if available, otherwise uses entry number if available, otherwise sets bond index to spaces
β Consolidated Acceptance Criteria
- Manifest index is being populated → the system assigns the CCN key value to the manifest index field
- The manifest index field needs to be populated → the system should copy the CCN key to the manifest index field (GCUSRT-RT075-MANIF-INDEX)
- Index field population is in progress → the system copies the US CCN key to the RT075 manifest index field
- All other index fields have been populated → the system should copy the US CCN key to the manifest index field (RT075-MANIF-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_SetManifestIndex(["Start Step"])
E_SetManifestIndex(["End Step"])
N_SetManifestIndex_Node0{"Manifest index is being populated"}:::decision
N_SetManifestIndex_Node0_action["The system assigns the CCN key
value to the manifest index field"]:::main N_SetManifestIndex_Node0 -- Yes --> N_SetManifestIndex_Node0_action N_SetManifestIndex_Node0_action --> E_SetManifestIndex S_SetManifestIndex --> N_SetManifestIndex_Node0 N_SetManifestIndex_Node1{"The manifest index field needs to
be populated"}:::decision N_SetManifestIndex_Node1_action["The system should copy the CCN key
to the manifest index field
GCUSRT-RT075-MANIF-INDEX"]:::main N_SetManifestIndex_Node1 -- Yes --> N_SetManifestIndex_Node1_action N_SetManifestIndex_Node1_action --> E_SetManifestIndex N_SetManifestIndex_Node0 -- No --> N_SetManifestIndex_Node1 N_SetManifestIndex_Node2{"Index field population is in
progress"}:::decision N_SetManifestIndex_Node2_action["The system copies the US CCN key to
the RT075 manifest index field"]:::main N_SetManifestIndex_Node2 -- Yes --> N_SetManifestIndex_Node2_action N_SetManifestIndex_Node2_action --> E_SetManifestIndex N_SetManifestIndex_Node1 -- No --> N_SetManifestIndex_Node2 N_SetManifestIndex_Node3{"All other index fields have been
populated"}:::decision N_SetManifestIndex_Node3_action["The system should copy the US CCN
key to the manifest index field
RT075-MANIF-INDEX"]:::main N_SetManifestIndex_Node3 -- Yes --> N_SetManifestIndex_Node3_action N_SetManifestIndex_Node3_action --> E_SetManifestIndex N_SetManifestIndex_Node2 -- No --> N_SetManifestIndex_Node3 N_SetManifestIndex_Node3 -- No --> E_SetManifestIndex
value to the manifest index field"]:::main N_SetManifestIndex_Node0 -- Yes --> N_SetManifestIndex_Node0_action N_SetManifestIndex_Node0_action --> E_SetManifestIndex S_SetManifestIndex --> N_SetManifestIndex_Node0 N_SetManifestIndex_Node1{"The manifest index field needs to
be populated"}:::decision N_SetManifestIndex_Node1_action["The system should copy the CCN key
to the manifest index field
GCUSRT-RT075-MANIF-INDEX"]:::main N_SetManifestIndex_Node1 -- Yes --> N_SetManifestIndex_Node1_action N_SetManifestIndex_Node1_action --> E_SetManifestIndex N_SetManifestIndex_Node0 -- No --> N_SetManifestIndex_Node1 N_SetManifestIndex_Node2{"Index field population is in
progress"}:::decision N_SetManifestIndex_Node2_action["The system copies the US CCN key to
the RT075 manifest index field"]:::main N_SetManifestIndex_Node2 -- Yes --> N_SetManifestIndex_Node2_action N_SetManifestIndex_Node2_action --> E_SetManifestIndex N_SetManifestIndex_Node1 -- No --> N_SetManifestIndex_Node2 N_SetManifestIndex_Node3{"All other index fields have been
populated"}:::decision N_SetManifestIndex_Node3_action["The system should copy the US CCN
key to the manifest index field
RT075-MANIF-INDEX"]:::main N_SetManifestIndex_Node3 -- Yes --> N_SetManifestIndex_Node3_action N_SetManifestIndex_Node3_action --> E_SetManifestIndex N_SetManifestIndex_Node2 -- No --> N_SetManifestIndex_Node3 N_SetManifestIndex_Node3 -- No --> E_SetManifestIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record has a CCN key
WHEN:
Manifest index is being populated
THEN:
The system assigns the CCN key value to the manifest index field
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index population
WHEN:
The manifest index field needs to be populated
THEN:
The system should copy the CCN key to the manifest index field (GCUSRT-RT075-MANIF-INDEX)
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated with index fields
WHEN:
Index field population is in progress
THEN:
The system copies the US CCN key to the RT075 manifest index field
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index updates
WHEN:
All other index fields have been populated
THEN:
The system should copy the US CCN key to the manifest index field (RT075-MANIF-INDEX)
β Consolidated Acceptance Criteria
- Status description is being set → the system maps the status code to corresponding description: OK to 'OK', PENDING to 'PENDING', ACKNWLG to 'ACK', ERROR to 'ERROR', SENT to 'SENT', DELETED to 'DELETED', DELPEND to 'DELPEND', RELSD to 'RELEASED', ARRIVAL to 'MNL-ARRV', AARR to 'AUT-ARRV', EXPORT to 'MNL-EXP', AEXP to 'AUT-EXP', IMED-EX to 'IMED-EXP', XFERED to 'XFERED', or uses the original status if no mapping exists
- The cargo status description needs to be set → the system maps the internal status code to the corresponding business description: OK to 'OK', PENDING to 'PENDING', ACKNWLG to 'ACK', ERROR to 'ERROR', SENT to 'SENT', DELETED to 'DELETED', DELPEND to 'DELPEND', RELSD to 'RELEASED', ARRIVAL to 'MNL-ARRV', AARR to 'AUT-ARRV', EXPORT to 'MNL-EXP', AEXP to 'AUT-EXP', IMED-EX to 'IMED-EXP', XFERED to 'XFERED', or uses the original status code if no mapping 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_SetCargoStatusDescription(["Start Step"])
E_SetCargoStatusDescription(["End Step"])
N_SetCargoStatusDescription_Node0{"Status description is being set"}:::decision
N_SetCargoStatusDescription_Node0_action["The system maps the status code to
corresponding description: OK to OK
, PENDING to PENDING , ACKNWLG to
ACK , ERROR to ERROR , SENT to SENT
, DELETED to DELETED , DELPEND to
DELPEND , RELSD to RELEASED ,
ARRIVAL to MNL-ARRV , AARR to
AUT-ARRV , EXPORT to MNL-EXP , AEXP
to AUT-EXP , IMED-EX to IMED-EXP ,
XFERED to XFERED , or uses the
original status if no mapping exists"]:::main N_SetCargoStatusDescription_Node0 -- Yes --> N_SetCargoStatusDescription_Node0_action N_SetCargoStatusDescription_Node0_action --> E_SetCargoStatusDescription S_SetCargoStatusDescription --> N_SetCargoStatusDescription_Node0 N_SetCargoStatusDescription_Node1{"The cargo status description needs
to be set"}:::decision N_SetCargoStatusDescription_Node1_action["The system maps the internal status
code to the corresponding business
description: OK to OK , PENDING to
PENDING , ACKNWLG to ACK , ERROR to
ERROR , SENT to SENT , DELETED to
DELETED , DELPEND to DELPEND , RELSD
to RELEASED , ARRIVAL to MNL-ARRV ,
AARR to AUT-ARRV , EXPORT to MNL-EXP
, AEXP to AUT-EXP , IMED-EX to
IMED-EXP , XFERED to XFERED , or
uses the original status code if no
mapping exists"]:::main N_SetCargoStatusDescription_Node1 -- Yes --> N_SetCargoStatusDescription_Node1_action N_SetCargoStatusDescription_Node1_action --> E_SetCargoStatusDescription N_SetCargoStatusDescription_Node0 -- No --> N_SetCargoStatusDescription_Node1 N_SetCargoStatusDescription_Node1 -- No --> E_SetCargoStatusDescription
corresponding description: OK to OK
, PENDING to PENDING , ACKNWLG to
ACK , ERROR to ERROR , SENT to SENT
, DELETED to DELETED , DELPEND to
DELPEND , RELSD to RELEASED ,
ARRIVAL to MNL-ARRV , AARR to
AUT-ARRV , EXPORT to MNL-EXP , AEXP
to AUT-EXP , IMED-EX to IMED-EXP ,
XFERED to XFERED , or uses the
original status if no mapping exists"]:::main N_SetCargoStatusDescription_Node0 -- Yes --> N_SetCargoStatusDescription_Node0_action N_SetCargoStatusDescription_Node0_action --> E_SetCargoStatusDescription S_SetCargoStatusDescription --> N_SetCargoStatusDescription_Node0 N_SetCargoStatusDescription_Node1{"The cargo status description needs
to be set"}:::decision N_SetCargoStatusDescription_Node1_action["The system maps the internal status
code to the corresponding business
description: OK to OK , PENDING to
PENDING , ACKNWLG to ACK , ERROR to
ERROR , SENT to SENT , DELETED to
DELETED , DELPEND to DELPEND , RELSD
to RELEASED , ARRIVAL to MNL-ARRV ,
AARR to AUT-ARRV , EXPORT to MNL-EXP
, AEXP to AUT-EXP , IMED-EX to
IMED-EXP , XFERED to XFERED , or
uses the original status code if no
mapping exists"]:::main N_SetCargoStatusDescription_Node1 -- Yes --> N_SetCargoStatusDescription_Node1_action N_SetCargoStatusDescription_Node1_action --> E_SetCargoStatusDescription N_SetCargoStatusDescription_Node0 -- No --> N_SetCargoStatusDescription_Node1 N_SetCargoStatusDescription_Node1 -- No --> E_SetCargoStatusDescription
File: GCCUSIO.cbl
GIVEN:
A cargo record has an internal cargo status code
WHEN:
Status description is being set
THEN:
The system maps the status code to corresponding description: OK to 'OK', PENDING to 'PENDING', ACKNWLG to 'ACK', ERROR to 'ERROR', SENT to 'SENT', DELETED to 'DELETED', DELPEND to 'DELPEND', RELSD to 'RELEASED', ARRIVAL to 'MNL-ARRV', AARR to 'AUT-ARRV', EXPORT to 'MNL-EXP', AEXP to 'AUT-EXP', IMED-EX to 'IMED-EXP', XFERED to 'XFERED', or uses the original status if no mapping exists
File: GCCUSIO.cbl
GIVEN:
A cargo record has an internal CP cargo status code
WHEN:
The cargo status description needs to be set
THEN:
The system maps the internal status code to the corresponding business description: OK to 'OK', PENDING to 'PENDING', ACKNWLG to 'ACK', ERROR to 'ERROR', SENT to 'SENT', DELETED to 'DELETED', DELPEND to 'DELPEND', RELSD to 'RELEASED', ARRIVAL to 'MNL-ARRV', AARR to 'AUT-ARRV', EXPORT to 'MNL-EXP', AEXP to 'AUT-EXP', IMED-EX to 'IMED-EXP', XFERED to 'XFERED', or uses the original status code if no mapping exists
β Consolidated Acceptance Criteria
- The record insertion is requested → the system calls the database interface to insert the record using the primary PCB and unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertRecordtoPrimaryDatabase(["Start Step"])
E_InsertRecordtoPrimaryDatabase(["End Step"])
N_InsertRecordtoPrimaryDatabase_Node0{"The record insertion is requested"}:::decision
N_InsertRecordtoPrimaryDatabase_Node0_action["The system calls the database
interface to insert the record using
the primary PCB and unqualified SSA"]:::main N_InsertRecordtoPrimaryDatabase_Node0 -- Yes --> N_InsertRecordtoPrimaryDatabase_Node0_action N_InsertRecordtoPrimaryDatabase_Node0_action --> E_InsertRecordtoPrimaryDatabase S_InsertRecordtoPrimaryDatabase --> N_InsertRecordtoPrimaryDatabase_Node0 N_InsertRecordtoPrimaryDatabase_Node0 -- No --> E_InsertRecordtoPrimaryDatabase
interface to insert the record using
the primary PCB and unqualified SSA"]:::main N_InsertRecordtoPrimaryDatabase_Node0 -- Yes --> N_InsertRecordtoPrimaryDatabase_Node0_action N_InsertRecordtoPrimaryDatabase_Node0_action --> E_InsertRecordtoPrimaryDatabase S_InsertRecordtoPrimaryDatabase --> N_InsertRecordtoPrimaryDatabase_Node0 N_InsertRecordtoPrimaryDatabase_Node0 -- No --> E_InsertRecordtoPrimaryDatabase
File: GCCUSIO.cbl
GIVEN:
A cargo record is prepared with all required fields populated
WHEN:
The record insertion is requested
THEN:
- The system calls the database interface to insert the record using the primary pcb
- Unqualified ssa
β Consolidated Acceptance Criteria
- Iron Highway notification data is being prepared → the system saves the US cargo short description to the Iron Highway status 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_SaveIronHighwayStatus(["Start Step"])
E_SaveIronHighwayStatus(["End Step"])
N_SaveIronHighwayStatus_Node0{"Iron Highway notification data is
being prepared"}:::decision N_SaveIronHighwayStatus_Node0_action["The system saves the US cargo short
description to the Iron Highway
status field"]:::main N_SaveIronHighwayStatus_Node0 -- Yes --> N_SaveIronHighwayStatus_Node0_action N_SaveIronHighwayStatus_Node0_action --> E_SaveIronHighwayStatus S_SaveIronHighwayStatus --> N_SaveIronHighwayStatus_Node0 N_SaveIronHighwayStatus_Node0 -- No --> E_SaveIronHighwayStatus
being prepared"}:::decision N_SaveIronHighwayStatus_Node0_action["The system saves the US cargo short
description to the Iron Highway
status field"]:::main N_SaveIronHighwayStatus_Node0 -- Yes --> N_SaveIronHighwayStatus_Node0_action N_SaveIronHighwayStatus_Node0_action --> E_SaveIronHighwayStatus S_SaveIronHighwayStatus --> N_SaveIronHighwayStatus_Node0 N_SaveIronHighwayStatus_Node0 -- No --> E_SaveIronHighwayStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record has been processed
WHEN:
Iron Highway notification data is being prepared
THEN:
The system saves the US cargo short description to the Iron Highway status field
β Consolidated Acceptance Criteria
- Notification data is being prepared → the system extracts the first 15 characters of the waybill number index and saves it for notification 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_SaveWaybillNumber(["Start Step"])
E_SaveWaybillNumber(["End Step"])
N_SaveWaybillNumber_Node0{"Notification data is being prepared"}:::decision
N_SaveWaybillNumber_Node0_action["The system extracts the first 15
characters of the waybill number
index and saves it for notification
processing"]:::main N_SaveWaybillNumber_Node0 -- Yes --> N_SaveWaybillNumber_Node0_action N_SaveWaybillNumber_Node0_action --> E_SaveWaybillNumber S_SaveWaybillNumber --> N_SaveWaybillNumber_Node0 N_SaveWaybillNumber_Node0 -- No --> E_SaveWaybillNumber
characters of the waybill number
index and saves it for notification
processing"]:::main N_SaveWaybillNumber_Node0 -- Yes --> N_SaveWaybillNumber_Node0_action N_SaveWaybillNumber_Node0_action --> E_SaveWaybillNumber S_SaveWaybillNumber --> N_SaveWaybillNumber_Node0 N_SaveWaybillNumber_Node0 -- No --> E_SaveWaybillNumber
File: GCCUSIO.cbl
GIVEN:
A cargo record contains waybill number index information
WHEN:
Notification data is being prepared
THEN:
- The system extracts the first 15 characters of the waybill number index
- Saves it for notification processing
β Consolidated Acceptance Criteria
- Notification data is being prepared → the system saves the car ID number index value for notification 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_SaveCarNumber(["Start Step"])
E_SaveCarNumber(["End Step"])
N_SaveCarNumber_Node0{"Notification data is being prepared"}:::decision
N_SaveCarNumber_Node0_action["The system saves the car ID number
index value for notification
processing"]:::main N_SaveCarNumber_Node0 -- Yes --> N_SaveCarNumber_Node0_action N_SaveCarNumber_Node0_action --> E_SaveCarNumber S_SaveCarNumber --> N_SaveCarNumber_Node0 N_SaveCarNumber_Node0 -- No --> E_SaveCarNumber
index value for notification
processing"]:::main N_SaveCarNumber_Node0 -- Yes --> N_SaveCarNumber_Node0_action N_SaveCarNumber_Node0_action --> E_SaveCarNumber S_SaveCarNumber --> N_SaveCarNumber_Node0 N_SaveCarNumber_Node0 -- No --> E_SaveCarNumber
File: GCCUSIO.cbl
GIVEN:
A cargo record contains car ID number index information
WHEN:
Notification data is being prepared
THEN:
The system saves the car ID number index value for notification processing
β Consolidated Acceptance Criteria
- Iron Highway notification processing is invoked → the system calls the Iron Highway notification module to send status updates to external systems
- Status change notification is required → the system processes Iron Highway notification using saved status information
- The system completes the cargo record update → the system processes Iron Highway notification using the saved status, waybill number, and car identification 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_ProcessIronHighwayNotification(["Start Step"])
E_ProcessIronHighwayNotification(["End Step"])
N_ProcessIronHighwayNotification_Node0{"Iron Highway notification
processing is invoked"}:::decision N_ProcessIronHighwayNotification_Node0_action["The system calls the Iron Highway
notification module to send status
updates to external systems"]:::main N_ProcessIronHighwayNotification_Node0 -- Yes --> N_ProcessIronHighwayNotification_Node0_action N_ProcessIronHighwayNotification_Node0_action --> E_ProcessIronHighwayNotification S_ProcessIronHighwayNotification --> N_ProcessIronHighwayNotification_Node0 N_ProcessIronHighwayNotification_Node1{"Status change notification is
required"}:::decision N_ProcessIronHighwayNotification_Node1_action["The system processes Iron Highway
notification using saved status
information"]:::main N_ProcessIronHighwayNotification_Node1 -- Yes --> N_ProcessIronHighwayNotification_Node1_action N_ProcessIronHighwayNotification_Node1_action --> E_ProcessIronHighwayNotification N_ProcessIronHighwayNotification_Node0 -- No --> N_ProcessIronHighwayNotification_Node1 N_ProcessIronHighwayNotification_Node2{"The system completes the cargo
record update"}:::decision N_ProcessIronHighwayNotification_Node2_action["The system processes Iron Highway
notification using the saved status,
waybill number, and car
identification information"]:::main N_ProcessIronHighwayNotification_Node2 -- Yes --> N_ProcessIronHighwayNotification_Node2_action N_ProcessIronHighwayNotification_Node2_action --> E_ProcessIronHighwayNotification N_ProcessIronHighwayNotification_Node1 -- No --> N_ProcessIronHighwayNotification_Node2 N_ProcessIronHighwayNotification_Node2 -- No --> E_ProcessIronHighwayNotification
processing is invoked"}:::decision N_ProcessIronHighwayNotification_Node0_action["The system calls the Iron Highway
notification module to send status
updates to external systems"]:::main N_ProcessIronHighwayNotification_Node0 -- Yes --> N_ProcessIronHighwayNotification_Node0_action N_ProcessIronHighwayNotification_Node0_action --> E_ProcessIronHighwayNotification S_ProcessIronHighwayNotification --> N_ProcessIronHighwayNotification_Node0 N_ProcessIronHighwayNotification_Node1{"Status change notification is
required"}:::decision N_ProcessIronHighwayNotification_Node1_action["The system processes Iron Highway
notification using saved status
information"]:::main N_ProcessIronHighwayNotification_Node1 -- Yes --> N_ProcessIronHighwayNotification_Node1_action N_ProcessIronHighwayNotification_Node1_action --> E_ProcessIronHighwayNotification N_ProcessIronHighwayNotification_Node0 -- No --> N_ProcessIronHighwayNotification_Node1 N_ProcessIronHighwayNotification_Node2{"The system completes the cargo
record update"}:::decision N_ProcessIronHighwayNotification_Node2_action["The system processes Iron Highway
notification using the saved status,
waybill number, and car
identification information"]:::main N_ProcessIronHighwayNotification_Node2 -- Yes --> N_ProcessIronHighwayNotification_Node2_action N_ProcessIronHighwayNotification_Node2_action --> E_ProcessIronHighwayNotification N_ProcessIronHighwayNotification_Node1 -- No --> N_ProcessIronHighwayNotification_Node2 N_ProcessIronHighwayNotification_Node2 -- No --> E_ProcessIronHighwayNotification
File: GCCUSIO.cbl
GIVEN:
Cargo status information has been captured and prepared
WHEN:
Iron Highway notification processing is invoked
THEN:
The system calls the Iron Highway notification module to send status updates to external systems
File: GCCUSIO.cbl
GIVEN:
A cargo record has been updated and index databases have been synchronized
WHEN:
Status change notification is required
THEN:
The system processes Iron Highway notification using saved status information
File: GCCUSIO.cbl
GIVEN:
A cargo record has been successfully marked as deleted
WHEN:
The system completes the cargo record update
THEN:
The system processes Iron Highway notification using the saved status, waybill number, and car identification information
β Consolidated Acceptance Criteria
- Index database update is requested → the system calls the index database update process to maintain cargo status tracking tables based on error and hold 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_UpdateIndexDatabase(["Start Step"])
E_UpdateIndexDatabase(["End Step"])
N_UpdateIndexDatabase_Node0{"Index database update is requested"}:::decision
N_UpdateIndexDatabase_Node0_action["The system calls the index database
update process to maintain cargo
status tracking tables based on
error and hold conditions"]:::main N_UpdateIndexDatabase_Node0 -- Yes --> N_UpdateIndexDatabase_Node0_action N_UpdateIndexDatabase_Node0_action --> E_UpdateIndexDatabase S_UpdateIndexDatabase --> N_UpdateIndexDatabase_Node0 N_UpdateIndexDatabase_Node0 -- No --> E_UpdateIndexDatabase
update process to maintain cargo
status tracking tables based on
error and hold conditions"]:::main N_UpdateIndexDatabase_Node0 -- Yes --> N_UpdateIndexDatabase_Node0_action N_UpdateIndexDatabase_Node0_action --> E_UpdateIndexDatabase S_UpdateIndexDatabase --> N_UpdateIndexDatabase_Node0 N_UpdateIndexDatabase_Node0 -- No --> E_UpdateIndexDatabase
File: GCCUSIO.cbl
GIVEN:
A cargo record has been inserted or updated in the primary database
WHEN:
Index database update is requested
THEN:
- The system calls the index database update process to maintain cargo status tracking tables based on error
- Hold conditions
β Consolidated Acceptance Criteria
- The cargo status indicates it is deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true) → the system should exit the index population process without setting any index fields
- The cargo status indicates it is deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true) → the system should skip all CCN key index field setting operations and exit the process
- The cargo status indicates it has been deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true) → the system should skip all index field population and exit the process immediately
- The cargo status indicates it is deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true) → the system should skip all index field population and exit the index management process
- The cargo status indicates it has been deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true) → the bond index population process should be skipped and control should exit immediately
- The cargo status indicates it has been deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true) → bond control number processing is skipped and control exits the 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_IsCargoDeleted(["Start Step"])
E_IsCargoDeleted(["End Step"])
N_IsCargoDeleted_Node0{"The cargo status indicates it is
deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node0_action["The system should exit the index
population process without setting
any index fields"]:::main N_IsCargoDeleted_Node0 -- Yes --> N_IsCargoDeleted_Node0_action N_IsCargoDeleted_Node0_action --> E_IsCargoDeleted S_IsCargoDeleted --> N_IsCargoDeleted_Node0 N_IsCargoDeleted_Node1{"The cargo status indicates it is
deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node1_action["The system should skip all CCN key
index field setting operations and
exit the process"]:::main N_IsCargoDeleted_Node1 -- Yes --> N_IsCargoDeleted_Node1_action N_IsCargoDeleted_Node1_action --> E_IsCargoDeleted N_IsCargoDeleted_Node0 -- No --> N_IsCargoDeleted_Node1 N_IsCargoDeleted_Node2{"The cargo status indicates it has
been deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node2_action["The system should skip all index
field population and exit the
process immediately"]:::main N_IsCargoDeleted_Node2 -- Yes --> N_IsCargoDeleted_Node2_action N_IsCargoDeleted_Node2_action --> E_IsCargoDeleted N_IsCargoDeleted_Node1 -- No --> N_IsCargoDeleted_Node2 N_IsCargoDeleted_Node3{"The cargo status indicates it is
deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node3_action["The system should skip all index
field population and exit the index
management process"]:::main N_IsCargoDeleted_Node3 -- Yes --> N_IsCargoDeleted_Node3_action N_IsCargoDeleted_Node3_action --> E_IsCargoDeleted N_IsCargoDeleted_Node2 -- No --> N_IsCargoDeleted_Node3 N_IsCargoDeleted_Node4{"The cargo status indicates it has
been deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node4_action["The bond index population process
should be skipped and control should
exit immediately"]:::main N_IsCargoDeleted_Node4 -- Yes --> N_IsCargoDeleted_Node4_action N_IsCargoDeleted_Node4_action --> E_IsCargoDeleted N_IsCargoDeleted_Node3 -- No --> N_IsCargoDeleted_Node4 N_IsCargoDeleted_Node5{"The cargo status indicates it has
been deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node5_action["Bond control number processing is
skipped and control exits the
procedure"]:::main N_IsCargoDeleted_Node5 -- Yes --> N_IsCargoDeleted_Node5_action N_IsCargoDeleted_Node5_action --> E_IsCargoDeleted N_IsCargoDeleted_Node4 -- No --> N_IsCargoDeleted_Node5 N_IsCargoDeleted_Node5 -- No --> E_IsCargoDeleted
deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node0_action["The system should exit the index
population process without setting
any index fields"]:::main N_IsCargoDeleted_Node0 -- Yes --> N_IsCargoDeleted_Node0_action N_IsCargoDeleted_Node0_action --> E_IsCargoDeleted S_IsCargoDeleted --> N_IsCargoDeleted_Node0 N_IsCargoDeleted_Node1{"The cargo status indicates it is
deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node1_action["The system should skip all CCN key
index field setting operations and
exit the process"]:::main N_IsCargoDeleted_Node1 -- Yes --> N_IsCargoDeleted_Node1_action N_IsCargoDeleted_Node1_action --> E_IsCargoDeleted N_IsCargoDeleted_Node0 -- No --> N_IsCargoDeleted_Node1 N_IsCargoDeleted_Node2{"The cargo status indicates it has
been deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node2_action["The system should skip all index
field population and exit the
process immediately"]:::main N_IsCargoDeleted_Node2 -- Yes --> N_IsCargoDeleted_Node2_action N_IsCargoDeleted_Node2_action --> E_IsCargoDeleted N_IsCargoDeleted_Node1 -- No --> N_IsCargoDeleted_Node2 N_IsCargoDeleted_Node3{"The cargo status indicates it is
deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node3_action["The system should skip all index
field population and exit the index
management process"]:::main N_IsCargoDeleted_Node3 -- Yes --> N_IsCargoDeleted_Node3_action N_IsCargoDeleted_Node3_action --> E_IsCargoDeleted N_IsCargoDeleted_Node2 -- No --> N_IsCargoDeleted_Node3 N_IsCargoDeleted_Node4{"The cargo status indicates it has
been deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node4_action["The bond index population process
should be skipped and control should
exit immediately"]:::main N_IsCargoDeleted_Node4 -- Yes --> N_IsCargoDeleted_Node4_action N_IsCargoDeleted_Node4_action --> E_IsCargoDeleted N_IsCargoDeleted_Node3 -- No --> N_IsCargoDeleted_Node4 N_IsCargoDeleted_Node5{"The cargo status indicates it has
been deleted
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoDeleted_Node5_action["Bond control number processing is
skipped and control exits the
procedure"]:::main N_IsCargoDeleted_Node5 -- Yes --> N_IsCargoDeleted_Node5_action N_IsCargoDeleted_Node5_action --> E_IsCargoDeleted N_IsCargoDeleted_Node4 -- No --> N_IsCargoDeleted_Node5 N_IsCargoDeleted_Node5 -- No --> E_IsCargoDeleted
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field population
WHEN:
The cargo status indicates it is deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
The system should exit the index population process without setting any index fields
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field updates
WHEN:
The cargo status indicates it is deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
- The system should skip all ccn key index field setting operations
- Exit the process
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field updates
WHEN:
The cargo status indicates it has been deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
- The system should skip all index field population
- Exit the process immediately
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field updates
WHEN:
The cargo status indicates it is deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
- The system should skip all index field population
- Exit the index management process
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for bond index population
WHEN:
The cargo status indicates it has been deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
- The bond index population process should be skipped
- Control should exit immediately
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for bond control number indexing
WHEN:
The cargo status indicates it has been deleted (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
- Bond control number processing is skipped
- Control exits the procedure
β Consolidated Acceptance Criteria
- The cargo is not deleted and index population is required → the system should copy the CCN key to RT071, RT072, and RT073 index fields
- Index fields need to be populated for the cargo record → the system should copy the CCN key to car ID index (RT071), waybill index (RT072), and car-waybill index (RT073) fields
- Index fields are being updated → the system should copy the US CCN key to RT071, RT072, and RT073 index fields, and if destination index is not empty, also copy to RT076 index 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_SetCCNKeyIndexFields(["Start Step"])
E_SetCCNKeyIndexFields(["End Step"])
N_SetCCNKeyIndexFields_Node0{"The cargo is not deleted and index
population is required"}:::decision N_SetCCNKeyIndexFields_Node0_action["The system should copy the CCN key
to RT071, RT072, and RT073 index
fields"]:::main N_SetCCNKeyIndexFields_Node0 -- Yes --> N_SetCCNKeyIndexFields_Node0_action N_SetCCNKeyIndexFields_Node0_action --> E_SetCCNKeyIndexFields S_SetCCNKeyIndexFields --> N_SetCCNKeyIndexFields_Node0 N_SetCCNKeyIndexFields_Node1{"Index fields need to be populated
for the cargo record"}:::decision N_SetCCNKeyIndexFields_Node1_action["The system should copy the CCN key
to car ID index RT071, waybill index
RT072, and car-waybill index RT073
fields"]:::main N_SetCCNKeyIndexFields_Node1 -- Yes --> N_SetCCNKeyIndexFields_Node1_action N_SetCCNKeyIndexFields_Node1_action --> E_SetCCNKeyIndexFields N_SetCCNKeyIndexFields_Node0 -- No --> N_SetCCNKeyIndexFields_Node1 N_SetCCNKeyIndexFields_Node2{"Index fields are being updated"}:::decision N_SetCCNKeyIndexFields_Node2_action["The system should copy the US CCN
key to RT071, RT072, and RT073 index
fields, and if destination index is
not empty, also copy to RT076 index
field"]:::main N_SetCCNKeyIndexFields_Node2 -- Yes --> N_SetCCNKeyIndexFields_Node2_action N_SetCCNKeyIndexFields_Node2_action --> E_SetCCNKeyIndexFields N_SetCCNKeyIndexFields_Node1 -- No --> N_SetCCNKeyIndexFields_Node2 N_SetCCNKeyIndexFields_Node2 -- No --> E_SetCCNKeyIndexFields
population is required"}:::decision N_SetCCNKeyIndexFields_Node0_action["The system should copy the CCN key
to RT071, RT072, and RT073 index
fields"]:::main N_SetCCNKeyIndexFields_Node0 -- Yes --> N_SetCCNKeyIndexFields_Node0_action N_SetCCNKeyIndexFields_Node0_action --> E_SetCCNKeyIndexFields S_SetCCNKeyIndexFields --> N_SetCCNKeyIndexFields_Node0 N_SetCCNKeyIndexFields_Node1{"Index fields need to be populated
for the cargo record"}:::decision N_SetCCNKeyIndexFields_Node1_action["The system should copy the CCN key
to car ID index RT071, waybill index
RT072, and car-waybill index RT073
fields"]:::main N_SetCCNKeyIndexFields_Node1 -- Yes --> N_SetCCNKeyIndexFields_Node1_action N_SetCCNKeyIndexFields_Node1_action --> E_SetCCNKeyIndexFields N_SetCCNKeyIndexFields_Node0 -- No --> N_SetCCNKeyIndexFields_Node1 N_SetCCNKeyIndexFields_Node2{"Index fields are being updated"}:::decision N_SetCCNKeyIndexFields_Node2_action["The system should copy the US CCN
key to RT071, RT072, and RT073 index
fields, and if destination index is
not empty, also copy to RT076 index
field"]:::main N_SetCCNKeyIndexFields_Node2 -- Yes --> N_SetCCNKeyIndexFields_Node2_action N_SetCCNKeyIndexFields_Node2_action --> E_SetCCNKeyIndexFields N_SetCCNKeyIndexFields_Node1 -- No --> N_SetCCNKeyIndexFields_Node2 N_SetCCNKeyIndexFields_Node2 -- No --> E_SetCCNKeyIndexFields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with a valid CCN key is being processed
WHEN:
- The cargo is not deleted
- Index population is required
THEN:
The system should copy the CCN key to RT071, RT072, and RT073 index fields
File: GCCUSIO.cbl
GIVEN:
A cargo record with a valid CCN key is being processed
WHEN:
Index fields need to be populated for the cargo record
THEN:
The system should copy the CCN key to car ID index (RT071), waybill index (RT072), and car-waybill index (RT073) fields
File: GCCUSIO.cbl
GIVEN:
A cargo record is active (not deleted)
WHEN:
Index fields are being updated
THEN:
The system should copy the US CCN key to RT071, RT072, and RT073 index fields, and if destination index is not empty, also copy to RT076 index field
β Consolidated Acceptance Criteria
- The destination index field (GCUSRT-RT076-DEST-INDEX) is not empty → the system should copy the CCN key to the destination CCN key index field (GCUSRT-RT076-US-CCN-KEY-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_SetDestinationCCNKey(["Start Step"])
E_SetDestinationCCNKey(["End Step"])
N_SetDestinationCCNKey_Node0{"The destination index field
GCUSRT-RT076-DEST-INDEX is not empty"}:::decision N_SetDestinationCCNKey_Node0_action["The system should copy the CCN key
to the destination CCN key index
field GCUSRT-RT076-US-CCN-KEY-INDEX"]:::main N_SetDestinationCCNKey_Node0 -- Yes --> N_SetDestinationCCNKey_Node0_action N_SetDestinationCCNKey_Node0_action --> E_SetDestinationCCNKey S_SetDestinationCCNKey --> N_SetDestinationCCNKey_Node0 N_SetDestinationCCNKey_Node0 -- No --> E_SetDestinationCCNKey
GCUSRT-RT076-DEST-INDEX is not empty"}:::decision N_SetDestinationCCNKey_Node0_action["The system should copy the CCN key
to the destination CCN key index
field GCUSRT-RT076-US-CCN-KEY-INDEX"]:::main N_SetDestinationCCNKey_Node0 -- Yes --> N_SetDestinationCCNKey_Node0_action N_SetDestinationCCNKey_Node0_action --> E_SetDestinationCCNKey S_SetDestinationCCNKey --> N_SetDestinationCCNKey_Node0 N_SetDestinationCCNKey_Node0 -- No --> E_SetDestinationCCNKey
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for index population
WHEN:
The destination index field (GCUSRT-RT076-DEST-INDEX) is not empty
THEN:
The system should copy the CCN key to the destination CCN key index field (GCUSRT-RT076-US-CCN-KEY-INDEX)
β Consolidated Acceptance Criteria
- Index fields are being populated → the system should copy the equipment car number to the car ID index field
- Index fields are being populated → the system should copy the equipment car number to the car ID index field (RT071-CAR-ID-NUM-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_PopulateCarIDIndex(["Start Step"])
E_PopulateCarIDIndex(["End Step"])
N_PopulateCarIDIndex_Node0{"Index fields are being populated"}:::decision
N_PopulateCarIDIndex_Node0_action["The system should copy the
equipment car number to the car ID
index field"]:::main N_PopulateCarIDIndex_Node0 -- Yes --> N_PopulateCarIDIndex_Node0_action N_PopulateCarIDIndex_Node0_action --> E_PopulateCarIDIndex S_PopulateCarIDIndex --> N_PopulateCarIDIndex_Node0 N_PopulateCarIDIndex_Node1{"Index fields are being populated"}:::decision N_PopulateCarIDIndex_Node1_action["The system should copy the
equipment car number to the car ID
index field RT071-CAR-ID-NUM-INDEX"]:::main N_PopulateCarIDIndex_Node1 -- Yes --> N_PopulateCarIDIndex_Node1_action N_PopulateCarIDIndex_Node1_action --> E_PopulateCarIDIndex N_PopulateCarIDIndex_Node0 -- No --> N_PopulateCarIDIndex_Node1 N_PopulateCarIDIndex_Node1 -- No --> E_PopulateCarIDIndex
equipment car number to the car ID
index field"]:::main N_PopulateCarIDIndex_Node0 -- Yes --> N_PopulateCarIDIndex_Node0_action N_PopulateCarIDIndex_Node0_action --> E_PopulateCarIDIndex S_PopulateCarIDIndex --> N_PopulateCarIDIndex_Node0 N_PopulateCarIDIndex_Node1{"Index fields are being populated"}:::decision N_PopulateCarIDIndex_Node1_action["The system should copy the
equipment car number to the car ID
index field RT071-CAR-ID-NUM-INDEX"]:::main N_PopulateCarIDIndex_Node1 -- Yes --> N_PopulateCarIDIndex_Node1_action N_PopulateCarIDIndex_Node1_action --> E_PopulateCarIDIndex N_PopulateCarIDIndex_Node0 -- No --> N_PopulateCarIDIndex_Node1 N_PopulateCarIDIndex_Node1 -- No --> E_PopulateCarIDIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record contains equipment car information
WHEN:
Index fields are being populated
THEN:
The system should copy the equipment car number to the car ID index field
File: GCCUSIO.cbl
GIVEN:
A cargo record has equipment car information
WHEN:
Index fields are being populated
THEN:
The system should copy the equipment car number to the car ID index field (RT071-CAR-ID-NUM-INDEX)
β Consolidated Acceptance Criteria
- Index fields are being populated → the system should copy road number to road index, station number to station index, waybill number to waybill index, and waybill date to date index
- Index fields are being updated → the system should populate RT072 index with road number, station number, waybill number, and waybill date from the RT082 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_PopulateWaybillIndexFields(["Start Step"])
E_PopulateWaybillIndexFields(["End Step"])
N_PopulateWaybillIndexFields_Node0{"Index fields are being populated"}:::decision
N_PopulateWaybillIndexFields_Node0_action["The system should copy road number
to road index, station number to
station index, waybill number to
waybill index, and waybill date to
date index"]:::main N_PopulateWaybillIndexFields_Node0 -- Yes --> N_PopulateWaybillIndexFields_Node0_action N_PopulateWaybillIndexFields_Node0_action --> E_PopulateWaybillIndexFields S_PopulateWaybillIndexFields --> N_PopulateWaybillIndexFields_Node0 N_PopulateWaybillIndexFields_Node1{"Index fields are being updated"}:::decision N_PopulateWaybillIndexFields_Node1_action["The system should populate RT072
index with road number, station
number, waybill number, and waybill
date from the RT082 fields"]:::main N_PopulateWaybillIndexFields_Node1 -- Yes --> N_PopulateWaybillIndexFields_Node1_action N_PopulateWaybillIndexFields_Node1_action --> E_PopulateWaybillIndexFields N_PopulateWaybillIndexFields_Node0 -- No --> N_PopulateWaybillIndexFields_Node1 N_PopulateWaybillIndexFields_Node1 -- No --> E_PopulateWaybillIndexFields
to road index, station number to
station index, waybill number to
waybill index, and waybill date to
date index"]:::main N_PopulateWaybillIndexFields_Node0 -- Yes --> N_PopulateWaybillIndexFields_Node0_action N_PopulateWaybillIndexFields_Node0_action --> E_PopulateWaybillIndexFields S_PopulateWaybillIndexFields --> N_PopulateWaybillIndexFields_Node0 N_PopulateWaybillIndexFields_Node1{"Index fields are being updated"}:::decision N_PopulateWaybillIndexFields_Node1_action["The system should populate RT072
index with road number, station
number, waybill number, and waybill
date from the RT082 fields"]:::main N_PopulateWaybillIndexFields_Node1 -- Yes --> N_PopulateWaybillIndexFields_Node1_action N_PopulateWaybillIndexFields_Node1_action --> E_PopulateWaybillIndexFields N_PopulateWaybillIndexFields_Node0 -- No --> N_PopulateWaybillIndexFields_Node1 N_PopulateWaybillIndexFields_Node1 -- No --> E_PopulateWaybillIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record contains transportation information including road number, station number, waybill number, and waybill date
WHEN:
Index fields are being populated
THEN:
The system should copy road number to road index, station number to station index, waybill number to waybill index, and waybill date to date index
File: GCCUSIO.cbl
GIVEN:
A cargo record contains waybill information
WHEN:
Index fields are being updated
THEN:
The system should populate RT072 index with road number, station number, waybill number, and waybill date from the RT082 fields
β Consolidated Acceptance Criteria
- Cross-reference indexes are being established → the system should copy the waybill number to the cross-reference waybill index and the equipment car to the cross-reference car ID 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_SetWaybillCrossReference(["Start Step"])
E_SetWaybillCrossReference(["End Step"])
N_SetWaybillCrossReference_Node0{"Cross-reference indexes are being
established"}:::decision N_SetWaybillCrossReference_Node0_action["The system should copy the waybill
number to the cross-reference
waybill index and the equipment car
to the cross-reference car ID index"]:::main N_SetWaybillCrossReference_Node0 -- Yes --> N_SetWaybillCrossReference_Node0_action N_SetWaybillCrossReference_Node0_action --> E_SetWaybillCrossReference S_SetWaybillCrossReference --> N_SetWaybillCrossReference_Node0 N_SetWaybillCrossReference_Node0 -- No --> E_SetWaybillCrossReference
established"}:::decision N_SetWaybillCrossReference_Node0_action["The system should copy the waybill
number to the cross-reference
waybill index and the equipment car
to the cross-reference car ID index"]:::main N_SetWaybillCrossReference_Node0 -- Yes --> N_SetWaybillCrossReference_Node0_action N_SetWaybillCrossReference_Node0_action --> E_SetWaybillCrossReference S_SetWaybillCrossReference --> N_SetWaybillCrossReference_Node0 N_SetWaybillCrossReference_Node0 -- No --> E_SetWaybillCrossReference
File: GCCUSIO.cbl
GIVEN:
Waybill and car information has been populated in their respective index fields
WHEN:
Cross-reference indexes are being established
THEN:
- The system should copy the waybill number to the cross-reference waybill index
- The equipment car to the cross-reference car id index
β Consolidated Acceptance Criteria
- The in-bond control number field (GCUSRT-M1206-IN-BOND-CTRL-NUM) is not empty → the system should use the in-bond control number as the bond number index 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_UseBondControlNumber(["Start Step"])
E_UseBondControlNumber(["End Step"])
N_UseBondControlNumber_Node0{"The in-bond control number field
GCUSRT-M1206-IN-BOND-CTRL-NUM is not
empty"}:::decision N_UseBondControlNumber_Node0_action["The system should use the in-bond
control number as the bond number
index value"]:::main N_UseBondControlNumber_Node0 -- Yes --> N_UseBondControlNumber_Node0_action N_UseBondControlNumber_Node0_action --> E_UseBondControlNumber S_UseBondControlNumber --> N_UseBondControlNumber_Node0 N_UseBondControlNumber_Node0 -- No --> E_UseBondControlNumber
GCUSRT-M1206-IN-BOND-CTRL-NUM is not
empty"}:::decision N_UseBondControlNumber_Node0_action["The system should use the in-bond
control number as the bond number
index value"]:::main N_UseBondControlNumber_Node0 -- Yes --> N_UseBondControlNumber_Node0_action N_UseBondControlNumber_Node0_action --> E_UseBondControlNumber S_UseBondControlNumber --> N_UseBondControlNumber_Node0 N_UseBondControlNumber_Node0 -- No --> E_UseBondControlNumber
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for bond index population
WHEN:
The in-bond control number field (GCUSRT-M1206-IN-BOND-CTRL-NUM) is not empty
THEN:
The system should use the in-bond control number as the bond number index value
β Consolidated Acceptance Criteria
- The in-bond control number is empty and the entry number field (GCUSRT-M1202-ENTRY-NUM) is not empty → the system should use the entry number as the bond number index 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_UseEntryNumber(["Start Step"])
E_UseEntryNumber(["End Step"])
N_UseEntryNumber_Node0{"The in-bond control number is empty
and the entry number field
GCUSRT-M1202-ENTRY-NUM is not empty"}:::decision N_UseEntryNumber_Node0_action["The system should use the entry
number as the bond number index
value"]:::main N_UseEntryNumber_Node0 -- Yes --> N_UseEntryNumber_Node0_action N_UseEntryNumber_Node0_action --> E_UseEntryNumber S_UseEntryNumber --> N_UseEntryNumber_Node0 N_UseEntryNumber_Node0 -- No --> E_UseEntryNumber
and the entry number field
GCUSRT-M1202-ENTRY-NUM is not empty"}:::decision N_UseEntryNumber_Node0_action["The system should use the entry
number as the bond number index
value"]:::main N_UseEntryNumber_Node0 -- Yes --> N_UseEntryNumber_Node0_action N_UseEntryNumber_Node0_action --> E_UseEntryNumber S_UseEntryNumber --> N_UseEntryNumber_Node0 N_UseEntryNumber_Node0 -- No --> E_UseEntryNumber
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has no in-bond control number but contains an entry number
WHEN:
- The in-bond control number is empty
- The entry number field (gcusrt-m1202-entry-num) is not empty
THEN:
The system should use the entry number as the bond number index value
β Consolidated Acceptance Criteria
- Both the in-bond control number and entry number fields are empty → the system should set the bond number index field 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_ClearBondIndex(["Start Step"])
E_ClearBondIndex(["End Step"])
N_ClearBondIndex_Node0{"Both the in-bond control number and
entry number fields are empty"}:::decision N_ClearBondIndex_Node0_action["The system should set the bond
number index field to spaces"]:::main N_ClearBondIndex_Node0 -- Yes --> N_ClearBondIndex_Node0_action N_ClearBondIndex_Node0_action --> E_ClearBondIndex S_ClearBondIndex --> N_ClearBondIndex_Node0 N_ClearBondIndex_Node0 -- No --> E_ClearBondIndex
entry number fields are empty"}:::decision N_ClearBondIndex_Node0_action["The system should set the bond
number index field to spaces"]:::main N_ClearBondIndex_Node0 -- Yes --> N_ClearBondIndex_Node0_action N_ClearBondIndex_Node0_action --> E_ClearBondIndex S_ClearBondIndex --> N_ClearBondIndex_Node0 N_ClearBondIndex_Node0 -- No --> E_ClearBondIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for bond index population
WHEN:
- Both the in-bond control number
- Entry number fields are empty
THEN:
The system should set the bond number index field to spaces
β Consolidated Acceptance Criteria
- The CCN key index fields need to be populated → the system should copy the cargo control number key (GCUSRT-US-CCN-KEY) to RT071, RT072, and RT073 index 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_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField(["Start Step"])
E_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField(["End Step"])
N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0{"The CCN key index fields need to be
populated"}:::decision N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0_action["The system should copy the cargo
control number key GCUSRT-US-CCN-KEY
to RT071, RT072, and RT073 index
fields"]:::main N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0 -- Yes --> N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0_action N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0_action --> E_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField S_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField --> N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0 N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0 -- No --> E_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField
populated"}:::decision N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0_action["The system should copy the cargo
control number key GCUSRT-US-CCN-KEY
to RT071, RT072, and RT073 index
fields"]:::main N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0 -- Yes --> N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0_action N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0_action --> E_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField S_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField --> N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0 N_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField_Node0 -- No --> E_CopyCCNKeytoRT071IndexFieldCopyCCNKeytoRT072IndexFieldCopyCCNKeytoRT073IndexField
File: GCCUSIO.cbl
GIVEN:
A cargo record is active (not deleted) and being processed for index updates
WHEN:
The CCN key index fields need to be populated
THEN:
The system should copy the cargo control number key (GCUSRT-US-CCN-KEY) to RT071, RT072, and RT073 index fields
β Consolidated Acceptance Criteria
- The destination index field (GCUSRT-RT076-DEST-INDEX) is not empty (not equal to spaces) → the system should copy the cargo control number key (GCUSRT-US-CCN-KEY) to the RT076 destination index field (GCUSRT-RT076-US-CCN-KEY-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_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField(["Start Step"])
E_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField(["End Step"])
N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0{"The destination index field
GCUSRT-RT076-DEST-INDEX is not empty
not equal to spaces"}:::decision N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0_action["The system should copy the cargo
control number key GCUSRT-US-CCN-KEY
to the RT076 destination index field
GCUSRT-RT076-US-CCN-KEY-INDEX"]:::main N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0 -- Yes --> N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0_action N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0_action --> E_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField S_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField --> N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0 N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0 -- No --> E_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField
GCUSRT-RT076-DEST-INDEX is not empty
not equal to spaces"}:::decision N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0_action["The system should copy the cargo
control number key GCUSRT-US-CCN-KEY
to the RT076 destination index field
GCUSRT-RT076-US-CCN-KEY-INDEX"]:::main N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0 -- Yes --> N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0_action N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0_action --> E_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField S_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField --> N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0 N_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField_Node0 -- No --> E_IsDestinationIndexNotEmptyCopyCCNKeytoRT076DestinationIndexField
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed and primary CCN index fields have been set
WHEN:
The destination index field (GCUSRT-RT076-DEST-INDEX) is not empty (not equal to spaces)
THEN:
The system should copy the cargo control number key (GCUSRT-US-CCN-KEY) to the RT076 destination index field (GCUSRT-RT076-US-CCN-KEY-INDEX)
β Consolidated Acceptance Criteria
- The cargo record has a deleted status indicator set to true → the system skips all waybill index field population and exits 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_CheckifCargoisDeleted(["Start Step"])
E_CheckifCargoisDeleted(["End Step"])
N_CheckifCargoisDeleted_Node0{"The cargo record has a deleted
status indicator set to true"}:::decision N_CheckifCargoisDeleted_Node0_action["The system skips all waybill index
field population and exits the
process"]:::main N_CheckifCargoisDeleted_Node0 -- Yes --> N_CheckifCargoisDeleted_Node0_action N_CheckifCargoisDeleted_Node0_action --> E_CheckifCargoisDeleted S_CheckifCargoisDeleted --> N_CheckifCargoisDeleted_Node0 N_CheckifCargoisDeleted_Node0 -- No --> E_CheckifCargoisDeleted
status indicator set to true"}:::decision N_CheckifCargoisDeleted_Node0_action["The system skips all waybill index
field population and exits the
process"]:::main N_CheckifCargoisDeleted_Node0 -- Yes --> N_CheckifCargoisDeleted_Node0_action N_CheckifCargoisDeleted_Node0_action --> E_CheckifCargoisDeleted S_CheckifCargoisDeleted --> N_CheckifCargoisDeleted_Node0 N_CheckifCargoisDeleted_Node0 -- No --> E_CheckifCargoisDeleted
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for waybill index population
WHEN:
The cargo record has a deleted status indicator set to true
THEN:
- The system skips all waybill index field population
- Exits the process
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the road number is extracted from the RT082 transportation 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_ExtractRoadNumberfromRT082(["Start Step"])
E_ExtractRoadNumberfromRT082(["End Step"])
N_ExtractRoadNumberfromRT082_Node0{"The system processes waybill index
fields"}:::decision N_ExtractRoadNumberfromRT082_Node0_action["The road number is extracted from
the RT082 transportation segment"]:::main N_ExtractRoadNumberfromRT082_Node0 -- Yes --> N_ExtractRoadNumberfromRT082_Node0_action N_ExtractRoadNumberfromRT082_Node0_action --> E_ExtractRoadNumberfromRT082 S_ExtractRoadNumberfromRT082 --> N_ExtractRoadNumberfromRT082_Node0 N_ExtractRoadNumberfromRT082_Node0 -- No --> E_ExtractRoadNumberfromRT082
fields"}:::decision N_ExtractRoadNumberfromRT082_Node0_action["The road number is extracted from
the RT082 transportation segment"]:::main N_ExtractRoadNumberfromRT082_Node0 -- Yes --> N_ExtractRoadNumberfromRT082_Node0_action N_ExtractRoadNumberfromRT082_Node0_action --> E_ExtractRoadNumberfromRT082 S_ExtractRoadNumberfromRT082 --> N_ExtractRoadNumberfromRT082_Node0 N_ExtractRoadNumberfromRT082_Node0 -- No --> E_ExtractRoadNumberfromRT082
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is not deleted and contains transportation routing information
WHEN:
The system processes waybill index fields
THEN:
The road number is extracted from the RT082 transportation segment
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the road number is mapped to the RT072-ROAD-INDEX 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_MapRoadNumbertoRT072ROADINDEX(["Start Step"])
E_MapRoadNumbertoRT072ROADINDEX(["End Step"])
N_MapRoadNumbertoRT072ROADINDEX_Node0{"The system populates waybill index
fields"}:::decision N_MapRoadNumbertoRT072ROADINDEX_Node0_action["The road number is mapped to the
RT072-ROAD-INDEX field"]:::main N_MapRoadNumbertoRT072ROADINDEX_Node0 -- Yes --> N_MapRoadNumbertoRT072ROADINDEX_Node0_action N_MapRoadNumbertoRT072ROADINDEX_Node0_action --> E_MapRoadNumbertoRT072ROADINDEX S_MapRoadNumbertoRT072ROADINDEX --> N_MapRoadNumbertoRT072ROADINDEX_Node0 N_MapRoadNumbertoRT072ROADINDEX_Node0 -- No --> E_MapRoadNumbertoRT072ROADINDEX
fields"}:::decision N_MapRoadNumbertoRT072ROADINDEX_Node0_action["The road number is mapped to the
RT072-ROAD-INDEX field"]:::main N_MapRoadNumbertoRT072ROADINDEX_Node0 -- Yes --> N_MapRoadNumbertoRT072ROADINDEX_Node0_action N_MapRoadNumbertoRT072ROADINDEX_Node0_action --> E_MapRoadNumbertoRT072ROADINDEX S_MapRoadNumbertoRT072ROADINDEX --> N_MapRoadNumbertoRT072ROADINDEX_Node0 N_MapRoadNumbertoRT072ROADINDEX_Node0 -- No --> E_MapRoadNumbertoRT072ROADINDEX
File: GCCUSIO.cbl
GIVEN:
The road number has been extracted from RT082 transportation data
WHEN:
The system populates waybill index fields
THEN:
The road number is mapped to the RT072-ROAD-INDEX field
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the station number is extracted from the RT082 transportation 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_ExtractStationNumberfromRT082(["Start Step"])
E_ExtractStationNumberfromRT082(["End Step"])
N_ExtractStationNumberfromRT082_Node0{"The system processes waybill index
fields"}:::decision N_ExtractStationNumberfromRT082_Node0_action["The station number is extracted
from the RT082 transportation
segment"]:::main N_ExtractStationNumberfromRT082_Node0 -- Yes --> N_ExtractStationNumberfromRT082_Node0_action N_ExtractStationNumberfromRT082_Node0_action --> E_ExtractStationNumberfromRT082 S_ExtractStationNumberfromRT082 --> N_ExtractStationNumberfromRT082_Node0 N_ExtractStationNumberfromRT082_Node0 -- No --> E_ExtractStationNumberfromRT082
fields"}:::decision N_ExtractStationNumberfromRT082_Node0_action["The station number is extracted
from the RT082 transportation
segment"]:::main N_ExtractStationNumberfromRT082_Node0 -- Yes --> N_ExtractStationNumberfromRT082_Node0_action N_ExtractStationNumberfromRT082_Node0_action --> E_ExtractStationNumberfromRT082 S_ExtractStationNumberfromRT082 --> N_ExtractStationNumberfromRT082_Node0 N_ExtractStationNumberfromRT082_Node0 -- No --> E_ExtractStationNumberfromRT082
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is not deleted and contains transportation routing information
WHEN:
The system processes waybill index fields
THEN:
The station number is extracted from the RT082 transportation segment
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the station number is mapped to the RT072-STN-INDEX 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_MapStationNumbertoRT072STNINDEX(["Start Step"])
E_MapStationNumbertoRT072STNINDEX(["End Step"])
N_MapStationNumbertoRT072STNINDEX_Node0{"The system populates waybill index
fields"}:::decision N_MapStationNumbertoRT072STNINDEX_Node0_action["The station number is mapped to the
RT072-STN-INDEX field"]:::main N_MapStationNumbertoRT072STNINDEX_Node0 -- Yes --> N_MapStationNumbertoRT072STNINDEX_Node0_action N_MapStationNumbertoRT072STNINDEX_Node0_action --> E_MapStationNumbertoRT072STNINDEX S_MapStationNumbertoRT072STNINDEX --> N_MapStationNumbertoRT072STNINDEX_Node0 N_MapStationNumbertoRT072STNINDEX_Node0 -- No --> E_MapStationNumbertoRT072STNINDEX
fields"}:::decision N_MapStationNumbertoRT072STNINDEX_Node0_action["The station number is mapped to the
RT072-STN-INDEX field"]:::main N_MapStationNumbertoRT072STNINDEX_Node0 -- Yes --> N_MapStationNumbertoRT072STNINDEX_Node0_action N_MapStationNumbertoRT072STNINDEX_Node0_action --> E_MapStationNumbertoRT072STNINDEX S_MapStationNumbertoRT072STNINDEX --> N_MapStationNumbertoRT072STNINDEX_Node0 N_MapStationNumbertoRT072STNINDEX_Node0 -- No --> E_MapStationNumbertoRT072STNINDEX
File: GCCUSIO.cbl
GIVEN:
The station number has been extracted from RT082 transportation data
WHEN:
The system populates waybill index fields
THEN:
The station number is mapped to the RT072-STN-INDEX field
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the waybill number is extracted from the RT082 transportation 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_ExtractWaybillNumberfromRT082(["Start Step"])
E_ExtractWaybillNumberfromRT082(["End Step"])
N_ExtractWaybillNumberfromRT082_Node0{"The system processes waybill index
fields"}:::decision N_ExtractWaybillNumberfromRT082_Node0_action["The waybill number is extracted
from the RT082 transportation
segment"]:::main N_ExtractWaybillNumberfromRT082_Node0 -- Yes --> N_ExtractWaybillNumberfromRT082_Node0_action N_ExtractWaybillNumberfromRT082_Node0_action --> E_ExtractWaybillNumberfromRT082 S_ExtractWaybillNumberfromRT082 --> N_ExtractWaybillNumberfromRT082_Node0 N_ExtractWaybillNumberfromRT082_Node0 -- No --> E_ExtractWaybillNumberfromRT082
fields"}:::decision N_ExtractWaybillNumberfromRT082_Node0_action["The waybill number is extracted
from the RT082 transportation
segment"]:::main N_ExtractWaybillNumberfromRT082_Node0 -- Yes --> N_ExtractWaybillNumberfromRT082_Node0_action N_ExtractWaybillNumberfromRT082_Node0_action --> E_ExtractWaybillNumberfromRT082 S_ExtractWaybillNumberfromRT082 --> N_ExtractWaybillNumberfromRT082_Node0 N_ExtractWaybillNumberfromRT082_Node0 -- No --> E_ExtractWaybillNumberfromRT082
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is not deleted and contains transportation routing information
WHEN:
The system processes waybill index fields
THEN:
The waybill number is extracted from the RT082 transportation segment
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the waybill number is mapped to the RT072-WB-INDEX 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_MapWaybillNumbertoRT072WBINDEX(["Start Step"])
E_MapWaybillNumbertoRT072WBINDEX(["End Step"])
N_MapWaybillNumbertoRT072WBINDEX_Node0{"The system populates waybill index
fields"}:::decision N_MapWaybillNumbertoRT072WBINDEX_Node0_action["The waybill number is mapped to the
RT072-WB-INDEX field"]:::main N_MapWaybillNumbertoRT072WBINDEX_Node0 -- Yes --> N_MapWaybillNumbertoRT072WBINDEX_Node0_action N_MapWaybillNumbertoRT072WBINDEX_Node0_action --> E_MapWaybillNumbertoRT072WBINDEX S_MapWaybillNumbertoRT072WBINDEX --> N_MapWaybillNumbertoRT072WBINDEX_Node0 N_MapWaybillNumbertoRT072WBINDEX_Node0 -- No --> E_MapWaybillNumbertoRT072WBINDEX
fields"}:::decision N_MapWaybillNumbertoRT072WBINDEX_Node0_action["The waybill number is mapped to the
RT072-WB-INDEX field"]:::main N_MapWaybillNumbertoRT072WBINDEX_Node0 -- Yes --> N_MapWaybillNumbertoRT072WBINDEX_Node0_action N_MapWaybillNumbertoRT072WBINDEX_Node0_action --> E_MapWaybillNumbertoRT072WBINDEX S_MapWaybillNumbertoRT072WBINDEX --> N_MapWaybillNumbertoRT072WBINDEX_Node0 N_MapWaybillNumbertoRT072WBINDEX_Node0 -- No --> E_MapWaybillNumbertoRT072WBINDEX
File: GCCUSIO.cbl
GIVEN:
The waybill number has been extracted from RT082 transportation data
WHEN:
The system populates waybill index fields
THEN:
The waybill number is mapped to the RT072-WB-INDEX field
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the waybill date is extracted from the RT082 transportation 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_ExtractWaybillDatefromRT082(["Start Step"])
E_ExtractWaybillDatefromRT082(["End Step"])
N_ExtractWaybillDatefromRT082_Node0{"The system processes waybill index
fields"}:::decision N_ExtractWaybillDatefromRT082_Node0_action["The waybill date is extracted from
the RT082 transportation segment"]:::main N_ExtractWaybillDatefromRT082_Node0 -- Yes --> N_ExtractWaybillDatefromRT082_Node0_action N_ExtractWaybillDatefromRT082_Node0_action --> E_ExtractWaybillDatefromRT082 S_ExtractWaybillDatefromRT082 --> N_ExtractWaybillDatefromRT082_Node0 N_ExtractWaybillDatefromRT082_Node0 -- No --> E_ExtractWaybillDatefromRT082
fields"}:::decision N_ExtractWaybillDatefromRT082_Node0_action["The waybill date is extracted from
the RT082 transportation segment"]:::main N_ExtractWaybillDatefromRT082_Node0 -- Yes --> N_ExtractWaybillDatefromRT082_Node0_action N_ExtractWaybillDatefromRT082_Node0_action --> E_ExtractWaybillDatefromRT082 S_ExtractWaybillDatefromRT082 --> N_ExtractWaybillDatefromRT082_Node0 N_ExtractWaybillDatefromRT082_Node0 -- No --> E_ExtractWaybillDatefromRT082
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is not deleted and contains transportation routing information
WHEN:
The system processes waybill index fields
THEN:
The waybill date is extracted from the RT082 transportation segment
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the waybill date is mapped to the RT072-WB-DTE-INDEX 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_MapWaybillDatetoRT072WBDTEINDEX(["Start Step"])
E_MapWaybillDatetoRT072WBDTEINDEX(["End Step"])
N_MapWaybillDatetoRT072WBDTEINDEX_Node0{"The system populates waybill index
fields"}:::decision N_MapWaybillDatetoRT072WBDTEINDEX_Node0_action["The waybill date is mapped to the
RT072-WB-DTE-INDEX field"]:::main N_MapWaybillDatetoRT072WBDTEINDEX_Node0 -- Yes --> N_MapWaybillDatetoRT072WBDTEINDEX_Node0_action N_MapWaybillDatetoRT072WBDTEINDEX_Node0_action --> E_MapWaybillDatetoRT072WBDTEINDEX S_MapWaybillDatetoRT072WBDTEINDEX --> N_MapWaybillDatetoRT072WBDTEINDEX_Node0 N_MapWaybillDatetoRT072WBDTEINDEX_Node0 -- No --> E_MapWaybillDatetoRT072WBDTEINDEX
fields"}:::decision N_MapWaybillDatetoRT072WBDTEINDEX_Node0_action["The waybill date is mapped to the
RT072-WB-DTE-INDEX field"]:::main N_MapWaybillDatetoRT072WBDTEINDEX_Node0 -- Yes --> N_MapWaybillDatetoRT072WBDTEINDEX_Node0_action N_MapWaybillDatetoRT072WBDTEINDEX_Node0_action --> E_MapWaybillDatetoRT072WBDTEINDEX S_MapWaybillDatetoRT072WBDTEINDEX --> N_MapWaybillDatetoRT072WBDTEINDEX_Node0 N_MapWaybillDatetoRT072WBDTEINDEX_Node0 -- No --> E_MapWaybillDatetoRT072WBDTEINDEX
File: GCCUSIO.cbl
GIVEN:
The waybill date has been extracted from RT082 transportation data
WHEN:
The system populates waybill index fields
THEN:
The waybill date is mapped to the RT072-WB-DTE-INDEX field
β Consolidated Acceptance Criteria
- The system needs to determine the bond index value for cargo tracking → the system should use in-bond control number as first priority, entry number as second priority, 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_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy(["Start Step"])
E_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy(["End Step"])
N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0{"The system needs to determine the
bond index value for cargo tracking"}:::decision N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0_action["The system should use in-bond
control number as first priority,
entry number as second priority, or
set to spaces if neither is
available"]:::main N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0 -- Yes --> N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0_action N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0_action --> E_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy S_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy --> N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0 N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0 -- No --> E_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy
bond index value for cargo tracking"}:::decision N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0_action["The system should use in-bond
control number as first priority,
entry number as second priority, or
set to spaces if neither is
available"]:::main N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0 -- Yes --> N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0_action N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0_action --> E_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy S_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy --> N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0 N_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy_Node0 -- No --> E_DetermineBondIndexSourceEvaluatesinbondcontrolnumberavailabilityfallsbacktoentrynumberorsetstospacesbasedoncustomsdatahierarchy
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for index field population and the cargo is not marked as deleted
WHEN:
The system needs to determine the bond index value for cargo tracking
THEN:
The system should use in-bond control number as first priority, entry number as second priority, or set to spaces if neither is available
β Consolidated Acceptance Criteria
- If bond index assignment → the system should assign the in-bond control number to the bond number index 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_UseInBondControlNumberasBondIndex(["Start Step"])
E_UseInBondControlNumberasBondIndex(["End Step"])
N_UseInBondControlNumberasBondIndex_Node0{"The system evaluates bond index
assignment"}:::decision N_UseInBondControlNumberasBondIndex_Node0_action["The system should assign the
in-bond control number to the bond
number index field"]:::main N_UseInBondControlNumberasBondIndex_Node0 -- Yes --> N_UseInBondControlNumberasBondIndex_Node0_action N_UseInBondControlNumberasBondIndex_Node0_action --> E_UseInBondControlNumberasBondIndex S_UseInBondControlNumberasBondIndex --> N_UseInBondControlNumberasBondIndex_Node0 N_UseInBondControlNumberasBondIndex_Node0 -- No --> E_UseInBondControlNumberasBondIndex
assignment"}:::decision N_UseInBondControlNumberasBondIndex_Node0_action["The system should assign the
in-bond control number to the bond
number index field"]:::main N_UseInBondControlNumberasBondIndex_Node0 -- Yes --> N_UseInBondControlNumberasBondIndex_Node0_action N_UseInBondControlNumberasBondIndex_Node0_action --> E_UseInBondControlNumberasBondIndex S_UseInBondControlNumberasBondIndex --> N_UseInBondControlNumberasBondIndex_Node0 N_UseInBondControlNumberasBondIndex_Node0 -- No --> E_UseInBondControlNumberasBondIndex
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record contains an in-bond control number that is not spaces
WHEN:
The system evaluates bond index assignment
THEN:
The system should assign the in-bond control number to the bond number index field
β Consolidated Acceptance Criteria
- If bond index assignment after finding no in-bond control number → the system should assign the entry number to the bond number index 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_UseEntryNumberasBondIndex(["Start Step"])
E_UseEntryNumberasBondIndex(["End Step"])
N_UseEntryNumberasBondIndex_Node0{"The system evaluates bond index
assignment after finding no in-bond
control number"}:::decision N_UseEntryNumberasBondIndex_Node0_action["The system should assign the entry
number to the bond number index
field"]:::main N_UseEntryNumberasBondIndex_Node0 -- Yes --> N_UseEntryNumberasBondIndex_Node0_action N_UseEntryNumberasBondIndex_Node0_action --> E_UseEntryNumberasBondIndex S_UseEntryNumberasBondIndex --> N_UseEntryNumberasBondIndex_Node0 N_UseEntryNumberasBondIndex_Node0 -- No --> E_UseEntryNumberasBondIndex
assignment after finding no in-bond
control number"}:::decision N_UseEntryNumberasBondIndex_Node0_action["The system should assign the entry
number to the bond number index
field"]:::main N_UseEntryNumberasBondIndex_Node0 -- Yes --> N_UseEntryNumberasBondIndex_Node0_action N_UseEntryNumberasBondIndex_Node0_action --> E_UseEntryNumberasBondIndex S_UseEntryNumberasBondIndex --> N_UseEntryNumberasBondIndex_Node0 N_UseEntryNumberasBondIndex_Node0 -- No --> E_UseEntryNumberasBondIndex
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has no in-bond control number (spaces) but contains an entry number that is not spaces
WHEN:
The system evaluates bond index assignment after finding no in-bond control number
THEN:
The system should assign the entry number to the bond number index field
β Consolidated Acceptance Criteria
- If bond index assignment after finding no valid customs numbers → the system should set the bond number index field to spaces
- No valid bond identification numbers are available → the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX) should be set to spaces
- The system cannot find any valid bond number source → the system sets the bond number index to spaces (empty 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_SetBondIndextoSpaces(["Start Step"])
E_SetBondIndextoSpaces(["End Step"])
N_SetBondIndextoSpaces_Node0{"The system evaluates bond index
assignment after finding no valid
customs numbers"}:::decision N_SetBondIndextoSpaces_Node0_action["The system should set the bond
number index field to spaces"]:::main N_SetBondIndextoSpaces_Node0 -- Yes --> N_SetBondIndextoSpaces_Node0_action N_SetBondIndextoSpaces_Node0_action --> E_SetBondIndextoSpaces S_SetBondIndextoSpaces --> N_SetBondIndextoSpaces_Node0 N_SetBondIndextoSpaces_Node1{"No valid bond identification
numbers are available"}:::decision N_SetBondIndextoSpaces_Node1_action["The bond number index field
GCUSRT-RT074-BOND-NUM-INDEX should
be set to spaces"]:::main N_SetBondIndextoSpaces_Node1 -- Yes --> N_SetBondIndextoSpaces_Node1_action N_SetBondIndextoSpaces_Node1_action --> E_SetBondIndextoSpaces N_SetBondIndextoSpaces_Node0 -- No --> N_SetBondIndextoSpaces_Node1 N_SetBondIndextoSpaces_Node2{"The system cannot find any valid
bond number source"}:::decision N_SetBondIndextoSpaces_Node2_action["The system sets the bond number
index to spaces empty value"]:::main N_SetBondIndextoSpaces_Node2 -- Yes --> N_SetBondIndextoSpaces_Node2_action N_SetBondIndextoSpaces_Node2_action --> E_SetBondIndextoSpaces N_SetBondIndextoSpaces_Node1 -- No --> N_SetBondIndextoSpaces_Node2 N_SetBondIndextoSpaces_Node2 -- No --> E_SetBondIndextoSpaces
assignment after finding no valid
customs numbers"}:::decision N_SetBondIndextoSpaces_Node0_action["The system should set the bond
number index field to spaces"]:::main N_SetBondIndextoSpaces_Node0 -- Yes --> N_SetBondIndextoSpaces_Node0_action N_SetBondIndextoSpaces_Node0_action --> E_SetBondIndextoSpaces S_SetBondIndextoSpaces --> N_SetBondIndextoSpaces_Node0 N_SetBondIndextoSpaces_Node1{"No valid bond identification
numbers are available"}:::decision N_SetBondIndextoSpaces_Node1_action["The bond number index field
GCUSRT-RT074-BOND-NUM-INDEX should
be set to spaces"]:::main N_SetBondIndextoSpaces_Node1 -- Yes --> N_SetBondIndextoSpaces_Node1_action N_SetBondIndextoSpaces_Node1_action --> E_SetBondIndextoSpaces N_SetBondIndextoSpaces_Node0 -- No --> N_SetBondIndextoSpaces_Node1 N_SetBondIndextoSpaces_Node2{"The system cannot find any valid
bond number source"}:::decision N_SetBondIndextoSpaces_Node2_action["The system sets the bond number
index to spaces empty value"]:::main N_SetBondIndextoSpaces_Node2 -- Yes --> N_SetBondIndextoSpaces_Node2_action N_SetBondIndextoSpaces_Node2_action --> E_SetBondIndextoSpaces N_SetBondIndextoSpaces_Node1 -- No --> N_SetBondIndextoSpaces_Node2 N_SetBondIndextoSpaces_Node2 -- No --> E_SetBondIndextoSpaces
File: GCCUSIO.cbl
GIVEN:
A cargo record has both in-bond control number and entry number set to spaces
WHEN:
The system evaluates bond index assignment after finding no valid customs numbers
THEN:
The system should set the bond number index field to spaces
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond index population, the cargo is not deleted, the in-bond control number is spaces, and the entry number is spaces
WHEN:
No valid bond identification numbers are available
THEN:
The bond number index field (GCUSRT-RT074-BOND-NUM-INDEX) should be set to spaces
File: GCCUSIO.cbl
GIVEN:
A cargo record requires bond number indexing and both in-bond control number and entry number are empty
WHEN:
The system cannot find any valid bond number source
THEN:
The system sets the bond number index to spaces (empty value)
β Consolidated Acceptance Criteria
- The system processes the cargo record insertion → the system sets creation century from current system century, creation date from current system date, creation time from current system time, creation terminal from originating terminal, creation user ID from ACF2 user ID, and copies all creation information to last modify fields
- The system processes the cargo record insertion → the system preserves existing creation information and only updates last modify century from current system century, last modify date from current system date, last modify time from current system time, last modify terminal from originating terminal, and last modify user ID from 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_CreationTimestampAlreadyExists(["Start Step"])
E_CreationTimestampAlreadyExists(["End Step"])
N_CreationTimestampAlreadyExists_Node0{"The system processes the cargo
record insertion"}:::decision N_CreationTimestampAlreadyExists_Node0_action["The system sets creation century
from current system century,
creation date from current system
date, creation time from current
system time, creation terminal from
originating terminal, creation user
ID from ACF2 user ID, and copies all
creation information to last modify
fields"]:::main N_CreationTimestampAlreadyExists_Node0 -- Yes --> N_CreationTimestampAlreadyExists_Node0_action N_CreationTimestampAlreadyExists_Node0_action --> E_CreationTimestampAlreadyExists S_CreationTimestampAlreadyExists --> N_CreationTimestampAlreadyExists_Node0 N_CreationTimestampAlreadyExists_Node1{"The system processes the cargo
record insertion"}:::decision N_CreationTimestampAlreadyExists_Node1_action["The system preserves existing
creation information and only
updates last modify century from
current system century, last modify
date from current system date, last
modify time from current system
time, last modify terminal from
originating terminal, and last
modify user ID from ACF2 user ID"]:::main N_CreationTimestampAlreadyExists_Node1 -- Yes --> N_CreationTimestampAlreadyExists_Node1_action N_CreationTimestampAlreadyExists_Node1_action --> E_CreationTimestampAlreadyExists N_CreationTimestampAlreadyExists_Node0 -- No --> N_CreationTimestampAlreadyExists_Node1 N_CreationTimestampAlreadyExists_Node1 -- No --> E_CreationTimestampAlreadyExists
record insertion"}:::decision N_CreationTimestampAlreadyExists_Node0_action["The system sets creation century
from current system century,
creation date from current system
date, creation time from current
system time, creation terminal from
originating terminal, creation user
ID from ACF2 user ID, and copies all
creation information to last modify
fields"]:::main N_CreationTimestampAlreadyExists_Node0 -- Yes --> N_CreationTimestampAlreadyExists_Node0_action N_CreationTimestampAlreadyExists_Node0_action --> E_CreationTimestampAlreadyExists S_CreationTimestampAlreadyExists --> N_CreationTimestampAlreadyExists_Node0 N_CreationTimestampAlreadyExists_Node1{"The system processes the cargo
record insertion"}:::decision N_CreationTimestampAlreadyExists_Node1_action["The system preserves existing
creation information and only
updates last modify century from
current system century, last modify
date from current system date, last
modify time from current system
time, last modify terminal from
originating terminal, and last
modify user ID from ACF2 user ID"]:::main N_CreationTimestampAlreadyExists_Node1 -- Yes --> N_CreationTimestampAlreadyExists_Node1_action N_CreationTimestampAlreadyExists_Node1_action --> E_CreationTimestampAlreadyExists N_CreationTimestampAlreadyExists_Node0 -- No --> N_CreationTimestampAlreadyExists_Node1 N_CreationTimestampAlreadyExists_Node1 -- No --> E_CreationTimestampAlreadyExists
File: GCCUSIO.cbl
GIVEN:
A cargo record is being inserted and the creation timestamp field is empty (spaces)
WHEN:
The system processes the cargo record insertion
THEN:
The system sets creation century from current system century, creation date from current system date, creation time from current system time, creation terminal from originating terminal, creation user ID from ACF2 user ID, and copies all creation information to last modify fields
File: GCCUSIO.cbl
GIVEN:
A cargo record is being inserted and the creation timestamp field contains existing data (not spaces)
WHEN:
The system processes the cargo record insertion
THEN:
- The system preserves existing creation information
- Only updates last modify century from current system century, last modify date from current system date, last modify time from current system time, last modify terminal from originating terminal, and last modify user id from acf2 user id
β Consolidated Acceptance Criteria
- The system needs to retrieve the current cargo record → the system performs a Get Hold Unique operation to retrieve and lock the current cargo record
- The system needs to retrieve the current cargo record for deletion → the system performs a Get Hold Unique operation to retrieve and lock 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_RetrieveCurrentCargoRecord(["Start Step"])
E_RetrieveCurrentCargoRecord(["End Step"])
N_RetrieveCurrentCargoRecord_Node0{"The system needs to retrieve the
current cargo record"}:::decision N_RetrieveCurrentCargoRecord_Node0_action["The system performs a Get Hold
Unique operation to retrieve and
lock the current cargo record"]:::main N_RetrieveCurrentCargoRecord_Node0 -- Yes --> N_RetrieveCurrentCargoRecord_Node0_action N_RetrieveCurrentCargoRecord_Node0_action --> E_RetrieveCurrentCargoRecord S_RetrieveCurrentCargoRecord --> N_RetrieveCurrentCargoRecord_Node0 N_RetrieveCurrentCargoRecord_Node1{"The system needs to retrieve the
current cargo record for deletion"}:::decision N_RetrieveCurrentCargoRecord_Node1_action["The system performs a Get Hold
Unique operation to retrieve and
lock the cargo record"]:::main N_RetrieveCurrentCargoRecord_Node1 -- Yes --> N_RetrieveCurrentCargoRecord_Node1_action N_RetrieveCurrentCargoRecord_Node1_action --> E_RetrieveCurrentCargoRecord N_RetrieveCurrentCargoRecord_Node0 -- No --> N_RetrieveCurrentCargoRecord_Node1 N_RetrieveCurrentCargoRecord_Node1 -- No --> E_RetrieveCurrentCargoRecord
current cargo record"}:::decision N_RetrieveCurrentCargoRecord_Node0_action["The system performs a Get Hold
Unique operation to retrieve and
lock the current cargo record"]:::main N_RetrieveCurrentCargoRecord_Node0 -- Yes --> N_RetrieveCurrentCargoRecord_Node0_action N_RetrieveCurrentCargoRecord_Node0_action --> E_RetrieveCurrentCargoRecord S_RetrieveCurrentCargoRecord --> N_RetrieveCurrentCargoRecord_Node0 N_RetrieveCurrentCargoRecord_Node1{"The system needs to retrieve the
current cargo record for deletion"}:::decision N_RetrieveCurrentCargoRecord_Node1_action["The system performs a Get Hold
Unique operation to retrieve and
lock the cargo record"]:::main N_RetrieveCurrentCargoRecord_Node1 -- Yes --> N_RetrieveCurrentCargoRecord_Node1_action N_RetrieveCurrentCargoRecord_Node1_action --> E_RetrieveCurrentCargoRecord N_RetrieveCurrentCargoRecord_Node0 -- No --> N_RetrieveCurrentCargoRecord_Node1 N_RetrieveCurrentCargoRecord_Node1 -- No --> E_RetrieveCurrentCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record update operation is requested
WHEN:
The system needs to retrieve the current cargo record
THEN:
- The system performs a get hold unique operation to retrieve
- Lock the current cargo record
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system and delete operation is requested
WHEN:
The system needs to retrieve the current cargo record for deletion
THEN:
- The system performs a get hold unique operation to retrieve
- Lock the cargo record
β Consolidated Acceptance Criteria
- The current cargo record is retrieved → the system saves the US cargo short description to track status 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_SaveCurrentIronHighwayStatus(["Start Step"])
E_SaveCurrentIronHighwayStatus(["End Step"])
N_SaveCurrentIronHighwayStatus_Node0{"The current cargo record is
retrieved"}:::decision N_SaveCurrentIronHighwayStatus_Node0_action["The system saves the US cargo short
description to track status changes"]:::main N_SaveCurrentIronHighwayStatus_Node0 -- Yes --> N_SaveCurrentIronHighwayStatus_Node0_action N_SaveCurrentIronHighwayStatus_Node0_action --> E_SaveCurrentIronHighwayStatus S_SaveCurrentIronHighwayStatus --> N_SaveCurrentIronHighwayStatus_Node0 N_SaveCurrentIronHighwayStatus_Node0 -- No --> E_SaveCurrentIronHighwayStatus
retrieved"}:::decision N_SaveCurrentIronHighwayStatus_Node0_action["The system saves the US cargo short
description to track status changes"]:::main N_SaveCurrentIronHighwayStatus_Node0 -- Yes --> N_SaveCurrentIronHighwayStatus_Node0_action N_SaveCurrentIronHighwayStatus_Node0_action --> E_SaveCurrentIronHighwayStatus S_SaveCurrentIronHighwayStatus --> N_SaveCurrentIronHighwayStatus_Node0 N_SaveCurrentIronHighwayStatus_Node0 -- No --> E_SaveCurrentIronHighwayStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated
WHEN:
The current cargo record is retrieved
THEN:
The system saves the US cargo short description to track status changes
β Consolidated Acceptance Criteria
- The current cargo record is retrieved → the system saves the first 15 characters of the waybill number index for notification 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_SaveCurrentWaybillNumber(["Start Step"])
E_SaveCurrentWaybillNumber(["End Step"])
N_SaveCurrentWaybillNumber_Node0{"The current cargo record is
retrieved"}:::decision N_SaveCurrentWaybillNumber_Node0_action["The system saves the first 15
characters of the waybill number
index for notification purposes"]:::main N_SaveCurrentWaybillNumber_Node0 -- Yes --> N_SaveCurrentWaybillNumber_Node0_action N_SaveCurrentWaybillNumber_Node0_action --> E_SaveCurrentWaybillNumber S_SaveCurrentWaybillNumber --> N_SaveCurrentWaybillNumber_Node0 N_SaveCurrentWaybillNumber_Node0 -- No --> E_SaveCurrentWaybillNumber
retrieved"}:::decision N_SaveCurrentWaybillNumber_Node0_action["The system saves the first 15
characters of the waybill number
index for notification purposes"]:::main N_SaveCurrentWaybillNumber_Node0 -- Yes --> N_SaveCurrentWaybillNumber_Node0_action N_SaveCurrentWaybillNumber_Node0_action --> E_SaveCurrentWaybillNumber S_SaveCurrentWaybillNumber --> N_SaveCurrentWaybillNumber_Node0 N_SaveCurrentWaybillNumber_Node0 -- No --> E_SaveCurrentWaybillNumber
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated
WHEN:
The current cargo record is retrieved
THEN:
The system saves the first 15 characters of the waybill number index for notification purposes
β Consolidated Acceptance Criteria
- The current cargo record is retrieved → the system saves the car ID number index for notification 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_SaveCurrentCarNumber(["Start Step"])
E_SaveCurrentCarNumber(["End Step"])
N_SaveCurrentCarNumber_Node0{"The current cargo record is
retrieved"}:::decision N_SaveCurrentCarNumber_Node0_action["The system saves the car ID number
index for notification purposes"]:::main N_SaveCurrentCarNumber_Node0 -- Yes --> N_SaveCurrentCarNumber_Node0_action N_SaveCurrentCarNumber_Node0_action --> E_SaveCurrentCarNumber S_SaveCurrentCarNumber --> N_SaveCurrentCarNumber_Node0 N_SaveCurrentCarNumber_Node0 -- No --> E_SaveCurrentCarNumber
retrieved"}:::decision N_SaveCurrentCarNumber_Node0_action["The system saves the car ID number
index for notification purposes"]:::main N_SaveCurrentCarNumber_Node0 -- Yes --> N_SaveCurrentCarNumber_Node0_action N_SaveCurrentCarNumber_Node0_action --> E_SaveCurrentCarNumber S_SaveCurrentCarNumber --> N_SaveCurrentCarNumber_Node0 N_SaveCurrentCarNumber_Node0 -- No --> E_SaveCurrentCarNumber
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated
WHEN:
The current cargo record is retrieved
THEN:
The system saves the car ID number index for notification purposes
β Consolidated Acceptance Criteria
- The system needs to apply updates to the cargo record → the system restores the updated cargo data from the saved working 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_RestoreUpdatedCargoData(["Start Step"])
E_RestoreUpdatedCargoData(["End Step"])
N_RestoreUpdatedCargoData_Node0{"The system needs to apply updates
to the cargo record"}:::decision N_RestoreUpdatedCargoData_Node0_action["The system restores the updated
cargo data from the saved working
area"]:::main N_RestoreUpdatedCargoData_Node0 -- Yes --> N_RestoreUpdatedCargoData_Node0_action N_RestoreUpdatedCargoData_Node0_action --> E_RestoreUpdatedCargoData S_RestoreUpdatedCargoData --> N_RestoreUpdatedCargoData_Node0 N_RestoreUpdatedCargoData_Node0 -- No --> E_RestoreUpdatedCargoData
to the cargo record"}:::decision N_RestoreUpdatedCargoData_Node0_action["The system restores the updated
cargo data from the saved working
area"]:::main N_RestoreUpdatedCargoData_Node0 -- Yes --> N_RestoreUpdatedCargoData_Node0_action N_RestoreUpdatedCargoData_Node0_action --> E_RestoreUpdatedCargoData S_RestoreUpdatedCargoData --> N_RestoreUpdatedCargoData_Node0 N_RestoreUpdatedCargoData_Node0 -- No --> E_RestoreUpdatedCargoData
File: GCCUSIO.cbl
GIVEN:
The current cargo record has been retrieved and saved data exists
WHEN:
The system needs to apply updates to the cargo record
THEN:
The system restores the updated cargo data from the saved working area
β Consolidated Acceptance Criteria
- The in-bond control number is not empty → the system uses the in-bond control number to populate the RT074 bond number 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_SetBondNumberIndex(["Start Step"])
E_SetBondNumberIndex(["End Step"])
N_SetBondNumberIndex_Node0{"The in-bond control number is not
empty"}:::decision N_SetBondNumberIndex_Node0_action["The system uses the in-bond control
number to populate the RT074 bond
number index"]:::main N_SetBondNumberIndex_Node0 -- Yes --> N_SetBondNumberIndex_Node0_action N_SetBondNumberIndex_Node0_action --> E_SetBondNumberIndex S_SetBondNumberIndex --> N_SetBondNumberIndex_Node0 N_SetBondNumberIndex_Node0 -- No --> E_SetBondNumberIndex
empty"}:::decision N_SetBondNumberIndex_Node0_action["The system uses the in-bond control
number to populate the RT074 bond
number index"]:::main N_SetBondNumberIndex_Node0 -- Yes --> N_SetBondNumberIndex_Node0_action N_SetBondNumberIndex_Node0_action --> E_SetBondNumberIndex S_SetBondNumberIndex --> N_SetBondNumberIndex_Node0 N_SetBondNumberIndex_Node0 -- No --> E_SetBondNumberIndex
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being updated with bond index information
WHEN:
The in-bond control number is not empty
THEN:
The system uses the in-bond control number to populate the RT074 bond number index
β Consolidated Acceptance Criteria
- The entry number is not empty → the system uses the entry number to populate the RT074 bond number index
- Both in-bond control number and entry number are empty → the system sets the RT074 bond number index 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_SetEntryNumberasBondIndex(["Start Step"])
E_SetEntryNumberasBondIndex(["End Step"])
N_SetEntryNumberasBondIndex_Node0{"The entry number is not empty"}:::decision
N_SetEntryNumberasBondIndex_Node0_action["The system uses the entry number to
populate the RT074 bond number index"]:::main N_SetEntryNumberasBondIndex_Node0 -- Yes --> N_SetEntryNumberasBondIndex_Node0_action N_SetEntryNumberasBondIndex_Node0_action --> E_SetEntryNumberasBondIndex S_SetEntryNumberasBondIndex --> N_SetEntryNumberasBondIndex_Node0 N_SetEntryNumberasBondIndex_Node1{"Both in-bond control number and
entry number are empty"}:::decision N_SetEntryNumberasBondIndex_Node1_action["The system sets the RT074 bond
number index to spaces"]:::main N_SetEntryNumberasBondIndex_Node1 -- Yes --> N_SetEntryNumberasBondIndex_Node1_action N_SetEntryNumberasBondIndex_Node1_action --> E_SetEntryNumberasBondIndex N_SetEntryNumberasBondIndex_Node0 -- No --> N_SetEntryNumberasBondIndex_Node1 N_SetEntryNumberasBondIndex_Node1 -- No --> E_SetEntryNumberasBondIndex
populate the RT074 bond number index"]:::main N_SetEntryNumberasBondIndex_Node0 -- Yes --> N_SetEntryNumberasBondIndex_Node0_action N_SetEntryNumberasBondIndex_Node0_action --> E_SetEntryNumberasBondIndex S_SetEntryNumberasBondIndex --> N_SetEntryNumberasBondIndex_Node0 N_SetEntryNumberasBondIndex_Node1{"Both in-bond control number and
entry number are empty"}:::decision N_SetEntryNumberasBondIndex_Node1_action["The system sets the RT074 bond
number index to spaces"]:::main N_SetEntryNumberasBondIndex_Node1 -- Yes --> N_SetEntryNumberasBondIndex_Node1_action N_SetEntryNumberasBondIndex_Node1_action --> E_SetEntryNumberasBondIndex N_SetEntryNumberasBondIndex_Node0 -- No --> N_SetEntryNumberasBondIndex_Node1 N_SetEntryNumberasBondIndex_Node1 -- No --> E_SetEntryNumberasBondIndex
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being updated with bond index information and in-bond control number is empty
WHEN:
The entry number is not empty
THEN:
The system uses the entry number to populate the RT074 bond number index
File: GCCUSIO.cbl
GIVEN:
A cargo record is being updated with bond index information
WHEN:
- Both in-bond control number
- Entry number are empty
THEN:
The system sets the RT074 bond number index to spaces
β Consolidated Acceptance Criteria
- The record modification tracking needs to be updated → the system sets the last modify date to current machine date and last modify time to current machine time
- The cargo status is being updated → the system updates the last modification fields with current machine century, date, time, originating terminal, and 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_UpdateLastModificationTimestamp(["Start Step"])
E_UpdateLastModificationTimestamp(["End Step"])
N_UpdateLastModificationTimestamp_Node0{"The record modification tracking
needs to be updated"}:::decision N_UpdateLastModificationTimestamp_Node0_action["The system sets the last modify
date to current machine date and
last modify time to current machine
time"]:::main N_UpdateLastModificationTimestamp_Node0 -- Yes --> N_UpdateLastModificationTimestamp_Node0_action N_UpdateLastModificationTimestamp_Node0_action --> E_UpdateLastModificationTimestamp S_UpdateLastModificationTimestamp --> N_UpdateLastModificationTimestamp_Node0 N_UpdateLastModificationTimestamp_Node1{"The cargo status is being updated"}:::decision N_UpdateLastModificationTimestamp_Node1_action["The system updates the last
modification fields with current
machine century, date, time,
originating terminal, and user ID"]:::main N_UpdateLastModificationTimestamp_Node1 -- Yes --> N_UpdateLastModificationTimestamp_Node1_action N_UpdateLastModificationTimestamp_Node1_action --> E_UpdateLastModificationTimestamp N_UpdateLastModificationTimestamp_Node0 -- No --> N_UpdateLastModificationTimestamp_Node1 N_UpdateLastModificationTimestamp_Node1 -- No --> E_UpdateLastModificationTimestamp
needs to be updated"}:::decision N_UpdateLastModificationTimestamp_Node0_action["The system sets the last modify
date to current machine date and
last modify time to current machine
time"]:::main N_UpdateLastModificationTimestamp_Node0 -- Yes --> N_UpdateLastModificationTimestamp_Node0_action N_UpdateLastModificationTimestamp_Node0_action --> E_UpdateLastModificationTimestamp S_UpdateLastModificationTimestamp --> N_UpdateLastModificationTimestamp_Node0 N_UpdateLastModificationTimestamp_Node1{"The cargo status is being updated"}:::decision N_UpdateLastModificationTimestamp_Node1_action["The system updates the last
modification fields with current
machine century, date, time,
originating terminal, and user ID"]:::main N_UpdateLastModificationTimestamp_Node1 -- Yes --> N_UpdateLastModificationTimestamp_Node1_action N_UpdateLastModificationTimestamp_Node1_action --> E_UpdateLastModificationTimestamp N_UpdateLastModificationTimestamp_Node0 -- No --> N_UpdateLastModificationTimestamp_Node1 N_UpdateLastModificationTimestamp_Node1 -- No --> E_UpdateLastModificationTimestamp
File: GCCUSIO.cbl
GIVEN:
A cargo record is being replaced
WHEN:
The record modification tracking needs to be updated
THEN:
- The system sets the last modify date to current machine date
- Last modify time to current machine time
File: GCCUSIO.cbl
GIVEN:
A cargo record is being modified with insert, replace, delete, or zap operations
WHEN:
The cargo status is being updated
THEN:
The system updates the last modification fields with current machine century, date, time, originating terminal, and user ID
β Consolidated Acceptance Criteria
- The record modification tracking needs to be updated → the system sets the last modify user ID to the current 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_SetLastModificationUserID(["Start Step"])
E_SetLastModificationUserID(["End Step"])
N_SetLastModificationUserID_Node0{"The record modification tracking
needs to be updated"}:::decision N_SetLastModificationUserID_Node0_action["The system sets the last modify
user ID to the current ACF2 user ID"]:::main N_SetLastModificationUserID_Node0 -- Yes --> N_SetLastModificationUserID_Node0_action N_SetLastModificationUserID_Node0_action --> E_SetLastModificationUserID S_SetLastModificationUserID --> N_SetLastModificationUserID_Node0 N_SetLastModificationUserID_Node0 -- No --> E_SetLastModificationUserID
needs to be updated"}:::decision N_SetLastModificationUserID_Node0_action["The system sets the last modify
user ID to the current ACF2 user ID"]:::main N_SetLastModificationUserID_Node0 -- Yes --> N_SetLastModificationUserID_Node0_action N_SetLastModificationUserID_Node0_action --> E_SetLastModificationUserID S_SetLastModificationUserID --> N_SetLastModificationUserID_Node0 N_SetLastModificationUserID_Node0 -- No --> E_SetLastModificationUserID
File: GCCUSIO.cbl
GIVEN:
A cargo record is being replaced
WHEN:
The record modification tracking needs to be updated
THEN:
The system sets the last modify user ID to the current ACF2 user ID
β Consolidated Acceptance Criteria
- The record modification tracking needs to be updated → the system sets the last modify terminal to the current originating 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_SetLastModificationTerminal(["Start Step"])
E_SetLastModificationTerminal(["End Step"])
N_SetLastModificationTerminal_Node0{"The record modification tracking
needs to be updated"}:::decision N_SetLastModificationTerminal_Node0_action["The system sets the last modify
terminal to the current originating
terminal"]:::main N_SetLastModificationTerminal_Node0 -- Yes --> N_SetLastModificationTerminal_Node0_action N_SetLastModificationTerminal_Node0_action --> E_SetLastModificationTerminal S_SetLastModificationTerminal --> N_SetLastModificationTerminal_Node0 N_SetLastModificationTerminal_Node0 -- No --> E_SetLastModificationTerminal
needs to be updated"}:::decision N_SetLastModificationTerminal_Node0_action["The system sets the last modify
terminal to the current originating
terminal"]:::main N_SetLastModificationTerminal_Node0 -- Yes --> N_SetLastModificationTerminal_Node0_action N_SetLastModificationTerminal_Node0_action --> E_SetLastModificationTerminal S_SetLastModificationTerminal --> N_SetLastModificationTerminal_Node0 N_SetLastModificationTerminal_Node0 -- No --> E_SetLastModificationTerminal
File: GCCUSIO.cbl
GIVEN:
A cargo record is being replaced
WHEN:
The record modification tracking needs to be updated
THEN:
The system sets the last modify terminal to the current originating terminal
β Consolidated Acceptance Criteria
- The record is ready to be saved to the database → the system performs a replace operation using unqualified SSA to update 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_ReplaceCargoRecordinDatabase(["Start Step"])
E_ReplaceCargoRecordinDatabase(["End Step"])
N_ReplaceCargoRecordinDatabase_Node0{"The record is ready to be saved to
the database"}:::decision N_ReplaceCargoRecordinDatabase_Node0_action["The system performs a replace
operation using unqualified SSA to
update the cargo record"]:::main N_ReplaceCargoRecordinDatabase_Node0 -- Yes --> N_ReplaceCargoRecordinDatabase_Node0_action N_ReplaceCargoRecordinDatabase_Node0_action --> E_ReplaceCargoRecordinDatabase S_ReplaceCargoRecordinDatabase --> N_ReplaceCargoRecordinDatabase_Node0 N_ReplaceCargoRecordinDatabase_Node0 -- No --> E_ReplaceCargoRecordinDatabase
the database"}:::decision N_ReplaceCargoRecordinDatabase_Node0_action["The system performs a replace
operation using unqualified SSA to
update the cargo record"]:::main N_ReplaceCargoRecordinDatabase_Node0 -- Yes --> N_ReplaceCargoRecordinDatabase_Node0_action N_ReplaceCargoRecordinDatabase_Node0_action --> E_ReplaceCargoRecordinDatabase S_ReplaceCargoRecordinDatabase --> N_ReplaceCargoRecordinDatabase_Node0 N_ReplaceCargoRecordinDatabase_Node0 -- No --> E_ReplaceCargoRecordinDatabase
File: GCCUSIO.cbl
GIVEN:
A cargo record has been prepared with updated data and timestamps
WHEN:
The record is ready to be saved to the database
THEN:
The system performs a replace operation using unqualified SSA to update the cargo record
β Consolidated Acceptance Criteria
- Index database synchronization is required → the system updates the GCSB1RT index database records to reflect the cargo status 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_UpdateIndexDatabaseRecords(["Start Step"])
E_UpdateIndexDatabaseRecords(["End Step"])
N_UpdateIndexDatabaseRecords_Node0{"Index database synchronization is
required"}:::decision N_UpdateIndexDatabaseRecords_Node0_action["The system updates the GCSB1RT
index database records to reflect
the cargo status changes"]:::main N_UpdateIndexDatabaseRecords_Node0 -- Yes --> N_UpdateIndexDatabaseRecords_Node0_action N_UpdateIndexDatabaseRecords_Node0_action --> E_UpdateIndexDatabaseRecords S_UpdateIndexDatabaseRecords --> N_UpdateIndexDatabaseRecords_Node0 N_UpdateIndexDatabaseRecords_Node0 -- No --> E_UpdateIndexDatabaseRecords
required"}:::decision N_UpdateIndexDatabaseRecords_Node0_action["The system updates the GCSB1RT
index database records to reflect
the cargo status changes"]:::main N_UpdateIndexDatabaseRecords_Node0 -- Yes --> N_UpdateIndexDatabaseRecords_Node0_action N_UpdateIndexDatabaseRecords_Node0_action --> E_UpdateIndexDatabaseRecords S_UpdateIndexDatabaseRecords --> N_UpdateIndexDatabaseRecords_Node0 N_UpdateIndexDatabaseRecords_Node0 -- No --> E_UpdateIndexDatabaseRecords
File: GCCUSIO.cbl
GIVEN:
A cargo record has been successfully replaced in the primary database
WHEN:
Index database synchronization is required
THEN:
The system updates the GCSB1RT index database records to reflect the cargo status changes
β Consolidated Acceptance Criteria
- Index fields are being populated → the system should move the equipment car value to both the car ID number index (RT071) and car-waybill index (RT073) 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_ExtractCarIDfromEquipmentField(["Start Step"])
E_ExtractCarIDfromEquipmentField(["End Step"])
N_ExtractCarIDfromEquipmentField_Node0{"Index fields are being populated"}:::decision
N_ExtractCarIDfromEquipmentField_Node0_action["The system should move the
equipment car value to both the car
ID number index RT071 and
car-waybill index RT073 fields"]:::main N_ExtractCarIDfromEquipmentField_Node0 -- Yes --> N_ExtractCarIDfromEquipmentField_Node0_action N_ExtractCarIDfromEquipmentField_Node0_action --> E_ExtractCarIDfromEquipmentField S_ExtractCarIDfromEquipmentField --> N_ExtractCarIDfromEquipmentField_Node0 N_ExtractCarIDfromEquipmentField_Node0 -- No --> E_ExtractCarIDfromEquipmentField
equipment car value to both the car
ID number index RT071 and
car-waybill index RT073 fields"]:::main N_ExtractCarIDfromEquipmentField_Node0 -- Yes --> N_ExtractCarIDfromEquipmentField_Node0_action N_ExtractCarIDfromEquipmentField_Node0_action --> E_ExtractCarIDfromEquipmentField S_ExtractCarIDfromEquipmentField --> N_ExtractCarIDfromEquipmentField_Node0 N_ExtractCarIDfromEquipmentField_Node0 -- No --> E_ExtractCarIDfromEquipmentField
File: GCCUSIO.cbl
GIVEN:
A cargo record contains equipment car information
WHEN:
Index fields are being populated
THEN:
The system should move the equipment car value to both the car ID number index (RT071) and car-waybill index (RT073) fields
β Consolidated Acceptance Criteria
- Index fields are being populated → the system should extract and populate road index, station index, waybill index, and waybill date index fields from the waybill 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_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate(["Start Step"])
E_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate(["End Step"])
N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0{"Index fields are being populated"}:::decision
N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0_action["The system should extract and
populate road index, station index,
waybill index, and waybill date
index fields from the waybill data"]:::main N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0 -- Yes --> N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0_action N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0_action --> E_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate S_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate --> N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0 N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0 -- No --> E_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate
populate road index, station index,
waybill index, and waybill date
index fields from the waybill data"]:::main N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0 -- Yes --> N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0_action N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0_action --> E_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate S_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate --> N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0 N_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate_Node0 -- No --> E_ExtractRoadNumberfromWaybillExtractStationNumberfromWaybillExtractWaybillNumberExtractWaybillDate
File: GCCUSIO.cbl
GIVEN:
A cargo record contains waybill information with road number, station number, waybill number, and waybill date
WHEN:
Index fields are being populated
THEN:
- The system should extract
- Populate road index, station index, waybill index, and waybill date index fields from the waybill data
β Consolidated Acceptance Criteria
- Car-waybill index needs to be created → the system should copy the waybill number index value to the car-waybill index field (RT073)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PopulateCarWaybillIndex(["Start Step"])
E_PopulateCarWaybillIndex(["End Step"])
N_PopulateCarWaybillIndex_Node0{"Car-waybill index needs to be
created"}:::decision N_PopulateCarWaybillIndex_Node0_action["The system should copy the waybill
number index value to the
car-waybill index field RT073"]:::main N_PopulateCarWaybillIndex_Node0 -- Yes --> N_PopulateCarWaybillIndex_Node0_action N_PopulateCarWaybillIndex_Node0_action --> E_PopulateCarWaybillIndex S_PopulateCarWaybillIndex --> N_PopulateCarWaybillIndex_Node0 N_PopulateCarWaybillIndex_Node0 -- No --> E_PopulateCarWaybillIndex
created"}:::decision N_PopulateCarWaybillIndex_Node0_action["The system should copy the waybill
number index value to the
car-waybill index field RT073"]:::main N_PopulateCarWaybillIndex_Node0 -- Yes --> N_PopulateCarWaybillIndex_Node0_action N_PopulateCarWaybillIndex_Node0_action --> E_PopulateCarWaybillIndex S_PopulateCarWaybillIndex --> N_PopulateCarWaybillIndex_Node0 N_PopulateCarWaybillIndex_Node0 -- No --> E_PopulateCarWaybillIndex
File: GCCUSIO.cbl
GIVEN:
Waybill number index has been populated from waybill data
WHEN:
Car-waybill index needs to be created
THEN:
The system should copy the waybill number index value to the car-waybill index field (RT073)
β Consolidated Acceptance Criteria
- If available bond-related identifiers → if in-bond control number exists, use it for bond index; otherwise if entry number exists, use entry number for bond index; otherwise clear the bond index 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_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex(["Start Step"])
E_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex(["End Step"])
N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0{"The system evaluates available
bond-related identifiers"}:::decision N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0_action["If in-bond control number exists,
use it for bond index otherwise if
entry number exists, use entry
number for bond index otherwise
clear the bond index to spaces"]:::main N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0 -- Yes --> N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0_action N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0_action --> E_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex S_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex --> N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0 N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0 -- No --> E_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex
bond-related identifiers"}:::decision N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0_action["If in-bond control number exists,
use it for bond index otherwise if
entry number exists, use entry
number for bond index otherwise
clear the bond index to spaces"]:::main N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0 -- Yes --> N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0_action N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0_action --> E_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex S_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex --> N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0 N_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex_Node0 -- No --> E_InBondControlNumberExistsUseInBondControlNumberforBondIndexEntryNumberExistsUseEntryNumberforBondIndexClearBondIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for bond index population
WHEN:
The system evaluates available bond-related identifiers
THEN:
If in-bond control number exists, use it for bond index; otherwise if entry number exists, use entry number for bond index; otherwise clear the bond index to spaces
β Consolidated Acceptance Criteria
- Manifest index field needs to be populated → the system should move the CCN key value to the manifest index field (RT075)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestIndexwithCCNKey(["Start Step"])
E_SetManifestIndexwithCCNKey(["End Step"])
N_SetManifestIndexwithCCNKey_Node0{"Manifest index field needs to be
populated"}:::decision N_SetManifestIndexwithCCNKey_Node0_action["The system should move the CCN key
value to the manifest index field
RT075"]:::main N_SetManifestIndexwithCCNKey_Node0 -- Yes --> N_SetManifestIndexwithCCNKey_Node0_action N_SetManifestIndexwithCCNKey_Node0_action --> E_SetManifestIndexwithCCNKey S_SetManifestIndexwithCCNKey --> N_SetManifestIndexwithCCNKey_Node0 N_SetManifestIndexwithCCNKey_Node0 -- No --> E_SetManifestIndexwithCCNKey
populated"}:::decision N_SetManifestIndexwithCCNKey_Node0_action["The system should move the CCN key
value to the manifest index field
RT075"]:::main N_SetManifestIndexwithCCNKey_Node0 -- Yes --> N_SetManifestIndexwithCCNKey_Node0_action N_SetManifestIndexwithCCNKey_Node0_action --> E_SetManifestIndexwithCCNKey S_SetManifestIndexwithCCNKey --> N_SetManifestIndexwithCCNKey_Node0 N_SetManifestIndexwithCCNKey_Node0 -- No --> E_SetManifestIndexwithCCNKey
File: GCCUSIO.cbl
GIVEN:
A cargo record with a valid CCN key is being processed
WHEN:
Manifest index field needs to be populated
THEN:
The system should move the CCN key value to the manifest index field (RT075)
β Consolidated Acceptance Criteria
- The destination index field (RT076-DEST-INDEX) is not equal to spaces → the system should move the CCN key to the destination index CCN key field (RT076-US-CCN-KEY-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_UpdateDestinationIndexifPresent(["Start Step"])
E_UpdateDestinationIndexifPresent(["End Step"])
N_UpdateDestinationIndexifPresent_Node0{"The destination index field
RT076-DEST-INDEX is not equal to
spaces"}:::decision N_UpdateDestinationIndexifPresent_Node0_action["The system should move the CCN key
to the destination index CCN key
field RT076-US-CCN-KEY-INDEX"]:::main N_UpdateDestinationIndexifPresent_Node0 -- Yes --> N_UpdateDestinationIndexifPresent_Node0_action N_UpdateDestinationIndexifPresent_Node0_action --> E_UpdateDestinationIndexifPresent S_UpdateDestinationIndexifPresent --> N_UpdateDestinationIndexifPresent_Node0 N_UpdateDestinationIndexifPresent_Node0 -- No --> E_UpdateDestinationIndexifPresent
RT076-DEST-INDEX is not equal to
spaces"}:::decision N_UpdateDestinationIndexifPresent_Node0_action["The system should move the CCN key
to the destination index CCN key
field RT076-US-CCN-KEY-INDEX"]:::main N_UpdateDestinationIndexifPresent_Node0 -- Yes --> N_UpdateDestinationIndexifPresent_Node0_action N_UpdateDestinationIndexifPresent_Node0_action --> E_UpdateDestinationIndexifPresent S_UpdateDestinationIndexifPresent --> N_UpdateDestinationIndexifPresent_Node0 N_UpdateDestinationIndexifPresent_Node0 -- No --> E_UpdateDestinationIndexifPresent
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for destination index population
WHEN:
The destination index field (RT076-DEST-INDEX) is not equal to spaces
THEN:
The system should move the CCN key to the destination index CCN key field (RT076-US-CCN-KEY-INDEX)
β Consolidated Acceptance Criteria
- The system retrieves the current cargo record → the system saves the RT21 US cargo short description to the Iron Highway status 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_SaveIronHighwayStatusInformation(["Start Step"])
E_SaveIronHighwayStatusInformation(["End Step"])
N_SaveIronHighwayStatusInformation_Node0{"The system retrieves the current
cargo record"}:::decision N_SaveIronHighwayStatusInformation_Node0_action["The system saves the RT21 US cargo
short description to the Iron
Highway status field"]:::main N_SaveIronHighwayStatusInformation_Node0 -- Yes --> N_SaveIronHighwayStatusInformation_Node0_action N_SaveIronHighwayStatusInformation_Node0_action --> E_SaveIronHighwayStatusInformation S_SaveIronHighwayStatusInformation --> N_SaveIronHighwayStatusInformation_Node0 N_SaveIronHighwayStatusInformation_Node0 -- No --> E_SaveIronHighwayStatusInformation
cargo record"}:::decision N_SaveIronHighwayStatusInformation_Node0_action["The system saves the RT21 US cargo
short description to the Iron
Highway status field"]:::main N_SaveIronHighwayStatusInformation_Node0 -- Yes --> N_SaveIronHighwayStatusInformation_Node0_action N_SaveIronHighwayStatusInformation_Node0_action --> E_SaveIronHighwayStatusInformation S_SaveIronHighwayStatusInformation --> N_SaveIronHighwayStatusInformation_Node0 N_SaveIronHighwayStatusInformation_Node0 -- No --> E_SaveIronHighwayStatusInformation
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for deletion
WHEN:
The system retrieves the current cargo record
THEN:
The system saves the RT21 US cargo short description to the Iron Highway status field
β Consolidated Acceptance Criteria
- The system processes the cargo record for deletion → the system saves the first 15 characters of the waybill number index and the car identification number index for notification 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_SaveWaybillandCarNumbers(["Start Step"])
E_SaveWaybillandCarNumbers(["End Step"])
N_SaveWaybillandCarNumbers_Node0{"The system processes the cargo
record for deletion"}:::decision N_SaveWaybillandCarNumbers_Node0_action["The system saves the first 15
characters of the waybill number
index and the car identification
number index for notification
purposes"]:::main N_SaveWaybillandCarNumbers_Node0 -- Yes --> N_SaveWaybillandCarNumbers_Node0_action N_SaveWaybillandCarNumbers_Node0_action --> E_SaveWaybillandCarNumbers S_SaveWaybillandCarNumbers --> N_SaveWaybillandCarNumbers_Node0 N_SaveWaybillandCarNumbers_Node0 -- No --> E_SaveWaybillandCarNumbers
record for deletion"}:::decision N_SaveWaybillandCarNumbers_Node0_action["The system saves the first 15
characters of the waybill number
index and the car identification
number index for notification
purposes"]:::main N_SaveWaybillandCarNumbers_Node0 -- Yes --> N_SaveWaybillandCarNumbers_Node0_action N_SaveWaybillandCarNumbers_Node0_action --> E_SaveWaybillandCarNumbers S_SaveWaybillandCarNumbers --> N_SaveWaybillandCarNumbers_Node0 N_SaveWaybillandCarNumbers_Node0 -- No --> E_SaveWaybillandCarNumbers
File: GCCUSIO.cbl
GIVEN:
A cargo record contains waybill and car identification information
WHEN:
The system processes the cargo record for deletion
THEN:
- The system saves the first 15 characters of the waybill number index
- The car identification number index for notification purposes
β Consolidated Acceptance Criteria
- The system processes index field clearing → the system sets the RT072 waybill index field 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_ClearWaybillIndex(["Start Step"])
E_ClearWaybillIndex(["End Step"])
N_ClearWaybillIndex_Node0{"The system processes index field
clearing"}:::decision N_ClearWaybillIndex_Node0_action["The system sets the RT072 waybill
index field to spaces"]:::main N_ClearWaybillIndex_Node0 -- Yes --> N_ClearWaybillIndex_Node0_action N_ClearWaybillIndex_Node0_action --> E_ClearWaybillIndex S_ClearWaybillIndex --> N_ClearWaybillIndex_Node0 N_ClearWaybillIndex_Node0 -- No --> E_ClearWaybillIndex
clearing"}:::decision N_ClearWaybillIndex_Node0_action["The system sets the RT072 waybill
index field to spaces"]:::main N_ClearWaybillIndex_Node0 -- Yes --> N_ClearWaybillIndex_Node0_action N_ClearWaybillIndex_Node0_action --> E_ClearWaybillIndex S_ClearWaybillIndex --> N_ClearWaybillIndex_Node0 N_ClearWaybillIndex_Node0 -- No --> E_ClearWaybillIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record is being logically deleted
WHEN:
The system processes index field clearing
THEN:
The system sets the RT072 waybill index field to spaces
β Consolidated Acceptance Criteria
- The system processes index field clearing → the system sets the RT073 car-waybill index field 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_ClearCarWaybillIndex(["Start Step"])
E_ClearCarWaybillIndex(["End Step"])
N_ClearCarWaybillIndex_Node0{"The system processes index field
clearing"}:::decision N_ClearCarWaybillIndex_Node0_action["The system sets the RT073
car-waybill index field to spaces"]:::main N_ClearCarWaybillIndex_Node0 -- Yes --> N_ClearCarWaybillIndex_Node0_action N_ClearCarWaybillIndex_Node0_action --> E_ClearCarWaybillIndex S_ClearCarWaybillIndex --> N_ClearCarWaybillIndex_Node0 N_ClearCarWaybillIndex_Node0 -- No --> E_ClearCarWaybillIndex
clearing"}:::decision N_ClearCarWaybillIndex_Node0_action["The system sets the RT073
car-waybill index field to spaces"]:::main N_ClearCarWaybillIndex_Node0 -- Yes --> N_ClearCarWaybillIndex_Node0_action N_ClearCarWaybillIndex_Node0_action --> E_ClearCarWaybillIndex S_ClearCarWaybillIndex --> N_ClearCarWaybillIndex_Node0 N_ClearCarWaybillIndex_Node0 -- No --> E_ClearCarWaybillIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record is being logically deleted
WHEN:
The system processes index field clearing
THEN:
The system sets the RT073 car-waybill index field to spaces
β Consolidated Acceptance Criteria
- The system processes index field clearing → the system sets the RT074 bond index field 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_ClearBondNumberIndex(["Start Step"])
E_ClearBondNumberIndex(["End Step"])
N_ClearBondNumberIndex_Node0{"The system processes index field
clearing"}:::decision N_ClearBondNumberIndex_Node0_action["The system sets the RT074 bond
index field to spaces"]:::main N_ClearBondNumberIndex_Node0 -- Yes --> N_ClearBondNumberIndex_Node0_action N_ClearBondNumberIndex_Node0_action --> E_ClearBondNumberIndex S_ClearBondNumberIndex --> N_ClearBondNumberIndex_Node0 N_ClearBondNumberIndex_Node0 -- No --> E_ClearBondNumberIndex
clearing"}:::decision N_ClearBondNumberIndex_Node0_action["The system sets the RT074 bond
index field to spaces"]:::main N_ClearBondNumberIndex_Node0 -- Yes --> N_ClearBondNumberIndex_Node0_action N_ClearBondNumberIndex_Node0_action --> E_ClearBondNumberIndex S_ClearBondNumberIndex --> N_ClearBondNumberIndex_Node0 N_ClearBondNumberIndex_Node0 -- No --> E_ClearBondNumberIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record is being logically deleted
WHEN:
The system processes index field clearing
THEN:
The system sets the RT074 bond index field to spaces
β Consolidated Acceptance Criteria
- The system processes index field clearing → the system sets the RT076 destination index field 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_ClearDestinationIndex(["Start Step"])
E_ClearDestinationIndex(["End Step"])
N_ClearDestinationIndex_Node0{"The system processes index field
clearing"}:::decision N_ClearDestinationIndex_Node0_action["The system sets the RT076
destination index field to spaces"]:::main N_ClearDestinationIndex_Node0 -- Yes --> N_ClearDestinationIndex_Node0_action N_ClearDestinationIndex_Node0_action --> E_ClearDestinationIndex S_ClearDestinationIndex --> N_ClearDestinationIndex_Node0 N_ClearDestinationIndex_Node0 -- No --> E_ClearDestinationIndex
clearing"}:::decision N_ClearDestinationIndex_Node0_action["The system sets the RT076
destination index field to spaces"]:::main N_ClearDestinationIndex_Node0 -- Yes --> N_ClearDestinationIndex_Node0_action N_ClearDestinationIndex_Node0_action --> E_ClearDestinationIndex S_ClearDestinationIndex --> N_ClearDestinationIndex_Node0 N_ClearDestinationIndex_Node0 -- No --> E_ClearDestinationIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record is being logically deleted
WHEN:
The system processes index field clearing
THEN:
The system sets the RT076 destination index field to spaces
β Consolidated Acceptance Criteria
- The system completes index field clearing → the system sets the RT10 CP cargo status to DELETED
- The system processes status description updates → the system sets the RT10B CP cargo status description to the corresponding deleted status 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_SetCargoStatustoDELETED(["Start Step"])
E_SetCargoStatustoDELETED(["End Step"])
N_SetCargoStatustoDELETED_Node0{"The system completes index field
clearing"}:::decision N_SetCargoStatustoDELETED_Node0_action["The system sets the RT10 CP cargo
status to DELETED"]:::main N_SetCargoStatustoDELETED_Node0 -- Yes --> N_SetCargoStatustoDELETED_Node0_action N_SetCargoStatustoDELETED_Node0_action --> E_SetCargoStatustoDELETED S_SetCargoStatustoDELETED --> N_SetCargoStatustoDELETED_Node0 N_SetCargoStatustoDELETED_Node1{"The system processes status
description updates"}:::decision N_SetCargoStatustoDELETED_Node1_action["The system sets the RT10B CP cargo
status description to the
corresponding deleted status
description"]:::main N_SetCargoStatustoDELETED_Node1 -- Yes --> N_SetCargoStatustoDELETED_Node1_action N_SetCargoStatustoDELETED_Node1_action --> E_SetCargoStatustoDELETED N_SetCargoStatustoDELETED_Node0 -- No --> N_SetCargoStatustoDELETED_Node1 N_SetCargoStatustoDELETED_Node1 -- No --> E_SetCargoStatustoDELETED
clearing"}:::decision N_SetCargoStatustoDELETED_Node0_action["The system sets the RT10 CP cargo
status to DELETED"]:::main N_SetCargoStatustoDELETED_Node0 -- Yes --> N_SetCargoStatustoDELETED_Node0_action N_SetCargoStatustoDELETED_Node0_action --> E_SetCargoStatustoDELETED S_SetCargoStatustoDELETED --> N_SetCargoStatustoDELETED_Node0 N_SetCargoStatustoDELETED_Node1{"The system processes status
description updates"}:::decision N_SetCargoStatustoDELETED_Node1_action["The system sets the RT10B CP cargo
status description to the
corresponding deleted status
description"]:::main N_SetCargoStatustoDELETED_Node1 -- Yes --> N_SetCargoStatustoDELETED_Node1_action N_SetCargoStatustoDELETED_Node1_action --> E_SetCargoStatustoDELETED N_SetCargoStatustoDELETED_Node0 -- No --> N_SetCargoStatustoDELETED_Node1 N_SetCargoStatustoDELETED_Node1 -- No --> E_SetCargoStatustoDELETED
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for deletion
WHEN:
The system completes index field clearing
THEN:
The system sets the RT10 CP cargo status to DELETED
File: GCCUSIO.cbl
GIVEN:
A cargo record has been marked as deleted
WHEN:
The system processes status description updates
THEN:
The system sets the RT10B CP cargo status description to the corresponding deleted status description
β Consolidated Acceptance Criteria
- The system needs to persist the deletion changes → the system performs a replace operation to update the cargo record with the deleted 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_UpdateCargoRecordwithDeletedStatus(["Start Step"])
E_UpdateCargoRecordwithDeletedStatus(["End Step"])
N_UpdateCargoRecordwithDeletedStatus_Node0{"The system needs to persist the
deletion changes"}:::decision N_UpdateCargoRecordwithDeletedStatus_Node0_action["The system performs a replace
operation to update the cargo record
with the deleted status"]:::main N_UpdateCargoRecordwithDeletedStatus_Node0 -- Yes --> N_UpdateCargoRecordwithDeletedStatus_Node0_action N_UpdateCargoRecordwithDeletedStatus_Node0_action --> E_UpdateCargoRecordwithDeletedStatus S_UpdateCargoRecordwithDeletedStatus --> N_UpdateCargoRecordwithDeletedStatus_Node0 N_UpdateCargoRecordwithDeletedStatus_Node0 -- No --> E_UpdateCargoRecordwithDeletedStatus
deletion changes"}:::decision N_UpdateCargoRecordwithDeletedStatus_Node0_action["The system performs a replace
operation to update the cargo record
with the deleted status"]:::main N_UpdateCargoRecordwithDeletedStatus_Node0 -- Yes --> N_UpdateCargoRecordwithDeletedStatus_Node0_action N_UpdateCargoRecordwithDeletedStatus_Node0_action --> E_UpdateCargoRecordwithDeletedStatus S_UpdateCargoRecordwithDeletedStatus --> N_UpdateCargoRecordwithDeletedStatus_Node0 N_UpdateCargoRecordwithDeletedStatus_Node0 -- No --> E_UpdateCargoRecordwithDeletedStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record has been marked as deleted with cleared index fields
WHEN:
The system needs to persist the deletion changes
THEN:
The system performs a replace operation to update the cargo record with the deleted status
β Consolidated Acceptance Criteria
- The system needs to clean up related index records → the system deletes the corresponding GCSB1RT status index record using the 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_DeleteGCSB1RTIndexRecords(["Start Step"])
E_DeleteGCSB1RTIndexRecords(["End Step"])
N_DeleteGCSB1RTIndexRecords_Node0{"The system needs to clean up
related index records"}:::decision N_DeleteGCSB1RTIndexRecords_Node0_action["The system deletes the
corresponding GCSB1RT status index
record using the cargo CCN key"]:::main N_DeleteGCSB1RTIndexRecords_Node0 -- Yes --> N_DeleteGCSB1RTIndexRecords_Node0_action N_DeleteGCSB1RTIndexRecords_Node0_action --> E_DeleteGCSB1RTIndexRecords S_DeleteGCSB1RTIndexRecords --> N_DeleteGCSB1RTIndexRecords_Node0 N_DeleteGCSB1RTIndexRecords_Node0 -- No --> E_DeleteGCSB1RTIndexRecords
related index records"}:::decision N_DeleteGCSB1RTIndexRecords_Node0_action["The system deletes the
corresponding GCSB1RT status index
record using the cargo CCN key"]:::main N_DeleteGCSB1RTIndexRecords_Node0 -- Yes --> N_DeleteGCSB1RTIndexRecords_Node0_action N_DeleteGCSB1RTIndexRecords_Node0_action --> E_DeleteGCSB1RTIndexRecords S_DeleteGCSB1RTIndexRecords --> N_DeleteGCSB1RTIndexRecords_Node0 N_DeleteGCSB1RTIndexRecords_Node0 -- No --> E_DeleteGCSB1RTIndexRecords
File: GCCUSIO.cbl
GIVEN:
A cargo record has been successfully deleted
WHEN:
The system needs to clean up related index records
THEN:
The system deletes the corresponding GCSB1RT status index record using the cargo CCN key
β Consolidated Acceptance Criteria
- The CCN key field is not empty → build qualified SSA with CCN key value and execute qualified 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_BuildPrimarySSAwithCCNKey(["Start Step"])
E_BuildPrimarySSAwithCCNKey(["End Step"])
N_BuildPrimarySSAwithCCNKey_Node0{"The CCN key field is not empty"}:::decision
N_BuildPrimarySSAwithCCNKey_Node0_action["Build qualified SSA with CCN key
value and execute qualified search"]:::main N_BuildPrimarySSAwithCCNKey_Node0 -- Yes --> N_BuildPrimarySSAwithCCNKey_Node0_action N_BuildPrimarySSAwithCCNKey_Node0_action --> E_BuildPrimarySSAwithCCNKey S_BuildPrimarySSAwithCCNKey --> N_BuildPrimarySSAwithCCNKey_Node0 N_BuildPrimarySSAwithCCNKey_Node0 -- No --> E_BuildPrimarySSAwithCCNKey
value and execute qualified search"]:::main N_BuildPrimarySSAwithCCNKey_Node0 -- Yes --> N_BuildPrimarySSAwithCCNKey_Node0_action N_BuildPrimarySSAwithCCNKey_Node0_action --> E_BuildPrimarySSAwithCCNKey S_BuildPrimarySSAwithCCNKey --> N_BuildPrimarySSAwithCCNKey_Node0 N_BuildPrimarySSAwithCCNKey_Node0 -- No --> E_BuildPrimarySSAwithCCNKey
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record retrieval request is received with function code GU or GN
WHEN:
The CCN key field is not empty
THEN:
- Build qualified ssa with ccn key value
- Execute qualified search
β Consolidated Acceptance Criteria
- The CCN key field is empty or spaces → build unqualified SSA and execute unqualified search
- Building search argument for bond index query → create unqualified SSA with empty key value and set PCB5 as the search 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_BuildUnqualifiedSSA(["Start Step"])
E_BuildUnqualifiedSSA(["End Step"])
N_BuildUnqualifiedSSA_Node0{"The CCN key field is empty or
spaces"}:::decision N_BuildUnqualifiedSSA_Node0_action["Build unqualified SSA and execute
unqualified search"]:::main N_BuildUnqualifiedSSA_Node0 -- Yes --> N_BuildUnqualifiedSSA_Node0_action N_BuildUnqualifiedSSA_Node0_action --> E_BuildUnqualifiedSSA S_BuildUnqualifiedSSA --> N_BuildUnqualifiedSSA_Node0 N_BuildUnqualifiedSSA_Node1{"Building search argument for bond
index query"}:::decision N_BuildUnqualifiedSSA_Node1_action["Create unqualified SSA with empty
key value and set PCB5 as the search
control block"]:::main N_BuildUnqualifiedSSA_Node1 -- Yes --> N_BuildUnqualifiedSSA_Node1_action N_BuildUnqualifiedSSA_Node1_action --> E_BuildUnqualifiedSSA N_BuildUnqualifiedSSA_Node0 -- No --> N_BuildUnqualifiedSSA_Node1 N_BuildUnqualifiedSSA_Node1 -- No --> E_BuildUnqualifiedSSA
spaces"}:::decision N_BuildUnqualifiedSSA_Node0_action["Build unqualified SSA and execute
unqualified search"]:::main N_BuildUnqualifiedSSA_Node0 -- Yes --> N_BuildUnqualifiedSSA_Node0_action N_BuildUnqualifiedSSA_Node0_action --> E_BuildUnqualifiedSSA S_BuildUnqualifiedSSA --> N_BuildUnqualifiedSSA_Node0 N_BuildUnqualifiedSSA_Node1{"Building search argument for bond
index query"}:::decision N_BuildUnqualifiedSSA_Node1_action["Create unqualified SSA with empty
key value and set PCB5 as the search
control block"]:::main N_BuildUnqualifiedSSA_Node1 -- Yes --> N_BuildUnqualifiedSSA_Node1_action N_BuildUnqualifiedSSA_Node1_action --> E_BuildUnqualifiedSSA N_BuildUnqualifiedSSA_Node0 -- No --> N_BuildUnqualifiedSSA_Node1 N_BuildUnqualifiedSSA_Node1 -- No --> E_BuildUnqualifiedSSA
File: GCCUSIO.cbl
GIVEN:
A cargo record retrieval request is received with function code GU or GN
WHEN:
The CCN key field is empty or spaces
THEN:
- Build unqualified ssa
- Execute unqualified search
File: GCCUSIO.cbl
GIVEN:
Bond index field is empty or contains spaces
WHEN:
Building search argument for bond index query
THEN:
- Create unqualified ssa with empty key value
- Set pcb5 as the search control block
β Consolidated Acceptance Criteria
- The secondary index field is not empty or spaces → route to secondary index processing instead of primary SSA building
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SecondaryIndexSpecified(["Start Step"])
E_SecondaryIndexSpecified(["End Step"])
N_SecondaryIndexSpecified_Node0{"The secondary index field is not
empty or spaces"}:::decision N_SecondaryIndexSpecified_Node0_action["Route to secondary index processing
instead of primary SSA building"]:::main N_SecondaryIndexSpecified_Node0 -- Yes --> N_SecondaryIndexSpecified_Node0_action N_SecondaryIndexSpecified_Node0_action --> E_SecondaryIndexSpecified S_SecondaryIndexSpecified --> N_SecondaryIndexSpecified_Node0 N_SecondaryIndexSpecified_Node0 -- No --> E_SecondaryIndexSpecified
empty or spaces"}:::decision N_SecondaryIndexSpecified_Node0_action["Route to secondary index processing
instead of primary SSA building"]:::main N_SecondaryIndexSpecified_Node0 -- Yes --> N_SecondaryIndexSpecified_Node0_action N_SecondaryIndexSpecified_Node0_action --> E_SecondaryIndexSpecified S_SecondaryIndexSpecified --> N_SecondaryIndexSpecified_Node0 N_SecondaryIndexSpecified_Node0 -- No --> E_SecondaryIndexSpecified
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record retrieval request is received with function code other than ISRT, REPL, DLET, or ZAP
WHEN:
The secondary index field is not empty or spaces
THEN:
Route to secondary index processing instead of primary SSA building
β Consolidated Acceptance Criteria
- The index type is CAR-ID → use car ID index structure with car identification value and operator to search 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_CarIDIndexSearch(["Start Step"])
E_CarIDIndexSearch(["End Step"])
N_CarIDIndexSearch_Node0{"The index type is CAR-ID"}:::decision
N_CarIDIndexSearch_Node0_action["Use car ID index structure with car
identification value and operator to
search cargo records"]:::main N_CarIDIndexSearch_Node0 -- Yes --> N_CarIDIndexSearch_Node0_action N_CarIDIndexSearch_Node0_action --> E_CarIDIndexSearch S_CarIDIndexSearch --> N_CarIDIndexSearch_Node0 N_CarIDIndexSearch_Node0 -- No --> E_CarIDIndexSearch
identification value and operator to
search cargo records"]:::main N_CarIDIndexSearch_Node0 -- Yes --> N_CarIDIndexSearch_Node0_action N_CarIDIndexSearch_Node0_action --> E_CarIDIndexSearch S_CarIDIndexSearch --> N_CarIDIndexSearch_Node0 N_CarIDIndexSearch_Node0 -- No --> E_CarIDIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is CAR-ID
THEN:
- Use car id index structure with car identification value
- Operator to search cargo records
β Consolidated Acceptance Criteria
- The index type is WAYBILL → use waybill index structure with waybill number value and operator to search 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_WaybillIndexSearch(["Start Step"])
E_WaybillIndexSearch(["End Step"])
N_WaybillIndexSearch_Node0{"The index type is WAYBILL"}:::decision
N_WaybillIndexSearch_Node0_action["Use waybill index structure with
waybill number value and operator to
search cargo records"]:::main N_WaybillIndexSearch_Node0 -- Yes --> N_WaybillIndexSearch_Node0_action N_WaybillIndexSearch_Node0_action --> E_WaybillIndexSearch S_WaybillIndexSearch --> N_WaybillIndexSearch_Node0 N_WaybillIndexSearch_Node0 -- No --> E_WaybillIndexSearch
waybill number value and operator to
search cargo records"]:::main N_WaybillIndexSearch_Node0 -- Yes --> N_WaybillIndexSearch_Node0_action N_WaybillIndexSearch_Node0_action --> E_WaybillIndexSearch S_WaybillIndexSearch --> N_WaybillIndexSearch_Node0 N_WaybillIndexSearch_Node0 -- No --> E_WaybillIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is WAYBILL
THEN:
- Use waybill index structure with waybill number value
- Operator to search cargo records
β Consolidated Acceptance Criteria
- The index type is CAR-WB and car-waybill index is not empty → use qualified SSA with car-waybill index value, otherwise use unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarWaybillIndexSearch(["Start Step"])
E_CarWaybillIndexSearch(["End Step"])
N_CarWaybillIndexSearch_Node0{"The index type is CAR-WB and
car-waybill index is not empty"}:::decision N_CarWaybillIndexSearch_Node0_action["Use qualified SSA with car-waybill
index value, otherwise use
unqualified SSA"]:::main N_CarWaybillIndexSearch_Node0 -- Yes --> N_CarWaybillIndexSearch_Node0_action N_CarWaybillIndexSearch_Node0_action --> E_CarWaybillIndexSearch S_CarWaybillIndexSearch --> N_CarWaybillIndexSearch_Node0 N_CarWaybillIndexSearch_Node0 -- No --> E_CarWaybillIndexSearch
car-waybill index is not empty"}:::decision N_CarWaybillIndexSearch_Node0_action["Use qualified SSA with car-waybill
index value, otherwise use
unqualified SSA"]:::main N_CarWaybillIndexSearch_Node0 -- Yes --> N_CarWaybillIndexSearch_Node0_action N_CarWaybillIndexSearch_Node0_action --> E_CarWaybillIndexSearch S_CarWaybillIndexSearch --> N_CarWaybillIndexSearch_Node0 N_CarWaybillIndexSearch_Node0 -- No --> E_CarWaybillIndexSearch
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A secondary index search request is received
WHEN:
- The index type is car-wb
- Car-waybill index is not empty
THEN:
Use qualified SSA with car-waybill index value, otherwise use unqualified SSA
β Consolidated Acceptance Criteria
- The index type is BOND and bond index is not empty → use qualified SSA with bond index value, otherwise use unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondNumberIndexSearch(["Start Step"])
E_BondNumberIndexSearch(["End Step"])
N_BondNumberIndexSearch_Node0{"The index type is BOND and bond
index is not empty"}:::decision N_BondNumberIndexSearch_Node0_action["Use qualified SSA with bond index
value, otherwise use unqualified SSA"]:::main N_BondNumberIndexSearch_Node0 -- Yes --> N_BondNumberIndexSearch_Node0_action N_BondNumberIndexSearch_Node0_action --> E_BondNumberIndexSearch S_BondNumberIndexSearch --> N_BondNumberIndexSearch_Node0 N_BondNumberIndexSearch_Node0 -- No --> E_BondNumberIndexSearch
index is not empty"}:::decision N_BondNumberIndexSearch_Node0_action["Use qualified SSA with bond index
value, otherwise use unqualified SSA"]:::main N_BondNumberIndexSearch_Node0 -- Yes --> N_BondNumberIndexSearch_Node0_action N_BondNumberIndexSearch_Node0_action --> E_BondNumberIndexSearch S_BondNumberIndexSearch --> N_BondNumberIndexSearch_Node0 N_BondNumberIndexSearch_Node0 -- No --> E_BondNumberIndexSearch
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A secondary index search request is received
WHEN:
- The index type is bond
- Bond index is not empty
THEN:
Use qualified SSA with bond index value, otherwise use unqualified SSA
β Consolidated Acceptance Criteria
- The index type is LEAD-CCN and lead manifest CCN is not empty → use qualified SSA with lead CCN value, otherwise use unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LeadCCNIndexSearch(["Start Step"])
E_LeadCCNIndexSearch(["End Step"])
N_LeadCCNIndexSearch_Node0{"The index type is LEAD-CCN and lead
manifest CCN is not empty"}:::decision N_LeadCCNIndexSearch_Node0_action["Use qualified SSA with lead CCN
value, otherwise use unqualified SSA"]:::main N_LeadCCNIndexSearch_Node0 -- Yes --> N_LeadCCNIndexSearch_Node0_action N_LeadCCNIndexSearch_Node0_action --> E_LeadCCNIndexSearch S_LeadCCNIndexSearch --> N_LeadCCNIndexSearch_Node0 N_LeadCCNIndexSearch_Node0 -- No --> E_LeadCCNIndexSearch
manifest CCN is not empty"}:::decision N_LeadCCNIndexSearch_Node0_action["Use qualified SSA with lead CCN
value, otherwise use unqualified SSA"]:::main N_LeadCCNIndexSearch_Node0 -- Yes --> N_LeadCCNIndexSearch_Node0_action N_LeadCCNIndexSearch_Node0_action --> E_LeadCCNIndexSearch S_LeadCCNIndexSearch --> N_LeadCCNIndexSearch_Node0 N_LeadCCNIndexSearch_Node0 -- No --> E_LeadCCNIndexSearch
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A secondary index search request is received
WHEN:
- The index type is lead-ccn
- Lead manifest ccn is not empty
THEN:
Use qualified SSA with lead CCN value, otherwise use unqualified SSA
β Consolidated Acceptance Criteria
- The index type is HELD-DEST → search status table by held destination key, then retrieve primary cargo record using the cargo key from status 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_HeldDestinationIndexSearch(["Start Step"])
E_HeldDestinationIndexSearch(["End Step"])
N_HeldDestinationIndexSearch_Node0{"The index type is HELD-DEST"}:::decision
N_HeldDestinationIndexSearch_Node0_action["Search status table by held
destination key, then retrieve
primary cargo record using the cargo
key from status record"]:::main N_HeldDestinationIndexSearch_Node0 -- Yes --> N_HeldDestinationIndexSearch_Node0_action N_HeldDestinationIndexSearch_Node0_action --> E_HeldDestinationIndexSearch S_HeldDestinationIndexSearch --> N_HeldDestinationIndexSearch_Node0 N_HeldDestinationIndexSearch_Node0 -- No --> E_HeldDestinationIndexSearch
destination key, then retrieve
primary cargo record using the cargo
key from status record"]:::main N_HeldDestinationIndexSearch_Node0 -- Yes --> N_HeldDestinationIndexSearch_Node0_action N_HeldDestinationIndexSearch_Node0_action --> E_HeldDestinationIndexSearch S_HeldDestinationIndexSearch --> N_HeldDestinationIndexSearch_Node0 N_HeldDestinationIndexSearch_Node0 -- No --> E_HeldDestinationIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is HELD-DEST
THEN:
Search status table by held destination key, then retrieve primary cargo record using the cargo key from status record
β Consolidated Acceptance Criteria
- The index type is HELD-BORDER → search status table by held border key, then retrieve primary cargo record using the cargo key from status 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_HeldBorderIndexSearch(["Start Step"])
E_HeldBorderIndexSearch(["End Step"])
N_HeldBorderIndexSearch_Node0{"The index type is HELD-BORDER"}:::decision
N_HeldBorderIndexSearch_Node0_action["Search status table by held border
key, then retrieve primary cargo
record using the cargo key from
status record"]:::main N_HeldBorderIndexSearch_Node0 -- Yes --> N_HeldBorderIndexSearch_Node0_action N_HeldBorderIndexSearch_Node0_action --> E_HeldBorderIndexSearch S_HeldBorderIndexSearch --> N_HeldBorderIndexSearch_Node0 N_HeldBorderIndexSearch_Node0 -- No --> E_HeldBorderIndexSearch
key, then retrieve primary cargo
record using the cargo key from
status record"]:::main N_HeldBorderIndexSearch_Node0 -- Yes --> N_HeldBorderIndexSearch_Node0_action N_HeldBorderIndexSearch_Node0_action --> E_HeldBorderIndexSearch S_HeldBorderIndexSearch --> N_HeldBorderIndexSearch_Node0 N_HeldBorderIndexSearch_Node0 -- No --> E_HeldBorderIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is HELD-BORDER
THEN:
Search status table by held border key, then retrieve primary cargo record using the cargo key from status record
β Consolidated Acceptance Criteria
- The index type is ERR-ORIG → search status table by error origin key, then retrieve primary cargo record using the cargo key from status 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_ErrorOriginIndexSearch(["Start Step"])
E_ErrorOriginIndexSearch(["End Step"])
N_ErrorOriginIndexSearch_Node0{"The index type is ERR-ORIG"}:::decision
N_ErrorOriginIndexSearch_Node0_action["Search status table by error origin
key, then retrieve primary cargo
record using the cargo key from
status record"]:::main N_ErrorOriginIndexSearch_Node0 -- Yes --> N_ErrorOriginIndexSearch_Node0_action N_ErrorOriginIndexSearch_Node0_action --> E_ErrorOriginIndexSearch S_ErrorOriginIndexSearch --> N_ErrorOriginIndexSearch_Node0 N_ErrorOriginIndexSearch_Node0 -- No --> E_ErrorOriginIndexSearch
key, then retrieve primary cargo
record using the cargo key from
status record"]:::main N_ErrorOriginIndexSearch_Node0 -- Yes --> N_ErrorOriginIndexSearch_Node0_action N_ErrorOriginIndexSearch_Node0_action --> E_ErrorOriginIndexSearch S_ErrorOriginIndexSearch --> N_ErrorOriginIndexSearch_Node0 N_ErrorOriginIndexSearch_Node0 -- No --> E_ErrorOriginIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is ERR-ORIG
THEN:
Search status table by error origin key, then retrieve primary cargo record using the cargo key from status record
β Consolidated Acceptance Criteria
- The index type is ERR-BORDER → search status table by error border key, then retrieve primary cargo record using the cargo key from status 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_ErrorBorderIndexSearch(["Start Step"])
E_ErrorBorderIndexSearch(["End Step"])
N_ErrorBorderIndexSearch_Node0{"The index type is ERR-BORDER"}:::decision
N_ErrorBorderIndexSearch_Node0_action["Search status table by error border
key, then retrieve primary cargo
record using the cargo key from
status record"]:::main N_ErrorBorderIndexSearch_Node0 -- Yes --> N_ErrorBorderIndexSearch_Node0_action N_ErrorBorderIndexSearch_Node0_action --> E_ErrorBorderIndexSearch S_ErrorBorderIndexSearch --> N_ErrorBorderIndexSearch_Node0 N_ErrorBorderIndexSearch_Node0 -- No --> E_ErrorBorderIndexSearch
key, then retrieve primary cargo
record using the cargo key from
status record"]:::main N_ErrorBorderIndexSearch_Node0 -- Yes --> N_ErrorBorderIndexSearch_Node0_action N_ErrorBorderIndexSearch_Node0_action --> E_ErrorBorderIndexSearch S_ErrorBorderIndexSearch --> N_ErrorBorderIndexSearch_Node0 N_ErrorBorderIndexSearch_Node0 -- No --> E_ErrorBorderIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is ERR-BORDER
THEN:
Search status table by error border key, then retrieve primary cargo record using the cargo key from status record
β Consolidated Acceptance Criteria
- The index type is ERR-DEST → search status table by error destination key, then retrieve primary cargo record using the cargo key from status 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_ErrorDestinationIndexSearch(["Start Step"])
E_ErrorDestinationIndexSearch(["End Step"])
N_ErrorDestinationIndexSearch_Node0{"The index type is ERR-DEST"}:::decision
N_ErrorDestinationIndexSearch_Node0_action["Search status table by error
destination key, then retrieve
primary cargo record using the cargo
key from status record"]:::main N_ErrorDestinationIndexSearch_Node0 -- Yes --> N_ErrorDestinationIndexSearch_Node0_action N_ErrorDestinationIndexSearch_Node0_action --> E_ErrorDestinationIndexSearch S_ErrorDestinationIndexSearch --> N_ErrorDestinationIndexSearch_Node0 N_ErrorDestinationIndexSearch_Node0 -- No --> E_ErrorDestinationIndexSearch
destination key, then retrieve
primary cargo record using the cargo
key from status record"]:::main N_ErrorDestinationIndexSearch_Node0 -- Yes --> N_ErrorDestinationIndexSearch_Node0_action N_ErrorDestinationIndexSearch_Node0_action --> E_ErrorDestinationIndexSearch S_ErrorDestinationIndexSearch --> N_ErrorDestinationIndexSearch_Node0 N_ErrorDestinationIndexSearch_Node0 -- No --> E_ErrorDestinationIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index search request is received
WHEN:
The index type is ERR-DEST
THEN:
Search status table by error destination key, then retrieve primary cargo record using the cargo key from status record
β Consolidated Acceptance Criteria
- Index fields are being populated → the system should copy the waybill number from RT072 to RT073 waybill index and copy the equipment car number to RT073 car ID 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_PopulateCarWaybillCombinedIndex(["Start Step"])
E_PopulateCarWaybillCombinedIndex(["End Step"])
N_PopulateCarWaybillCombinedIndex_Node0{"Index fields are being populated"}:::decision
N_PopulateCarWaybillCombinedIndex_Node0_action["The system should copy the waybill
number from RT072 to RT073 waybill
index and copy the equipment car
number to RT073 car ID index"]:::main N_PopulateCarWaybillCombinedIndex_Node0 -- Yes --> N_PopulateCarWaybillCombinedIndex_Node0_action N_PopulateCarWaybillCombinedIndex_Node0_action --> E_PopulateCarWaybillCombinedIndex S_PopulateCarWaybillCombinedIndex --> N_PopulateCarWaybillCombinedIndex_Node0 N_PopulateCarWaybillCombinedIndex_Node0 -- No --> E_PopulateCarWaybillCombinedIndex
number from RT072 to RT073 waybill
index and copy the equipment car
number to RT073 car ID index"]:::main N_PopulateCarWaybillCombinedIndex_Node0 -- Yes --> N_PopulateCarWaybillCombinedIndex_Node0_action N_PopulateCarWaybillCombinedIndex_Node0_action --> E_PopulateCarWaybillCombinedIndex S_PopulateCarWaybillCombinedIndex --> N_PopulateCarWaybillCombinedIndex_Node0 N_PopulateCarWaybillCombinedIndex_Node0 -- No --> E_PopulateCarWaybillCombinedIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record has both car and waybill information
WHEN:
Index fields are being populated
THEN:
- The system should copy the waybill number from rt072 to rt073 waybill index
- Copy the equipment car number to rt073 car id index
β Consolidated Acceptance Criteria
- The bond index field is being populated → if in-bond control number is not empty, use it for bond index; otherwise if entry number is not empty, use entry number; otherwise clear the bond 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_BondControlNumberAvailable(["Start Step"])
E_BondControlNumberAvailable(["End Step"])
N_BondControlNumberAvailable_Node0{"The bond index field is being
populated"}:::decision N_BondControlNumberAvailable_Node0_action["If in-bond control number is not
empty, use it for bond index
otherwise if entry number is not
empty, use entry number otherwise
clear the bond index"]:::main N_BondControlNumberAvailable_Node0 -- Yes --> N_BondControlNumberAvailable_Node0_action N_BondControlNumberAvailable_Node0_action --> E_BondControlNumberAvailable S_BondControlNumberAvailable --> N_BondControlNumberAvailable_Node0 N_BondControlNumberAvailable_Node0 -- No --> E_BondControlNumberAvailable
populated"}:::decision N_BondControlNumberAvailable_Node0_action["If in-bond control number is not
empty, use it for bond index
otherwise if entry number is not
empty, use entry number otherwise
clear the bond index"]:::main N_BondControlNumberAvailable_Node0 -- Yes --> N_BondControlNumberAvailable_Node0_action N_BondControlNumberAvailable_Node0_action --> E_BondControlNumberAvailable S_BondControlNumberAvailable --> N_BondControlNumberAvailable_Node0 N_BondControlNumberAvailable_Node0 -- No --> E_BondControlNumberAvailable
File: GCCUSIO.cbl
GIVEN:
A cargo record may have bond-related numbers
WHEN:
The bond index field is being populated
THEN:
If in-bond control number is not empty, use it for bond index; otherwise if entry number is not empty, use entry number; otherwise clear the bond index
β Consolidated Acceptance Criteria
- The cargo record has deletion status flag set to true (88-GCUSRT-RT10-CPCARGO-DELETED) → the system skips all car ID index field population and exits the process immediately
- The cargo record has a deleted status indicator set to true → the system skips all car ID index field setting operations and exits the process
- The cargo record has a deleted status indicator (88-GCUSRT-RT10-CPCARGO-DELETED is true) → the system skips all waybill index processing and exits the extraction 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_IsCargoRecordDeleted(["Start Step"])
E_IsCargoRecordDeleted(["End Step"])
N_IsCargoRecordDeleted_Node0{"The cargo record has deletion
status flag set to true
88-GCUSRT-RT10-CPCARGO-DELETED"}:::decision N_IsCargoRecordDeleted_Node0_action["The system skips all car ID index
field population and exits the
process immediately"]:::main N_IsCargoRecordDeleted_Node0 -- Yes --> N_IsCargoRecordDeleted_Node0_action N_IsCargoRecordDeleted_Node0_action --> E_IsCargoRecordDeleted S_IsCargoRecordDeleted --> N_IsCargoRecordDeleted_Node0 N_IsCargoRecordDeleted_Node1{"The cargo record has a deleted
status indicator set to true"}:::decision N_IsCargoRecordDeleted_Node1_action["The system skips all car ID index
field setting operations and exits
the process"]:::main N_IsCargoRecordDeleted_Node1 -- Yes --> N_IsCargoRecordDeleted_Node1_action N_IsCargoRecordDeleted_Node1_action --> E_IsCargoRecordDeleted N_IsCargoRecordDeleted_Node0 -- No --> N_IsCargoRecordDeleted_Node1 N_IsCargoRecordDeleted_Node2{"The cargo record has a deleted
status indicator
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoRecordDeleted_Node2_action["The system skips all waybill index
processing and exits the extraction
process"]:::main N_IsCargoRecordDeleted_Node2 -- Yes --> N_IsCargoRecordDeleted_Node2_action N_IsCargoRecordDeleted_Node2_action --> E_IsCargoRecordDeleted N_IsCargoRecordDeleted_Node1 -- No --> N_IsCargoRecordDeleted_Node2 N_IsCargoRecordDeleted_Node2 -- No --> E_IsCargoRecordDeleted
status flag set to true
88-GCUSRT-RT10-CPCARGO-DELETED"}:::decision N_IsCargoRecordDeleted_Node0_action["The system skips all car ID index
field population and exits the
process immediately"]:::main N_IsCargoRecordDeleted_Node0 -- Yes --> N_IsCargoRecordDeleted_Node0_action N_IsCargoRecordDeleted_Node0_action --> E_IsCargoRecordDeleted S_IsCargoRecordDeleted --> N_IsCargoRecordDeleted_Node0 N_IsCargoRecordDeleted_Node1{"The cargo record has a deleted
status indicator set to true"}:::decision N_IsCargoRecordDeleted_Node1_action["The system skips all car ID index
field setting operations and exits
the process"]:::main N_IsCargoRecordDeleted_Node1 -- Yes --> N_IsCargoRecordDeleted_Node1_action N_IsCargoRecordDeleted_Node1_action --> E_IsCargoRecordDeleted N_IsCargoRecordDeleted_Node0 -- No --> N_IsCargoRecordDeleted_Node1 N_IsCargoRecordDeleted_Node2{"The cargo record has a deleted
status indicator
88-GCUSRT-RT10-CPCARGO-DELETED is
true"}:::decision N_IsCargoRecordDeleted_Node2_action["The system skips all waybill index
processing and exits the extraction
process"]:::main N_IsCargoRecordDeleted_Node2 -- Yes --> N_IsCargoRecordDeleted_Node2_action N_IsCargoRecordDeleted_Node2_action --> E_IsCargoRecordDeleted N_IsCargoRecordDeleted_Node1 -- No --> N_IsCargoRecordDeleted_Node2 N_IsCargoRecordDeleted_Node2 -- No --> E_IsCargoRecordDeleted
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for car ID index population
WHEN:
The cargo record has deletion status flag set to true (88-GCUSRT-RT10-CPCARGO-DELETED)
THEN:
- The system skips all car id index field population
- Exits the process immediately
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index field updates
WHEN:
The cargo record has a deleted status indicator set to true
THEN:
- The system skips all car id index field setting operations
- Exits the process
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for waybill index extraction
WHEN:
The cargo record has a deleted status indicator (88-GCUSRT-RT10-CPCARGO-DELETED is true)
THEN:
- The system skips all waybill index processing
- Exits the extraction process
β Consolidated Acceptance Criteria
- The system processes the record for car ID index population → the system extracts the equipment car information from field GCUSRT-RT081-EQUIPMENT-CAR for use in index 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_ExtractEquipmentCarInformation(["Start Step"])
E_ExtractEquipmentCarInformation(["End Step"])
N_ExtractEquipmentCarInformation_Node0{"The system processes the record for
car ID index population"}:::decision N_ExtractEquipmentCarInformation_Node0_action["The system extracts the equipment
car information from field
GCUSRT-RT081-EQUIPMENT-CAR for use
in index population"]:::main N_ExtractEquipmentCarInformation_Node0 -- Yes --> N_ExtractEquipmentCarInformation_Node0_action N_ExtractEquipmentCarInformation_Node0_action --> E_ExtractEquipmentCarInformation S_ExtractEquipmentCarInformation --> N_ExtractEquipmentCarInformation_Node0 N_ExtractEquipmentCarInformation_Node0 -- No --> E_ExtractEquipmentCarInformation
car ID index population"}:::decision N_ExtractEquipmentCarInformation_Node0_action["The system extracts the equipment
car information from field
GCUSRT-RT081-EQUIPMENT-CAR for use
in index population"]:::main N_ExtractEquipmentCarInformation_Node0 -- Yes --> N_ExtractEquipmentCarInformation_Node0_action N_ExtractEquipmentCarInformation_Node0_action --> E_ExtractEquipmentCarInformation S_ExtractEquipmentCarInformation --> N_ExtractEquipmentCarInformation_Node0 N_ExtractEquipmentCarInformation_Node0 -- No --> E_ExtractEquipmentCarInformation
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not marked as deleted
WHEN:
The system processes the record for car ID index population
THEN:
The system extracts the equipment car information from field GCUSRT-RT081-EQUIPMENT-CAR for use in index population
β Consolidated Acceptance Criteria
- The system populates car ID index fields → the equipment car value is moved to the primary car ID number index field GCUSRT-RT071-CAR-ID-NUM-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_SetCarIDNumberIndexField(["Start Step"])
E_SetCarIDNumberIndexField(["End Step"])
N_SetCarIDNumberIndexField_Node0{"The system populates car ID index
fields"}:::decision N_SetCarIDNumberIndexField_Node0_action["The equipment car value is moved to
the primary car ID number index
field GCUSRT-RT071-CAR-ID-NUM-INDEX"]:::main N_SetCarIDNumberIndexField_Node0 -- Yes --> N_SetCarIDNumberIndexField_Node0_action N_SetCarIDNumberIndexField_Node0_action --> E_SetCarIDNumberIndexField S_SetCarIDNumberIndexField --> N_SetCarIDNumberIndexField_Node0 N_SetCarIDNumberIndexField_Node0 -- No --> E_SetCarIDNumberIndexField
fields"}:::decision N_SetCarIDNumberIndexField_Node0_action["The equipment car value is moved to
the primary car ID number index
field GCUSRT-RT071-CAR-ID-NUM-INDEX"]:::main N_SetCarIDNumberIndexField_Node0 -- Yes --> N_SetCarIDNumberIndexField_Node0_action N_SetCarIDNumberIndexField_Node0_action --> E_SetCarIDNumberIndexField S_SetCarIDNumberIndexField --> N_SetCarIDNumberIndexField_Node0 N_SetCarIDNumberIndexField_Node0 -- No --> E_SetCarIDNumberIndexField
File: GCCUSIO.cbl
GIVEN:
Equipment car information has been extracted from an active cargo record
WHEN:
The system populates car ID index fields
THEN:
The equipment car value is moved to the primary car ID number index field GCUSRT-RT071-CAR-ID-NUM-INDEX
β Consolidated Acceptance Criteria
- The system updates combined index fields → the equipment car value is also moved to the car-waybill combined index field GCUSRT-RT073-CAR-ID-NUM-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_UpdateCarWaybillCombinedIndex(["Start Step"])
E_UpdateCarWaybillCombinedIndex(["End Step"])
N_UpdateCarWaybillCombinedIndex_Node0{"The system updates combined index
fields"}:::decision N_UpdateCarWaybillCombinedIndex_Node0_action["The equipment car value is also
moved to the car-waybill combined
index field
GCUSRT-RT073-CAR-ID-NUM-INDEX"]:::main N_UpdateCarWaybillCombinedIndex_Node0 -- Yes --> N_UpdateCarWaybillCombinedIndex_Node0_action N_UpdateCarWaybillCombinedIndex_Node0_action --> E_UpdateCarWaybillCombinedIndex S_UpdateCarWaybillCombinedIndex --> N_UpdateCarWaybillCombinedIndex_Node0 N_UpdateCarWaybillCombinedIndex_Node0 -- No --> E_UpdateCarWaybillCombinedIndex
fields"}:::decision N_UpdateCarWaybillCombinedIndex_Node0_action["The equipment car value is also
moved to the car-waybill combined
index field
GCUSRT-RT073-CAR-ID-NUM-INDEX"]:::main N_UpdateCarWaybillCombinedIndex_Node0 -- Yes --> N_UpdateCarWaybillCombinedIndex_Node0_action N_UpdateCarWaybillCombinedIndex_Node0_action --> E_UpdateCarWaybillCombinedIndex S_UpdateCarWaybillCombinedIndex --> N_UpdateCarWaybillCombinedIndex_Node0 N_UpdateCarWaybillCombinedIndex_Node0 -- No --> E_UpdateCarWaybillCombinedIndex
File: GCCUSIO.cbl
GIVEN:
The primary car ID number index has been populated with equipment car information
WHEN:
The system updates combined index fields
THEN:
The equipment car value is also moved to the car-waybill combined index field GCUSRT-RT073-CAR-ID-NUM-INDEX
β Consolidated Acceptance Criteria
- The cargo record has a deleted status indicator set to true → the system skips all waybill index field population and exits 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_CargoRecordDeleted(["Start Step"])
E_CargoRecordDeleted(["End Step"])
N_CargoRecordDeleted_Node0{"The cargo record has a deleted
status indicator set to true"}:::decision N_CargoRecordDeleted_Node0_action["The system skips all waybill index
field population and exits the
process"]:::main N_CargoRecordDeleted_Node0 -- Yes --> N_CargoRecordDeleted_Node0_action N_CargoRecordDeleted_Node0_action --> E_CargoRecordDeleted S_CargoRecordDeleted --> N_CargoRecordDeleted_Node0 N_CargoRecordDeleted_Node0 -- No --> E_CargoRecordDeleted
status indicator set to true"}:::decision N_CargoRecordDeleted_Node0_action["The system skips all waybill index
field population and exits the
process"]:::main N_CargoRecordDeleted_Node0 -- Yes --> N_CargoRecordDeleted_Node0_action N_CargoRecordDeleted_Node0_action --> E_CargoRecordDeleted S_CargoRecordDeleted --> N_CargoRecordDeleted_Node0 N_CargoRecordDeleted_Node0 -- No --> E_CargoRecordDeleted
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for waybill index field population
WHEN:
The cargo record has a deleted status indicator set to true
THEN:
- The system skips all waybill index field population
- Exits the process
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the road number from the cargo equipment data (RT082-ROAD-NUM) is copied to the waybill road index field (RT072-ROAD-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_ExtractRoadNumberfromCargoData(["Start Step"])
E_ExtractRoadNumberfromCargoData(["End Step"])
N_ExtractRoadNumberfromCargoData_Node0{"The system processes waybill index
fields"}:::decision N_ExtractRoadNumberfromCargoData_Node0_action["The road number from the cargo
equipment data RT082-ROAD-NUM is
copied to the waybill road index
field RT072-ROAD-INDEX"]:::main N_ExtractRoadNumberfromCargoData_Node0 -- Yes --> N_ExtractRoadNumberfromCargoData_Node0_action N_ExtractRoadNumberfromCargoData_Node0_action --> E_ExtractRoadNumberfromCargoData S_ExtractRoadNumberfromCargoData --> N_ExtractRoadNumberfromCargoData_Node0 N_ExtractRoadNumberfromCargoData_Node0 -- No --> E_ExtractRoadNumberfromCargoData
fields"}:::decision N_ExtractRoadNumberfromCargoData_Node0_action["The road number from the cargo
equipment data RT082-ROAD-NUM is
copied to the waybill road index
field RT072-ROAD-INDEX"]:::main N_ExtractRoadNumberfromCargoData_Node0 -- Yes --> N_ExtractRoadNumberfromCargoData_Node0_action N_ExtractRoadNumberfromCargoData_Node0_action --> E_ExtractRoadNumberfromCargoData S_ExtractRoadNumberfromCargoData --> N_ExtractRoadNumberfromCargoData_Node0 N_ExtractRoadNumberfromCargoData_Node0 -- No --> E_ExtractRoadNumberfromCargoData
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index fields
THEN:
The road number from the cargo equipment data (RT082-ROAD-NUM) is copied to the waybill road index field (RT072-ROAD-INDEX)
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the station number from the cargo equipment data (RT082-STN-NUM) is copied to the waybill station index field (RT072-STN-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_ExtractStationNumberfromCargoData(["Start Step"])
E_ExtractStationNumberfromCargoData(["End Step"])
N_ExtractStationNumberfromCargoData_Node0{"The system processes waybill index
fields"}:::decision N_ExtractStationNumberfromCargoData_Node0_action["The station number from the cargo
equipment data RT082-STN-NUM is
copied to the waybill station index
field RT072-STN-INDEX"]:::main N_ExtractStationNumberfromCargoData_Node0 -- Yes --> N_ExtractStationNumberfromCargoData_Node0_action N_ExtractStationNumberfromCargoData_Node0_action --> E_ExtractStationNumberfromCargoData S_ExtractStationNumberfromCargoData --> N_ExtractStationNumberfromCargoData_Node0 N_ExtractStationNumberfromCargoData_Node0 -- No --> E_ExtractStationNumberfromCargoData
fields"}:::decision N_ExtractStationNumberfromCargoData_Node0_action["The station number from the cargo
equipment data RT082-STN-NUM is
copied to the waybill station index
field RT072-STN-INDEX"]:::main N_ExtractStationNumberfromCargoData_Node0 -- Yes --> N_ExtractStationNumberfromCargoData_Node0_action N_ExtractStationNumberfromCargoData_Node0_action --> E_ExtractStationNumberfromCargoData S_ExtractStationNumberfromCargoData --> N_ExtractStationNumberfromCargoData_Node0 N_ExtractStationNumberfromCargoData_Node0 -- No --> E_ExtractStationNumberfromCargoData
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index fields
THEN:
The station number from the cargo equipment data (RT082-STN-NUM) is copied to the waybill station index field (RT072-STN-INDEX)
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the waybill number from the cargo equipment data (RT082-WB-NUM) is copied to the waybill number index field (RT072-WB-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_ExtractWaybillNumberfromCargoData(["Start Step"])
E_ExtractWaybillNumberfromCargoData(["End Step"])
N_ExtractWaybillNumberfromCargoData_Node0{"The system processes waybill index
fields"}:::decision N_ExtractWaybillNumberfromCargoData_Node0_action["The waybill number from the cargo
equipment data RT082-WB-NUM is
copied to the waybill number index
field RT072-WB-INDEX"]:::main N_ExtractWaybillNumberfromCargoData_Node0 -- Yes --> N_ExtractWaybillNumberfromCargoData_Node0_action N_ExtractWaybillNumberfromCargoData_Node0_action --> E_ExtractWaybillNumberfromCargoData S_ExtractWaybillNumberfromCargoData --> N_ExtractWaybillNumberfromCargoData_Node0 N_ExtractWaybillNumberfromCargoData_Node0 -- No --> E_ExtractWaybillNumberfromCargoData
fields"}:::decision N_ExtractWaybillNumberfromCargoData_Node0_action["The waybill number from the cargo
equipment data RT082-WB-NUM is
copied to the waybill number index
field RT072-WB-INDEX"]:::main N_ExtractWaybillNumberfromCargoData_Node0 -- Yes --> N_ExtractWaybillNumberfromCargoData_Node0_action N_ExtractWaybillNumberfromCargoData_Node0_action --> E_ExtractWaybillNumberfromCargoData S_ExtractWaybillNumberfromCargoData --> N_ExtractWaybillNumberfromCargoData_Node0 N_ExtractWaybillNumberfromCargoData_Node0 -- No --> E_ExtractWaybillNumberfromCargoData
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index fields
THEN:
The waybill number from the cargo equipment data (RT082-WB-NUM) is copied to the waybill number index field (RT072-WB-INDEX)
β Consolidated Acceptance Criteria
- The system processes waybill index fields → the waybill date from the cargo equipment data (RT082-WB-DTE) is copied to the waybill date index field (RT072-WB-DTE-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_ExtractWaybillDatefromCargoData(["Start Step"])
E_ExtractWaybillDatefromCargoData(["End Step"])
N_ExtractWaybillDatefromCargoData_Node0{"The system processes waybill index
fields"}:::decision N_ExtractWaybillDatefromCargoData_Node0_action["The waybill date from the cargo
equipment data RT082-WB-DTE is
copied to the waybill date index
field RT072-WB-DTE-INDEX"]:::main N_ExtractWaybillDatefromCargoData_Node0 -- Yes --> N_ExtractWaybillDatefromCargoData_Node0_action N_ExtractWaybillDatefromCargoData_Node0_action --> E_ExtractWaybillDatefromCargoData S_ExtractWaybillDatefromCargoData --> N_ExtractWaybillDatefromCargoData_Node0 N_ExtractWaybillDatefromCargoData_Node0 -- No --> E_ExtractWaybillDatefromCargoData
fields"}:::decision N_ExtractWaybillDatefromCargoData_Node0_action["The waybill date from the cargo
equipment data RT082-WB-DTE is
copied to the waybill date index
field RT072-WB-DTE-INDEX"]:::main N_ExtractWaybillDatefromCargoData_Node0 -- Yes --> N_ExtractWaybillDatefromCargoData_Node0_action N_ExtractWaybillDatefromCargoData_Node0_action --> E_ExtractWaybillDatefromCargoData S_ExtractWaybillDatefromCargoData --> N_ExtractWaybillDatefromCargoData_Node0 N_ExtractWaybillDatefromCargoData_Node0 -- No --> E_ExtractWaybillDatefromCargoData
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index fields
THEN:
The waybill date from the cargo equipment data (RT082-WB-DTE) is copied to the waybill date index field (RT072-WB-DTE-INDEX)
β Consolidated Acceptance Criteria
- The in-bond control number field (GCUSRT-M1206-IN-BOND-CTRL-NUM) contains a value other than spaces → the in-bond control number should be used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
- The in-bond control number field (GCUSRT-M1206-IN-BOND-CTRL-NUM) contains a value other than spaces → the in-bond control number is used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
- If available bond control numbers and the in-bond control number field (M1206) is not empty → the system uses the in-bond control number as the bond number index 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_InBondControlNumberAvailable(["Start Step"])
E_InBondControlNumberAvailable(["End Step"])
N_InBondControlNumberAvailable_Node0{"The in-bond control number field
GCUSRT-M1206-IN-BOND-CTRL-NUM
contains a value other than spaces"}:::decision N_InBondControlNumberAvailable_Node0_action["The in-bond control number should
be used to populate the bond number
index field
GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_InBondControlNumberAvailable_Node0 -- Yes --> N_InBondControlNumberAvailable_Node0_action N_InBondControlNumberAvailable_Node0_action --> E_InBondControlNumberAvailable S_InBondControlNumberAvailable --> N_InBondControlNumberAvailable_Node0 N_InBondControlNumberAvailable_Node1{"The in-bond control number field
GCUSRT-M1206-IN-BOND-CTRL-NUM
contains a value other than spaces"}:::decision N_InBondControlNumberAvailable_Node1_action["The in-bond control number is used
to populate the bond number index
field GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_InBondControlNumberAvailable_Node1 -- Yes --> N_InBondControlNumberAvailable_Node1_action N_InBondControlNumberAvailable_Node1_action --> E_InBondControlNumberAvailable N_InBondControlNumberAvailable_Node0 -- No --> N_InBondControlNumberAvailable_Node1 N_InBondControlNumberAvailable_Node2{"The system evaluates available bond
control numbers and the in-bond
control number field M1206 is not
empty"}:::decision N_InBondControlNumberAvailable_Node2_action["The system uses the in-bond control
number as the bond number index
value"]:::main N_InBondControlNumberAvailable_Node2 -- Yes --> N_InBondControlNumberAvailable_Node2_action N_InBondControlNumberAvailable_Node2_action --> E_InBondControlNumberAvailable N_InBondControlNumberAvailable_Node1 -- No --> N_InBondControlNumberAvailable_Node2 N_InBondControlNumberAvailable_Node2 -- No --> E_InBondControlNumberAvailable
GCUSRT-M1206-IN-BOND-CTRL-NUM
contains a value other than spaces"}:::decision N_InBondControlNumberAvailable_Node0_action["The in-bond control number should
be used to populate the bond number
index field
GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_InBondControlNumberAvailable_Node0 -- Yes --> N_InBondControlNumberAvailable_Node0_action N_InBondControlNumberAvailable_Node0_action --> E_InBondControlNumberAvailable S_InBondControlNumberAvailable --> N_InBondControlNumberAvailable_Node0 N_InBondControlNumberAvailable_Node1{"The in-bond control number field
GCUSRT-M1206-IN-BOND-CTRL-NUM
contains a value other than spaces"}:::decision N_InBondControlNumberAvailable_Node1_action["The in-bond control number is used
to populate the bond number index
field GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_InBondControlNumberAvailable_Node1 -- Yes --> N_InBondControlNumberAvailable_Node1_action N_InBondControlNumberAvailable_Node1_action --> E_InBondControlNumberAvailable N_InBondControlNumberAvailable_Node0 -- No --> N_InBondControlNumberAvailable_Node1 N_InBondControlNumberAvailable_Node2{"The system evaluates available bond
control numbers and the in-bond
control number field M1206 is not
empty"}:::decision N_InBondControlNumberAvailable_Node2_action["The system uses the in-bond control
number as the bond number index
value"]:::main N_InBondControlNumberAvailable_Node2 -- Yes --> N_InBondControlNumberAvailable_Node2_action N_InBondControlNumberAvailable_Node2_action --> E_InBondControlNumberAvailable N_InBondControlNumberAvailable_Node1 -- No --> N_InBondControlNumberAvailable_Node2 N_InBondControlNumberAvailable_Node2 -- No --> E_InBondControlNumberAvailable
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond index population and the cargo is not deleted
WHEN:
The in-bond control number field (GCUSRT-M1206-IN-BOND-CTRL-NUM) contains a value other than spaces
THEN:
The in-bond control number should be used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond number index population and cargo is not deleted
WHEN:
The in-bond control number field (GCUSRT-M1206-IN-BOND-CTRL-NUM) contains a value other than spaces
THEN:
The in-bond control number is used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond number indexing for tracking purposes
WHEN:
- The system evaluates available bond control numbers
- The in-bond control number field (m1206) is not empty
THEN:
The system uses the in-bond control number as the bond number index value
β Consolidated Acceptance Criteria
- The entry number field (GCUSRT-M1202-ENTRY-NUM) contains a value other than spaces → the entry number should be used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
- The entry number field (GCUSRT-M1202-ENTRY-NUM) contains a value other than spaces → the entry number is used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
- If the entry number field (M1202) and it is not empty → the system uses the entry number as the bond number index 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_EntryNumberAvailable(["Start Step"])
E_EntryNumberAvailable(["End Step"])
N_EntryNumberAvailable_Node0{"The entry number field
GCUSRT-M1202-ENTRY-NUM contains a
value other than spaces"}:::decision N_EntryNumberAvailable_Node0_action["The entry number should be used to
populate the bond number index field
GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_EntryNumberAvailable_Node0 -- Yes --> N_EntryNumberAvailable_Node0_action N_EntryNumberAvailable_Node0_action --> E_EntryNumberAvailable S_EntryNumberAvailable --> N_EntryNumberAvailable_Node0 N_EntryNumberAvailable_Node1{"The entry number field
GCUSRT-M1202-ENTRY-NUM contains a
value other than spaces"}:::decision N_EntryNumberAvailable_Node1_action["The entry number is used to
populate the bond number index field
GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_EntryNumberAvailable_Node1 -- Yes --> N_EntryNumberAvailable_Node1_action N_EntryNumberAvailable_Node1_action --> E_EntryNumberAvailable N_EntryNumberAvailable_Node0 -- No --> N_EntryNumberAvailable_Node1 N_EntryNumberAvailable_Node2{"The system evaluates the entry
number field M1202 and it is not
empty"}:::decision N_EntryNumberAvailable_Node2_action["The system uses the entry number as
the bond number index value"]:::main N_EntryNumberAvailable_Node2 -- Yes --> N_EntryNumberAvailable_Node2_action N_EntryNumberAvailable_Node2_action --> E_EntryNumberAvailable N_EntryNumberAvailable_Node1 -- No --> N_EntryNumberAvailable_Node2 N_EntryNumberAvailable_Node2 -- No --> E_EntryNumberAvailable
GCUSRT-M1202-ENTRY-NUM contains a
value other than spaces"}:::decision N_EntryNumberAvailable_Node0_action["The entry number should be used to
populate the bond number index field
GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_EntryNumberAvailable_Node0 -- Yes --> N_EntryNumberAvailable_Node0_action N_EntryNumberAvailable_Node0_action --> E_EntryNumberAvailable S_EntryNumberAvailable --> N_EntryNumberAvailable_Node0 N_EntryNumberAvailable_Node1{"The entry number field
GCUSRT-M1202-ENTRY-NUM contains a
value other than spaces"}:::decision N_EntryNumberAvailable_Node1_action["The entry number is used to
populate the bond number index field
GCUSRT-RT074-BOND-NUM-INDEX"]:::main N_EntryNumberAvailable_Node1 -- Yes --> N_EntryNumberAvailable_Node1_action N_EntryNumberAvailable_Node1_action --> E_EntryNumberAvailable N_EntryNumberAvailable_Node0 -- No --> N_EntryNumberAvailable_Node1 N_EntryNumberAvailable_Node2{"The system evaluates the entry
number field M1202 and it is not
empty"}:::decision N_EntryNumberAvailable_Node2_action["The system uses the entry number as
the bond number index value"]:::main N_EntryNumberAvailable_Node2 -- Yes --> N_EntryNumberAvailable_Node2_action N_EntryNumberAvailable_Node2_action --> E_EntryNumberAvailable N_EntryNumberAvailable_Node1 -- No --> N_EntryNumberAvailable_Node2 N_EntryNumberAvailable_Node2 -- No --> E_EntryNumberAvailable
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond index population, the cargo is not deleted, and the in-bond control number is spaces
WHEN:
The entry number field (GCUSRT-M1202-ENTRY-NUM) contains a value other than spaces
THEN:
The entry number should be used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond number index population, cargo is not deleted, and in-bond control number is not available (spaces)
WHEN:
The entry number field (GCUSRT-M1202-ENTRY-NUM) contains a value other than spaces
THEN:
The entry number is used to populate the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX)
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond number indexing and the in-bond control number is empty
WHEN:
The system evaluates the entry number field (M1202) and it is not empty
THEN:
The system uses the entry number as the bond number index value
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'OK'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoOK(["Start Step"])
E_SetStatusDescriptiontoOK(["End Step"])
N_SetStatusDescriptiontoOK_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoOK_Node0_action["The cargo status description field
is set to OK"]:::main N_SetStatusDescriptiontoOK_Node0 -- Yes --> N_SetStatusDescriptiontoOK_Node0_action N_SetStatusDescriptiontoOK_Node0_action --> E_SetStatusDescriptiontoOK S_SetStatusDescriptiontoOK --> N_SetStatusDescriptiontoOK_Node0 N_SetStatusDescriptiontoOK_Node0 -- No --> E_SetStatusDescriptiontoOK
description setting"}:::decision N_SetStatusDescriptiontoOK_Node0_action["The cargo status description field
is set to OK"]:::main N_SetStatusDescriptiontoOK_Node0 -- Yes --> N_SetStatusDescriptiontoOK_Node0_action N_SetStatusDescriptiontoOK_Node0_action --> E_SetStatusDescriptiontoOK S_SetStatusDescriptiontoOK --> N_SetStatusDescriptiontoOK_Node0 N_SetStatusDescriptiontoOK_Node0 -- No --> E_SetStatusDescriptiontoOK
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating OK status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'OK'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'PENDING'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoPENDING(["Start Step"])
E_SetStatusDescriptiontoPENDING(["End Step"])
N_SetStatusDescriptiontoPENDING_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoPENDING_Node0_action["The cargo status description field
is set to PENDING"]:::main N_SetStatusDescriptiontoPENDING_Node0 -- Yes --> N_SetStatusDescriptiontoPENDING_Node0_action N_SetStatusDescriptiontoPENDING_Node0_action --> E_SetStatusDescriptiontoPENDING S_SetStatusDescriptiontoPENDING --> N_SetStatusDescriptiontoPENDING_Node0 N_SetStatusDescriptiontoPENDING_Node0 -- No --> E_SetStatusDescriptiontoPENDING
description setting"}:::decision N_SetStatusDescriptiontoPENDING_Node0_action["The cargo status description field
is set to PENDING"]:::main N_SetStatusDescriptiontoPENDING_Node0 -- Yes --> N_SetStatusDescriptiontoPENDING_Node0_action N_SetStatusDescriptiontoPENDING_Node0_action --> E_SetStatusDescriptiontoPENDING S_SetStatusDescriptiontoPENDING --> N_SetStatusDescriptiontoPENDING_Node0 N_SetStatusDescriptiontoPENDING_Node0 -- No --> E_SetStatusDescriptiontoPENDING
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating PENDING status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'PENDING'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'ACK'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoACKNOWLEDGED(["Start Step"])
E_SetStatusDescriptiontoACKNOWLEDGED(["End Step"])
N_SetStatusDescriptiontoACKNOWLEDGED_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoACKNOWLEDGED_Node0_action["The cargo status description field
is set to ACK"]:::main N_SetStatusDescriptiontoACKNOWLEDGED_Node0 -- Yes --> N_SetStatusDescriptiontoACKNOWLEDGED_Node0_action N_SetStatusDescriptiontoACKNOWLEDGED_Node0_action --> E_SetStatusDescriptiontoACKNOWLEDGED S_SetStatusDescriptiontoACKNOWLEDGED --> N_SetStatusDescriptiontoACKNOWLEDGED_Node0 N_SetStatusDescriptiontoACKNOWLEDGED_Node0 -- No --> E_SetStatusDescriptiontoACKNOWLEDGED
description setting"}:::decision N_SetStatusDescriptiontoACKNOWLEDGED_Node0_action["The cargo status description field
is set to ACK"]:::main N_SetStatusDescriptiontoACKNOWLEDGED_Node0 -- Yes --> N_SetStatusDescriptiontoACKNOWLEDGED_Node0_action N_SetStatusDescriptiontoACKNOWLEDGED_Node0_action --> E_SetStatusDescriptiontoACKNOWLEDGED S_SetStatusDescriptiontoACKNOWLEDGED --> N_SetStatusDescriptiontoACKNOWLEDGED_Node0 N_SetStatusDescriptiontoACKNOWLEDGED_Node0 -- No --> E_SetStatusDescriptiontoACKNOWLEDGED
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating ACKNOWLEDGED status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'ACK'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to '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_SetStatusDescriptiontoERROR(["Start Step"])
E_SetStatusDescriptiontoERROR(["End Step"])
N_SetStatusDescriptiontoERROR_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoERROR_Node0_action["The cargo status description field
is set to ERROR"]:::main N_SetStatusDescriptiontoERROR_Node0 -- Yes --> N_SetStatusDescriptiontoERROR_Node0_action N_SetStatusDescriptiontoERROR_Node0_action --> E_SetStatusDescriptiontoERROR S_SetStatusDescriptiontoERROR --> N_SetStatusDescriptiontoERROR_Node0 N_SetStatusDescriptiontoERROR_Node0 -- No --> E_SetStatusDescriptiontoERROR
description setting"}:::decision N_SetStatusDescriptiontoERROR_Node0_action["The cargo status description field
is set to ERROR"]:::main N_SetStatusDescriptiontoERROR_Node0 -- Yes --> N_SetStatusDescriptiontoERROR_Node0_action N_SetStatusDescriptiontoERROR_Node0_action --> E_SetStatusDescriptiontoERROR S_SetStatusDescriptiontoERROR --> N_SetStatusDescriptiontoERROR_Node0 N_SetStatusDescriptiontoERROR_Node0 -- No --> E_SetStatusDescriptiontoERROR
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating ERROR status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'ERROR'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'SENT'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoSENT(["Start Step"])
E_SetStatusDescriptiontoSENT(["End Step"])
N_SetStatusDescriptiontoSENT_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoSENT_Node0_action["The cargo status description field
is set to SENT"]:::main N_SetStatusDescriptiontoSENT_Node0 -- Yes --> N_SetStatusDescriptiontoSENT_Node0_action N_SetStatusDescriptiontoSENT_Node0_action --> E_SetStatusDescriptiontoSENT S_SetStatusDescriptiontoSENT --> N_SetStatusDescriptiontoSENT_Node0 N_SetStatusDescriptiontoSENT_Node0 -- No --> E_SetStatusDescriptiontoSENT
description setting"}:::decision N_SetStatusDescriptiontoSENT_Node0_action["The cargo status description field
is set to SENT"]:::main N_SetStatusDescriptiontoSENT_Node0 -- Yes --> N_SetStatusDescriptiontoSENT_Node0_action N_SetStatusDescriptiontoSENT_Node0_action --> E_SetStatusDescriptiontoSENT S_SetStatusDescriptiontoSENT --> N_SetStatusDescriptiontoSENT_Node0 N_SetStatusDescriptiontoSENT_Node0 -- No --> E_SetStatusDescriptiontoSENT
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating SENT status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'SENT'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'DELETED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoDELETED(["Start Step"])
E_SetStatusDescriptiontoDELETED(["End Step"])
N_SetStatusDescriptiontoDELETED_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoDELETED_Node0_action["The cargo status description field
is set to DELETED"]:::main N_SetStatusDescriptiontoDELETED_Node0 -- Yes --> N_SetStatusDescriptiontoDELETED_Node0_action N_SetStatusDescriptiontoDELETED_Node0_action --> E_SetStatusDescriptiontoDELETED S_SetStatusDescriptiontoDELETED --> N_SetStatusDescriptiontoDELETED_Node0 N_SetStatusDescriptiontoDELETED_Node0 -- No --> E_SetStatusDescriptiontoDELETED
description setting"}:::decision N_SetStatusDescriptiontoDELETED_Node0_action["The cargo status description field
is set to DELETED"]:::main N_SetStatusDescriptiontoDELETED_Node0 -- Yes --> N_SetStatusDescriptiontoDELETED_Node0_action N_SetStatusDescriptiontoDELETED_Node0_action --> E_SetStatusDescriptiontoDELETED S_SetStatusDescriptiontoDELETED --> N_SetStatusDescriptiontoDELETED_Node0 N_SetStatusDescriptiontoDELETED_Node0 -- No --> E_SetStatusDescriptiontoDELETED
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating DELETED status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'DELETED'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'DELPEND'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoDELETEPENDING(["Start Step"])
E_SetStatusDescriptiontoDELETEPENDING(["End Step"])
N_SetStatusDescriptiontoDELETEPENDING_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoDELETEPENDING_Node0_action["The cargo status description field
is set to DELPEND"]:::main N_SetStatusDescriptiontoDELETEPENDING_Node0 -- Yes --> N_SetStatusDescriptiontoDELETEPENDING_Node0_action N_SetStatusDescriptiontoDELETEPENDING_Node0_action --> E_SetStatusDescriptiontoDELETEPENDING S_SetStatusDescriptiontoDELETEPENDING --> N_SetStatusDescriptiontoDELETEPENDING_Node0 N_SetStatusDescriptiontoDELETEPENDING_Node0 -- No --> E_SetStatusDescriptiontoDELETEPENDING
description setting"}:::decision N_SetStatusDescriptiontoDELETEPENDING_Node0_action["The cargo status description field
is set to DELPEND"]:::main N_SetStatusDescriptiontoDELETEPENDING_Node0 -- Yes --> N_SetStatusDescriptiontoDELETEPENDING_Node0_action N_SetStatusDescriptiontoDELETEPENDING_Node0_action --> E_SetStatusDescriptiontoDELETEPENDING S_SetStatusDescriptiontoDELETEPENDING --> N_SetStatusDescriptiontoDELETEPENDING_Node0 N_SetStatusDescriptiontoDELETEPENDING_Node0 -- No --> E_SetStatusDescriptiontoDELETEPENDING
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating DELETE PENDING status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'DELPEND'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'RELEASED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoRELEASED(["Start Step"])
E_SetStatusDescriptiontoRELEASED(["End Step"])
N_SetStatusDescriptiontoRELEASED_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoRELEASED_Node0_action["The cargo status description field
is set to RELEASED"]:::main N_SetStatusDescriptiontoRELEASED_Node0 -- Yes --> N_SetStatusDescriptiontoRELEASED_Node0_action N_SetStatusDescriptiontoRELEASED_Node0_action --> E_SetStatusDescriptiontoRELEASED S_SetStatusDescriptiontoRELEASED --> N_SetStatusDescriptiontoRELEASED_Node0 N_SetStatusDescriptiontoRELEASED_Node0 -- No --> E_SetStatusDescriptiontoRELEASED
description setting"}:::decision N_SetStatusDescriptiontoRELEASED_Node0_action["The cargo status description field
is set to RELEASED"]:::main N_SetStatusDescriptiontoRELEASED_Node0 -- Yes --> N_SetStatusDescriptiontoRELEASED_Node0_action N_SetStatusDescriptiontoRELEASED_Node0_action --> E_SetStatusDescriptiontoRELEASED S_SetStatusDescriptiontoRELEASED --> N_SetStatusDescriptiontoRELEASED_Node0 N_SetStatusDescriptiontoRELEASED_Node0 -- No --> E_SetStatusDescriptiontoRELEASED
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating RELEASED status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'RELEASED'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'MNL-ARRV'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoMANUALARRIVAL(["Start Step"])
E_SetStatusDescriptiontoMANUALARRIVAL(["End Step"])
N_SetStatusDescriptiontoMANUALARRIVAL_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoMANUALARRIVAL_Node0_action["The cargo status description field
is set to MNL-ARRV"]:::main N_SetStatusDescriptiontoMANUALARRIVAL_Node0 -- Yes --> N_SetStatusDescriptiontoMANUALARRIVAL_Node0_action N_SetStatusDescriptiontoMANUALARRIVAL_Node0_action --> E_SetStatusDescriptiontoMANUALARRIVAL S_SetStatusDescriptiontoMANUALARRIVAL --> N_SetStatusDescriptiontoMANUALARRIVAL_Node0 N_SetStatusDescriptiontoMANUALARRIVAL_Node0 -- No --> E_SetStatusDescriptiontoMANUALARRIVAL
description setting"}:::decision N_SetStatusDescriptiontoMANUALARRIVAL_Node0_action["The cargo status description field
is set to MNL-ARRV"]:::main N_SetStatusDescriptiontoMANUALARRIVAL_Node0 -- Yes --> N_SetStatusDescriptiontoMANUALARRIVAL_Node0_action N_SetStatusDescriptiontoMANUALARRIVAL_Node0_action --> E_SetStatusDescriptiontoMANUALARRIVAL S_SetStatusDescriptiontoMANUALARRIVAL --> N_SetStatusDescriptiontoMANUALARRIVAL_Node0 N_SetStatusDescriptiontoMANUALARRIVAL_Node0 -- No --> E_SetStatusDescriptiontoMANUALARRIVAL
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating ARRIVAL status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'MNL-ARRV'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'AUT-ARRV'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoAUTOARRIVAL(["Start Step"])
E_SetStatusDescriptiontoAUTOARRIVAL(["End Step"])
N_SetStatusDescriptiontoAUTOARRIVAL_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoAUTOARRIVAL_Node0_action["The cargo status description field
is set to AUT-ARRV"]:::main N_SetStatusDescriptiontoAUTOARRIVAL_Node0 -- Yes --> N_SetStatusDescriptiontoAUTOARRIVAL_Node0_action N_SetStatusDescriptiontoAUTOARRIVAL_Node0_action --> E_SetStatusDescriptiontoAUTOARRIVAL S_SetStatusDescriptiontoAUTOARRIVAL --> N_SetStatusDescriptiontoAUTOARRIVAL_Node0 N_SetStatusDescriptiontoAUTOARRIVAL_Node0 -- No --> E_SetStatusDescriptiontoAUTOARRIVAL
description setting"}:::decision N_SetStatusDescriptiontoAUTOARRIVAL_Node0_action["The cargo status description field
is set to AUT-ARRV"]:::main N_SetStatusDescriptiontoAUTOARRIVAL_Node0 -- Yes --> N_SetStatusDescriptiontoAUTOARRIVAL_Node0_action N_SetStatusDescriptiontoAUTOARRIVAL_Node0_action --> E_SetStatusDescriptiontoAUTOARRIVAL S_SetStatusDescriptiontoAUTOARRIVAL --> N_SetStatusDescriptiontoAUTOARRIVAL_Node0 N_SetStatusDescriptiontoAUTOARRIVAL_Node0 -- No --> E_SetStatusDescriptiontoAUTOARRIVAL
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating AUTO ARRIVAL status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'AUT-ARRV'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'MNL-EXP'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoMANUALEXPORT(["Start Step"])
E_SetStatusDescriptiontoMANUALEXPORT(["End Step"])
N_SetStatusDescriptiontoMANUALEXPORT_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoMANUALEXPORT_Node0_action["The cargo status description field
is set to MNL-EXP"]:::main N_SetStatusDescriptiontoMANUALEXPORT_Node0 -- Yes --> N_SetStatusDescriptiontoMANUALEXPORT_Node0_action N_SetStatusDescriptiontoMANUALEXPORT_Node0_action --> E_SetStatusDescriptiontoMANUALEXPORT S_SetStatusDescriptiontoMANUALEXPORT --> N_SetStatusDescriptiontoMANUALEXPORT_Node0 N_SetStatusDescriptiontoMANUALEXPORT_Node0 -- No --> E_SetStatusDescriptiontoMANUALEXPORT
description setting"}:::decision N_SetStatusDescriptiontoMANUALEXPORT_Node0_action["The cargo status description field
is set to MNL-EXP"]:::main N_SetStatusDescriptiontoMANUALEXPORT_Node0 -- Yes --> N_SetStatusDescriptiontoMANUALEXPORT_Node0_action N_SetStatusDescriptiontoMANUALEXPORT_Node0_action --> E_SetStatusDescriptiontoMANUALEXPORT S_SetStatusDescriptiontoMANUALEXPORT --> N_SetStatusDescriptiontoMANUALEXPORT_Node0 N_SetStatusDescriptiontoMANUALEXPORT_Node0 -- No --> E_SetStatusDescriptiontoMANUALEXPORT
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating EXPORT status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'MNL-EXP'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'AUT-EXP'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoAUTOEXPORT(["Start Step"])
E_SetStatusDescriptiontoAUTOEXPORT(["End Step"])
N_SetStatusDescriptiontoAUTOEXPORT_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoAUTOEXPORT_Node0_action["The cargo status description field
is set to AUT-EXP"]:::main N_SetStatusDescriptiontoAUTOEXPORT_Node0 -- Yes --> N_SetStatusDescriptiontoAUTOEXPORT_Node0_action N_SetStatusDescriptiontoAUTOEXPORT_Node0_action --> E_SetStatusDescriptiontoAUTOEXPORT S_SetStatusDescriptiontoAUTOEXPORT --> N_SetStatusDescriptiontoAUTOEXPORT_Node0 N_SetStatusDescriptiontoAUTOEXPORT_Node0 -- No --> E_SetStatusDescriptiontoAUTOEXPORT
description setting"}:::decision N_SetStatusDescriptiontoAUTOEXPORT_Node0_action["The cargo status description field
is set to AUT-EXP"]:::main N_SetStatusDescriptiontoAUTOEXPORT_Node0 -- Yes --> N_SetStatusDescriptiontoAUTOEXPORT_Node0_action N_SetStatusDescriptiontoAUTOEXPORT_Node0_action --> E_SetStatusDescriptiontoAUTOEXPORT S_SetStatusDescriptiontoAUTOEXPORT --> N_SetStatusDescriptiontoAUTOEXPORT_Node0 N_SetStatusDescriptiontoAUTOEXPORT_Node0 -- No --> E_SetStatusDescriptiontoAUTOEXPORT
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating AUTO EXPORT status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'AUT-EXP'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'IMED-EXP'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoIMMEDIATEEXPORT(["Start Step"])
E_SetStatusDescriptiontoIMMEDIATEEXPORT(["End Step"])
N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0_action["The cargo status description field
is set to IMED-EXP"]:::main N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0 -- Yes --> N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0_action N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0_action --> E_SetStatusDescriptiontoIMMEDIATEEXPORT S_SetStatusDescriptiontoIMMEDIATEEXPORT --> N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0 N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0 -- No --> E_SetStatusDescriptiontoIMMEDIATEEXPORT
description setting"}:::decision N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0_action["The cargo status description field
is set to IMED-EXP"]:::main N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0 -- Yes --> N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0_action N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0_action --> E_SetStatusDescriptiontoIMMEDIATEEXPORT S_SetStatusDescriptiontoIMMEDIATEEXPORT --> N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0 N_SetStatusDescriptiontoIMMEDIATEEXPORT_Node0 -- No --> E_SetStatusDescriptiontoIMMEDIATEEXPORT
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating IMMEDIATE EXPORT status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'IMED-EXP'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to 'XFERED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusDescriptiontoTRANSFERRED(["Start Step"])
E_SetStatusDescriptiontoTRANSFERRED(["End Step"])
N_SetStatusDescriptiontoTRANSFERRED_Node0{"The system processes cargo status
description setting"}:::decision N_SetStatusDescriptiontoTRANSFERRED_Node0_action["The cargo status description field
is set to XFERED"]:::main N_SetStatusDescriptiontoTRANSFERRED_Node0 -- Yes --> N_SetStatusDescriptiontoTRANSFERRED_Node0_action N_SetStatusDescriptiontoTRANSFERRED_Node0_action --> E_SetStatusDescriptiontoTRANSFERRED S_SetStatusDescriptiontoTRANSFERRED --> N_SetStatusDescriptiontoTRANSFERRED_Node0 N_SetStatusDescriptiontoTRANSFERRED_Node0 -- No --> E_SetStatusDescriptiontoTRANSFERRED
description setting"}:::decision N_SetStatusDescriptiontoTRANSFERRED_Node0_action["The cargo status description field
is set to XFERED"]:::main N_SetStatusDescriptiontoTRANSFERRED_Node0 -- Yes --> N_SetStatusDescriptiontoTRANSFERRED_Node0_action N_SetStatusDescriptiontoTRANSFERRED_Node0_action --> E_SetStatusDescriptiontoTRANSFERRED S_SetStatusDescriptiontoTRANSFERRED --> N_SetStatusDescriptiontoTRANSFERRED_Node0 N_SetStatusDescriptiontoTRANSFERRED_Node0 -- No --> E_SetStatusDescriptiontoTRANSFERRED
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status code indicating TRANSFERRED status
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to 'XFERED'
β Consolidated Acceptance Criteria
- The system processes cargo status description setting → the cargo status description field is set to the original CP cargo status code 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_UseOriginalStatusCodeasDescription(["Start Step"])
E_UseOriginalStatusCodeasDescription(["End Step"])
N_UseOriginalStatusCodeasDescription_Node0{"The system processes cargo status
description setting"}:::decision N_UseOriginalStatusCodeasDescription_Node0_action["The cargo status description field
is set to the original CP cargo
status code value"]:::main N_UseOriginalStatusCodeasDescription_Node0 -- Yes --> N_UseOriginalStatusCodeasDescription_Node0_action N_UseOriginalStatusCodeasDescription_Node0_action --> E_UseOriginalStatusCodeasDescription S_UseOriginalStatusCodeasDescription --> N_UseOriginalStatusCodeasDescription_Node0 N_UseOriginalStatusCodeasDescription_Node0 -- No --> E_UseOriginalStatusCodeasDescription
description setting"}:::decision N_UseOriginalStatusCodeasDescription_Node0_action["The cargo status description field
is set to the original CP cargo
status code value"]:::main N_UseOriginalStatusCodeasDescription_Node0 -- Yes --> N_UseOriginalStatusCodeasDescription_Node0_action N_UseOriginalStatusCodeasDescription_Node0_action --> E_UseOriginalStatusCodeasDescription S_UseOriginalStatusCodeasDescription --> N_UseOriginalStatusCodeasDescription_Node0 N_UseOriginalStatusCodeasDescription_Node0 -- No --> E_UseOriginalStatusCodeasDescription
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with CP cargo status code that does not match any predefined status values
WHEN:
The system processes cargo status description setting
THEN:
The cargo status description field is set to the original CP cargo status code value
β Consolidated Acceptance Criteria
- The system processes the car ID index search → the system sets the car ID key value from the cargo record car ID index field, applies the search operator, and executes the search using the car ID secondary 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_SearchCarIDIndex(["Start Step"])
E_SearchCarIDIndex(["End Step"])
N_SearchCarIDIndex_Node0{"The system processes the car ID
index search"}:::decision N_SearchCarIDIndex_Node0_action["The system sets the car ID key
value from the cargo record car ID
index field, applies the search
operator, and executes the search
using the car ID secondary index"]:::main N_SearchCarIDIndex_Node0 -- Yes --> N_SearchCarIDIndex_Node0_action N_SearchCarIDIndex_Node0_action --> E_SearchCarIDIndex S_SearchCarIDIndex --> N_SearchCarIDIndex_Node0 N_SearchCarIDIndex_Node0 -- No --> E_SearchCarIDIndex
index search"}:::decision N_SearchCarIDIndex_Node0_action["The system sets the car ID key
value from the cargo record car ID
index field, applies the search
operator, and executes the search
using the car ID secondary index"]:::main N_SearchCarIDIndex_Node0 -- Yes --> N_SearchCarIDIndex_Node0_action N_SearchCarIDIndex_Node0_action --> E_SearchCarIDIndex S_SearchCarIDIndex --> N_SearchCarIDIndex_Node0 N_SearchCarIDIndex_Node0 -- No --> E_SearchCarIDIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with car ID index type is received
WHEN:
The system processes the car ID index search
THEN:
The system sets the car ID key value from the cargo record car ID index field, applies the search operator, and executes the search using the car ID secondary index
β Consolidated Acceptance Criteria
- The system processes the waybill index search → the system sets the waybill key value from the cargo record waybill index field, applies the search operator, and executes the search using the waybill secondary 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_SearchWaybillIndex(["Start Step"])
E_SearchWaybillIndex(["End Step"])
N_SearchWaybillIndex_Node0{"The system processes the waybill
index search"}:::decision N_SearchWaybillIndex_Node0_action["The system sets the waybill key
value from the cargo record waybill
index field, applies the search
operator, and executes the search
using the waybill secondary index"]:::main N_SearchWaybillIndex_Node0 -- Yes --> N_SearchWaybillIndex_Node0_action N_SearchWaybillIndex_Node0_action --> E_SearchWaybillIndex S_SearchWaybillIndex --> N_SearchWaybillIndex_Node0 N_SearchWaybillIndex_Node0 -- No --> E_SearchWaybillIndex
index search"}:::decision N_SearchWaybillIndex_Node0_action["The system sets the waybill key
value from the cargo record waybill
index field, applies the search
operator, and executes the search
using the waybill secondary index"]:::main N_SearchWaybillIndex_Node0 -- Yes --> N_SearchWaybillIndex_Node0_action N_SearchWaybillIndex_Node0_action --> E_SearchWaybillIndex S_SearchWaybillIndex --> N_SearchWaybillIndex_Node0 N_SearchWaybillIndex_Node0 -- No --> E_SearchWaybillIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with waybill index type is received
WHEN:
The system processes the waybill index search
THEN:
The system sets the waybill key value from the cargo record waybill index field, applies the search operator, and executes the search using the waybill secondary index
β Consolidated Acceptance Criteria
- The system checks if the car-waybill index field contains data → if the car-waybill index field is not empty, the system uses qualified search with the index value, otherwise it uses unqualified search with empty key 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_CarWaybillIndexExists(["Start Step"])
E_CarWaybillIndexExists(["End Step"])
N_CarWaybillIndexExists_Node0{"The system checks if the
car-waybill index field contains
data"}:::decision N_CarWaybillIndexExists_Node0_action["If the car-waybill index field is
not empty, the system uses qualified
search with the index value,
otherwise it uses unqualified search
with empty key value"]:::main N_CarWaybillIndexExists_Node0 -- Yes --> N_CarWaybillIndexExists_Node0_action N_CarWaybillIndexExists_Node0_action --> E_CarWaybillIndexExists S_CarWaybillIndexExists --> N_CarWaybillIndexExists_Node0 N_CarWaybillIndexExists_Node0 -- No --> E_CarWaybillIndexExists
car-waybill index field contains
data"}:::decision N_CarWaybillIndexExists_Node0_action["If the car-waybill index field is
not empty, the system uses qualified
search with the index value,
otherwise it uses unqualified search
with empty key value"]:::main N_CarWaybillIndexExists_Node0 -- Yes --> N_CarWaybillIndexExists_Node0_action N_CarWaybillIndexExists_Node0_action --> E_CarWaybillIndexExists S_CarWaybillIndexExists --> N_CarWaybillIndexExists_Node0 N_CarWaybillIndexExists_Node0 -- No --> E_CarWaybillIndexExists
File: GCCUSIO.cbl
GIVEN:
A cargo search request with car-waybill index type is received
WHEN:
The system checks if the car-waybill index field contains data
THEN:
If the car-waybill index field is not empty, the system uses qualified search with the index value, otherwise it uses unqualified search with empty key value
β Consolidated Acceptance Criteria
- The system checks if the bond index field contains data → if the bond index field is not empty, the system uses qualified search with the index value, otherwise it uses unqualified search with empty key 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_BondIndexExists(["Start Step"])
E_BondIndexExists(["End Step"])
N_BondIndexExists_Node0{"The system checks if the bond index
field contains data"}:::decision N_BondIndexExists_Node0_action["If the bond index field is not
empty, the system uses qualified
search with the index value,
otherwise it uses unqualified search
with empty key value"]:::main N_BondIndexExists_Node0 -- Yes --> N_BondIndexExists_Node0_action N_BondIndexExists_Node0_action --> E_BondIndexExists S_BondIndexExists --> N_BondIndexExists_Node0 N_BondIndexExists_Node0 -- No --> E_BondIndexExists
field contains data"}:::decision N_BondIndexExists_Node0_action["If the bond index field is not
empty, the system uses qualified
search with the index value,
otherwise it uses unqualified search
with empty key value"]:::main N_BondIndexExists_Node0 -- Yes --> N_BondIndexExists_Node0_action N_BondIndexExists_Node0_action --> E_BondIndexExists S_BondIndexExists --> N_BondIndexExists_Node0 N_BondIndexExists_Node0 -- No --> E_BondIndexExists
File: GCCUSIO.cbl
GIVEN:
A cargo search request with bond index type is received
WHEN:
The system checks if the bond index field contains data
THEN:
If the bond index field is not empty, the system uses qualified search with the index value, otherwise it uses unqualified search with empty key value
β Consolidated Acceptance Criteria
- The system checks if the lead manifest CCN field contains data → if the lead manifest CCN field is not empty, the system uses qualified search with the CCN value, otherwise it uses unqualified search with empty key 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_LeadCCNExists(["Start Step"])
E_LeadCCNExists(["End Step"])
N_LeadCCNExists_Node0{"The system checks if the lead
manifest CCN field contains data"}:::decision N_LeadCCNExists_Node0_action["If the lead manifest CCN field is
not empty, the system uses qualified
search with the CCN value, otherwise
it uses unqualified search with
empty key value"]:::main N_LeadCCNExists_Node0 -- Yes --> N_LeadCCNExists_Node0_action N_LeadCCNExists_Node0_action --> E_LeadCCNExists S_LeadCCNExists --> N_LeadCCNExists_Node0 N_LeadCCNExists_Node0 -- No --> E_LeadCCNExists
manifest CCN field contains data"}:::decision N_LeadCCNExists_Node0_action["If the lead manifest CCN field is
not empty, the system uses qualified
search with the CCN value, otherwise
it uses unqualified search with
empty key value"]:::main N_LeadCCNExists_Node0 -- Yes --> N_LeadCCNExists_Node0_action N_LeadCCNExists_Node0_action --> E_LeadCCNExists S_LeadCCNExists --> N_LeadCCNExists_Node0 N_LeadCCNExists_Node0 -- No --> E_LeadCCNExists
File: GCCUSIO.cbl
GIVEN:
A cargo search request with lead CCN index type is received
WHEN:
The system checks if the lead manifest CCN field contains data
THEN:
If the lead manifest CCN field is not empty, the system uses qualified search with the CCN value, otherwise it uses unqualified search with empty key value
β Consolidated Acceptance Criteria
- The system processes the held destination index search → the system retrieves the held destination index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
- The system processes the held destination index search → the system retrieves GCSB1RT record using held destination key and cargo key from the index, then calls CIMS to access the held destination index 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_SearchHeldDestinationIndex(["Start Step"])
E_SearchHeldDestinationIndex(["End Step"])
N_SearchHeldDestinationIndex_Node0{"The system processes the held
destination index search"}:::decision N_SearchHeldDestinationIndex_Node0_action["The system retrieves the held
destination index record using the
search criteria, extracts the cargo
key from the index record, and
retrieves the corresponding primary
cargo record using the extracted key"]:::main N_SearchHeldDestinationIndex_Node0 -- Yes --> N_SearchHeldDestinationIndex_Node0_action N_SearchHeldDestinationIndex_Node0_action --> E_SearchHeldDestinationIndex S_SearchHeldDestinationIndex --> N_SearchHeldDestinationIndex_Node0 N_SearchHeldDestinationIndex_Node1{"The system processes the held
destination index search"}:::decision N_SearchHeldDestinationIndex_Node1_action["The system retrieves GCSB1RT record
using held destination key and cargo
key from the index, then calls CIMS
to access the held destination index
database"]:::main N_SearchHeldDestinationIndex_Node1 -- Yes --> N_SearchHeldDestinationIndex_Node1_action N_SearchHeldDestinationIndex_Node1_action --> E_SearchHeldDestinationIndex N_SearchHeldDestinationIndex_Node0 -- No --> N_SearchHeldDestinationIndex_Node1 N_SearchHeldDestinationIndex_Node1 -- No --> E_SearchHeldDestinationIndex
destination index search"}:::decision N_SearchHeldDestinationIndex_Node0_action["The system retrieves the held
destination index record using the
search criteria, extracts the cargo
key from the index record, and
retrieves the corresponding primary
cargo record using the extracted key"]:::main N_SearchHeldDestinationIndex_Node0 -- Yes --> N_SearchHeldDestinationIndex_Node0_action N_SearchHeldDestinationIndex_Node0_action --> E_SearchHeldDestinationIndex S_SearchHeldDestinationIndex --> N_SearchHeldDestinationIndex_Node0 N_SearchHeldDestinationIndex_Node1{"The system processes the held
destination index search"}:::decision N_SearchHeldDestinationIndex_Node1_action["The system retrieves GCSB1RT record
using held destination key and cargo
key from the index, then calls CIMS
to access the held destination index
database"]:::main N_SearchHeldDestinationIndex_Node1 -- Yes --> N_SearchHeldDestinationIndex_Node1_action N_SearchHeldDestinationIndex_Node1_action --> E_SearchHeldDestinationIndex N_SearchHeldDestinationIndex_Node0 -- No --> N_SearchHeldDestinationIndex_Node1 N_SearchHeldDestinationIndex_Node1 -- No --> E_SearchHeldDestinationIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with held destination index type is received
WHEN:
The system processes the held destination index search
THEN:
The system retrieves the held destination index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
File: GCCUSIO.cbl
GIVEN:
The index type is held destination (GCWUSIO-INDEX-HELD-DEST is true)
WHEN:
The system processes the held destination index search
THEN:
- The system retrieves gcsb1rt record using held destination key
- Cargo key from the index, then calls cims to access the held destination index database
β Consolidated Acceptance Criteria
- The system processes the held border index search → the system retrieves the held border index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
- The system processes the held border index search → the system retrieves GCSB1RT record using held border key and cargo key from the index, then calls CIMS to access the held border index 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_SearchHeldBorderIndex(["Start Step"])
E_SearchHeldBorderIndex(["End Step"])
N_SearchHeldBorderIndex_Node0{"The system processes the held
border index search"}:::decision N_SearchHeldBorderIndex_Node0_action["The system retrieves the held
border index record using the search
criteria, extracts the cargo key
from the index record, and retrieves
the corresponding primary cargo
record using the extracted key"]:::main N_SearchHeldBorderIndex_Node0 -- Yes --> N_SearchHeldBorderIndex_Node0_action N_SearchHeldBorderIndex_Node0_action --> E_SearchHeldBorderIndex S_SearchHeldBorderIndex --> N_SearchHeldBorderIndex_Node0 N_SearchHeldBorderIndex_Node1{"The system processes the held
border index search"}:::decision N_SearchHeldBorderIndex_Node1_action["The system retrieves GCSB1RT record
using held border key and cargo key
from the index, then calls CIMS to
access the held border index
database"]:::main N_SearchHeldBorderIndex_Node1 -- Yes --> N_SearchHeldBorderIndex_Node1_action N_SearchHeldBorderIndex_Node1_action --> E_SearchHeldBorderIndex N_SearchHeldBorderIndex_Node0 -- No --> N_SearchHeldBorderIndex_Node1 N_SearchHeldBorderIndex_Node1 -- No --> E_SearchHeldBorderIndex
border index search"}:::decision N_SearchHeldBorderIndex_Node0_action["The system retrieves the held
border index record using the search
criteria, extracts the cargo key
from the index record, and retrieves
the corresponding primary cargo
record using the extracted key"]:::main N_SearchHeldBorderIndex_Node0 -- Yes --> N_SearchHeldBorderIndex_Node0_action N_SearchHeldBorderIndex_Node0_action --> E_SearchHeldBorderIndex S_SearchHeldBorderIndex --> N_SearchHeldBorderIndex_Node0 N_SearchHeldBorderIndex_Node1{"The system processes the held
border index search"}:::decision N_SearchHeldBorderIndex_Node1_action["The system retrieves GCSB1RT record
using held border key and cargo key
from the index, then calls CIMS to
access the held border index
database"]:::main N_SearchHeldBorderIndex_Node1 -- Yes --> N_SearchHeldBorderIndex_Node1_action N_SearchHeldBorderIndex_Node1_action --> E_SearchHeldBorderIndex N_SearchHeldBorderIndex_Node0 -- No --> N_SearchHeldBorderIndex_Node1 N_SearchHeldBorderIndex_Node1 -- No --> E_SearchHeldBorderIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with held border index type is received
WHEN:
The system processes the held border index search
THEN:
The system retrieves the held border index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
File: GCCUSIO.cbl
GIVEN:
The index type is held border (GCWUSIO-INDEX-HELD-BORDER is true)
WHEN:
The system processes the held border index search
THEN:
- The system retrieves gcsb1rt record using held border key
- Cargo key from the index, then calls cims to access the held border index database
β Consolidated Acceptance Criteria
- The system processes the error origin index search → the system retrieves the error origin index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted 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_SearchErrorOriginIndex(["Start Step"])
E_SearchErrorOriginIndex(["End Step"])
N_SearchErrorOriginIndex_Node0{"The system processes the error
origin index search"}:::decision N_SearchErrorOriginIndex_Node0_action["The system retrieves the error
origin index record using the search
criteria, extracts the cargo key
from the index record, and retrieves
the corresponding primary cargo
record using the extracted key"]:::exclusion N_SearchErrorOriginIndex_Node0 -- Yes -->|Alternative| N_SearchErrorOriginIndex_Node0_action N_SearchErrorOriginIndex_Node0_action --> E_SearchErrorOriginIndex S_SearchErrorOriginIndex --> N_SearchErrorOriginIndex_Node0 N_SearchErrorOriginIndex_Node0 -- No --> E_SearchErrorOriginIndex
origin index search"}:::decision N_SearchErrorOriginIndex_Node0_action["The system retrieves the error
origin index record using the search
criteria, extracts the cargo key
from the index record, and retrieves
the corresponding primary cargo
record using the extracted key"]:::exclusion N_SearchErrorOriginIndex_Node0 -- Yes -->|Alternative| N_SearchErrorOriginIndex_Node0_action N_SearchErrorOriginIndex_Node0_action --> E_SearchErrorOriginIndex S_SearchErrorOriginIndex --> N_SearchErrorOriginIndex_Node0 N_SearchErrorOriginIndex_Node0 -- No --> E_SearchErrorOriginIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with error origin index type is received
WHEN:
The system processes the error origin index search
THEN:
The system retrieves the error origin index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
β Consolidated Acceptance Criteria
- The system processes the error border index search → the system retrieves the error border index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted 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_SearchErrorBorderIndex(["Start Step"])
E_SearchErrorBorderIndex(["End Step"])
N_SearchErrorBorderIndex_Node0{"The system processes the error
border index search"}:::decision N_SearchErrorBorderIndex_Node0_action["The system retrieves the error
border index record using the search
criteria, extracts the cargo key
from the index record, and retrieves
the corresponding primary cargo
record using the extracted key"]:::exclusion N_SearchErrorBorderIndex_Node0 -- Yes -->|Alternative| N_SearchErrorBorderIndex_Node0_action N_SearchErrorBorderIndex_Node0_action --> E_SearchErrorBorderIndex S_SearchErrorBorderIndex --> N_SearchErrorBorderIndex_Node0 N_SearchErrorBorderIndex_Node0 -- No --> E_SearchErrorBorderIndex
border index search"}:::decision N_SearchErrorBorderIndex_Node0_action["The system retrieves the error
border index record using the search
criteria, extracts the cargo key
from the index record, and retrieves
the corresponding primary cargo
record using the extracted key"]:::exclusion N_SearchErrorBorderIndex_Node0 -- Yes -->|Alternative| N_SearchErrorBorderIndex_Node0_action N_SearchErrorBorderIndex_Node0_action --> E_SearchErrorBorderIndex S_SearchErrorBorderIndex --> N_SearchErrorBorderIndex_Node0 N_SearchErrorBorderIndex_Node0 -- No --> E_SearchErrorBorderIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with error border index type is received
WHEN:
The system processes the error border index search
THEN:
The system retrieves the error border index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
β Consolidated Acceptance Criteria
- The system processes the error destination index search → the system retrieves the error destination index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted 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_SearchErrorDestinationIndex(["Start Step"])
E_SearchErrorDestinationIndex(["End Step"])
N_SearchErrorDestinationIndex_Node0{"The system processes the error
destination index search"}:::decision N_SearchErrorDestinationIndex_Node0_action["The system retrieves the error
destination index record using the
search criteria, extracts the cargo
key from the index record, and
retrieves the corresponding primary
cargo record using the extracted key"]:::exclusion N_SearchErrorDestinationIndex_Node0 -- Yes -->|Alternative| N_SearchErrorDestinationIndex_Node0_action N_SearchErrorDestinationIndex_Node0_action --> E_SearchErrorDestinationIndex S_SearchErrorDestinationIndex --> N_SearchErrorDestinationIndex_Node0 N_SearchErrorDestinationIndex_Node0 -- No --> E_SearchErrorDestinationIndex
destination index search"}:::decision N_SearchErrorDestinationIndex_Node0_action["The system retrieves the error
destination index record using the
search criteria, extracts the cargo
key from the index record, and
retrieves the corresponding primary
cargo record using the extracted key"]:::exclusion N_SearchErrorDestinationIndex_Node0 -- Yes -->|Alternative| N_SearchErrorDestinationIndex_Node0_action N_SearchErrorDestinationIndex_Node0_action --> E_SearchErrorDestinationIndex S_SearchErrorDestinationIndex --> N_SearchErrorDestinationIndex_Node0 N_SearchErrorDestinationIndex_Node0 -- No --> E_SearchErrorDestinationIndex
File: GCCUSIO.cbl
GIVEN:
A cargo search request with error destination index type is received
WHEN:
The system processes the error destination index search
THEN:
The system retrieves the error destination index record using the search criteria, extracts the cargo key from the index record, and retrieves the corresponding primary cargo record using the extracted key
β Consolidated Acceptance Criteria
- Car ID search is initiated → the car identification number from the cargo record is mapped to the search key 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_SetCarIDIndexValue(["Start Step"])
E_SetCarIDIndexValue(["End Step"])
N_SetCarIDIndexValue_Node0{"Car ID search is initiated"}:::decision
N_SetCarIDIndexValue_Node0_action["The car identification number from
the cargo record is mapped to the
search key value"]:::main N_SetCarIDIndexValue_Node0 -- Yes --> N_SetCarIDIndexValue_Node0_action N_SetCarIDIndexValue_Node0_action --> E_SetCarIDIndexValue S_SetCarIDIndexValue --> N_SetCarIDIndexValue_Node0 N_SetCarIDIndexValue_Node0 -- No --> E_SetCarIDIndexValue
the cargo record is mapped to the
search key value"]:::main N_SetCarIDIndexValue_Node0 -- Yes --> N_SetCarIDIndexValue_Node0_action N_SetCarIDIndexValue_Node0_action --> E_SetCarIDIndexValue S_SetCarIDIndexValue --> N_SetCarIDIndexValue_Node0 N_SetCarIDIndexValue_Node0 -- No --> E_SetCarIDIndexValue
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with car identification number in the car ID index field
WHEN:
Car ID search is initiated
THEN:
The car identification number from the cargo record is mapped to the search key value
β Consolidated Acceptance Criteria
- Car ID search is being configured → the input search operator is applied to the car ID search criteria
- The system assigns the search operator → the system copies the operator from GCWUSIO-OPERATOR to GCUW-OPERATOR for waybill comparison logic
- Search operator needs to be set → the operator from the request is assigned to the car-waybill search operator 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_SetSearchOperator(["Start Step"])
E_SetSearchOperator(["End Step"])
N_SetSearchOperator_Node0{"Car ID search is being configured"}:::decision
N_SetSearchOperator_Node0_action["The input search operator is
applied to the car ID search
criteria"]:::main N_SetSearchOperator_Node0 -- Yes --> N_SetSearchOperator_Node0_action N_SetSearchOperator_Node0_action --> E_SetSearchOperator S_SetSearchOperator --> N_SetSearchOperator_Node0 N_SetSearchOperator_Node1{"The system assigns the search
operator"}:::decision N_SetSearchOperator_Node1_action["The system copies the operator from
GCWUSIO-OPERATOR to GCUW-OPERATOR
for waybill comparison logic"]:::main N_SetSearchOperator_Node1 -- Yes --> N_SetSearchOperator_Node1_action N_SetSearchOperator_Node1_action --> E_SetSearchOperator N_SetSearchOperator_Node0 -- No --> N_SetSearchOperator_Node1 N_SetSearchOperator_Node2{"Search operator needs to be set"}:::decision N_SetSearchOperator_Node2_action["The operator from the request is
assigned to the car-waybill search
operator field"]:::main N_SetSearchOperator_Node2 -- Yes --> N_SetSearchOperator_Node2_action N_SetSearchOperator_Node2_action --> E_SetSearchOperator N_SetSearchOperator_Node1 -- No --> N_SetSearchOperator_Node2 N_SetSearchOperator_Node2 -- No --> E_SetSearchOperator
applied to the car ID search
criteria"]:::main N_SetSearchOperator_Node0 -- Yes --> N_SetSearchOperator_Node0_action N_SetSearchOperator_Node0_action --> E_SetSearchOperator S_SetSearchOperator --> N_SetSearchOperator_Node0 N_SetSearchOperator_Node1{"The system assigns the search
operator"}:::decision N_SetSearchOperator_Node1_action["The system copies the operator from
GCWUSIO-OPERATOR to GCUW-OPERATOR
for waybill comparison logic"]:::main N_SetSearchOperator_Node1 -- Yes --> N_SetSearchOperator_Node1_action N_SetSearchOperator_Node1_action --> E_SetSearchOperator N_SetSearchOperator_Node0 -- No --> N_SetSearchOperator_Node1 N_SetSearchOperator_Node2{"Search operator needs to be set"}:::decision N_SetSearchOperator_Node2_action["The operator from the request is
assigned to the car-waybill search
operator field"]:::main N_SetSearchOperator_Node2 -- Yes --> N_SetSearchOperator_Node2_action N_SetSearchOperator_Node2_action --> E_SetSearchOperator N_SetSearchOperator_Node1 -- No --> N_SetSearchOperator_Node2 N_SetSearchOperator_Node2 -- No --> E_SetSearchOperator
File: GCCUSIO.cbl
GIVEN:
A search operator is specified in the input parameters
WHEN:
Car ID search is being configured
THEN:
The input search operator is applied to the car ID search criteria
File: GCCUSIO.cbl
GIVEN:
A waybill search is being configured with search parameters
WHEN:
The system assigns the search operator
THEN:
The system copies the operator from GCWUSIO-OPERATOR to GCUW-OPERATOR for waybill comparison logic
File: GCCUSIO.cbl
GIVEN:
Car-waybill search parameters are being configured
WHEN:
Search operator needs to be set
THEN:
The operator from the request is assigned to the car-waybill search operator field
β Consolidated Acceptance Criteria
- Database path needs to be configured → the secondary PCB for car ID index is selected as the working database path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConfigureCarIDPCB(["Start Step"])
E_ConfigureCarIDPCB(["End Step"])
N_ConfigureCarIDPCB_Node0{"Database path needs to be
configured"}:::decision N_ConfigureCarIDPCB_Node0_action["The secondary PCB for car ID index
is selected as the working database
path"]:::main N_ConfigureCarIDPCB_Node0 -- Yes --> N_ConfigureCarIDPCB_Node0_action N_ConfigureCarIDPCB_Node0_action --> E_ConfigureCarIDPCB S_ConfigureCarIDPCB --> N_ConfigureCarIDPCB_Node0 N_ConfigureCarIDPCB_Node0 -- No --> E_ConfigureCarIDPCB
configured"}:::decision N_ConfigureCarIDPCB_Node0_action["The secondary PCB for car ID index
is selected as the working database
path"]:::main N_ConfigureCarIDPCB_Node0 -- Yes --> N_ConfigureCarIDPCB_Node0_action N_ConfigureCarIDPCB_Node0_action --> E_ConfigureCarIDPCB S_ConfigureCarIDPCB --> N_ConfigureCarIDPCB_Node0 N_ConfigureCarIDPCB_Node0 -- No --> E_ConfigureCarIDPCB
File: GCCUSIO.cbl
GIVEN:
Car ID index search is being performed
WHEN:
Database path needs to be configured
THEN:
The secondary PCB for car ID index is selected as the working database path
β Consolidated Acceptance Criteria
- Database search statement needs to be built → a qualified SSA is constructed using the car ID 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_BuildQualifiedSSA(["Start Step"])
E_BuildQualifiedSSA(["End Step"])
N_BuildQualifiedSSA_Node0{"Database search statement needs to
be built"}:::decision N_BuildQualifiedSSA_Node0_action["A qualified SSA is constructed
using the car ID search criteria"]:::main N_BuildQualifiedSSA_Node0 -- Yes --> N_BuildQualifiedSSA_Node0_action N_BuildQualifiedSSA_Node0_action --> E_BuildQualifiedSSA S_BuildQualifiedSSA --> N_BuildQualifiedSSA_Node0 N_BuildQualifiedSSA_Node0 -- No --> E_BuildQualifiedSSA
be built"}:::decision N_BuildQualifiedSSA_Node0_action["A qualified SSA is constructed
using the car ID search criteria"]:::main N_BuildQualifiedSSA_Node0 -- Yes --> N_BuildQualifiedSSA_Node0_action N_BuildQualifiedSSA_Node0_action --> E_BuildQualifiedSSA S_BuildQualifiedSSA --> N_BuildQualifiedSSA_Node0 N_BuildQualifiedSSA_Node0 -- No --> E_BuildQualifiedSSA
File: GCCUSIO.cbl
GIVEN:
Car ID search key and operator are configured
WHEN:
Database search statement needs to be built
THEN:
A qualified SSA is constructed using the car ID search criteria
β Consolidated Acceptance Criteria
- Car ID search is executed → database call is performed using the configured function code, PCB, data area, and search 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_ExecuteDatabaseCall(["Start Step"])
E_ExecuteDatabaseCall(["End Step"])
N_ExecuteDatabaseCall_Node0{"Car ID search is executed"}:::decision
N_ExecuteDatabaseCall_Node0_action["Database call is performed using
the configured function code, PCB,
data area, and search statement"]:::main N_ExecuteDatabaseCall_Node0 -- Yes --> N_ExecuteDatabaseCall_Node0_action N_ExecuteDatabaseCall_Node0_action --> E_ExecuteDatabaseCall S_ExecuteDatabaseCall --> N_ExecuteDatabaseCall_Node0 N_ExecuteDatabaseCall_Node0 -- No --> E_ExecuteDatabaseCall
the configured function code, PCB,
data area, and search statement"]:::main N_ExecuteDatabaseCall_Node0 -- Yes --> N_ExecuteDatabaseCall_Node0_action N_ExecuteDatabaseCall_Node0_action --> E_ExecuteDatabaseCall S_ExecuteDatabaseCall --> N_ExecuteDatabaseCall_Node0 N_ExecuteDatabaseCall_Node0 -- No --> E_ExecuteDatabaseCall
File: GCCUSIO.cbl
GIVEN:
Car ID search statement and database path are configured
WHEN:
Car ID search is executed
THEN:
Database call is performed using the configured function code, PCB, data area, and search statement
β Consolidated Acceptance Criteria
- Car ID search parameters are being built → the car ID value is extracted from GCUSRT-RT071-CAR-ID-INDEX 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_ExtractCarIDfromIndexField(["Start Step"])
E_ExtractCarIDfromIndexField(["End Step"])
N_ExtractCarIDfromIndexField_Node0{"Car ID search parameters are being
built"}:::decision N_ExtractCarIDfromIndexField_Node0_action["The car ID value is extracted from
GCUSRT-RT071-CAR-ID-INDEX field"]:::main N_ExtractCarIDfromIndexField_Node0 -- Yes --> N_ExtractCarIDfromIndexField_Node0_action N_ExtractCarIDfromIndexField_Node0_action --> E_ExtractCarIDfromIndexField S_ExtractCarIDfromIndexField --> N_ExtractCarIDfromIndexField_Node0 N_ExtractCarIDfromIndexField_Node0 -- No --> E_ExtractCarIDfromIndexField
built"}:::decision N_ExtractCarIDfromIndexField_Node0_action["The car ID value is extracted from
GCUSRT-RT071-CAR-ID-INDEX field"]:::main N_ExtractCarIDfromIndexField_Node0 -- Yes --> N_ExtractCarIDfromIndexField_Node0_action N_ExtractCarIDfromIndexField_Node0_action --> E_ExtractCarIDfromIndexField S_ExtractCarIDfromIndexField --> N_ExtractCarIDfromIndexField_Node0 N_ExtractCarIDfromIndexField_Node0 -- No --> E_ExtractCarIDfromIndexField
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with car ID index field populated
WHEN:
Car ID search parameters are being built
THEN:
The car ID value is extracted from GCUSRT-RT071-CAR-ID-INDEX field
β Consolidated Acceptance Criteria
- Search parameters are being configured → the car ID value is mapped to GCUC-KEY-VALUE for search 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_MapCarIDtoSearchKeyValue(["Start Step"])
E_MapCarIDtoSearchKeyValue(["End Step"])
N_MapCarIDtoSearchKeyValue_Node0{"Search parameters are being
configured"}:::decision N_MapCarIDtoSearchKeyValue_Node0_action["The car ID value is mapped to
GCUC-KEY-VALUE for search operations"]:::main N_MapCarIDtoSearchKeyValue_Node0 -- Yes --> N_MapCarIDtoSearchKeyValue_Node0_action N_MapCarIDtoSearchKeyValue_Node0_action --> E_MapCarIDtoSearchKeyValue S_MapCarIDtoSearchKeyValue --> N_MapCarIDtoSearchKeyValue_Node0 N_MapCarIDtoSearchKeyValue_Node0 -- No --> E_MapCarIDtoSearchKeyValue
configured"}:::decision N_MapCarIDtoSearchKeyValue_Node0_action["The car ID value is mapped to
GCUC-KEY-VALUE for search operations"]:::main N_MapCarIDtoSearchKeyValue_Node0 -- Yes --> N_MapCarIDtoSearchKeyValue_Node0_action N_MapCarIDtoSearchKeyValue_Node0_action --> E_MapCarIDtoSearchKeyValue S_MapCarIDtoSearchKeyValue --> N_MapCarIDtoSearchKeyValue_Node0 N_MapCarIDtoSearchKeyValue_Node0 -- No --> E_MapCarIDtoSearchKeyValue
File: GCCUSIO.cbl
GIVEN:
Car ID has been extracted from the index field
WHEN:
Search parameters are being configured
THEN:
The car ID value is mapped to GCUC-KEY-VALUE for search operations
β Consolidated Acceptance Criteria
- Car ID search parameters are being built → the operator from GCWUSIO-OPERATOR is assigned to GCUC-OPERATOR
- Car ID index search is configured → the input operator is applied to the car ID index 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_SetSearchOperatorfromInput(["Start Step"])
E_SetSearchOperatorfromInput(["End Step"])
N_SetSearchOperatorfromInput_Node0{"Car ID search parameters are being
built"}:::decision N_SetSearchOperatorfromInput_Node0_action["The operator from GCWUSIO-OPERATOR
is assigned to GCUC-OPERATOR"]:::main N_SetSearchOperatorfromInput_Node0 -- Yes --> N_SetSearchOperatorfromInput_Node0_action N_SetSearchOperatorfromInput_Node0_action --> E_SetSearchOperatorfromInput S_SetSearchOperatorfromInput --> N_SetSearchOperatorfromInput_Node0 N_SetSearchOperatorfromInput_Node1{"Car ID index search is configured"}:::decision N_SetSearchOperatorfromInput_Node1_action["The input operator is applied to
the car ID index search criteria"]:::main N_SetSearchOperatorfromInput_Node1 -- Yes --> N_SetSearchOperatorfromInput_Node1_action N_SetSearchOperatorfromInput_Node1_action --> E_SetSearchOperatorfromInput N_SetSearchOperatorfromInput_Node0 -- No --> N_SetSearchOperatorfromInput_Node1 N_SetSearchOperatorfromInput_Node1 -- No --> E_SetSearchOperatorfromInput
built"}:::decision N_SetSearchOperatorfromInput_Node0_action["The operator from GCWUSIO-OPERATOR
is assigned to GCUC-OPERATOR"]:::main N_SetSearchOperatorfromInput_Node0 -- Yes --> N_SetSearchOperatorfromInput_Node0_action N_SetSearchOperatorfromInput_Node0_action --> E_SetSearchOperatorfromInput S_SetSearchOperatorfromInput --> N_SetSearchOperatorfromInput_Node0 N_SetSearchOperatorfromInput_Node1{"Car ID index search is configured"}:::decision N_SetSearchOperatorfromInput_Node1_action["The input operator is applied to
the car ID index search criteria"]:::main N_SetSearchOperatorfromInput_Node1 -- Yes --> N_SetSearchOperatorfromInput_Node1_action N_SetSearchOperatorfromInput_Node1_action --> E_SetSearchOperatorfromInput N_SetSearchOperatorfromInput_Node0 -- No --> N_SetSearchOperatorfromInput_Node1 N_SetSearchOperatorfromInput_Node1 -- No --> E_SetSearchOperatorfromInput
File: GCCUSIO.cbl
GIVEN:
Search operator is provided in input parameters
WHEN:
Car ID search parameters are being built
THEN:
The operator from GCWUSIO-OPERATOR is assigned to GCUC-OPERATOR
File: GCCUSIO.cbl
GIVEN:
A search operator is provided in the input parameters
WHEN:
Car ID index search is configured
THEN:
The input operator is applied to the car ID index search criteria
β Consolidated Acceptance Criteria
- Database access path needs to be configured → gCUS-PCB2 is assigned to WS-PCB for car ID index 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_ConfigureCarIDPCBPath(["Start Step"])
E_ConfigureCarIDPCBPath(["End Step"])
N_ConfigureCarIDPCBPath_Node0{"Database access path needs to be
configured"}:::decision N_ConfigureCarIDPCBPath_Node0_action["GCUS-PCB2 is assigned to WS-PCB for
car ID index access"]:::main N_ConfigureCarIDPCBPath_Node0 -- Yes --> N_ConfigureCarIDPCBPath_Node0_action N_ConfigureCarIDPCBPath_Node0_action --> E_ConfigureCarIDPCBPath S_ConfigureCarIDPCBPath --> N_ConfigureCarIDPCBPath_Node0 N_ConfigureCarIDPCBPath_Node0 -- No --> E_ConfigureCarIDPCBPath
configured"}:::decision N_ConfigureCarIDPCBPath_Node0_action["GCUS-PCB2 is assigned to WS-PCB for
car ID index access"]:::main N_ConfigureCarIDPCBPath_Node0 -- Yes --> N_ConfigureCarIDPCBPath_Node0_action N_ConfigureCarIDPCBPath_Node0_action --> E_ConfigureCarIDPCBPath S_ConfigureCarIDPCBPath --> N_ConfigureCarIDPCBPath_Node0 N_ConfigureCarIDPCBPath_Node0 -- No --> E_ConfigureCarIDPCBPath
File: GCCUSIO.cbl
GIVEN:
Car ID search is being initiated
WHEN:
Database access path needs to be configured
THEN:
GCUS-PCB2 is assigned to WS-PCB for car ID index access
β Consolidated Acceptance Criteria
- Database query statement needs to be built → gCUC-SSA-QUAL is assigned to WS-SSA-1 for qualified search 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_BuildQualifiedSSAStatement(["Start Step"])
E_BuildQualifiedSSAStatement(["End Step"])
N_BuildQualifiedSSAStatement_Node0{"Database query statement needs to
be built"}:::decision N_BuildQualifiedSSAStatement_Node0_action["GCUC-SSA-QUAL is assigned to
WS-SSA-1 for qualified search
execution"]:::main N_BuildQualifiedSSAStatement_Node0 -- Yes --> N_BuildQualifiedSSAStatement_Node0_action N_BuildQualifiedSSAStatement_Node0_action --> E_BuildQualifiedSSAStatement S_BuildQualifiedSSAStatement --> N_BuildQualifiedSSAStatement_Node0 N_BuildQualifiedSSAStatement_Node0 -- No --> E_BuildQualifiedSSAStatement
be built"}:::decision N_BuildQualifiedSSAStatement_Node0_action["GCUC-SSA-QUAL is assigned to
WS-SSA-1 for qualified search
execution"]:::main N_BuildQualifiedSSAStatement_Node0 -- Yes --> N_BuildQualifiedSSAStatement_Node0_action N_BuildQualifiedSSAStatement_Node0_action --> E_BuildQualifiedSSAStatement S_BuildQualifiedSSAStatement --> N_BuildQualifiedSSAStatement_Node0 N_BuildQualifiedSSAStatement_Node0 -- No --> E_BuildQualifiedSSAStatement
File: GCCUSIO.cbl
GIVEN:
Car ID search key and operator are configured
WHEN:
Database query statement needs to be built
THEN:
GCUC-SSA-QUAL is assigned to WS-SSA-1 for qualified search execution
β Consolidated Acceptance Criteria
- Car ID index search is executed → x1100-CALL-ONE-SSA is performed to execute the database search 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_ExecuteCarIDIndexSearch(["Start Step"])
E_ExecuteCarIDIndexSearch(["End Step"])
N_ExecuteCarIDIndexSearch_Node0{"Car ID index search is executed"}:::decision
N_ExecuteCarIDIndexSearch_Node0_action["X1100-CALL-ONE-SSA is performed to
execute the database search
operation"]:::main N_ExecuteCarIDIndexSearch_Node0 -- Yes --> N_ExecuteCarIDIndexSearch_Node0_action N_ExecuteCarIDIndexSearch_Node0_action --> E_ExecuteCarIDIndexSearch S_ExecuteCarIDIndexSearch --> N_ExecuteCarIDIndexSearch_Node0 N_ExecuteCarIDIndexSearch_Node0 -- No --> E_ExecuteCarIDIndexSearch
execute the database search
operation"]:::main N_ExecuteCarIDIndexSearch_Node0 -- Yes --> N_ExecuteCarIDIndexSearch_Node0_action N_ExecuteCarIDIndexSearch_Node0_action --> E_ExecuteCarIDIndexSearch S_ExecuteCarIDIndexSearch --> N_ExecuteCarIDIndexSearch_Node0 N_ExecuteCarIDIndexSearch_Node0 -- No --> E_ExecuteCarIDIndexSearch
File: GCCUSIO.cbl
GIVEN:
Car ID search parameters are fully configured with PCB path and qualified SSA
WHEN:
Car ID index search is executed
THEN:
X1100-CALL-ONE-SSA is performed to execute the database search operation
β Consolidated Acceptance Criteria
- Car ID index search is requested → the car ID from the primary record RT071-CAR-ID-INDEX field is set as the search key 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_SetCarIDIndexKeyfromPrimaryRecord(["Start Step"])
E_SetCarIDIndexKeyfromPrimaryRecord(["End Step"])
N_SetCarIDIndexKeyfromPrimaryRecord_Node0{"Car ID index search is requested"}:::decision
N_SetCarIDIndexKeyfromPrimaryRecord_Node0_action["The car ID from the primary record
RT071-CAR-ID-INDEX field is set as
the search key value"]:::main N_SetCarIDIndexKeyfromPrimaryRecord_Node0 -- Yes --> N_SetCarIDIndexKeyfromPrimaryRecord_Node0_action N_SetCarIDIndexKeyfromPrimaryRecord_Node0_action --> E_SetCarIDIndexKeyfromPrimaryRecord S_SetCarIDIndexKeyfromPrimaryRecord --> N_SetCarIDIndexKeyfromPrimaryRecord_Node0 N_SetCarIDIndexKeyfromPrimaryRecord_Node0 -- No --> E_SetCarIDIndexKeyfromPrimaryRecord
RT071-CAR-ID-INDEX field is set as
the search key value"]:::main N_SetCarIDIndexKeyfromPrimaryRecord_Node0 -- Yes --> N_SetCarIDIndexKeyfromPrimaryRecord_Node0_action N_SetCarIDIndexKeyfromPrimaryRecord_Node0_action --> E_SetCarIDIndexKeyfromPrimaryRecord S_SetCarIDIndexKeyfromPrimaryRecord --> N_SetCarIDIndexKeyfromPrimaryRecord_Node0 N_SetCarIDIndexKeyfromPrimaryRecord_Node0 -- No --> E_SetCarIDIndexKeyfromPrimaryRecord
File: GCCUSIO.cbl
GIVEN:
A primary cargo record exists with car identification information
WHEN:
Car ID index search is requested
THEN:
The car ID from the primary record RT071-CAR-ID-INDEX field is set as the search key value
β Consolidated Acceptance Criteria
- Database access is prepared for Car ID index → pCB2 is set for Car ID index access and qualified SSA is configured with search 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_ConfigureCarIDIndexPCBandSSA(["Start Step"])
E_ConfigureCarIDIndexPCBandSSA(["End Step"])
N_ConfigureCarIDIndexPCBandSSA_Node0{"Database access is prepared for Car
ID index"}:::decision N_ConfigureCarIDIndexPCBandSSA_Node0_action["PCB2 is set for Car ID index access
and qualified SSA is configured with
search parameters"]:::main N_ConfigureCarIDIndexPCBandSSA_Node0 -- Yes --> N_ConfigureCarIDIndexPCBandSSA_Node0_action N_ConfigureCarIDIndexPCBandSSA_Node0_action --> E_ConfigureCarIDIndexPCBandSSA S_ConfigureCarIDIndexPCBandSSA --> N_ConfigureCarIDIndexPCBandSSA_Node0 N_ConfigureCarIDIndexPCBandSSA_Node0 -- No --> E_ConfigureCarIDIndexPCBandSSA
ID index"}:::decision N_ConfigureCarIDIndexPCBandSSA_Node0_action["PCB2 is set for Car ID index access
and qualified SSA is configured with
search parameters"]:::main N_ConfigureCarIDIndexPCBandSSA_Node0 -- Yes --> N_ConfigureCarIDIndexPCBandSSA_Node0_action N_ConfigureCarIDIndexPCBandSSA_Node0_action --> E_ConfigureCarIDIndexPCBandSSA S_ConfigureCarIDIndexPCBandSSA --> N_ConfigureCarIDIndexPCBandSSA_Node0 N_ConfigureCarIDIndexPCBandSSA_Node0 -- No --> E_ConfigureCarIDIndexPCBandSSA
File: GCCUSIO.cbl
GIVEN:
Car ID search key and operator are configured
WHEN:
Database access is prepared for Car ID index
THEN:
- Pcb2 is set for car id index access
- Qualified ssa is configured with search parameters
β Consolidated Acceptance Criteria
- Database search is executed → the database management system is called with Car ID search parameters to find matching 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_ExecuteDatabaseCallviaCarIDIndex(["Start Step"])
E_ExecuteDatabaseCallviaCarIDIndex(["End Step"])
N_ExecuteDatabaseCallviaCarIDIndex_Node0{"Database search is executed"}:::decision
N_ExecuteDatabaseCallviaCarIDIndex_Node0_action["The database management system is
called with Car ID search parameters
to find matching records"]:::main N_ExecuteDatabaseCallviaCarIDIndex_Node0 -- Yes --> N_ExecuteDatabaseCallviaCarIDIndex_Node0_action N_ExecuteDatabaseCallviaCarIDIndex_Node0_action --> E_ExecuteDatabaseCallviaCarIDIndex S_ExecuteDatabaseCallviaCarIDIndex --> N_ExecuteDatabaseCallviaCarIDIndex_Node0 N_ExecuteDatabaseCallviaCarIDIndex_Node0 -- No --> E_ExecuteDatabaseCallviaCarIDIndex
called with Car ID search parameters
to find matching records"]:::main N_ExecuteDatabaseCallviaCarIDIndex_Node0 -- Yes --> N_ExecuteDatabaseCallviaCarIDIndex_Node0_action N_ExecuteDatabaseCallviaCarIDIndex_Node0_action --> E_ExecuteDatabaseCallviaCarIDIndex S_ExecuteDatabaseCallviaCarIDIndex --> N_ExecuteDatabaseCallviaCarIDIndex_Node0 N_ExecuteDatabaseCallviaCarIDIndex_Node0 -- No --> E_ExecuteDatabaseCallviaCarIDIndex
File: GCCUSIO.cbl
GIVEN:
Car ID index search parameters are configured with PCB and SSA
WHEN:
Database search is executed
THEN:
The database management system is called with Car ID search parameters to find matching records
β Consolidated Acceptance Criteria
- The system processes the cargo record for index field updates → the equipment car identifier from the primary record is copied to the car ID index 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_ExtractEquipmentCarIDfromPrimaryRecord(["Start Step"])
E_ExtractEquipmentCarIDfromPrimaryRecord(["End Step"])
N_ExtractEquipmentCarIDfromPrimaryRecord_Node0{"The system processes the cargo
record for index field updates"}:::decision N_ExtractEquipmentCarIDfromPrimaryRecord_Node0_action["The equipment car identifier from
the primary record is copied to the
car ID index field"]:::main N_ExtractEquipmentCarIDfromPrimaryRecord_Node0 -- Yes --> N_ExtractEquipmentCarIDfromPrimaryRecord_Node0_action N_ExtractEquipmentCarIDfromPrimaryRecord_Node0_action --> E_ExtractEquipmentCarIDfromPrimaryRecord S_ExtractEquipmentCarIDfromPrimaryRecord --> N_ExtractEquipmentCarIDfromPrimaryRecord_Node0 N_ExtractEquipmentCarIDfromPrimaryRecord_Node0 -- No --> E_ExtractEquipmentCarIDfromPrimaryRecord
record for index field updates"}:::decision N_ExtractEquipmentCarIDfromPrimaryRecord_Node0_action["The equipment car identifier from
the primary record is copied to the
car ID index field"]:::main N_ExtractEquipmentCarIDfromPrimaryRecord_Node0 -- Yes --> N_ExtractEquipmentCarIDfromPrimaryRecord_Node0_action N_ExtractEquipmentCarIDfromPrimaryRecord_Node0_action --> E_ExtractEquipmentCarIDfromPrimaryRecord S_ExtractEquipmentCarIDfromPrimaryRecord --> N_ExtractEquipmentCarIDfromPrimaryRecord_Node0 N_ExtractEquipmentCarIDfromPrimaryRecord_Node0 -- No --> E_ExtractEquipmentCarIDfromPrimaryRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not marked as deleted
WHEN:
The system processes the cargo record for index field updates
THEN:
The equipment car identifier from the primary record is copied to the car ID index field
β Consolidated Acceptance Criteria
- The system processes the waybill index search request → the system sets PCB3 as the database control block and extracts waybill index value from GCUSRT-RT072-WAYBILL-INDEX to GCUW-KEY-VALUE for search 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_SetWaybillSearchParameters(["Start Step"])
E_SetWaybillSearchParameters(["End Step"])
N_SetWaybillSearchParameters_Node0{"The system processes the waybill
index search request"}:::decision N_SetWaybillSearchParameters_Node0_action["The system sets PCB3 as the
database control block and extracts
waybill index value from
GCUSRT-RT072-WAYBILL-INDEX to
GCUW-KEY-VALUE for search processing"]:::main N_SetWaybillSearchParameters_Node0 -- Yes --> N_SetWaybillSearchParameters_Node0_action N_SetWaybillSearchParameters_Node0_action --> E_SetWaybillSearchParameters S_SetWaybillSearchParameters --> N_SetWaybillSearchParameters_Node0 N_SetWaybillSearchParameters_Node0 -- No --> E_SetWaybillSearchParameters
index search request"}:::decision N_SetWaybillSearchParameters_Node0_action["The system sets PCB3 as the
database control block and extracts
waybill index value from
GCUSRT-RT072-WAYBILL-INDEX to
GCUW-KEY-VALUE for search processing"]:::main N_SetWaybillSearchParameters_Node0 -- Yes --> N_SetWaybillSearchParameters_Node0_action N_SetWaybillSearchParameters_Node0_action --> E_SetWaybillSearchParameters S_SetWaybillSearchParameters --> N_SetWaybillSearchParameters_Node0 N_SetWaybillSearchParameters_Node0 -- No --> E_SetWaybillSearchParameters
File: GCCUSIO.cbl
GIVEN:
A waybill search request is initiated with GCWUSIO-INDEX-WAYBILL condition
WHEN:
The system processes the waybill index search request
THEN:
- The system sets pcb3 as the database control block
- Extracts waybill index value from gcusrt-rt072-waybill-index to gcuw-key-value for search processing
β Consolidated Acceptance Criteria
- The system constructs the database search statement → the system assigns GCUW-SSA-QUAL to WS-SSA-1 to create a qualified search statement for waybill-based cargo 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_BuildQualifiedSearchStatement(["Start Step"])
E_BuildQualifiedSearchStatement(["End Step"])
N_BuildQualifiedSearchStatement_Node0{"The system constructs the database
search statement"}:::decision N_BuildQualifiedSearchStatement_Node0_action["The system assigns GCUW-SSA-QUAL to
WS-SSA-1 to create a qualified
search statement for waybill-based
cargo lookup"]:::main N_BuildQualifiedSearchStatement_Node0 -- Yes --> N_BuildQualifiedSearchStatement_Node0_action N_BuildQualifiedSearchStatement_Node0_action --> E_BuildQualifiedSearchStatement S_BuildQualifiedSearchStatement --> N_BuildQualifiedSearchStatement_Node0 N_BuildQualifiedSearchStatement_Node0 -- No --> E_BuildQualifiedSearchStatement
search statement"}:::decision N_BuildQualifiedSearchStatement_Node0_action["The system assigns GCUW-SSA-QUAL to
WS-SSA-1 to create a qualified
search statement for waybill-based
cargo lookup"]:::main N_BuildQualifiedSearchStatement_Node0 -- Yes --> N_BuildQualifiedSearchStatement_Node0_action N_BuildQualifiedSearchStatement_Node0_action --> E_BuildQualifiedSearchStatement S_BuildQualifiedSearchStatement --> N_BuildQualifiedSearchStatement_Node0 N_BuildQualifiedSearchStatement_Node0 -- No --> E_BuildQualifiedSearchStatement
File: GCCUSIO.cbl
GIVEN:
Waybill search parameters including key value and operator are configured
WHEN:
The system constructs the database search statement
THEN:
The system assigns GCUW-SSA-QUAL to WS-SSA-1 to create a qualified search statement for waybill-based cargo lookup
β Consolidated Acceptance Criteria
- The system executes the database search via X1100-CALL-ONE-SSA → the system performs the database call using CIMS with the function code, PCB, IO area, and SSA to retrieve matching 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_ExecuteDatabaseSearch(["Start Step"])
E_ExecuteDatabaseSearch(["End Step"])
N_ExecuteDatabaseSearch_Node0{"The system executes the database
search via X1100-CALL-ONE-SSA"}:::decision N_ExecuteDatabaseSearch_Node0_action["The system performs the database
call using CIMS with the function
code, PCB, IO area, and SSA to
retrieve matching cargo records"]:::main N_ExecuteDatabaseSearch_Node0 -- Yes --> N_ExecuteDatabaseSearch_Node0_action N_ExecuteDatabaseSearch_Node0_action --> E_ExecuteDatabaseSearch S_ExecuteDatabaseSearch --> N_ExecuteDatabaseSearch_Node0 N_ExecuteDatabaseSearch_Node0 -- No --> E_ExecuteDatabaseSearch
search via X1100-CALL-ONE-SSA"}:::decision N_ExecuteDatabaseSearch_Node0_action["The system performs the database
call using CIMS with the function
code, PCB, IO area, and SSA to
retrieve matching cargo records"]:::main N_ExecuteDatabaseSearch_Node0 -- Yes --> N_ExecuteDatabaseSearch_Node0_action N_ExecuteDatabaseSearch_Node0_action --> E_ExecuteDatabaseSearch S_ExecuteDatabaseSearch --> N_ExecuteDatabaseSearch_Node0 N_ExecuteDatabaseSearch_Node0 -- No --> E_ExecuteDatabaseSearch
File: GCCUSIO.cbl
GIVEN:
A qualified search statement is constructed with waybill parameters and PCB3 is set as the database control block
WHEN:
The system executes the database search via X1100-CALL-ONE-SSA
THEN:
The system performs the database call using CIMS with the function code, PCB, IO area, and SSA to retrieve matching cargo records
β Consolidated Acceptance Criteria
- The system processes a waybill index search request → the waybill index value is extracted from GCUSRT-RT072-WAYBILL-INDEX and moved to GCUW-KEY-VALUE for search parameter 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_ExtractWaybillIndexValuefromRT072WAYBILLINDEX(["Start Step"])
E_ExtractWaybillIndexValuefromRT072WAYBILLINDEX(["End Step"])
N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0{"The system processes a waybill
index search request"}:::decision N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0_action["The waybill index value is
extracted from
GCUSRT-RT072-WAYBILL-INDEX and moved
to GCUW-KEY-VALUE for search
parameter construction"]:::main N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0 -- Yes --> N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0_action N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0_action --> E_ExtractWaybillIndexValuefromRT072WAYBILLINDEX S_ExtractWaybillIndexValuefromRT072WAYBILLINDEX --> N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0 N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0 -- No --> E_ExtractWaybillIndexValuefromRT072WAYBILLINDEX
index search request"}:::decision N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0_action["The waybill index value is
extracted from
GCUSRT-RT072-WAYBILL-INDEX and moved
to GCUW-KEY-VALUE for search
parameter construction"]:::main N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0 -- Yes --> N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0_action N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0_action --> E_ExtractWaybillIndexValuefromRT072WAYBILLINDEX S_ExtractWaybillIndexValuefromRT072WAYBILLINDEX --> N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0 N_ExtractWaybillIndexValuefromRT072WAYBILLINDEX_Node0 -- No --> E_ExtractWaybillIndexValuefromRT072WAYBILLINDEX
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with waybill index information in RT072-WAYBILL-INDEX field
WHEN:
The system processes a waybill index search request
THEN:
- The waybill index value is extracted from gcusrt-rt072-waybill-index
- Moved to gcuw-key-value for search parameter construction
β Consolidated Acceptance Criteria
- The system builds waybill search parameters → the search operator from GCWUSIO-OPERATOR is moved to GCUW-OPERATOR to define the comparison criteria for the waybill 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_SetSearchOperatorfromInputParameter(["Start Step"])
E_SetSearchOperatorfromInputParameter(["End Step"])
N_SetSearchOperatorfromInputParameter_Node0{"The system builds waybill search
parameters"}:::decision N_SetSearchOperatorfromInputParameter_Node0_action["The search operator from
GCWUSIO-OPERATOR is moved to
GCUW-OPERATOR to define the
comparison criteria for the waybill
search"]:::main N_SetSearchOperatorfromInputParameter_Node0 -- Yes --> N_SetSearchOperatorfromInputParameter_Node0_action N_SetSearchOperatorfromInputParameter_Node0_action --> E_SetSearchOperatorfromInputParameter S_SetSearchOperatorfromInputParameter --> N_SetSearchOperatorfromInputParameter_Node0 N_SetSearchOperatorfromInputParameter_Node0 -- No --> E_SetSearchOperatorfromInputParameter
parameters"}:::decision N_SetSearchOperatorfromInputParameter_Node0_action["The search operator from
GCWUSIO-OPERATOR is moved to
GCUW-OPERATOR to define the
comparison criteria for the waybill
search"]:::main N_SetSearchOperatorfromInputParameter_Node0 -- Yes --> N_SetSearchOperatorfromInputParameter_Node0_action N_SetSearchOperatorfromInputParameter_Node0_action --> E_SetSearchOperatorfromInputParameter S_SetSearchOperatorfromInputParameter --> N_SetSearchOperatorfromInputParameter_Node0 N_SetSearchOperatorfromInputParameter_Node0 -- No --> E_SetSearchOperatorfromInputParameter
File: GCCUSIO.cbl
GIVEN:
A waybill index search request is being processed with a specified search operator in GCWUSIO-OPERATOR
WHEN:
The system builds waybill search parameters
THEN:
The search operator from GCWUSIO-OPERATOR is moved to GCUW-OPERATOR to define the comparison criteria for the waybill search
β Consolidated Acceptance Criteria
- The system prepares database access parameters → the PCB3 database path (GCUS-PCB3) is configured in WS-PCB to direct the search to the waybill index database 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_ConfigurePCB3DatabasePath(["Start Step"])
E_ConfigurePCB3DatabasePath(["End Step"])
N_ConfigurePCB3DatabasePath_Node0{"The system prepares database access
parameters"}:::decision N_ConfigurePCB3DatabasePath_Node0_action["The PCB3 database path GCUS-PCB3 is
configured in WS-PCB to direct the
search to the waybill index database
structure"]:::main N_ConfigurePCB3DatabasePath_Node0 -- Yes --> N_ConfigurePCB3DatabasePath_Node0_action N_ConfigurePCB3DatabasePath_Node0_action --> E_ConfigurePCB3DatabasePath S_ConfigurePCB3DatabasePath --> N_ConfigurePCB3DatabasePath_Node0 N_ConfigurePCB3DatabasePath_Node0 -- No --> E_ConfigurePCB3DatabasePath
parameters"}:::decision N_ConfigurePCB3DatabasePath_Node0_action["The PCB3 database path GCUS-PCB3 is
configured in WS-PCB to direct the
search to the waybill index database
structure"]:::main N_ConfigurePCB3DatabasePath_Node0 -- Yes --> N_ConfigurePCB3DatabasePath_Node0_action N_ConfigurePCB3DatabasePath_Node0_action --> E_ConfigurePCB3DatabasePath S_ConfigurePCB3DatabasePath --> N_ConfigurePCB3DatabasePath_Node0 N_ConfigurePCB3DatabasePath_Node0 -- No --> E_ConfigurePCB3DatabasePath
File: GCCUSIO.cbl
GIVEN:
A waybill index search operation is being initiated
WHEN:
The system prepares database access parameters
THEN:
The PCB3 database path (GCUS-PCB3) is configured in WS-PCB to direct the search to the waybill index database structure
β Consolidated Acceptance Criteria
- The system builds the complete search statement → a qualified search statement GCUW-SSA-QUAL is constructed and moved to WS-SSA-1 to enable precise waybill index 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_ConstructQualifiedSearchStatementGCUWSSAQUAL(["Start Step"])
E_ConstructQualifiedSearchStatementGCUWSSAQUAL(["End Step"])
N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0{"The system builds the complete
search statement"}:::decision N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0_action["A qualified search statement
GCUW-SSA-QUAL is constructed and
moved to WS-SSA-1 to enable precise
waybill index searching"]:::main N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0 -- Yes --> N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0_action N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0_action --> E_ConstructQualifiedSearchStatementGCUWSSAQUAL S_ConstructQualifiedSearchStatementGCUWSSAQUAL --> N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0 N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0 -- No --> E_ConstructQualifiedSearchStatementGCUWSSAQUAL
search statement"}:::decision N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0_action["A qualified search statement
GCUW-SSA-QUAL is constructed and
moved to WS-SSA-1 to enable precise
waybill index searching"]:::main N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0 -- Yes --> N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0_action N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0_action --> E_ConstructQualifiedSearchStatementGCUWSSAQUAL S_ConstructQualifiedSearchStatementGCUWSSAQUAL --> N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0 N_ConstructQualifiedSearchStatementGCUWSSAQUAL_Node0 -- No --> E_ConstructQualifiedSearchStatementGCUWSSAQUAL
File: GCCUSIO.cbl
GIVEN:
Waybill key value and search operator have been set in GCUW-KEY-VALUE and GCUW-OPERATOR respectively
WHEN:
The system builds the complete search statement
THEN:
- A qualified search statement gcuw-ssa-qual is constructed
- Moved to ws-ssa-1 to enable precise waybill index searching
β Consolidated Acceptance Criteria
- The system performs the waybill index search operation → the search is executed via X1100-CALL-ONE-SSA to retrieve cargo records matching the waybill index 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_ExecuteWaybillIndexSearch(["Start Step"])
E_ExecuteWaybillIndexSearch(["End Step"])
N_ExecuteWaybillIndexSearch_Node0{"The system performs the waybill
index search operation"}:::decision N_ExecuteWaybillIndexSearch_Node0_action["The search is executed via
X1100-CALL-ONE-SSA to retrieve cargo
records matching the waybill index
criteria"]:::main N_ExecuteWaybillIndexSearch_Node0 -- Yes --> N_ExecuteWaybillIndexSearch_Node0_action N_ExecuteWaybillIndexSearch_Node0_action --> E_ExecuteWaybillIndexSearch S_ExecuteWaybillIndexSearch --> N_ExecuteWaybillIndexSearch_Node0 N_ExecuteWaybillIndexSearch_Node0 -- No --> E_ExecuteWaybillIndexSearch
index search operation"}:::decision N_ExecuteWaybillIndexSearch_Node0_action["The search is executed via
X1100-CALL-ONE-SSA to retrieve cargo
records matching the waybill index
criteria"]:::main N_ExecuteWaybillIndexSearch_Node0 -- Yes --> N_ExecuteWaybillIndexSearch_Node0_action N_ExecuteWaybillIndexSearch_Node0_action --> E_ExecuteWaybillIndexSearch S_ExecuteWaybillIndexSearch --> N_ExecuteWaybillIndexSearch_Node0 N_ExecuteWaybillIndexSearch_Node0 -- No --> E_ExecuteWaybillIndexSearch
File: GCCUSIO.cbl
GIVEN:
All waybill search parameters have been configured including PCB, search statement, and key values
WHEN:
The system performs the waybill index search operation
THEN:
The search is executed via X1100-CALL-ONE-SSA to retrieve cargo records matching the waybill index criteria
β Consolidated Acceptance Criteria
- The system prepares to access the waybill database → the system sets the waybill PCB (GCUS-PCB3) as the database access 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_SetWaybillPCBforDatabaseAccess(["Start Step"])
E_SetWaybillPCBforDatabaseAccess(["End Step"])
N_SetWaybillPCBforDatabaseAccess_Node0{"The system prepares to access the
waybill database"}:::decision N_SetWaybillPCBforDatabaseAccess_Node0_action["The system sets the waybill PCB
GCUS-PCB3 as the database access
control block"]:::main N_SetWaybillPCBforDatabaseAccess_Node0 -- Yes --> N_SetWaybillPCBforDatabaseAccess_Node0_action N_SetWaybillPCBforDatabaseAccess_Node0_action --> E_SetWaybillPCBforDatabaseAccess S_SetWaybillPCBforDatabaseAccess --> N_SetWaybillPCBforDatabaseAccess_Node0 N_SetWaybillPCBforDatabaseAccess_Node0 -- No --> E_SetWaybillPCBforDatabaseAccess
waybill database"}:::decision N_SetWaybillPCBforDatabaseAccess_Node0_action["The system sets the waybill PCB
GCUS-PCB3 as the database access
control block"]:::main N_SetWaybillPCBforDatabaseAccess_Node0 -- Yes --> N_SetWaybillPCBforDatabaseAccess_Node0_action N_SetWaybillPCBforDatabaseAccess_Node0_action --> E_SetWaybillPCBforDatabaseAccess S_SetWaybillPCBforDatabaseAccess --> N_SetWaybillPCBforDatabaseAccess_Node0 N_SetWaybillPCBforDatabaseAccess_Node0 -- No --> E_SetWaybillPCBforDatabaseAccess
File: GCCUSIO.cbl
GIVEN:
A waybill index search operation is initiated
WHEN:
The system prepares to access the waybill database
THEN:
The system sets the waybill PCB (GCUS-PCB3) as the database access control block
β Consolidated Acceptance Criteria
- The system performs a waybill index search → the system extracts the waybill index value from GCUSRT-RT072-WAYBILL-INDEX and assigns it to GCUW-KEY-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_ExtractWaybillIndexValuefromCargoRecord(["Start Step"])
E_ExtractWaybillIndexValuefromCargoRecord(["End Step"])
N_ExtractWaybillIndexValuefromCargoRecord_Node0{"The system performs a waybill index
search"}:::decision N_ExtractWaybillIndexValuefromCargoRecord_Node0_action["The system extracts the waybill
index value from
GCUSRT-RT072-WAYBILL-INDEX and
assigns it to GCUW-KEY-VALUE"]:::main N_ExtractWaybillIndexValuefromCargoRecord_Node0 -- Yes --> N_ExtractWaybillIndexValuefromCargoRecord_Node0_action N_ExtractWaybillIndexValuefromCargoRecord_Node0_action --> E_ExtractWaybillIndexValuefromCargoRecord S_ExtractWaybillIndexValuefromCargoRecord --> N_ExtractWaybillIndexValuefromCargoRecord_Node0 N_ExtractWaybillIndexValuefromCargoRecord_Node0 -- No --> E_ExtractWaybillIndexValuefromCargoRecord
search"}:::decision N_ExtractWaybillIndexValuefromCargoRecord_Node0_action["The system extracts the waybill
index value from
GCUSRT-RT072-WAYBILL-INDEX and
assigns it to GCUW-KEY-VALUE"]:::main N_ExtractWaybillIndexValuefromCargoRecord_Node0 -- Yes --> N_ExtractWaybillIndexValuefromCargoRecord_Node0_action N_ExtractWaybillIndexValuefromCargoRecord_Node0_action --> E_ExtractWaybillIndexValuefromCargoRecord S_ExtractWaybillIndexValuefromCargoRecord --> N_ExtractWaybillIndexValuefromCargoRecord_Node0 N_ExtractWaybillIndexValuefromCargoRecord_Node0 -- No --> E_ExtractWaybillIndexValuefromCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record with waybill index information exists
WHEN:
The system performs a waybill index search
THEN:
- The system extracts the waybill index value from gcusrt-rt072-waybill-index
- Assigns it to gcuw-key-value
β Consolidated Acceptance Criteria
- The system prepares a waybill index search → the system assigns the operator from GCWUSIO-OPERATOR to GCUW-OPERATOR for 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_SetSearchOperatorfromInputParameters(["Start Step"])
E_SetSearchOperatorfromInputParameters(["End Step"])
N_SetSearchOperatorfromInputParameters_Node0{"The system prepares a waybill index
search"}:::decision N_SetSearchOperatorfromInputParameters_Node0_action["The system assigns the operator
from GCWUSIO-OPERATOR to
GCUW-OPERATOR for the search
criteria"]:::main N_SetSearchOperatorfromInputParameters_Node0 -- Yes --> N_SetSearchOperatorfromInputParameters_Node0_action N_SetSearchOperatorfromInputParameters_Node0_action --> E_SetSearchOperatorfromInputParameters S_SetSearchOperatorfromInputParameters --> N_SetSearchOperatorfromInputParameters_Node0 N_SetSearchOperatorfromInputParameters_Node0 -- No --> E_SetSearchOperatorfromInputParameters
search"}:::decision N_SetSearchOperatorfromInputParameters_Node0_action["The system assigns the operator
from GCWUSIO-OPERATOR to
GCUW-OPERATOR for the search
criteria"]:::main N_SetSearchOperatorfromInputParameters_Node0 -- Yes --> N_SetSearchOperatorfromInputParameters_Node0_action N_SetSearchOperatorfromInputParameters_Node0_action --> E_SetSearchOperatorfromInputParameters S_SetSearchOperatorfromInputParameters --> N_SetSearchOperatorfromInputParameters_Node0 N_SetSearchOperatorfromInputParameters_Node0 -- No --> E_SetSearchOperatorfromInputParameters
File: GCCUSIO.cbl
GIVEN:
Input parameters contain a search operator specification
WHEN:
The system prepares a waybill index search
THEN:
The system assigns the operator from GCWUSIO-OPERATOR to GCUW-OPERATOR for the search criteria
β Consolidated Acceptance Criteria
- The system builds the search criteria → the system assigns GCUW-SSA-QUAL to WS-SSA-1 to create a qualified search specification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildQualifiedSSAforWaybillSearch(["Start Step"])
E_BuildQualifiedSSAforWaybillSearch(["End Step"])
N_BuildQualifiedSSAforWaybillSearch_Node0{"The system builds the search
criteria"}:::decision N_BuildQualifiedSSAforWaybillSearch_Node0_action["The system assigns GCUW-SSA-QUAL to
WS-SSA-1 to create a qualified
search specification"]:::main N_BuildQualifiedSSAforWaybillSearch_Node0 -- Yes --> N_BuildQualifiedSSAforWaybillSearch_Node0_action N_BuildQualifiedSSAforWaybillSearch_Node0_action --> E_BuildQualifiedSSAforWaybillSearch S_BuildQualifiedSSAforWaybillSearch --> N_BuildQualifiedSSAforWaybillSearch_Node0 N_BuildQualifiedSSAforWaybillSearch_Node0 -- No --> E_BuildQualifiedSSAforWaybillSearch
criteria"}:::decision N_BuildQualifiedSSAforWaybillSearch_Node0_action["The system assigns GCUW-SSA-QUAL to
WS-SSA-1 to create a qualified
search specification"]:::main N_BuildQualifiedSSAforWaybillSearch_Node0 -- Yes --> N_BuildQualifiedSSAforWaybillSearch_Node0_action N_BuildQualifiedSSAforWaybillSearch_Node0_action --> E_BuildQualifiedSSAforWaybillSearch S_BuildQualifiedSSAforWaybillSearch --> N_BuildQualifiedSSAforWaybillSearch_Node0 N_BuildQualifiedSSAforWaybillSearch_Node0 -- No --> E_BuildQualifiedSSAforWaybillSearch
File: GCCUSIO.cbl
GIVEN:
Waybill key value and operator are set
WHEN:
The system builds the search criteria
THEN:
The system assigns GCUW-SSA-QUAL to WS-SSA-1 to create a qualified search specification
β Consolidated Acceptance Criteria
- The system executes the waybill index search → the system performs X1100-CALL-ONE-SSA to execute the database call with the waybill index 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_ExecuteDatabaseCallwithWaybillIndex(["Start Step"])
E_ExecuteDatabaseCallwithWaybillIndex(["End Step"])
N_ExecuteDatabaseCallwithWaybillIndex_Node0{"The system executes the waybill
index search"}:::decision N_ExecuteDatabaseCallwithWaybillIndex_Node0_action["The system performs
X1100-CALL-ONE-SSA to execute the
database call with the waybill index
search criteria"]:::main N_ExecuteDatabaseCallwithWaybillIndex_Node0 -- Yes --> N_ExecuteDatabaseCallwithWaybillIndex_Node0_action N_ExecuteDatabaseCallwithWaybillIndex_Node0_action --> E_ExecuteDatabaseCallwithWaybillIndex S_ExecuteDatabaseCallwithWaybillIndex --> N_ExecuteDatabaseCallwithWaybillIndex_Node0 N_ExecuteDatabaseCallwithWaybillIndex_Node0 -- No --> E_ExecuteDatabaseCallwithWaybillIndex
index search"}:::decision N_ExecuteDatabaseCallwithWaybillIndex_Node0_action["The system performs
X1100-CALL-ONE-SSA to execute the
database call with the waybill index
search criteria"]:::main N_ExecuteDatabaseCallwithWaybillIndex_Node0 -- Yes --> N_ExecuteDatabaseCallwithWaybillIndex_Node0_action N_ExecuteDatabaseCallwithWaybillIndex_Node0_action --> E_ExecuteDatabaseCallwithWaybillIndex S_ExecuteDatabaseCallwithWaybillIndex --> N_ExecuteDatabaseCallwithWaybillIndex_Node0 N_ExecuteDatabaseCallwithWaybillIndex_Node0 -- No --> E_ExecuteDatabaseCallwithWaybillIndex
File: GCCUSIO.cbl
GIVEN:
Waybill search criteria and database access parameters are configured
WHEN:
The system executes the waybill index search
THEN:
The system performs X1100-CALL-ONE-SSA to execute the database call with the waybill index search criteria
β Consolidated Acceptance Criteria
- The system processes waybill index extraction → the road number from GCUSRT-RT082-ROAD-NUM is extracted and prepared for index 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_ExtractRoadNumberfromRT082ROADNUM(["Start Step"])
E_ExtractRoadNumberfromRT082ROADNUM(["End Step"])
N_ExtractRoadNumberfromRT082ROADNUM_Node0{"The system processes waybill index
extraction"}:::decision N_ExtractRoadNumberfromRT082ROADNUM_Node0_action["The road number from
GCUSRT-RT082-ROAD-NUM is extracted
and prepared for index population"]:::main N_ExtractRoadNumberfromRT082ROADNUM_Node0 -- Yes --> N_ExtractRoadNumberfromRT082ROADNUM_Node0_action N_ExtractRoadNumberfromRT082ROADNUM_Node0_action --> E_ExtractRoadNumberfromRT082ROADNUM S_ExtractRoadNumberfromRT082ROADNUM --> N_ExtractRoadNumberfromRT082ROADNUM_Node0 N_ExtractRoadNumberfromRT082ROADNUM_Node0 -- No --> E_ExtractRoadNumberfromRT082ROADNUM
extraction"}:::decision N_ExtractRoadNumberfromRT082ROADNUM_Node0_action["The road number from
GCUSRT-RT082-ROAD-NUM is extracted
and prepared for index population"]:::main N_ExtractRoadNumberfromRT082ROADNUM_Node0 -- Yes --> N_ExtractRoadNumberfromRT082ROADNUM_Node0_action N_ExtractRoadNumberfromRT082ROADNUM_Node0_action --> E_ExtractRoadNumberfromRT082ROADNUM S_ExtractRoadNumberfromRT082ROADNUM --> N_ExtractRoadNumberfromRT082ROADNUM_Node0 N_ExtractRoadNumberfromRT082ROADNUM_Node0 -- No --> E_ExtractRoadNumberfromRT082ROADNUM
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index extraction
THEN:
- The road number from gcusrt-rt082-road-num is extracted
- Prepared for index population
β Consolidated Acceptance Criteria
- The system processes waybill index extraction → the station number from GCUSRT-RT082-STN-NUM is extracted and prepared for index 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_ExtractStationNumberfromRT082STNNUM(["Start Step"])
E_ExtractStationNumberfromRT082STNNUM(["End Step"])
N_ExtractStationNumberfromRT082STNNUM_Node0{"The system processes waybill index
extraction"}:::decision N_ExtractStationNumberfromRT082STNNUM_Node0_action["The station number from
GCUSRT-RT082-STN-NUM is extracted
and prepared for index population"]:::main N_ExtractStationNumberfromRT082STNNUM_Node0 -- Yes --> N_ExtractStationNumberfromRT082STNNUM_Node0_action N_ExtractStationNumberfromRT082STNNUM_Node0_action --> E_ExtractStationNumberfromRT082STNNUM S_ExtractStationNumberfromRT082STNNUM --> N_ExtractStationNumberfromRT082STNNUM_Node0 N_ExtractStationNumberfromRT082STNNUM_Node0 -- No --> E_ExtractStationNumberfromRT082STNNUM
extraction"}:::decision N_ExtractStationNumberfromRT082STNNUM_Node0_action["The station number from
GCUSRT-RT082-STN-NUM is extracted
and prepared for index population"]:::main N_ExtractStationNumberfromRT082STNNUM_Node0 -- Yes --> N_ExtractStationNumberfromRT082STNNUM_Node0_action N_ExtractStationNumberfromRT082STNNUM_Node0_action --> E_ExtractStationNumberfromRT082STNNUM S_ExtractStationNumberfromRT082STNNUM --> N_ExtractStationNumberfromRT082STNNUM_Node0 N_ExtractStationNumberfromRT082STNNUM_Node0 -- No --> E_ExtractStationNumberfromRT082STNNUM
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index extraction
THEN:
- The station number from gcusrt-rt082-stn-num is extracted
- Prepared for index population
β Consolidated Acceptance Criteria
- The system processes waybill index extraction → the waybill number from GCUSRT-RT082-WB-NUM is extracted and prepared for index 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_ExtractWaybillNumberfromRT082WBNUM(["Start Step"])
E_ExtractWaybillNumberfromRT082WBNUM(["End Step"])
N_ExtractWaybillNumberfromRT082WBNUM_Node0{"The system processes waybill index
extraction"}:::decision N_ExtractWaybillNumberfromRT082WBNUM_Node0_action["The waybill number from
GCUSRT-RT082-WB-NUM is extracted and
prepared for index population"]:::main N_ExtractWaybillNumberfromRT082WBNUM_Node0 -- Yes --> N_ExtractWaybillNumberfromRT082WBNUM_Node0_action N_ExtractWaybillNumberfromRT082WBNUM_Node0_action --> E_ExtractWaybillNumberfromRT082WBNUM S_ExtractWaybillNumberfromRT082WBNUM --> N_ExtractWaybillNumberfromRT082WBNUM_Node0 N_ExtractWaybillNumberfromRT082WBNUM_Node0 -- No --> E_ExtractWaybillNumberfromRT082WBNUM
extraction"}:::decision N_ExtractWaybillNumberfromRT082WBNUM_Node0_action["The waybill number from
GCUSRT-RT082-WB-NUM is extracted and
prepared for index population"]:::main N_ExtractWaybillNumberfromRT082WBNUM_Node0 -- Yes --> N_ExtractWaybillNumberfromRT082WBNUM_Node0_action N_ExtractWaybillNumberfromRT082WBNUM_Node0_action --> E_ExtractWaybillNumberfromRT082WBNUM S_ExtractWaybillNumberfromRT082WBNUM --> N_ExtractWaybillNumberfromRT082WBNUM_Node0 N_ExtractWaybillNumberfromRT082WBNUM_Node0 -- No --> E_ExtractWaybillNumberfromRT082WBNUM
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index extraction
THEN:
- The waybill number from gcusrt-rt082-wb-num is extracted
- Prepared for index population
β Consolidated Acceptance Criteria
- The system processes waybill index extraction → the waybill date from GCUSRT-RT082-WB-DTE is extracted and prepared for index 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_ExtractWaybillDatefromRT082WBDTE(["Start Step"])
E_ExtractWaybillDatefromRT082WBDTE(["End Step"])
N_ExtractWaybillDatefromRT082WBDTE_Node0{"The system processes waybill index
extraction"}:::decision N_ExtractWaybillDatefromRT082WBDTE_Node0_action["The waybill date from
GCUSRT-RT082-WB-DTE is extracted and
prepared for index population"]:::main N_ExtractWaybillDatefromRT082WBDTE_Node0 -- Yes --> N_ExtractWaybillDatefromRT082WBDTE_Node0_action N_ExtractWaybillDatefromRT082WBDTE_Node0_action --> E_ExtractWaybillDatefromRT082WBDTE S_ExtractWaybillDatefromRT082WBDTE --> N_ExtractWaybillDatefromRT082WBDTE_Node0 N_ExtractWaybillDatefromRT082WBDTE_Node0 -- No --> E_ExtractWaybillDatefromRT082WBDTE
extraction"}:::decision N_ExtractWaybillDatefromRT082WBDTE_Node0_action["The waybill date from
GCUSRT-RT082-WB-DTE is extracted and
prepared for index population"]:::main N_ExtractWaybillDatefromRT082WBDTE_Node0 -- Yes --> N_ExtractWaybillDatefromRT082WBDTE_Node0_action N_ExtractWaybillDatefromRT082WBDTE_Node0_action --> E_ExtractWaybillDatefromRT082WBDTE S_ExtractWaybillDatefromRT082WBDTE --> N_ExtractWaybillDatefromRT082WBDTE_Node0 N_ExtractWaybillDatefromRT082WBDTE_Node0 -- No --> E_ExtractWaybillDatefromRT082WBDTE
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is active and not deleted
WHEN:
The system processes waybill index extraction
THEN:
- The waybill date from gcusrt-rt082-wb-dte is extracted
- Prepared for index population
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the extracted road number is moved to GCUSRT-RT072-ROAD-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_PopulateRT072ROADINDEXwithRoadNumber(["Start Step"])
E_PopulateRT072ROADINDEXwithRoadNumber(["End Step"])
N_PopulateRT072ROADINDEXwithRoadNumber_Node0{"The system populates waybill index
fields"}:::decision N_PopulateRT072ROADINDEXwithRoadNumber_Node0_action["The extracted road number is moved
to GCUSRT-RT072-ROAD-INDEX"]:::main N_PopulateRT072ROADINDEXwithRoadNumber_Node0 -- Yes --> N_PopulateRT072ROADINDEXwithRoadNumber_Node0_action N_PopulateRT072ROADINDEXwithRoadNumber_Node0_action --> E_PopulateRT072ROADINDEXwithRoadNumber S_PopulateRT072ROADINDEXwithRoadNumber --> N_PopulateRT072ROADINDEXwithRoadNumber_Node0 N_PopulateRT072ROADINDEXwithRoadNumber_Node0 -- No --> E_PopulateRT072ROADINDEXwithRoadNumber
fields"}:::decision N_PopulateRT072ROADINDEXwithRoadNumber_Node0_action["The extracted road number is moved
to GCUSRT-RT072-ROAD-INDEX"]:::main N_PopulateRT072ROADINDEXwithRoadNumber_Node0 -- Yes --> N_PopulateRT072ROADINDEXwithRoadNumber_Node0_action N_PopulateRT072ROADINDEXwithRoadNumber_Node0_action --> E_PopulateRT072ROADINDEXwithRoadNumber S_PopulateRT072ROADINDEXwithRoadNumber --> N_PopulateRT072ROADINDEXwithRoadNumber_Node0 N_PopulateRT072ROADINDEXwithRoadNumber_Node0 -- No --> E_PopulateRT072ROADINDEXwithRoadNumber
File: GCCUSIO.cbl
GIVEN:
The road number has been extracted from RT082-ROAD-NUM
WHEN:
The system populates waybill index fields
THEN:
The extracted road number is moved to GCUSRT-RT072-ROAD-INDEX
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the extracted station number is moved to GCUSRT-RT072-STN-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_PopulateRT072STNINDEXwithStationNumber(["Start Step"])
E_PopulateRT072STNINDEXwithStationNumber(["End Step"])
N_PopulateRT072STNINDEXwithStationNumber_Node0{"The system populates waybill index
fields"}:::decision N_PopulateRT072STNINDEXwithStationNumber_Node0_action["The extracted station number is
moved to GCUSRT-RT072-STN-INDEX"]:::main N_PopulateRT072STNINDEXwithStationNumber_Node0 -- Yes --> N_PopulateRT072STNINDEXwithStationNumber_Node0_action N_PopulateRT072STNINDEXwithStationNumber_Node0_action --> E_PopulateRT072STNINDEXwithStationNumber S_PopulateRT072STNINDEXwithStationNumber --> N_PopulateRT072STNINDEXwithStationNumber_Node0 N_PopulateRT072STNINDEXwithStationNumber_Node0 -- No --> E_PopulateRT072STNINDEXwithStationNumber
fields"}:::decision N_PopulateRT072STNINDEXwithStationNumber_Node0_action["The extracted station number is
moved to GCUSRT-RT072-STN-INDEX"]:::main N_PopulateRT072STNINDEXwithStationNumber_Node0 -- Yes --> N_PopulateRT072STNINDEXwithStationNumber_Node0_action N_PopulateRT072STNINDEXwithStationNumber_Node0_action --> E_PopulateRT072STNINDEXwithStationNumber S_PopulateRT072STNINDEXwithStationNumber --> N_PopulateRT072STNINDEXwithStationNumber_Node0 N_PopulateRT072STNINDEXwithStationNumber_Node0 -- No --> E_PopulateRT072STNINDEXwithStationNumber
File: GCCUSIO.cbl
GIVEN:
The station number has been extracted from RT082-STN-NUM
WHEN:
The system populates waybill index fields
THEN:
The extracted station number is moved to GCUSRT-RT072-STN-INDEX
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the extracted waybill number is moved to GCUSRT-RT072-WB-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_PopulateRT072WBINDEXwithWaybillNumber(["Start Step"])
E_PopulateRT072WBINDEXwithWaybillNumber(["End Step"])
N_PopulateRT072WBINDEXwithWaybillNumber_Node0{"The system populates waybill index
fields"}:::decision N_PopulateRT072WBINDEXwithWaybillNumber_Node0_action["The extracted waybill number is
moved to GCUSRT-RT072-WB-INDEX"]:::main N_PopulateRT072WBINDEXwithWaybillNumber_Node0 -- Yes --> N_PopulateRT072WBINDEXwithWaybillNumber_Node0_action N_PopulateRT072WBINDEXwithWaybillNumber_Node0_action --> E_PopulateRT072WBINDEXwithWaybillNumber S_PopulateRT072WBINDEXwithWaybillNumber --> N_PopulateRT072WBINDEXwithWaybillNumber_Node0 N_PopulateRT072WBINDEXwithWaybillNumber_Node0 -- No --> E_PopulateRT072WBINDEXwithWaybillNumber
fields"}:::decision N_PopulateRT072WBINDEXwithWaybillNumber_Node0_action["The extracted waybill number is
moved to GCUSRT-RT072-WB-INDEX"]:::main N_PopulateRT072WBINDEXwithWaybillNumber_Node0 -- Yes --> N_PopulateRT072WBINDEXwithWaybillNumber_Node0_action N_PopulateRT072WBINDEXwithWaybillNumber_Node0_action --> E_PopulateRT072WBINDEXwithWaybillNumber S_PopulateRT072WBINDEXwithWaybillNumber --> N_PopulateRT072WBINDEXwithWaybillNumber_Node0 N_PopulateRT072WBINDEXwithWaybillNumber_Node0 -- No --> E_PopulateRT072WBINDEXwithWaybillNumber
File: GCCUSIO.cbl
GIVEN:
The waybill number has been extracted from RT082-WB-NUM
WHEN:
The system populates waybill index fields
THEN:
The extracted waybill number is moved to GCUSRT-RT072-WB-INDEX
β Consolidated Acceptance Criteria
- The system populates waybill index fields → the extracted waybill date is moved to GCUSRT-RT072-WB-DTE-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_PopulateRT072WBDTEINDEXwithWaybillDate(["Start Step"])
E_PopulateRT072WBDTEINDEXwithWaybillDate(["End Step"])
N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0{"The system populates waybill index
fields"}:::decision N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0_action["The extracted waybill date is moved
to GCUSRT-RT072-WB-DTE-INDEX"]:::main N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0 -- Yes --> N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0_action N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0_action --> E_PopulateRT072WBDTEINDEXwithWaybillDate S_PopulateRT072WBDTEINDEXwithWaybillDate --> N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0 N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0 -- No --> E_PopulateRT072WBDTEINDEXwithWaybillDate
fields"}:::decision N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0_action["The extracted waybill date is moved
to GCUSRT-RT072-WB-DTE-INDEX"]:::main N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0 -- Yes --> N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0_action N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0_action --> E_PopulateRT072WBDTEINDEXwithWaybillDate S_PopulateRT072WBDTEINDEXwithWaybillDate --> N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0 N_PopulateRT072WBDTEINDEXwithWaybillDate_Node0 -- No --> E_PopulateRT072WBDTEINDEXwithWaybillDate
File: GCCUSIO.cbl
GIVEN:
The waybill date has been extracted from RT082-WB-DTE
WHEN:
The system populates waybill index fields
THEN:
The extracted waybill date is moved to GCUSRT-RT072-WB-DTE-INDEX
β Consolidated Acceptance Criteria
- The system creates the complete waybill index → the RT072-WB-NUM-INDEX field contains the complete waybill index structure for primary 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_CreateCompleteWaybillIndexRT072WBNUMINDEX(["Start Step"])
E_CreateCompleteWaybillIndexRT072WBNUMINDEX(["End Step"])
N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0{"The system creates the complete
waybill index"}:::decision N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0_action["The RT072-WB-NUM-INDEX field
contains the complete waybill index
structure for primary reference"]:::main N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0 -- Yes --> N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0_action N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0_action --> E_CreateCompleteWaybillIndexRT072WBNUMINDEX S_CreateCompleteWaybillIndexRT072WBNUMINDEX --> N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0 N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0 -- No --> E_CreateCompleteWaybillIndexRT072WBNUMINDEX
waybill index"}:::decision N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0_action["The RT072-WB-NUM-INDEX field
contains the complete waybill index
structure for primary reference"]:::main N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0 -- Yes --> N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0_action N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0_action --> E_CreateCompleteWaybillIndexRT072WBNUMINDEX S_CreateCompleteWaybillIndexRT072WBNUMINDEX --> N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0 N_CreateCompleteWaybillIndexRT072WBNUMINDEX_Node0 -- No --> E_CreateCompleteWaybillIndexRT072WBNUMINDEX
File: GCCUSIO.cbl
GIVEN:
All individual waybill components have been populated in RT072 fields
WHEN:
The system creates the complete waybill index
THEN:
The RT072-WB-NUM-INDEX field contains the complete waybill index structure for primary reference
β Consolidated Acceptance Criteria
- The system establishes cross-reference indexing → the waybill index is copied from GCUSRT-RT072-WB-NUM-INDEX to GCUSRT-RT073-WB-NUM-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_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference(["Start Step"])
E_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference(["End Step"])
N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0{"The system establishes
cross-reference indexing"}:::decision N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0_action["The waybill index is copied from
GCUSRT-RT072-WB-NUM-INDEX to
GCUSRT-RT073-WB-NUM-INDEX"]:::main N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0 -- Yes --> N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0_action N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0_action --> E_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference S_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference --> N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0 N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0 -- No --> E_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference
cross-reference indexing"}:::decision N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0_action["The waybill index is copied from
GCUSRT-RT072-WB-NUM-INDEX to
GCUSRT-RT073-WB-NUM-INDEX"]:::main N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0 -- Yes --> N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0_action N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0_action --> E_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference S_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference --> N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0 N_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference_Node0 -- No --> E_CopyWaybillIndextoRT073WBNUMINDEXforCrossReference
File: GCCUSIO.cbl
GIVEN:
The complete waybill index RT072-WB-NUM-INDEX has been created
WHEN:
The system establishes cross-reference indexing
THEN:
The waybill index is copied from GCUSRT-RT072-WB-NUM-INDEX to GCUSRT-RT073-WB-NUM-INDEX
β Consolidated Acceptance Criteria
- The car-waybill index field is checked for content → if index contains data, qualified search is prepared; if index is empty or spaces, unqualified search 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_CarWaybillIndexAvailable(["Start Step"])
E_CarWaybillIndexAvailable(["End Step"])
N_CarWaybillIndexAvailable_Node0{"The car-waybill index field is
checked for content"}:::decision N_CarWaybillIndexAvailable_Node0_action["If index contains data, qualified
search is prepared if index is empty
or spaces, unqualified search is
prepared"]:::main N_CarWaybillIndexAvailable_Node0 -- Yes --> N_CarWaybillIndexAvailable_Node0_action N_CarWaybillIndexAvailable_Node0_action --> E_CarWaybillIndexAvailable S_CarWaybillIndexAvailable --> N_CarWaybillIndexAvailable_Node0 N_CarWaybillIndexAvailable_Node0 -- No --> E_CarWaybillIndexAvailable
checked for content"}:::decision N_CarWaybillIndexAvailable_Node0_action["If index contains data, qualified
search is prepared if index is empty
or spaces, unqualified search is
prepared"]:::main N_CarWaybillIndexAvailable_Node0 -- Yes --> N_CarWaybillIndexAvailable_Node0_action N_CarWaybillIndexAvailable_Node0_action --> E_CarWaybillIndexAvailable S_CarWaybillIndexAvailable --> N_CarWaybillIndexAvailable_Node0 N_CarWaybillIndexAvailable_Node0 -- No --> E_CarWaybillIndexAvailable
File: GCCUSIO.cbl
GIVEN:
A car-waybill search request is initiated
WHEN:
The car-waybill index field is checked for content
THEN:
If index contains data, qualified search is prepared; if index is empty or spaces, unqualified search is prepared
β Consolidated Acceptance Criteria
- Qualified search is being configured → car-waybill index value is moved to search key and qualified SSA is set for precise record 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_BuildQualifiedSearchwithCarWaybillKey(["Start Step"])
E_BuildQualifiedSearchwithCarWaybillKey(["End Step"])
N_BuildQualifiedSearchwithCarWaybillKey_Node0{"Qualified search is being
configured"}:::decision N_BuildQualifiedSearchwithCarWaybillKey_Node0_action["Car-waybill index value is moved to
search key and qualified SSA is set
for precise record matching"]:::main N_BuildQualifiedSearchwithCarWaybillKey_Node0 -- Yes --> N_BuildQualifiedSearchwithCarWaybillKey_Node0_action N_BuildQualifiedSearchwithCarWaybillKey_Node0_action --> E_BuildQualifiedSearchwithCarWaybillKey S_BuildQualifiedSearchwithCarWaybillKey --> N_BuildQualifiedSearchwithCarWaybillKey_Node0 N_BuildQualifiedSearchwithCarWaybillKey_Node0 -- No --> E_BuildQualifiedSearchwithCarWaybillKey
configured"}:::decision N_BuildQualifiedSearchwithCarWaybillKey_Node0_action["Car-waybill index value is moved to
search key and qualified SSA is set
for precise record matching"]:::main N_BuildQualifiedSearchwithCarWaybillKey_Node0 -- Yes --> N_BuildQualifiedSearchwithCarWaybillKey_Node0_action N_BuildQualifiedSearchwithCarWaybillKey_Node0_action --> E_BuildQualifiedSearchwithCarWaybillKey S_BuildQualifiedSearchwithCarWaybillKey --> N_BuildQualifiedSearchwithCarWaybillKey_Node0 N_BuildQualifiedSearchwithCarWaybillKey_Node0 -- No --> E_BuildQualifiedSearchwithCarWaybillKey
File: GCCUSIO.cbl
GIVEN:
Car-waybill index contains valid data
WHEN:
Qualified search is being configured
THEN:
- Car-waybill index value is moved to search key
- Qualified ssa is set for precise record matching
β Consolidated Acceptance Criteria
- Unqualified search is being configured → search key is set to spaces and unqualified SSA is set to retrieve all 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_BuildUnqualifiedSearch(["Start Step"])
E_BuildUnqualifiedSearch(["End Step"])
N_BuildUnqualifiedSearch_Node0{"Unqualified search is being
configured"}:::decision N_BuildUnqualifiedSearch_Node0_action["Search key is set to spaces and
unqualified SSA is set to retrieve
all records"]:::main N_BuildUnqualifiedSearch_Node0 -- Yes --> N_BuildUnqualifiedSearch_Node0_action N_BuildUnqualifiedSearch_Node0_action --> E_BuildUnqualifiedSearch S_BuildUnqualifiedSearch --> N_BuildUnqualifiedSearch_Node0 N_BuildUnqualifiedSearch_Node0 -- No --> E_BuildUnqualifiedSearch
configured"}:::decision N_BuildUnqualifiedSearch_Node0_action["Search key is set to spaces and
unqualified SSA is set to retrieve
all records"]:::main N_BuildUnqualifiedSearch_Node0 -- Yes --> N_BuildUnqualifiedSearch_Node0_action N_BuildUnqualifiedSearch_Node0_action --> E_BuildUnqualifiedSearch S_BuildUnqualifiedSearch --> N_BuildUnqualifiedSearch_Node0 N_BuildUnqualifiedSearch_Node0 -- No --> E_BuildUnqualifiedSearch
File: GCCUSIO.cbl
GIVEN:
Car-waybill index is empty or contains only spaces
WHEN:
Unqualified search is being configured
THEN:
- Search key is set to spaces
- Unqualified ssa is set to retrieve all records
β Consolidated Acceptance Criteria
- Database search is executed → system performs database call using the configured search criteria to retrieve cargo records via 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_ExecuteDatabaseSearchonCarWaybillIndex(["Start Step"])
E_ExecuteDatabaseSearchonCarWaybillIndex(["End Step"])
N_ExecuteDatabaseSearchonCarWaybillIndex_Node0{"Database search is executed"}:::decision
N_ExecuteDatabaseSearchonCarWaybillIndex_Node0_action["System performs database call using
the configured search criteria to
retrieve cargo records via
car-waybill index"]:::main N_ExecuteDatabaseSearchonCarWaybillIndex_Node0 -- Yes --> N_ExecuteDatabaseSearchonCarWaybillIndex_Node0_action N_ExecuteDatabaseSearchonCarWaybillIndex_Node0_action --> E_ExecuteDatabaseSearchonCarWaybillIndex S_ExecuteDatabaseSearchonCarWaybillIndex --> N_ExecuteDatabaseSearchonCarWaybillIndex_Node0 N_ExecuteDatabaseSearchonCarWaybillIndex_Node0 -- No --> E_ExecuteDatabaseSearchonCarWaybillIndex
the configured search criteria to
retrieve cargo records via
car-waybill index"]:::main N_ExecuteDatabaseSearchonCarWaybillIndex_Node0 -- Yes --> N_ExecuteDatabaseSearchonCarWaybillIndex_Node0_action N_ExecuteDatabaseSearchonCarWaybillIndex_Node0_action --> E_ExecuteDatabaseSearchonCarWaybillIndex S_ExecuteDatabaseSearchonCarWaybillIndex --> N_ExecuteDatabaseSearchonCarWaybillIndex_Node0 N_ExecuteDatabaseSearchonCarWaybillIndex_Node0 -- No --> E_ExecuteDatabaseSearchonCarWaybillIndex
File: GCCUSIO.cbl
GIVEN:
Car-waybill search parameters are configured with PCB4 and appropriate SSA
WHEN:
Database search is executed
THEN:
System performs database call using the configured search criteria to retrieve cargo records via car-waybill index
β Consolidated Acceptance Criteria
- The car-waybill index field contains data (is not empty spaces) → the system sets up a qualified search using the car-waybill index value as the search key and configures qualified search 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_CheckCarWaybillIndexContent(["Start Step"])
E_CheckCarWaybillIndexContent(["End Step"])
N_CheckCarWaybillIndexContent_Node0{"The car-waybill index field
contains data is not empty spaces"}:::decision N_CheckCarWaybillIndexContent_Node0_action["The system sets up a qualified
search using the car-waybill index
value as the search key and
configures qualified search
parameters"]:::main N_CheckCarWaybillIndexContent_Node0 -- Yes --> N_CheckCarWaybillIndexContent_Node0_action N_CheckCarWaybillIndexContent_Node0_action --> E_CheckCarWaybillIndexContent S_CheckCarWaybillIndexContent --> N_CheckCarWaybillIndexContent_Node0 N_CheckCarWaybillIndexContent_Node0 -- No --> E_CheckCarWaybillIndexContent
contains data is not empty spaces"}:::decision N_CheckCarWaybillIndexContent_Node0_action["The system sets up a qualified
search using the car-waybill index
value as the search key and
configures qualified search
parameters"]:::main N_CheckCarWaybillIndexContent_Node0 -- Yes --> N_CheckCarWaybillIndexContent_Node0_action N_CheckCarWaybillIndexContent_Node0_action --> E_CheckCarWaybillIndexContent S_CheckCarWaybillIndexContent --> N_CheckCarWaybillIndexContent_Node0 N_CheckCarWaybillIndexContent_Node0 -- No --> E_CheckCarWaybillIndexContent
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A car-waybill index search request is being processed
WHEN:
The car-waybill index field contains data (is not empty spaces)
THEN:
- The system sets up a qualified search using the car-waybill index value as the search key
- Configures qualified search parameters
β Consolidated Acceptance Criteria
- The car-waybill index field is empty (contains spaces) → the system clears the search key value to spaces and configures unqualified search parameters to retrieve all 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_SetUpUnqualifiedSearch(["Start Step"])
E_SetUpUnqualifiedSearch(["End Step"])
N_SetUpUnqualifiedSearch_Node0{"The car-waybill index field is
empty contains spaces"}:::decision N_SetUpUnqualifiedSearch_Node0_action["The system clears the search key
value to spaces and configures
unqualified search parameters to
retrieve all records"]:::main N_SetUpUnqualifiedSearch_Node0 -- Yes --> N_SetUpUnqualifiedSearch_Node0_action N_SetUpUnqualifiedSearch_Node0_action --> E_SetUpUnqualifiedSearch S_SetUpUnqualifiedSearch --> N_SetUpUnqualifiedSearch_Node0 N_SetUpUnqualifiedSearch_Node0 -- No --> E_SetUpUnqualifiedSearch
empty contains spaces"}:::decision N_SetUpUnqualifiedSearch_Node0_action["The system clears the search key
value to spaces and configures
unqualified search parameters to
retrieve all records"]:::main N_SetUpUnqualifiedSearch_Node0 -- Yes --> N_SetUpUnqualifiedSearch_Node0_action N_SetUpUnqualifiedSearch_Node0_action --> E_SetUpUnqualifiedSearch S_SetUpUnqualifiedSearch --> N_SetUpUnqualifiedSearch_Node0 N_SetUpUnqualifiedSearch_Node0 -- No --> E_SetUpUnqualifiedSearch
File: GCCUSIO.cbl
GIVEN:
A car-waybill index search request is being processed
WHEN:
The car-waybill index field is empty (contains spaces)
THEN:
- The system clears the search key value to spaces
- Configures unqualified search parameters to retrieve all records
β Consolidated Acceptance Criteria
- Setting up a qualified search for car-waybill records → the system moves the car-waybill index value to the search key field, sets the operator, and configures qualified 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_SetCarWaybillIndexValueasSearchKey(["Start Step"])
E_SetCarWaybillIndexValueasSearchKey(["End Step"])
N_SetCarWaybillIndexValueasSearchKey_Node0{"Setting up a qualified search for
car-waybill records"}:::decision N_SetCarWaybillIndexValueasSearchKey_Node0_action["The system moves the car-waybill
index value to the search key field,
sets the operator, and configures
qualified SSA parameters"]:::main N_SetCarWaybillIndexValueasSearchKey_Node0 -- Yes --> N_SetCarWaybillIndexValueasSearchKey_Node0_action N_SetCarWaybillIndexValueasSearchKey_Node0_action --> E_SetCarWaybillIndexValueasSearchKey S_SetCarWaybillIndexValueasSearchKey --> N_SetCarWaybillIndexValueasSearchKey_Node0 N_SetCarWaybillIndexValueasSearchKey_Node0 -- No --> E_SetCarWaybillIndexValueasSearchKey
car-waybill records"}:::decision N_SetCarWaybillIndexValueasSearchKey_Node0_action["The system moves the car-waybill
index value to the search key field,
sets the operator, and configures
qualified SSA parameters"]:::main N_SetCarWaybillIndexValueasSearchKey_Node0 -- Yes --> N_SetCarWaybillIndexValueasSearchKey_Node0_action N_SetCarWaybillIndexValueasSearchKey_Node0_action --> E_SetCarWaybillIndexValueasSearchKey S_SetCarWaybillIndexValueasSearchKey --> N_SetCarWaybillIndexValueasSearchKey_Node0 N_SetCarWaybillIndexValueasSearchKey_Node0 -- No --> E_SetCarWaybillIndexValueasSearchKey
File: GCCUSIO.cbl
GIVEN:
The car-waybill index field contains data
WHEN:
Setting up a qualified search for car-waybill records
THEN:
The system moves the car-waybill index value to the search key field, sets the operator, and configures qualified SSA parameters
β Consolidated Acceptance Criteria
- The system prepares database call parameters → the function code is set to the requested operation type (GU, GN, ISRT, REPL, DLET, GHU, ZAP)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFunctionCode(["Start Step"])
E_SetFunctionCode(["End Step"])
N_SetFunctionCode_Node0{"The system prepares database call
parameters"}:::decision N_SetFunctionCode_Node0_action["The function code is set to the
requested operation type GU, GN,
ISRT, REPL, DLET, GHU, ZAP"]:::main N_SetFunctionCode_Node0 -- Yes --> N_SetFunctionCode_Node0_action N_SetFunctionCode_Node0_action --> E_SetFunctionCode S_SetFunctionCode --> N_SetFunctionCode_Node0 N_SetFunctionCode_Node0 -- No --> E_SetFunctionCode
parameters"}:::decision N_SetFunctionCode_Node0_action["The function code is set to the
requested operation type GU, GN,
ISRT, REPL, DLET, GHU, ZAP"]:::main N_SetFunctionCode_Node0 -- Yes --> N_SetFunctionCode_Node0_action N_SetFunctionCode_Node0_action --> E_SetFunctionCode S_SetFunctionCode --> N_SetFunctionCode_Node0 N_SetFunctionCode_Node0 -- No --> E_SetFunctionCode
File: GCCUSIO.cbl
GIVEN:
A database operation needs to be executed
WHEN:
The system prepares database call parameters
THEN:
The function code is set to the requested operation type (GU, GN, ISRT, REPL, DLET, GHU, ZAP)
β Consolidated Acceptance Criteria
- The system sets up the database call parameters → the appropriate PCB is assigned to the working storage PCB field based on the target 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_SetPCBControlBlock(["Start Step"])
E_SetPCBControlBlock(["End Step"])
N_SetPCBControlBlock_Node0{"The system sets up the database
call parameters"}:::decision N_SetPCBControlBlock_Node0_action["The appropriate PCB is assigned to
the working storage PCB field based
on the target segment"]:::main N_SetPCBControlBlock_Node0 -- Yes --> N_SetPCBControlBlock_Node0_action N_SetPCBControlBlock_Node0_action --> E_SetPCBControlBlock S_SetPCBControlBlock --> N_SetPCBControlBlock_Node0 N_SetPCBControlBlock_Node0 -- No --> E_SetPCBControlBlock
call parameters"}:::decision N_SetPCBControlBlock_Node0_action["The appropriate PCB is assigned to
the working storage PCB field based
on the target segment"]:::main N_SetPCBControlBlock_Node0 -- Yes --> N_SetPCBControlBlock_Node0_action N_SetPCBControlBlock_Node0_action --> E_SetPCBControlBlock S_SetPCBControlBlock --> N_SetPCBControlBlock_Node0 N_SetPCBControlBlock_Node0 -- No --> E_SetPCBControlBlock
File: GCCUSIO.cbl
GIVEN:
A database operation is being prepared for a specific segment type
WHEN:
The system sets up the database call parameters
THEN:
The appropriate PCB is assigned to the working storage PCB field based on the target segment
β Consolidated Acceptance Criteria
- The system determines if key values are provided for search criteria → if key values are spaces for GU or GN operations, unqualified SSA is used, otherwise qualified SSA with key values is configured
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSSASearchArguments(["Start Step"])
E_SetSSASearchArguments(["End Step"])
N_SetSSASearchArguments_Node0{"The system determines if key values
are provided for search criteria"}:::decision N_SetSSASearchArguments_Node0_action["If key values are spaces for GU or
GN operations, unqualified SSA is
used, otherwise qualified SSA with
key values is configured"]:::main N_SetSSASearchArguments_Node0 -- Yes --> N_SetSSASearchArguments_Node0_action N_SetSSASearchArguments_Node0_action --> E_SetSSASearchArguments S_SetSSASearchArguments --> N_SetSSASearchArguments_Node0 N_SetSSASearchArguments_Node0 -- No --> E_SetSSASearchArguments
are provided for search criteria"}:::decision N_SetSSASearchArguments_Node0_action["If key values are spaces for GU or
GN operations, unqualified SSA is
used, otherwise qualified SSA with
key values is configured"]:::main N_SetSSASearchArguments_Node0 -- Yes --> N_SetSSASearchArguments_Node0_action N_SetSSASearchArguments_Node0_action --> E_SetSSASearchArguments S_SetSSASearchArguments --> N_SetSSASearchArguments_Node0 N_SetSSASearchArguments_Node0 -- No --> E_SetSSASearchArguments
File: GCCUSIO.cbl
GIVEN:
A database search operation is being prepared
WHEN:
The system determines if key values are provided for search criteria
THEN:
If key values are spaces for GU or GN operations, unqualified SSA is used, otherwise qualified SSA with key values is configured
β Consolidated Acceptance Criteria
- The system executes the database operation → the CIMS program is called with the communication area, function code, PCB, IO area, and 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_ExecuteCIMSDatabaseCall(["Start Step"])
E_ExecuteCIMSDatabaseCall(["End Step"])
N_ExecuteCIMSDatabaseCall_Node0{"The system executes the database
operation"}:::decision N_ExecuteCIMSDatabaseCall_Node0_action["The CIMS program is called with the
communication area, function code,
PCB, IO area, and SSA parameters"]:::main N_ExecuteCIMSDatabaseCall_Node0 -- Yes --> N_ExecuteCIMSDatabaseCall_Node0_action N_ExecuteCIMSDatabaseCall_Node0_action --> E_ExecuteCIMSDatabaseCall S_ExecuteCIMSDatabaseCall --> N_ExecuteCIMSDatabaseCall_Node0 N_ExecuteCIMSDatabaseCall_Node0 -- No --> E_ExecuteCIMSDatabaseCall
operation"}:::decision N_ExecuteCIMSDatabaseCall_Node0_action["The CIMS program is called with the
communication area, function code,
PCB, IO area, and SSA parameters"]:::main N_ExecuteCIMSDatabaseCall_Node0 -- Yes --> N_ExecuteCIMSDatabaseCall_Node0_action N_ExecuteCIMSDatabaseCall_Node0_action --> E_ExecuteCIMSDatabaseCall S_ExecuteCIMSDatabaseCall --> N_ExecuteCIMSDatabaseCall_Node0 N_ExecuteCIMSDatabaseCall_Node0 -- No --> E_ExecuteCIMSDatabaseCall
File: GCCUSIO.cbl
GIVEN:
Database call parameters are prepared with function code, PCB, and SSA
WHEN:
The system executes the database operation
THEN:
The CIMS program is called with the communication area, function code, PCB, IO area, and SSA parameters
β Consolidated Acceptance Criteria
- The system checks the operation result → if CC-STATUS-CODE is spaces, the operation is successful, otherwise it indicates an error or 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_DatabaseCallSuccessful(["Start Step"])
E_DatabaseCallSuccessful(["End Step"])
N_DatabaseCallSuccessful_Node0{"The system checks the operation
result"}:::decision N_DatabaseCallSuccessful_Node0_action["If CC-STATUS-CODE is spaces, the
operation is successful, otherwise
it indicates an error or not found
condition"]:::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["If CC-STATUS-CODE is spaces, the
operation is successful, otherwise
it indicates an error or not found
condition"]:::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: GCCUSIO.cbl
GIVEN:
A database operation has been executed through CIMS
WHEN:
The system checks the operation result
THEN:
If CC-STATUS-CODE is spaces, the operation is successful, otherwise it indicates an error or not found condition
β Consolidated Acceptance Criteria
- Data is returned from the database → the retrieved segment data is available in the GCWUSIO-IO-AREA 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_ReturnRetrievedData(["Start Step"])
E_ReturnRetrievedData(["End Step"])
N_ReturnRetrievedData_Node0{"Data is returned from the database"}:::decision
N_ReturnRetrievedData_Node0_action["The retrieved segment data is
available in the GCWUSIO-IO-AREA for
further processing"]:::main N_ReturnRetrievedData_Node0 -- Yes --> N_ReturnRetrievedData_Node0_action N_ReturnRetrievedData_Node0_action --> E_ReturnRetrievedData S_ReturnRetrievedData --> N_ReturnRetrievedData_Node0 N_ReturnRetrievedData_Node0 -- No --> E_ReturnRetrievedData
available in the GCWUSIO-IO-AREA for
further processing"]:::main N_ReturnRetrievedData_Node0 -- Yes --> N_ReturnRetrievedData_Node0_action N_ReturnRetrievedData_Node0_action --> E_ReturnRetrievedData S_ReturnRetrievedData --> N_ReturnRetrievedData_Node0 N_ReturnRetrievedData_Node0 -- No --> E_ReturnRetrievedData
File: GCCUSIO.cbl
GIVEN:
A database retrieval operation completed successfully
WHEN:
Data is returned from the database
THEN:
The retrieved segment data is available in the GCWUSIO-IO-AREA for further processing
β Consolidated Acceptance Criteria
- The system processes the unsuccessful operation result → the error status code is preserved in CC-STATUS-CODE for the calling program to handle 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_SetErrorStatus(["Start Step"])
E_SetErrorStatus(["End Step"])
N_SetErrorStatus_Node0{"The system processes the
unsuccessful operation result"}:::decision N_SetErrorStatus_Node0_action["The error status code is preserved
in CC-STATUS-CODE for the calling
program to handle appropriately"]:::main N_SetErrorStatus_Node0 -- Yes --> N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node0 -- No --> E_SetErrorStatus
unsuccessful operation result"}:::decision N_SetErrorStatus_Node0_action["The error status code is preserved
in CC-STATUS-CODE for the calling
program to handle appropriately"]:::main N_SetErrorStatus_Node0 -- Yes --> N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node0 -- No --> E_SetErrorStatus
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A database operation failed or returned not found
WHEN:
The system processes the unsuccessful operation result
THEN:
The error status code is preserved in CC-STATUS-CODE for the calling program to handle appropriately
β Consolidated Acceptance Criteria
- The system checks if bond index field contains data → if bond index is not empty, use qualified search with bond number, otherwise use unqualified search
- If the bond index field for content → the system identifies whether bond index contains valid bond number data or 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_BondIndexAvailable(["Start Step"])
E_BondIndexAvailable(["End Step"])
N_BondIndexAvailable_Node0{"The system checks if bond index
field contains data"}:::decision N_BondIndexAvailable_Node0_action["If bond index is not empty, use
qualified search with bond number,
otherwise use unqualified search"]:::main N_BondIndexAvailable_Node0 -- Yes --> N_BondIndexAvailable_Node0_action N_BondIndexAvailable_Node0_action --> E_BondIndexAvailable S_BondIndexAvailable --> N_BondIndexAvailable_Node0 N_BondIndexAvailable_Node1{"The system evaluates the bond index
field for content"}:::decision N_BondIndexAvailable_Node1_action["The system identifies whether bond
index contains valid bond number
data or is empty"]:::main N_BondIndexAvailable_Node1 -- Yes --> N_BondIndexAvailable_Node1_action N_BondIndexAvailable_Node1_action --> E_BondIndexAvailable N_BondIndexAvailable_Node0 -- No --> N_BondIndexAvailable_Node1 N_BondIndexAvailable_Node1 -- No --> E_BondIndexAvailable
field contains data"}:::decision N_BondIndexAvailable_Node0_action["If bond index is not empty, use
qualified search with bond number,
otherwise use unqualified search"]:::main N_BondIndexAvailable_Node0 -- Yes --> N_BondIndexAvailable_Node0_action N_BondIndexAvailable_Node0_action --> E_BondIndexAvailable S_BondIndexAvailable --> N_BondIndexAvailable_Node0 N_BondIndexAvailable_Node1{"The system evaluates the bond index
field for content"}:::decision N_BondIndexAvailable_Node1_action["The system identifies whether bond
index contains valid bond number
data or is empty"]:::main N_BondIndexAvailable_Node1 -- Yes --> N_BondIndexAvailable_Node1_action N_BondIndexAvailable_Node1_action --> E_BondIndexAvailable N_BondIndexAvailable_Node0 -- No --> N_BondIndexAvailable_Node1 N_BondIndexAvailable_Node1 -- No --> E_BondIndexAvailable
File: GCCUSIO.cbl
GIVEN:
A cargo search request is initiated using bond control number index
WHEN:
The system checks if bond index field contains data
THEN:
If bond index is not empty, use qualified search with bond number, otherwise use unqualified search
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with bond index field that may or may not contain bond number data
WHEN:
The system evaluates the bond index field for content
THEN:
The system identifies whether bond index contains valid bond number data or is empty
β Consolidated Acceptance Criteria
- Setting up bond search parameters → copy bond index value to search key and set operator from request 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_SetBondSearchParameters(["Start Step"])
E_SetBondSearchParameters(["End Step"])
N_SetBondSearchParameters_Node0{"Setting up bond search parameters"}:::decision
N_SetBondSearchParameters_Node0_action["Copy bond index value to search key
and set operator from request
parameters"]:::main N_SetBondSearchParameters_Node0 -- Yes --> N_SetBondSearchParameters_Node0_action N_SetBondSearchParameters_Node0_action --> E_SetBondSearchParameters S_SetBondSearchParameters --> N_SetBondSearchParameters_Node0 N_SetBondSearchParameters_Node0 -- No --> E_SetBondSearchParameters
and set operator from request
parameters"]:::main N_SetBondSearchParameters_Node0 -- Yes --> N_SetBondSearchParameters_Node0_action N_SetBondSearchParameters_Node0_action --> E_SetBondSearchParameters S_SetBondSearchParameters --> N_SetBondSearchParameters_Node0 N_SetBondSearchParameters_Node0 -- No --> E_SetBondSearchParameters
File: GCCUSIO.cbl
GIVEN:
Bond index field contains a valid bond control number
WHEN:
Setting up bond search parameters
THEN:
- Copy bond index value to search key
- Set operator from request parameters
β Consolidated Acceptance Criteria
- Building search argument for bond index query → create qualified SSA using bond key value and set PCB5 as the search 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_BuildQualifiedSSAwithBondNumber(["Start Step"])
E_BuildQualifiedSSAwithBondNumber(["End Step"])
N_BuildQualifiedSSAwithBondNumber_Node0{"Building search argument for bond
index query"}:::decision N_BuildQualifiedSSAwithBondNumber_Node0_action["Create qualified SSA using bond key
value and set PCB5 as the search
control block"]:::main N_BuildQualifiedSSAwithBondNumber_Node0 -- Yes --> N_BuildQualifiedSSAwithBondNumber_Node0_action N_BuildQualifiedSSAwithBondNumber_Node0_action --> E_BuildQualifiedSSAwithBondNumber S_BuildQualifiedSSAwithBondNumber --> N_BuildQualifiedSSAwithBondNumber_Node0 N_BuildQualifiedSSAwithBondNumber_Node0 -- No --> E_BuildQualifiedSSAwithBondNumber
index query"}:::decision N_BuildQualifiedSSAwithBondNumber_Node0_action["Create qualified SSA using bond key
value and set PCB5 as the search
control block"]:::main N_BuildQualifiedSSAwithBondNumber_Node0 -- Yes --> N_BuildQualifiedSSAwithBondNumber_Node0_action N_BuildQualifiedSSAwithBondNumber_Node0_action --> E_BuildQualifiedSSAwithBondNumber S_BuildQualifiedSSAwithBondNumber --> N_BuildQualifiedSSAwithBondNumber_Node0 N_BuildQualifiedSSAwithBondNumber_Node0 -- No --> E_BuildQualifiedSSAwithBondNumber
File: GCCUSIO.cbl
GIVEN:
Bond index contains a valid bond control number and search parameters are set
WHEN:
Building search argument for bond index query
THEN:
- Create qualified ssa using bond key value
- Set pcb5 as the search control block
β Consolidated Acceptance Criteria
- Executing the bond index search operation → call database interface using function code, PCB5, data area, and constructed SSA
- The system executes the bond index search operation → the system performs the database search using the configured search parameters and retrieval method
- The system executes the bond index search operation → perform X1100-CALL-ONE-SSA to execute the database search with the prepared 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_ExecuteBondIndexSearch(["Start Step"])
E_ExecuteBondIndexSearch(["End Step"])
N_ExecuteBondIndexSearch_Node0{"Executing the bond index search
operation"}:::decision N_ExecuteBondIndexSearch_Node0_action["Call database interface using
function code, PCB5, data area, and
constructed SSA"]:::main N_ExecuteBondIndexSearch_Node0 -- Yes --> N_ExecuteBondIndexSearch_Node0_action N_ExecuteBondIndexSearch_Node0_action --> E_ExecuteBondIndexSearch S_ExecuteBondIndexSearch --> N_ExecuteBondIndexSearch_Node0 N_ExecuteBondIndexSearch_Node1{"The system executes the bond index
search operation"}:::decision N_ExecuteBondIndexSearch_Node1_action["The system performs the database
search using the configured search
parameters and retrieval method"]:::main N_ExecuteBondIndexSearch_Node1 -- Yes --> N_ExecuteBondIndexSearch_Node1_action N_ExecuteBondIndexSearch_Node1_action --> E_ExecuteBondIndexSearch N_ExecuteBondIndexSearch_Node0 -- No --> N_ExecuteBondIndexSearch_Node1 N_ExecuteBondIndexSearch_Node2{"The system executes the bond index
search operation"}:::decision N_ExecuteBondIndexSearch_Node2_action["Perform X1100-CALL-ONE-SSA to
execute the database search with the
prepared parameters"]:::main N_ExecuteBondIndexSearch_Node2 -- Yes --> N_ExecuteBondIndexSearch_Node2_action N_ExecuteBondIndexSearch_Node2_action --> E_ExecuteBondIndexSearch N_ExecuteBondIndexSearch_Node1 -- No --> N_ExecuteBondIndexSearch_Node2 N_ExecuteBondIndexSearch_Node2 -- No --> E_ExecuteBondIndexSearch
operation"}:::decision N_ExecuteBondIndexSearch_Node0_action["Call database interface using
function code, PCB5, data area, and
constructed SSA"]:::main N_ExecuteBondIndexSearch_Node0 -- Yes --> N_ExecuteBondIndexSearch_Node0_action N_ExecuteBondIndexSearch_Node0_action --> E_ExecuteBondIndexSearch S_ExecuteBondIndexSearch --> N_ExecuteBondIndexSearch_Node0 N_ExecuteBondIndexSearch_Node1{"The system executes the bond index
search operation"}:::decision N_ExecuteBondIndexSearch_Node1_action["The system performs the database
search using the configured search
parameters and retrieval method"]:::main N_ExecuteBondIndexSearch_Node1 -- Yes --> N_ExecuteBondIndexSearch_Node1_action N_ExecuteBondIndexSearch_Node1_action --> E_ExecuteBondIndexSearch N_ExecuteBondIndexSearch_Node0 -- No --> N_ExecuteBondIndexSearch_Node1 N_ExecuteBondIndexSearch_Node2{"The system executes the bond index
search operation"}:::decision N_ExecuteBondIndexSearch_Node2_action["Perform X1100-CALL-ONE-SSA to
execute the database search with the
prepared parameters"]:::main N_ExecuteBondIndexSearch_Node2 -- Yes --> N_ExecuteBondIndexSearch_Node2_action N_ExecuteBondIndexSearch_Node2_action --> E_ExecuteBondIndexSearch N_ExecuteBondIndexSearch_Node1 -- No --> N_ExecuteBondIndexSearch_Node2 N_ExecuteBondIndexSearch_Node2 -- No --> E_ExecuteBondIndexSearch
File: GCCUSIO.cbl
GIVEN:
Search arguments are constructed and PCB5 is set for bond index access
WHEN:
Executing the bond index search operation
THEN:
Call database interface using function code, PCB5, data area, and constructed SSA
File: GCCUSIO.cbl
GIVEN:
Bond search parameters are configured with either specific bond number for qualified search or empty value for unqualified search
WHEN:
The system executes the bond index search operation
THEN:
- The system performs the database search using the configured search parameters
- Retrieval method
File: GCCUSIO.cbl
GIVEN:
Search parameters are set with either qualified or unqualified search criteria and PCB5 is assigned to WS-PCB
WHEN:
The system executes the bond index search operation
THEN:
Perform X1100-CALL-ONE-SSA to execute the database search with the prepared parameters
β Consolidated Acceptance Criteria
- The system prepares bond search parameters → the system sets the bond number value from the bond index field and configures qualified search with specific bond number 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_SetBondNumberfromIndexField(["Start Step"])
E_SetBondNumberfromIndexField(["End Step"])
N_SetBondNumberfromIndexField_Node0{"The system prepares bond search
parameters"}:::decision N_SetBondNumberfromIndexField_Node0_action["The system sets the bond number
value from the bond index field and
configures qualified search with
specific bond number criteria"]:::main N_SetBondNumberfromIndexField_Node0 -- Yes --> N_SetBondNumberfromIndexField_Node0_action N_SetBondNumberfromIndexField_Node0_action --> E_SetBondNumberfromIndexField S_SetBondNumberfromIndexField --> N_SetBondNumberfromIndexField_Node0 N_SetBondNumberfromIndexField_Node0 -- No --> E_SetBondNumberfromIndexField
parameters"}:::decision N_SetBondNumberfromIndexField_Node0_action["The system sets the bond number
value from the bond index field and
configures qualified search with
specific bond number criteria"]:::main N_SetBondNumberfromIndexField_Node0 -- Yes --> N_SetBondNumberfromIndexField_Node0_action N_SetBondNumberfromIndexField_Node0_action --> E_SetBondNumberfromIndexField S_SetBondNumberfromIndexField --> N_SetBondNumberfromIndexField_Node0 N_SetBondNumberfromIndexField_Node0 -- No --> E_SetBondNumberfromIndexField
File: GCCUSIO.cbl
GIVEN:
Bond index field contains valid bond number data (not spaces)
WHEN:
The system prepares bond search parameters
THEN:
- The system sets the bond number value from the bond index field
- Configures qualified search with specific bond number criteria
β Consolidated Acceptance Criteria
- The system prepares bond search parameters → the system sets empty bond number value and configures unqualified search to retrieve all bond 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_SetEmptyBondNumber(["Start Step"])
E_SetEmptyBondNumber(["End Step"])
N_SetEmptyBondNumber_Node0{"The system prepares bond search
parameters"}:::decision N_SetEmptyBondNumber_Node0_action["The system sets empty bond number
value and configures unqualified
search to retrieve all bond records"]:::main N_SetEmptyBondNumber_Node0 -- Yes --> N_SetEmptyBondNumber_Node0_action N_SetEmptyBondNumber_Node0_action --> E_SetEmptyBondNumber S_SetEmptyBondNumber --> N_SetEmptyBondNumber_Node0 N_SetEmptyBondNumber_Node0 -- No --> E_SetEmptyBondNumber
parameters"}:::decision N_SetEmptyBondNumber_Node0_action["The system sets empty bond number
value and configures unqualified
search to retrieve all bond records"]:::main N_SetEmptyBondNumber_Node0 -- Yes --> N_SetEmptyBondNumber_Node0_action N_SetEmptyBondNumber_Node0_action --> E_SetEmptyBondNumber S_SetEmptyBondNumber --> N_SetEmptyBondNumber_Node0 N_SetEmptyBondNumber_Node0 -- No --> E_SetEmptyBondNumber
File: GCCUSIO.cbl
GIVEN:
Bond index field is empty (contains spaces)
WHEN:
The system prepares bond search parameters
THEN:
- The system sets empty bond number value
- Configures unqualified search to retrieve all bond records
β Consolidated Acceptance Criteria
- If the bond index field for search operations → the system identifies whether bond index data is available (not empty or spaces) or unavailable (empty or spaces)
- The system processes a bond index search request → if bond index is not empty, use qualified search with bond number as key value, otherwise use unqualified search with empty key 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_BondIndexDataAvailable(["Start Step"])
E_BondIndexDataAvailable(["End Step"])
N_BondIndexDataAvailable_Node0{"The system evaluates the bond index
field for search operations"}:::decision N_BondIndexDataAvailable_Node0_action["The system identifies whether bond
index data is available not empty or
spaces or unavailable empty or
spaces"]:::main N_BondIndexDataAvailable_Node0 -- Yes --> N_BondIndexDataAvailable_Node0_action N_BondIndexDataAvailable_Node0_action --> E_BondIndexDataAvailable S_BondIndexDataAvailable --> N_BondIndexDataAvailable_Node0 N_BondIndexDataAvailable_Node1{"The system processes a bond index
search request"}:::decision N_BondIndexDataAvailable_Node1_action["If bond index is not empty, use
qualified search with bond number as
key value, otherwise use unqualified
search with empty key value"]:::main N_BondIndexDataAvailable_Node1 -- Yes --> N_BondIndexDataAvailable_Node1_action N_BondIndexDataAvailable_Node1_action --> E_BondIndexDataAvailable N_BondIndexDataAvailable_Node0 -- No --> N_BondIndexDataAvailable_Node1 N_BondIndexDataAvailable_Node1 -- No --> E_BondIndexDataAvailable
field for search operations"}:::decision N_BondIndexDataAvailable_Node0_action["The system identifies whether bond
index data is available not empty or
spaces or unavailable empty or
spaces"]:::main N_BondIndexDataAvailable_Node0 -- Yes --> N_BondIndexDataAvailable_Node0_action N_BondIndexDataAvailable_Node0_action --> E_BondIndexDataAvailable S_BondIndexDataAvailable --> N_BondIndexDataAvailable_Node0 N_BondIndexDataAvailable_Node1{"The system processes a bond index
search request"}:::decision N_BondIndexDataAvailable_Node1_action["If bond index is not empty, use
qualified search with bond number as
key value, otherwise use unqualified
search with empty key value"]:::main N_BondIndexDataAvailable_Node1 -- Yes --> N_BondIndexDataAvailable_Node1_action N_BondIndexDataAvailable_Node1_action --> E_BondIndexDataAvailable N_BondIndexDataAvailable_Node0 -- No --> N_BondIndexDataAvailable_Node1 N_BondIndexDataAvailable_Node1 -- No --> E_BondIndexDataAvailable
File: GCCUSIO.cbl
GIVEN:
A cargo record with bond index information
WHEN:
The system evaluates the bond index field for search operations
THEN:
The system identifies whether bond index data is available (not empty or spaces) or unavailable (empty or spaces)
File: GCCUSIO.cbl
GIVEN:
A cargo record with bond index field (GCUSRT-RT074-BOND-INDEX) and bond search operator (GCWUSIO-OPERATOR)
WHEN:
The system processes a bond index search request
THEN:
If bond index is not empty, use qualified search with bond number as key value, otherwise use unqualified search with empty key value
β Consolidated Acceptance Criteria
- The system prepares for bond index search operation → the system sets the bond index value as the search key value for qualified search
- The system prepares for qualified bond index search → set the bond index value to GCUB-KEY-VALUE and assign the operator to GCUB-OPERATOR
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBondIndexKeyValue(["Start Step"])
E_SetBondIndexKeyValue(["End Step"])
N_SetBondIndexKeyValue_Node0{"The system prepares for bond index
search operation"}:::decision N_SetBondIndexKeyValue_Node0_action["The system sets the bond index
value as the search key value for
qualified search"]:::main N_SetBondIndexKeyValue_Node0 -- Yes --> N_SetBondIndexKeyValue_Node0_action N_SetBondIndexKeyValue_Node0_action --> E_SetBondIndexKeyValue S_SetBondIndexKeyValue --> N_SetBondIndexKeyValue_Node0 N_SetBondIndexKeyValue_Node1{"The system prepares for qualified
bond index search"}:::decision N_SetBondIndexKeyValue_Node1_action["Set the bond index value to
GCUB-KEY-VALUE and assign the
operator to GCUB-OPERATOR"]:::main N_SetBondIndexKeyValue_Node1 -- Yes --> N_SetBondIndexKeyValue_Node1_action N_SetBondIndexKeyValue_Node1_action --> E_SetBondIndexKeyValue N_SetBondIndexKeyValue_Node0 -- No --> N_SetBondIndexKeyValue_Node1 N_SetBondIndexKeyValue_Node1 -- No --> E_SetBondIndexKeyValue
search operation"}:::decision N_SetBondIndexKeyValue_Node0_action["The system sets the bond index
value as the search key value for
qualified search"]:::main N_SetBondIndexKeyValue_Node0 -- Yes --> N_SetBondIndexKeyValue_Node0_action N_SetBondIndexKeyValue_Node0_action --> E_SetBondIndexKeyValue S_SetBondIndexKeyValue --> N_SetBondIndexKeyValue_Node0 N_SetBondIndexKeyValue_Node1{"The system prepares for qualified
bond index search"}:::decision N_SetBondIndexKeyValue_Node1_action["Set the bond index value to
GCUB-KEY-VALUE and assign the
operator to GCUB-OPERATOR"]:::main N_SetBondIndexKeyValue_Node1 -- Yes --> N_SetBondIndexKeyValue_Node1_action N_SetBondIndexKeyValue_Node1_action --> E_SetBondIndexKeyValue N_SetBondIndexKeyValue_Node0 -- No --> N_SetBondIndexKeyValue_Node1 N_SetBondIndexKeyValue_Node1 -- No --> E_SetBondIndexKeyValue
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record where bond index field is not empty or spaces
WHEN:
The system prepares for bond index search operation
THEN:
The system sets the bond index value as the search key value for qualified search
File: GCCUSIO.cbl
GIVEN:
A cargo record with non-empty bond index field (GCUSRT-RT074-BOND-INDEX) and search operator (GCWUSIO-OPERATOR)
WHEN:
The system prepares for qualified bond index search
THEN:
- Set the bond index value to gcub-key-value
- Assign the operator to gcub-operator
β Consolidated Acceptance Criteria
- The system configures search parameters for bond index lookup → the system sets qualified SSA parameters for targeted bond index 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_SetQualifiedSearchSSA(["Start Step"])
E_SetQualifiedSearchSSA(["End Step"])
N_SetQualifiedSearchSSA_Node0{"The system configures search
parameters for bond index lookup"}:::decision N_SetQualifiedSearchSSA_Node0_action["The system sets qualified SSA
parameters for targeted bond index
search"]:::main N_SetQualifiedSearchSSA_Node0 -- Yes --> N_SetQualifiedSearchSSA_Node0_action N_SetQualifiedSearchSSA_Node0_action --> E_SetQualifiedSearchSSA S_SetQualifiedSearchSSA --> N_SetQualifiedSearchSSA_Node0 N_SetQualifiedSearchSSA_Node0 -- No --> E_SetQualifiedSearchSSA
parameters for bond index lookup"}:::decision N_SetQualifiedSearchSSA_Node0_action["The system sets qualified SSA
parameters for targeted bond index
search"]:::main N_SetQualifiedSearchSSA_Node0 -- Yes --> N_SetQualifiedSearchSSA_Node0_action N_SetQualifiedSearchSSA_Node0_action --> E_SetQualifiedSearchSSA S_SetQualifiedSearchSSA --> N_SetQualifiedSearchSSA_Node0 N_SetQualifiedSearchSSA_Node0 -- No --> E_SetQualifiedSearchSSA
File: GCCUSIO.cbl
GIVEN:
A cargo record with valid bond index data and assigned search key value
WHEN:
The system configures search parameters for bond index lookup
THEN:
The system sets qualified SSA parameters for targeted bond index search
β Consolidated Acceptance Criteria
- The system prepares search parameters for bond index operation → the system sets the search key value to spaces for unqualified 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_SetEmptyKeyValue(["Start Step"])
E_SetEmptyKeyValue(["End Step"])
N_SetEmptyKeyValue_Node0{"The system prepares search
parameters for bond index operation"}:::decision N_SetEmptyKeyValue_Node0_action["The system sets the search key
value to spaces for unqualified
search"]:::main N_SetEmptyKeyValue_Node0 -- Yes --> N_SetEmptyKeyValue_Node0_action N_SetEmptyKeyValue_Node0_action --> E_SetEmptyKeyValue S_SetEmptyKeyValue --> N_SetEmptyKeyValue_Node0 N_SetEmptyKeyValue_Node0 -- No --> E_SetEmptyKeyValue
parameters for bond index operation"}:::decision N_SetEmptyKeyValue_Node0_action["The system sets the search key
value to spaces for unqualified
search"]:::main N_SetEmptyKeyValue_Node0 -- Yes --> N_SetEmptyKeyValue_Node0_action N_SetEmptyKeyValue_Node0_action --> E_SetEmptyKeyValue S_SetEmptyKeyValue --> N_SetEmptyKeyValue_Node0 N_SetEmptyKeyValue_Node0 -- No --> E_SetEmptyKeyValue
File: GCCUSIO.cbl
GIVEN:
A cargo record where bond index field is empty or contains only spaces
WHEN:
The system prepares search parameters for bond index operation
THEN:
The system sets the search key value to spaces for unqualified search
β Consolidated Acceptance Criteria
- The system configures search parameters for bond index lookup → the system sets unqualified SSA parameters for broad bond index 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_SetUnqualifiedSearchSSA(["Start Step"])
E_SetUnqualifiedSearchSSA(["End Step"])
N_SetUnqualifiedSearchSSA_Node0{"The system configures search
parameters for bond index lookup"}:::decision N_SetUnqualifiedSearchSSA_Node0_action["The system sets unqualified SSA
parameters for broad bond index
search"]:::main N_SetUnqualifiedSearchSSA_Node0 -- Yes --> N_SetUnqualifiedSearchSSA_Node0_action N_SetUnqualifiedSearchSSA_Node0_action --> E_SetUnqualifiedSearchSSA S_SetUnqualifiedSearchSSA --> N_SetUnqualifiedSearchSSA_Node0 N_SetUnqualifiedSearchSSA_Node0 -- No --> E_SetUnqualifiedSearchSSA
parameters for bond index lookup"}:::decision N_SetUnqualifiedSearchSSA_Node0_action["The system sets unqualified SSA
parameters for broad bond index
search"]:::main N_SetUnqualifiedSearchSSA_Node0 -- Yes --> N_SetUnqualifiedSearchSSA_Node0_action N_SetUnqualifiedSearchSSA_Node0_action --> E_SetUnqualifiedSearchSSA S_SetUnqualifiedSearchSSA --> N_SetUnqualifiedSearchSSA_Node0 N_SetUnqualifiedSearchSSA_Node0 -- No --> E_SetUnqualifiedSearchSSA
File: GCCUSIO.cbl
GIVEN:
A cargo record with empty bond index data and empty search key value
WHEN:
The system configures search parameters for bond index lookup
THEN:
The system sets unqualified SSA parameters for broad bond index search
β Consolidated Acceptance Criteria
- The system executes the bond index database search operation → the system performs database call using the configured SSA parameters to retrieve matching bond 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_ExecuteBondIndexDatabaseCall(["Start Step"])
E_ExecuteBondIndexDatabaseCall(["End Step"])
N_ExecuteBondIndexDatabaseCall_Node0{"The system executes the bond index
database search operation"}:::decision N_ExecuteBondIndexDatabaseCall_Node0_action["The system performs database call
using the configured SSA parameters
to retrieve matching bond records"]:::main N_ExecuteBondIndexDatabaseCall_Node0 -- Yes --> N_ExecuteBondIndexDatabaseCall_Node0_action N_ExecuteBondIndexDatabaseCall_Node0_action --> E_ExecuteBondIndexDatabaseCall S_ExecuteBondIndexDatabaseCall --> N_ExecuteBondIndexDatabaseCall_Node0 N_ExecuteBondIndexDatabaseCall_Node0 -- No --> E_ExecuteBondIndexDatabaseCall
database search operation"}:::decision N_ExecuteBondIndexDatabaseCall_Node0_action["The system performs database call
using the configured SSA parameters
to retrieve matching bond records"]:::main N_ExecuteBondIndexDatabaseCall_Node0 -- Yes --> N_ExecuteBondIndexDatabaseCall_Node0_action N_ExecuteBondIndexDatabaseCall_Node0_action --> E_ExecuteBondIndexDatabaseCall S_ExecuteBondIndexDatabaseCall --> N_ExecuteBondIndexDatabaseCall_Node0 N_ExecuteBondIndexDatabaseCall_Node0 -- No --> E_ExecuteBondIndexDatabaseCall
File: GCCUSIO.cbl
GIVEN:
Configured search parameters (either qualified or unqualified) for bond index lookup
WHEN:
The system executes the bond index database search operation
THEN:
The system performs database call using the configured SSA parameters to retrieve matching bond records
β Consolidated Acceptance Criteria
- The system prepares for unqualified bond index search → set SPACES to GCUB-KEY-VALUE for the search 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_SetEmptyBondIndexKey(["Start Step"])
E_SetEmptyBondIndexKey(["End Step"])
N_SetEmptyBondIndexKey_Node0{"The system prepares for unqualified
bond index search"}:::decision N_SetEmptyBondIndexKey_Node0_action["Set SPACES to GCUB-KEY-VALUE for
the search operation"]:::main N_SetEmptyBondIndexKey_Node0 -- Yes --> N_SetEmptyBondIndexKey_Node0_action N_SetEmptyBondIndexKey_Node0_action --> E_SetEmptyBondIndexKey S_SetEmptyBondIndexKey --> N_SetEmptyBondIndexKey_Node0 N_SetEmptyBondIndexKey_Node0 -- No --> E_SetEmptyBondIndexKey
bond index search"}:::decision N_SetEmptyBondIndexKey_Node0_action["Set SPACES to GCUB-KEY-VALUE for
the search operation"]:::main N_SetEmptyBondIndexKey_Node0 -- Yes --> N_SetEmptyBondIndexKey_Node0_action N_SetEmptyBondIndexKey_Node0_action --> E_SetEmptyBondIndexKey S_SetEmptyBondIndexKey --> N_SetEmptyBondIndexKey_Node0 N_SetEmptyBondIndexKey_Node0 -- No --> E_SetEmptyBondIndexKey
File: GCCUSIO.cbl
GIVEN:
A cargo record with empty bond index field (GCUSRT-RT074-BOND-INDEX equals SPACES)
WHEN:
The system prepares for unqualified bond index search
THEN:
Set SPACES to GCUB-KEY-VALUE for the search operation
β Consolidated Acceptance Criteria
- The system executes the bond index search → use GCUB-SSA-QUAL for qualified search with the specific 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_UseQualifiedSearchwithBondNumber(["Start Step"])
E_UseQualifiedSearchwithBondNumber(["End Step"])
N_UseQualifiedSearchwithBondNumber_Node0{"The system executes the bond index
search"}:::decision N_UseQualifiedSearchwithBondNumber_Node0_action["Use GCUB-SSA-QUAL for qualified
search with the specific bond number"]:::main N_UseQualifiedSearchwithBondNumber_Node0 -- Yes --> N_UseQualifiedSearchwithBondNumber_Node0_action N_UseQualifiedSearchwithBondNumber_Node0_action --> E_UseQualifiedSearchwithBondNumber S_UseQualifiedSearchwithBondNumber --> N_UseQualifiedSearchwithBondNumber_Node0 N_UseQualifiedSearchwithBondNumber_Node0 -- No --> E_UseQualifiedSearchwithBondNumber
search"}:::decision N_UseQualifiedSearchwithBondNumber_Node0_action["Use GCUB-SSA-QUAL for qualified
search with the specific bond number"]:::main N_UseQualifiedSearchwithBondNumber_Node0 -- Yes --> N_UseQualifiedSearchwithBondNumber_Node0_action N_UseQualifiedSearchwithBondNumber_Node0_action --> E_UseQualifiedSearchwithBondNumber S_UseQualifiedSearchwithBondNumber --> N_UseQualifiedSearchwithBondNumber_Node0 N_UseQualifiedSearchwithBondNumber_Node0 -- No --> E_UseQualifiedSearchwithBondNumber
File: GCCUSIO.cbl
GIVEN:
Bond index key value is set with actual bond number and qualified search parameters are prepared
WHEN:
The system executes the bond index search
THEN:
Use GCUB-SSA-QUAL for qualified search with the specific bond number
β Consolidated Acceptance Criteria
- The system executes the bond index search → use GCUB-SSA-UNQUAL for unqualified search without specific bond 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_UseUnqualifiedSearch(["Start Step"])
E_UseUnqualifiedSearch(["End Step"])
N_UseUnqualifiedSearch_Node0{"The system executes the bond index
search"}:::decision N_UseUnqualifiedSearch_Node0_action["Use GCUB-SSA-UNQUAL for unqualified
search without specific bond
criteria"]:::main N_UseUnqualifiedSearch_Node0 -- Yes --> N_UseUnqualifiedSearch_Node0_action N_UseUnqualifiedSearch_Node0_action --> E_UseUnqualifiedSearch S_UseUnqualifiedSearch --> N_UseUnqualifiedSearch_Node0 N_UseUnqualifiedSearch_Node0 -- No --> E_UseUnqualifiedSearch
search"}:::decision N_UseUnqualifiedSearch_Node0_action["Use GCUB-SSA-UNQUAL for unqualified
search without specific bond
criteria"]:::main N_UseUnqualifiedSearch_Node0 -- Yes --> N_UseUnqualifiedSearch_Node0_action N_UseUnqualifiedSearch_Node0_action --> E_UseUnqualifiedSearch S_UseUnqualifiedSearch --> N_UseUnqualifiedSearch_Node0 N_UseUnqualifiedSearch_Node0 -- No --> E_UseUnqualifiedSearch
File: GCCUSIO.cbl
GIVEN:
Bond index key value is set to SPACES and unqualified search parameters are prepared
WHEN:
The system executes the bond index search
THEN:
Use GCUB-SSA-UNQUAL for unqualified search without specific bond criteria
β Consolidated Acceptance Criteria
- If the error index type from the request parameters → the system routes to the appropriate error index search path (origin, border, or destination error 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_ErrorIndexType(["Start Step"])
E_ErrorIndexType(["End Step"])
N_ErrorIndexType_Node0{"The system evaluates the error
index type from the request
parameters"}:::decision N_ErrorIndexType_Node0_action["The system routes to the
appropriate error index search path
origin, border, or destination error
index"]:::exclusion N_ErrorIndexType_Node0 -- Yes -->|Alternative| N_ErrorIndexType_Node0_action N_ErrorIndexType_Node0_action --> E_ErrorIndexType S_ErrorIndexType --> N_ErrorIndexType_Node0 N_ErrorIndexType_Node0 -- No --> E_ErrorIndexType
index type from the request
parameters"}:::decision N_ErrorIndexType_Node0_action["The system routes to the
appropriate error index search path
origin, border, or destination error
index"]:::exclusion N_ErrorIndexType_Node0 -- Yes -->|Alternative| N_ErrorIndexType_Node0_action N_ErrorIndexType_Node0_action --> E_ErrorIndexType S_ErrorIndexType --> N_ErrorIndexType_Node0 N_ErrorIndexType_Node0 -- No --> E_ErrorIndexType
File: GCCUSIO.cbl
GIVEN:
A cargo search request with error index specification
WHEN:
The system evaluates the error index type from the request parameters
THEN:
The system routes to the appropriate error index search path (origin, border, or destination error index)
β Consolidated Acceptance Criteria
- The system prepares to search by origin error index → the system sets error code to 'E', maps origin station number to error origin key, and sets cargo CCN as the error origin cargo 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_SetOriginErrorSearchParameters(["Start Step"])
E_SetOriginErrorSearchParameters(["End Step"])
N_SetOriginErrorSearchParameters_Node0{"The system prepares to search by
origin error index"}:::decision N_SetOriginErrorSearchParameters_Node0_action["The system sets error code to E ,
maps origin station number to error
origin key, and sets cargo CCN as
the error origin cargo key"]:::exclusion N_SetOriginErrorSearchParameters_Node0 -- Yes -->|Alternative| N_SetOriginErrorSearchParameters_Node0_action N_SetOriginErrorSearchParameters_Node0_action --> E_SetOriginErrorSearchParameters S_SetOriginErrorSearchParameters --> N_SetOriginErrorSearchParameters_Node0 N_SetOriginErrorSearchParameters_Node0 -- No --> E_SetOriginErrorSearchParameters
origin error index"}:::decision N_SetOriginErrorSearchParameters_Node0_action["The system sets error code to E ,
maps origin station number to error
origin key, and sets cargo CCN as
the error origin cargo key"]:::exclusion N_SetOriginErrorSearchParameters_Node0 -- Yes -->|Alternative| N_SetOriginErrorSearchParameters_Node0_action N_SetOriginErrorSearchParameters_Node0_action --> E_SetOriginErrorSearchParameters S_SetOriginErrorSearchParameters --> N_SetOriginErrorSearchParameters_Node0 N_SetOriginErrorSearchParameters_Node0 -- No --> E_SetOriginErrorSearchParameters
File: GCCUSIO.cbl
GIVEN:
An origin error index search is requested
WHEN:
The system prepares to search by origin error index
THEN:
The system sets error code to 'E', maps origin station number to error origin key, and sets cargo CCN as the error origin cargo key
β Consolidated Acceptance Criteria
- The system prepares to search by border error index → the system sets error code to 'E', retrieves border station number from MC table lookup using location ID, and sets cargo CCN as the error border cargo 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_SetBorderErrorSearchParameters(["Start Step"])
E_SetBorderErrorSearchParameters(["End Step"])
N_SetBorderErrorSearchParameters_Node0{"The system prepares to search by
border error index"}:::decision N_SetBorderErrorSearchParameters_Node0_action["The system sets error code to E ,
retrieves border station number from
MC table lookup using location ID,
and sets cargo CCN as the error
border cargo key"]:::exclusion N_SetBorderErrorSearchParameters_Node0 -- Yes -->|Alternative| N_SetBorderErrorSearchParameters_Node0_action N_SetBorderErrorSearchParameters_Node0_action --> E_SetBorderErrorSearchParameters S_SetBorderErrorSearchParameters --> N_SetBorderErrorSearchParameters_Node0 N_SetBorderErrorSearchParameters_Node0 -- No --> E_SetBorderErrorSearchParameters
border error index"}:::decision N_SetBorderErrorSearchParameters_Node0_action["The system sets error code to E ,
retrieves border station number from
MC table lookup using location ID,
and sets cargo CCN as the error
border cargo key"]:::exclusion N_SetBorderErrorSearchParameters_Node0 -- Yes -->|Alternative| N_SetBorderErrorSearchParameters_Node0_action N_SetBorderErrorSearchParameters_Node0_action --> E_SetBorderErrorSearchParameters S_SetBorderErrorSearchParameters --> N_SetBorderErrorSearchParameters_Node0 N_SetBorderErrorSearchParameters_Node0 -- No --> E_SetBorderErrorSearchParameters
File: GCCUSIO.cbl
GIVEN:
A border error index search is requested
WHEN:
The system prepares to search by border error index
THEN:
The system sets error code to 'E', retrieves border station number from MC table lookup using location ID, and sets cargo CCN as the error border cargo key
β Consolidated Acceptance Criteria
- The system prepares to search by destination error index → the system sets error code to 'E', maps destination station number to error destination key, and sets cargo CCN as the error destination cargo 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_SetDestinationErrorSearchParameters(["Start Step"])
E_SetDestinationErrorSearchParameters(["End Step"])
N_SetDestinationErrorSearchParameters_Node0{"The system prepares to search by
destination error index"}:::decision N_SetDestinationErrorSearchParameters_Node0_action["The system sets error code to E ,
maps destination station number to
error destination key, and sets
cargo CCN as the error destination
cargo key"]:::exclusion N_SetDestinationErrorSearchParameters_Node0 -- Yes -->|Alternative| N_SetDestinationErrorSearchParameters_Node0_action N_SetDestinationErrorSearchParameters_Node0_action --> E_SetDestinationErrorSearchParameters S_SetDestinationErrorSearchParameters --> N_SetDestinationErrorSearchParameters_Node0 N_SetDestinationErrorSearchParameters_Node0 -- No --> E_SetDestinationErrorSearchParameters
destination error index"}:::decision N_SetDestinationErrorSearchParameters_Node0_action["The system sets error code to E ,
maps destination station number to
error destination key, and sets
cargo CCN as the error destination
cargo key"]:::exclusion N_SetDestinationErrorSearchParameters_Node0 -- Yes -->|Alternative| N_SetDestinationErrorSearchParameters_Node0_action N_SetDestinationErrorSearchParameters_Node0_action --> E_SetDestinationErrorSearchParameters S_SetDestinationErrorSearchParameters --> N_SetDestinationErrorSearchParameters_Node0 N_SetDestinationErrorSearchParameters_Node0 -- No --> E_SetDestinationErrorSearchParameters
File: GCCUSIO.cbl
GIVEN:
A destination error index search is requested
WHEN:
The system prepares to search by destination error index
THEN:
The system sets error code to 'E', maps destination station number to error destination key, and sets cargo CCN as the error destination cargo key
β Consolidated Acceptance Criteria
- The system executes search against GCSB1RT table using origin error index → the system attempts to retrieve cargo status record matching the origin error criteria using qualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchGCSB1RTbyOriginErrorIndex(["Start Step"])
E_SearchGCSB1RTbyOriginErrorIndex(["End Step"])
N_SearchGCSB1RTbyOriginErrorIndex_Node0{"The system executes search against
GCSB1RT table using origin error
index"}:::decision N_SearchGCSB1RTbyOriginErrorIndex_Node0_action["The system attempts to retrieve
cargo status record matching the
origin error criteria using
qualified SSA"]:::exclusion N_SearchGCSB1RTbyOriginErrorIndex_Node0 -- Yes -->|Alternative| N_SearchGCSB1RTbyOriginErrorIndex_Node0_action N_SearchGCSB1RTbyOriginErrorIndex_Node0_action --> E_SearchGCSB1RTbyOriginErrorIndex S_SearchGCSB1RTbyOriginErrorIndex --> N_SearchGCSB1RTbyOriginErrorIndex_Node0 N_SearchGCSB1RTbyOriginErrorIndex_Node0 -- No --> E_SearchGCSB1RTbyOriginErrorIndex
GCSB1RT table using origin error
index"}:::decision N_SearchGCSB1RTbyOriginErrorIndex_Node0_action["The system attempts to retrieve
cargo status record matching the
origin error criteria using
qualified SSA"]:::exclusion N_SearchGCSB1RTbyOriginErrorIndex_Node0 -- Yes -->|Alternative| N_SearchGCSB1RTbyOriginErrorIndex_Node0_action N_SearchGCSB1RTbyOriginErrorIndex_Node0_action --> E_SearchGCSB1RTbyOriginErrorIndex S_SearchGCSB1RTbyOriginErrorIndex --> N_SearchGCSB1RTbyOriginErrorIndex_Node0 N_SearchGCSB1RTbyOriginErrorIndex_Node0 -- No --> E_SearchGCSB1RTbyOriginErrorIndex
File: GCCUSIO.cbl
GIVEN:
Origin error search parameters are configured
WHEN:
The system executes search against GCSB1RT table using origin error index
THEN:
The system attempts to retrieve cargo status record matching the origin error criteria using qualified SSA
β Consolidated Acceptance Criteria
- The system executes search against GCSB1RT table using border error index → the system attempts to retrieve cargo status record matching the border error criteria using qualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchGCSB1RTbyBorderErrorIndex(["Start Step"])
E_SearchGCSB1RTbyBorderErrorIndex(["End Step"])
N_SearchGCSB1RTbyBorderErrorIndex_Node0{"The system executes search against
GCSB1RT table using border error
index"}:::decision N_SearchGCSB1RTbyBorderErrorIndex_Node0_action["The system attempts to retrieve
cargo status record matching the
border error criteria using
qualified SSA"]:::exclusion N_SearchGCSB1RTbyBorderErrorIndex_Node0 -- Yes -->|Alternative| N_SearchGCSB1RTbyBorderErrorIndex_Node0_action N_SearchGCSB1RTbyBorderErrorIndex_Node0_action --> E_SearchGCSB1RTbyBorderErrorIndex S_SearchGCSB1RTbyBorderErrorIndex --> N_SearchGCSB1RTbyBorderErrorIndex_Node0 N_SearchGCSB1RTbyBorderErrorIndex_Node0 -- No --> E_SearchGCSB1RTbyBorderErrorIndex
GCSB1RT table using border error
index"}:::decision N_SearchGCSB1RTbyBorderErrorIndex_Node0_action["The system attempts to retrieve
cargo status record matching the
border error criteria using
qualified SSA"]:::exclusion N_SearchGCSB1RTbyBorderErrorIndex_Node0 -- Yes -->|Alternative| N_SearchGCSB1RTbyBorderErrorIndex_Node0_action N_SearchGCSB1RTbyBorderErrorIndex_Node0_action --> E_SearchGCSB1RTbyBorderErrorIndex S_SearchGCSB1RTbyBorderErrorIndex --> N_SearchGCSB1RTbyBorderErrorIndex_Node0 N_SearchGCSB1RTbyBorderErrorIndex_Node0 -- No --> E_SearchGCSB1RTbyBorderErrorIndex
File: GCCUSIO.cbl
GIVEN:
Border error search parameters are configured
WHEN:
The system executes search against GCSB1RT table using border error index
THEN:
The system attempts to retrieve cargo status record matching the border error criteria using qualified SSA
β Consolidated Acceptance Criteria
- The system executes search against GCSB1RT table using destination error index → the system attempts to retrieve cargo status record matching the destination error criteria using qualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchGCSB1RTbyDestinationErrorIndex(["Start Step"])
E_SearchGCSB1RTbyDestinationErrorIndex(["End Step"])
N_SearchGCSB1RTbyDestinationErrorIndex_Node0{"The system executes search against
GCSB1RT table using destination
error index"}:::decision N_SearchGCSB1RTbyDestinationErrorIndex_Node0_action["The system attempts to retrieve
cargo status record matching the
destination error criteria using
qualified SSA"]:::exclusion N_SearchGCSB1RTbyDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_SearchGCSB1RTbyDestinationErrorIndex_Node0_action N_SearchGCSB1RTbyDestinationErrorIndex_Node0_action --> E_SearchGCSB1RTbyDestinationErrorIndex S_SearchGCSB1RTbyDestinationErrorIndex --> N_SearchGCSB1RTbyDestinationErrorIndex_Node0 N_SearchGCSB1RTbyDestinationErrorIndex_Node0 -- No --> E_SearchGCSB1RTbyDestinationErrorIndex
GCSB1RT table using destination
error index"}:::decision N_SearchGCSB1RTbyDestinationErrorIndex_Node0_action["The system attempts to retrieve
cargo status record matching the
destination error criteria using
qualified SSA"]:::exclusion N_SearchGCSB1RTbyDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_SearchGCSB1RTbyDestinationErrorIndex_Node0_action N_SearchGCSB1RTbyDestinationErrorIndex_Node0_action --> E_SearchGCSB1RTbyDestinationErrorIndex S_SearchGCSB1RTbyDestinationErrorIndex --> N_SearchGCSB1RTbyDestinationErrorIndex_Node0 N_SearchGCSB1RTbyDestinationErrorIndex_Node0 -- No --> E_SearchGCSB1RTbyDestinationErrorIndex
File: GCCUSIO.cbl
GIVEN:
Destination error search parameters are configured
WHEN:
The system executes search against GCSB1RT table using destination error index
THEN:
The system attempts to retrieve cargo status record matching the destination error criteria using qualified SSA
β Consolidated Acceptance Criteria
- The system checks the database operation status code → if status code is spaces then record is found, otherwise no record 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_OriginErrorRecordFound(["Start Step"])
E_OriginErrorRecordFound(["End Step"])
N_OriginErrorRecordFound_Node0{"The system checks the database
operation status code"}:::decision N_OriginErrorRecordFound_Node0_action["If status code is spaces then
record is found, otherwise no record
found"]:::main N_OriginErrorRecordFound_Node0 -- Yes --> N_OriginErrorRecordFound_Node0_action N_OriginErrorRecordFound_Node0_action --> E_OriginErrorRecordFound S_OriginErrorRecordFound --> N_OriginErrorRecordFound_Node0 N_OriginErrorRecordFound_Node0 -- No --> E_OriginErrorRecordFound
operation status code"}:::decision N_OriginErrorRecordFound_Node0_action["If status code is spaces then
record is found, otherwise no record
found"]:::main N_OriginErrorRecordFound_Node0 -- Yes --> N_OriginErrorRecordFound_Node0_action N_OriginErrorRecordFound_Node0_action --> E_OriginErrorRecordFound S_OriginErrorRecordFound --> N_OriginErrorRecordFound_Node0 N_OriginErrorRecordFound_Node0 -- No --> E_OriginErrorRecordFound
File: GCCUSIO.cbl
GIVEN:
A search for origin error record has been executed
WHEN:
The system checks the database operation status code
THEN:
If status code is spaces then record is found, otherwise no record found
β Consolidated Acceptance Criteria
- The system checks the database operation status code → if status code is spaces then record is found, otherwise no record 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_BorderErrorRecordFound(["Start Step"])
E_BorderErrorRecordFound(["End Step"])
N_BorderErrorRecordFound_Node0{"The system checks the database
operation status code"}:::decision N_BorderErrorRecordFound_Node0_action["If status code is spaces then
record is found, otherwise no record
found"]:::main N_BorderErrorRecordFound_Node0 -- Yes --> N_BorderErrorRecordFound_Node0_action N_BorderErrorRecordFound_Node0_action --> E_BorderErrorRecordFound S_BorderErrorRecordFound --> N_BorderErrorRecordFound_Node0 N_BorderErrorRecordFound_Node0 -- No --> E_BorderErrorRecordFound
operation status code"}:::decision N_BorderErrorRecordFound_Node0_action["If status code is spaces then
record is found, otherwise no record
found"]:::main N_BorderErrorRecordFound_Node0 -- Yes --> N_BorderErrorRecordFound_Node0_action N_BorderErrorRecordFound_Node0_action --> E_BorderErrorRecordFound S_BorderErrorRecordFound --> N_BorderErrorRecordFound_Node0 N_BorderErrorRecordFound_Node0 -- No --> E_BorderErrorRecordFound
File: GCCUSIO.cbl
GIVEN:
A search for border error record has been executed
WHEN:
The system checks the database operation status code
THEN:
If status code is spaces then record is found, otherwise no record found
β Consolidated Acceptance Criteria
- The system checks the database operation status code → if status code is spaces then record is found, otherwise no record 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_DestinationErrorRecordFound(["Start Step"])
E_DestinationErrorRecordFound(["End Step"])
N_DestinationErrorRecordFound_Node0{"The system checks the database
operation status code"}:::decision N_DestinationErrorRecordFound_Node0_action["If status code is spaces then
record is found, otherwise no record
found"]:::main N_DestinationErrorRecordFound_Node0 -- Yes --> N_DestinationErrorRecordFound_Node0_action N_DestinationErrorRecordFound_Node0_action --> E_DestinationErrorRecordFound S_DestinationErrorRecordFound --> N_DestinationErrorRecordFound_Node0 N_DestinationErrorRecordFound_Node0 -- No --> E_DestinationErrorRecordFound
operation status code"}:::decision N_DestinationErrorRecordFound_Node0_action["If status code is spaces then
record is found, otherwise no record
found"]:::main N_DestinationErrorRecordFound_Node0 -- Yes --> N_DestinationErrorRecordFound_Node0_action N_DestinationErrorRecordFound_Node0_action --> E_DestinationErrorRecordFound S_DestinationErrorRecordFound --> N_DestinationErrorRecordFound_Node0 N_DestinationErrorRecordFound_Node0 -- No --> E_DestinationErrorRecordFound
File: GCCUSIO.cbl
GIVEN:
A search for destination error record has been executed
WHEN:
The system checks the database operation status code
THEN:
If status code is spaces then record is found, otherwise no record found
β Consolidated Acceptance Criteria
- The system attempts to retrieve the associated main cargo record → the system searches GCSUSRT table using the cargo CCN key from the error status record
- The system attempts to retrieve the associated main cargo record → the system searches GCSUSRT table using the cargo CCN key from the error status record
- The system attempts to retrieve the associated main cargo record → the system searches GCSUSRT table using the cargo CCN key from the error status 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_RetrieveAssociatedCargoRecord(["Start Step"])
E_RetrieveAssociatedCargoRecord(["End Step"])
N_RetrieveAssociatedCargoRecord_Node0{"The system attempts to retrieve the
associated main cargo record"}:::decision N_RetrieveAssociatedCargoRecord_Node0_action["The system searches GCSUSRT table
using the cargo CCN key from the
error status record"]:::main N_RetrieveAssociatedCargoRecord_Node0 -- Yes --> N_RetrieveAssociatedCargoRecord_Node0_action N_RetrieveAssociatedCargoRecord_Node0_action --> E_RetrieveAssociatedCargoRecord S_RetrieveAssociatedCargoRecord --> N_RetrieveAssociatedCargoRecord_Node0 N_RetrieveAssociatedCargoRecord_Node1{"The system attempts to retrieve the
associated main cargo record"}:::decision N_RetrieveAssociatedCargoRecord_Node1_action["The system searches GCSUSRT table
using the cargo CCN key from the
error status record"]:::main N_RetrieveAssociatedCargoRecord_Node1 -- Yes --> N_RetrieveAssociatedCargoRecord_Node1_action N_RetrieveAssociatedCargoRecord_Node1_action --> E_RetrieveAssociatedCargoRecord N_RetrieveAssociatedCargoRecord_Node0 -- No --> N_RetrieveAssociatedCargoRecord_Node1 N_RetrieveAssociatedCargoRecord_Node2{"The system attempts to retrieve the
associated main cargo record"}:::decision N_RetrieveAssociatedCargoRecord_Node2_action["The system searches GCSUSRT table
using the cargo CCN key from the
error status record"]:::main N_RetrieveAssociatedCargoRecord_Node2 -- Yes --> N_RetrieveAssociatedCargoRecord_Node2_action N_RetrieveAssociatedCargoRecord_Node2_action --> E_RetrieveAssociatedCargoRecord N_RetrieveAssociatedCargoRecord_Node1 -- No --> N_RetrieveAssociatedCargoRecord_Node2 N_RetrieveAssociatedCargoRecord_Node2 -- No --> E_RetrieveAssociatedCargoRecord
associated main cargo record"}:::decision N_RetrieveAssociatedCargoRecord_Node0_action["The system searches GCSUSRT table
using the cargo CCN key from the
error status record"]:::main N_RetrieveAssociatedCargoRecord_Node0 -- Yes --> N_RetrieveAssociatedCargoRecord_Node0_action N_RetrieveAssociatedCargoRecord_Node0_action --> E_RetrieveAssociatedCargoRecord S_RetrieveAssociatedCargoRecord --> N_RetrieveAssociatedCargoRecord_Node0 N_RetrieveAssociatedCargoRecord_Node1{"The system attempts to retrieve the
associated main cargo record"}:::decision N_RetrieveAssociatedCargoRecord_Node1_action["The system searches GCSUSRT table
using the cargo CCN key from the
error status record"]:::main N_RetrieveAssociatedCargoRecord_Node1 -- Yes --> N_RetrieveAssociatedCargoRecord_Node1_action N_RetrieveAssociatedCargoRecord_Node1_action --> E_RetrieveAssociatedCargoRecord N_RetrieveAssociatedCargoRecord_Node0 -- No --> N_RetrieveAssociatedCargoRecord_Node1 N_RetrieveAssociatedCargoRecord_Node2{"The system attempts to retrieve the
associated main cargo record"}:::decision N_RetrieveAssociatedCargoRecord_Node2_action["The system searches GCSUSRT table
using the cargo CCN key from the
error status record"]:::main N_RetrieveAssociatedCargoRecord_Node2 -- Yes --> N_RetrieveAssociatedCargoRecord_Node2_action N_RetrieveAssociatedCargoRecord_Node2_action --> E_RetrieveAssociatedCargoRecord N_RetrieveAssociatedCargoRecord_Node1 -- No --> N_RetrieveAssociatedCargoRecord_Node2 N_RetrieveAssociatedCargoRecord_Node2 -- No --> E_RetrieveAssociatedCargoRecord
File: GCCUSIO.cbl
GIVEN:
An origin error status record has been found with cargo CCN key
WHEN:
The system attempts to retrieve the associated main cargo record
THEN:
The system searches GCSUSRT table using the cargo CCN key from the error status record
File: GCCUSIO.cbl
GIVEN:
A border error status record has been found with cargo CCN key
WHEN:
The system attempts to retrieve the associated main cargo record
THEN:
The system searches GCSUSRT table using the cargo CCN key from the error status record
File: GCCUSIO.cbl
GIVEN:
A destination error status record has been found with cargo CCN key
WHEN:
The system attempts to retrieve the associated main cargo record
THEN:
The system searches GCSUSRT table using the cargo CCN key from the error status record
β Consolidated Acceptance Criteria
- The system checks if the cargo record retrieval was successful → if status code is spaces then cargo record exists, otherwise cargo record does not exist indicating data inconsistency
- The system checks if the cargo record retrieval was successful → if status code is spaces then cargo record exists, otherwise cargo record does not exist indicating data inconsistency
- The system checks if the cargo record retrieval was successful → if status code is spaces then cargo record exists, otherwise cargo record does not exist indicating data inconsistency
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordExists(["Start Step"])
E_CargoRecordExists(["End Step"])
N_CargoRecordExists_Node0{"The system checks if the cargo
record retrieval was successful"}:::decision N_CargoRecordExists_Node0_action["If status code is spaces then cargo
record exists, otherwise cargo
record does not exist indicating
data inconsistency"]:::main N_CargoRecordExists_Node0 -- Yes --> N_CargoRecordExists_Node0_action N_CargoRecordExists_Node0_action --> E_CargoRecordExists S_CargoRecordExists --> N_CargoRecordExists_Node0 N_CargoRecordExists_Node1{"The system checks if the cargo
record retrieval was successful"}:::decision N_CargoRecordExists_Node1_action["If status code is spaces then cargo
record exists, otherwise cargo
record does not exist indicating
data inconsistency"]:::main N_CargoRecordExists_Node1 -- Yes --> N_CargoRecordExists_Node1_action N_CargoRecordExists_Node1_action --> E_CargoRecordExists N_CargoRecordExists_Node0 -- No --> N_CargoRecordExists_Node1 N_CargoRecordExists_Node2{"The system checks if the cargo
record retrieval was successful"}:::decision N_CargoRecordExists_Node2_action["If status code is spaces then cargo
record exists, otherwise cargo
record does not exist indicating
data inconsistency"]:::main N_CargoRecordExists_Node2 -- Yes --> N_CargoRecordExists_Node2_action N_CargoRecordExists_Node2_action --> E_CargoRecordExists N_CargoRecordExists_Node1 -- No --> N_CargoRecordExists_Node2 N_CargoRecordExists_Node2 -- No --> E_CargoRecordExists
record retrieval was successful"}:::decision N_CargoRecordExists_Node0_action["If status code is spaces then cargo
record exists, otherwise cargo
record does not exist indicating
data inconsistency"]:::main N_CargoRecordExists_Node0 -- Yes --> N_CargoRecordExists_Node0_action N_CargoRecordExists_Node0_action --> E_CargoRecordExists S_CargoRecordExists --> N_CargoRecordExists_Node0 N_CargoRecordExists_Node1{"The system checks if the cargo
record retrieval was successful"}:::decision N_CargoRecordExists_Node1_action["If status code is spaces then cargo
record exists, otherwise cargo
record does not exist indicating
data inconsistency"]:::main N_CargoRecordExists_Node1 -- Yes --> N_CargoRecordExists_Node1_action N_CargoRecordExists_Node1_action --> E_CargoRecordExists N_CargoRecordExists_Node0 -- No --> N_CargoRecordExists_Node1 N_CargoRecordExists_Node2{"The system checks if the cargo
record retrieval was successful"}:::decision N_CargoRecordExists_Node2_action["If status code is spaces then cargo
record exists, otherwise cargo
record does not exist indicating
data inconsistency"]:::main N_CargoRecordExists_Node2 -- Yes --> N_CargoRecordExists_Node2_action N_CargoRecordExists_Node2_action --> E_CargoRecordExists N_CargoRecordExists_Node1 -- No --> N_CargoRecordExists_Node2 N_CargoRecordExists_Node2 -- No --> E_CargoRecordExists
File: GCCUSIO.cbl
GIVEN:
A retrieval attempt for main cargo record associated with origin error has been made
WHEN:
The system checks if the cargo record retrieval was successful
THEN:
If status code is spaces then cargo record exists, otherwise cargo record does not exist indicating data inconsistency
File: GCCUSIO.cbl
GIVEN:
A retrieval attempt for main cargo record associated with border error has been made
WHEN:
The system checks if the cargo record retrieval was successful
THEN:
If status code is spaces then cargo record exists, otherwise cargo record does not exist indicating data inconsistency
File: GCCUSIO.cbl
GIVEN:
A retrieval attempt for main cargo record associated with destination error has been made
WHEN:
The system checks if the cargo record retrieval was successful
THEN:
If status code is spaces then cargo record exists, otherwise cargo record does not exist indicating data inconsistency
β Consolidated Acceptance Criteria
- The system detects this data inconsistency condition → the system logs error message 'GCSB1RT EXIST WITHOUT GCSUSRT' and calls error handling routine
- The system detects this index inconsistency → the system sets error message to 'GCSB1RT EXIST WITHOUT GCSUSRT' and calls CERR error handling 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_LogIndexInconsistencyError(["Start Step"])
E_LogIndexInconsistencyError(["End Step"])
N_LogIndexInconsistencyError_Node0{"The system detects this data
inconsistency condition"}:::decision N_LogIndexInconsistencyError_Node0_action["The system logs error message
GCSB1RT EXIST WITHOUT GCSUSRT and
calls error handling routine"]:::main N_LogIndexInconsistencyError_Node0 -- Yes --> N_LogIndexInconsistencyError_Node0_action N_LogIndexInconsistencyError_Node0_action --> E_LogIndexInconsistencyError S_LogIndexInconsistencyError --> N_LogIndexInconsistencyError_Node0 N_LogIndexInconsistencyError_Node1{"The system detects this index
inconsistency"}:::decision N_LogIndexInconsistencyError_Node1_action["The system sets error message to
GCSB1RT EXIST WITHOUT GCSUSRT and
calls CERR error handling program"]:::main N_LogIndexInconsistencyError_Node1 -- Yes --> N_LogIndexInconsistencyError_Node1_action N_LogIndexInconsistencyError_Node1_action --> E_LogIndexInconsistencyError N_LogIndexInconsistencyError_Node0 -- No --> N_LogIndexInconsistencyError_Node1 N_LogIndexInconsistencyError_Node1 -- No --> E_LogIndexInconsistencyError
inconsistency condition"}:::decision N_LogIndexInconsistencyError_Node0_action["The system logs error message
GCSB1RT EXIST WITHOUT GCSUSRT and
calls error handling routine"]:::main N_LogIndexInconsistencyError_Node0 -- Yes --> N_LogIndexInconsistencyError_Node0_action N_LogIndexInconsistencyError_Node0_action --> E_LogIndexInconsistencyError S_LogIndexInconsistencyError --> N_LogIndexInconsistencyError_Node0 N_LogIndexInconsistencyError_Node1{"The system detects this index
inconsistency"}:::decision N_LogIndexInconsistencyError_Node1_action["The system sets error message to
GCSB1RT EXIST WITHOUT GCSUSRT and
calls CERR error handling program"]:::main N_LogIndexInconsistencyError_Node1 -- Yes --> N_LogIndexInconsistencyError_Node1_action N_LogIndexInconsistencyError_Node1_action --> E_LogIndexInconsistencyError N_LogIndexInconsistencyError_Node0 -- No --> N_LogIndexInconsistencyError_Node1 N_LogIndexInconsistencyError_Node1 -- No --> E_LogIndexInconsistencyError
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
An error status record exists in GCSB1RT but the associated cargo record does not exist in GCSUSRT
WHEN:
The system detects this data inconsistency condition
THEN:
The system logs error message 'GCSB1RT EXIST WITHOUT GCSUSRT' and calls error handling routine
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A GCSB1RT index record exists but the corresponding primary cargo record is not found (status code is not spaces)
WHEN:
The system detects this index inconsistency
THEN:
The system sets error message to 'GCSB1RT EXIST WITHOUT GCSUSRT' and calls CERR error handling program
β Consolidated Acceptance Criteria
- The system completes the error index search process → the system returns the cargo record data in the IO area 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_ReturnCargoRecordData(["Start Step"])
E_ReturnCargoRecordData(["End Step"])
N_ReturnCargoRecordData_Node0{"The system completes the error
index search process"}:::decision N_ReturnCargoRecordData_Node0_action["The system returns the cargo record
data in the IO area for further
processing"]:::exclusion N_ReturnCargoRecordData_Node0 -- Yes -->|Alternative| N_ReturnCargoRecordData_Node0_action N_ReturnCargoRecordData_Node0_action --> E_ReturnCargoRecordData S_ReturnCargoRecordData --> N_ReturnCargoRecordData_Node0 N_ReturnCargoRecordData_Node0 -- No --> E_ReturnCargoRecordData
index search process"}:::decision N_ReturnCargoRecordData_Node0_action["The system returns the cargo record
data in the IO area for further
processing"]:::exclusion N_ReturnCargoRecordData_Node0 -- Yes -->|Alternative| N_ReturnCargoRecordData_Node0_action N_ReturnCargoRecordData_Node0_action --> E_ReturnCargoRecordData S_ReturnCargoRecordData --> N_ReturnCargoRecordData_Node0 N_ReturnCargoRecordData_Node0 -- No --> E_ReturnCargoRecordData
File: GCCUSIO.cbl
GIVEN:
A cargo record has been successfully found through error index search and validated for existence
WHEN:
The system completes the error index search process
THEN:
The system returns the cargo record data in the IO area for further processing
β Consolidated Acceptance Criteria
- If the index type specified in GCWUSIO-INDEX-HELD-DEST or GCWUSIO-INDEX-HELD-BORDER → the system routes to the appropriate hold index search 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_HoldIndexType(["Start Step"])
E_HoldIndexType(["End Step"])
N_HoldIndexType_Node0{"The system evaluates the index type
specified in GCWUSIO-INDEX-HELD-DEST
or GCWUSIO-INDEX-HELD-BORDER"}:::decision N_HoldIndexType_Node0_action["The system routes to the
appropriate hold index search
processing"]:::main N_HoldIndexType_Node0 -- Yes --> N_HoldIndexType_Node0_action N_HoldIndexType_Node0_action --> E_HoldIndexType S_HoldIndexType --> N_HoldIndexType_Node0 N_HoldIndexType_Node0 -- No --> E_HoldIndexType
specified in GCWUSIO-INDEX-HELD-DEST
or GCWUSIO-INDEX-HELD-BORDER"}:::decision N_HoldIndexType_Node0_action["The system routes to the
appropriate hold index search
processing"]:::main N_HoldIndexType_Node0 -- Yes --> N_HoldIndexType_Node0_action N_HoldIndexType_Node0_action --> E_HoldIndexType S_HoldIndexType --> N_HoldIndexType_Node0 N_HoldIndexType_Node0 -- No --> E_HoldIndexType
File: GCCUSIO.cbl
GIVEN:
A hold index search request is initiated
WHEN:
The system evaluates the index type specified in GCWUSIO-INDEX-HELD-DEST or GCWUSIO-INDEX-HELD-BORDER
THEN:
The system routes to the appropriate hold index search processing
β Consolidated Acceptance Criteria
- The system calls CIMS with the function code, PCB, GCSB1RT record, and qualified SSA → the system retrieves the GCSB1RT index record from the database and the status code indicates success or 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_RetrieveGCSB1RTIndexRecord(["Start Step"])
E_RetrieveGCSB1RTIndexRecord(["End Step"])
N_RetrieveGCSB1RTIndexRecord_Node0{"The system calls CIMS with the
function code, PCB, GCSB1RT record,
and qualified SSA"}:::decision N_RetrieveGCSB1RTIndexRecord_Node0_action["The system retrieves the GCSB1RT
index record from the database and
the status code indicates success or
failure"]:::main N_RetrieveGCSB1RTIndexRecord_Node0 -- Yes --> N_RetrieveGCSB1RTIndexRecord_Node0_action N_RetrieveGCSB1RTIndexRecord_Node0_action --> E_RetrieveGCSB1RTIndexRecord S_RetrieveGCSB1RTIndexRecord --> N_RetrieveGCSB1RTIndexRecord_Node0 N_RetrieveGCSB1RTIndexRecord_Node0 -- No --> E_RetrieveGCSB1RTIndexRecord
function code, PCB, GCSB1RT record,
and qualified SSA"}:::decision N_RetrieveGCSB1RTIndexRecord_Node0_action["The system retrieves the GCSB1RT
index record from the database and
the status code indicates success or
failure"]:::main N_RetrieveGCSB1RTIndexRecord_Node0 -- Yes --> N_RetrieveGCSB1RTIndexRecord_Node0_action N_RetrieveGCSB1RTIndexRecord_Node0_action --> E_RetrieveGCSB1RTIndexRecord S_RetrieveGCSB1RTIndexRecord --> N_RetrieveGCSB1RTIndexRecord_Node0 N_RetrieveGCSB1RTIndexRecord_Node0 -- No --> E_RetrieveGCSB1RTIndexRecord
File: GCCUSIO.cbl
GIVEN:
A hold index search is being performed with valid index keys
WHEN:
The system calls CIMS with the function code, PCB, GCSB1RT record, and qualified SSA
THEN:
- The system retrieves the gcsb1rt index record from the database
- The status code indicates success or failure
β Consolidated Acceptance Criteria
- The system processes the index record → the system extracts the cargo key (GCB1-KEY-CARGO) from the index record and prepares it for primary 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_ExtractCargoKeyfromIndex(["Start Step"])
E_ExtractCargoKeyfromIndex(["End Step"])
N_ExtractCargoKeyfromIndex_Node0{"The system processes the index
record"}:::decision N_ExtractCargoKeyfromIndex_Node0_action["The system extracts the cargo key
GCB1-KEY-CARGO from the index record
and prepares it for primary cargo
record retrieval"]:::main N_ExtractCargoKeyfromIndex_Node0 -- Yes --> N_ExtractCargoKeyfromIndex_Node0_action N_ExtractCargoKeyfromIndex_Node0_action --> E_ExtractCargoKeyfromIndex S_ExtractCargoKeyfromIndex --> N_ExtractCargoKeyfromIndex_Node0 N_ExtractCargoKeyfromIndex_Node0 -- No --> E_ExtractCargoKeyfromIndex
record"}:::decision N_ExtractCargoKeyfromIndex_Node0_action["The system extracts the cargo key
GCB1-KEY-CARGO from the index record
and prepares it for primary cargo
record retrieval"]:::main N_ExtractCargoKeyfromIndex_Node0 -- Yes --> N_ExtractCargoKeyfromIndex_Node0_action N_ExtractCargoKeyfromIndex_Node0_action --> E_ExtractCargoKeyfromIndex S_ExtractCargoKeyfromIndex --> N_ExtractCargoKeyfromIndex_Node0 N_ExtractCargoKeyfromIndex_Node0 -- No --> E_ExtractCargoKeyfromIndex
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT index record has been successfully retrieved
WHEN:
The system processes the index record
THEN:
- The system extracts the cargo key (gcb1-key-cargo) from the index record
- Prepares it for primary cargo record retrieval
β Consolidated Acceptance Criteria
- The system sets the function code to GU (Get Unique) and calls X1100-CALL-ONE-SSA with the cargo key → the system attempts to retrieve the primary GCSUSRT cargo record using the extracted 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_RetrievePrimaryCargoRecord(["Start Step"])
E_RetrievePrimaryCargoRecord(["End Step"])
N_RetrievePrimaryCargoRecord_Node0{"The system sets the function code
to GU Get Unique and calls
X1100-CALL-ONE-SSA with the cargo
key"}:::decision N_RetrievePrimaryCargoRecord_Node0_action["The system attempts to retrieve the
primary GCSUSRT cargo record using
the extracted key"]:::main N_RetrievePrimaryCargoRecord_Node0 -- Yes --> N_RetrievePrimaryCargoRecord_Node0_action N_RetrievePrimaryCargoRecord_Node0_action --> E_RetrievePrimaryCargoRecord S_RetrievePrimaryCargoRecord --> N_RetrievePrimaryCargoRecord_Node0 N_RetrievePrimaryCargoRecord_Node0 -- No --> E_RetrievePrimaryCargoRecord
to GU Get Unique and calls
X1100-CALL-ONE-SSA with the cargo
key"}:::decision N_RetrievePrimaryCargoRecord_Node0_action["The system attempts to retrieve the
primary GCSUSRT cargo record using
the extracted key"]:::main N_RetrievePrimaryCargoRecord_Node0 -- Yes --> N_RetrievePrimaryCargoRecord_Node0_action N_RetrievePrimaryCargoRecord_Node0_action --> E_RetrievePrimaryCargoRecord S_RetrievePrimaryCargoRecord --> N_RetrievePrimaryCargoRecord_Node0 N_RetrievePrimaryCargoRecord_Node0 -- No --> E_RetrievePrimaryCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo key has been extracted from the GCSB1RT index record
WHEN:
The system sets the function code to GU (Get Unique) and calls X1100-CALL-ONE-SSA with the cargo key
THEN:
The system attempts to retrieve the primary GCSUSRT cargo record using the extracted key
β Consolidated Acceptance Criteria
- The system checks the status code after the retrieval attempt → if status code is spaces then primary record is found, otherwise primary record 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_PrimaryRecordFound(["Start Step"])
E_PrimaryRecordFound(["End Step"])
N_PrimaryRecordFound_Node0{"The system checks the status code
after the retrieval attempt"}:::decision N_PrimaryRecordFound_Node0_action["If status code is spaces then
primary record is found, otherwise
primary record is not found"]:::main N_PrimaryRecordFound_Node0 -- Yes --> N_PrimaryRecordFound_Node0_action N_PrimaryRecordFound_Node0_action --> E_PrimaryRecordFound S_PrimaryRecordFound --> N_PrimaryRecordFound_Node0 N_PrimaryRecordFound_Node0 -- No --> E_PrimaryRecordFound
after the retrieval attempt"}:::decision N_PrimaryRecordFound_Node0_action["If status code is spaces then
primary record is found, otherwise
primary record is not found"]:::main N_PrimaryRecordFound_Node0 -- Yes --> N_PrimaryRecordFound_Node0_action N_PrimaryRecordFound_Node0_action --> E_PrimaryRecordFound S_PrimaryRecordFound --> N_PrimaryRecordFound_Node0 N_PrimaryRecordFound_Node0 -- No --> E_PrimaryRecordFound
File: GCCUSIO.cbl
GIVEN:
An attempt to retrieve the primary cargo record has been made
WHEN:
The system checks the status code after the retrieval attempt
THEN:
If status code is spaces then primary record is found, otherwise primary record is not found
β Consolidated Acceptance Criteria
- The hold index search completes successfully → the system returns the retrieved cargo data 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_ReturnCargoData(["Start Step"])
E_ReturnCargoData(["End Step"])
N_ReturnCargoData_Node0{"The hold index search completes
successfully"}:::decision N_ReturnCargoData_Node0_action["The system returns the retrieved
cargo data to the calling process"]:::main N_ReturnCargoData_Node0 -- Yes --> N_ReturnCargoData_Node0_action N_ReturnCargoData_Node0_action --> E_ReturnCargoData S_ReturnCargoData --> N_ReturnCargoData_Node0 N_ReturnCargoData_Node0 -- No --> E_ReturnCargoData
successfully"}:::decision N_ReturnCargoData_Node0_action["The system returns the retrieved
cargo data to the calling process"]:::main N_ReturnCargoData_Node0 -- Yes --> N_ReturnCargoData_Node0_action N_ReturnCargoData_Node0_action --> E_ReturnCargoData S_ReturnCargoData --> N_ReturnCargoData_Node0 N_ReturnCargoData_Node0 -- No --> E_ReturnCargoData
File: GCCUSIO.cbl
GIVEN:
The primary cargo record has been successfully retrieved (status code is spaces)
WHEN:
The hold index search completes successfully
THEN:
The system returns the retrieved cargo data to the calling process
β Consolidated Acceptance Criteria
- The system checks for error conditions → error index management is triggered if cargo has CPCARGO-ERROR, CPCARGO-PENDING, or USCARGO-ERROR status
- The system checks for CP cargo error status:
- CP cargo pending status
- US cargo 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_CargoHasErrorStatus(["Start Step"])
E_CargoHasErrorStatus(["End Step"])
N_CargoHasErrorStatus_Node0{"The system checks for error
conditions"}:::decision N_CargoHasErrorStatus_Node0_action["Error index management is triggered
if cargo has CPCARGO-ERROR,
CPCARGO-PENDING, or USCARGO-ERROR
status"]:::exclusion N_CargoHasErrorStatus_Node0 -- Yes -->|Alternative| N_CargoHasErrorStatus_Node0_action N_CargoHasErrorStatus_Node0_action --> E_CargoHasErrorStatus S_CargoHasErrorStatus --> N_CargoHasErrorStatus_Node0 N_CargoHasErrorStatus_Node1{"The system checks for CP cargo
error status OR CP cargo pending
status OR US cargo error status"}:::decision N_CargoHasErrorStatus_Node1_action["The cargo is classified as having
error status if any of these
conditions are true"]:::exclusion N_CargoHasErrorStatus_Node1 -- Yes -->|Alternative| N_CargoHasErrorStatus_Node1_action N_CargoHasErrorStatus_Node1_action --> E_CargoHasErrorStatus N_CargoHasErrorStatus_Node0 -- No --> N_CargoHasErrorStatus_Node1 N_CargoHasErrorStatus_Node1 -- No --> E_CargoHasErrorStatus
conditions"}:::decision N_CargoHasErrorStatus_Node0_action["Error index management is triggered
if cargo has CPCARGO-ERROR,
CPCARGO-PENDING, or USCARGO-ERROR
status"]:::exclusion N_CargoHasErrorStatus_Node0 -- Yes -->|Alternative| N_CargoHasErrorStatus_Node0_action N_CargoHasErrorStatus_Node0_action --> E_CargoHasErrorStatus S_CargoHasErrorStatus --> N_CargoHasErrorStatus_Node0 N_CargoHasErrorStatus_Node1{"The system checks for CP cargo
error status OR CP cargo pending
status OR US cargo error status"}:::decision N_CargoHasErrorStatus_Node1_action["The cargo is classified as having
error status if any of these
conditions are true"]:::exclusion N_CargoHasErrorStatus_Node1 -- Yes -->|Alternative| N_CargoHasErrorStatus_Node1_action N_CargoHasErrorStatus_Node1_action --> E_CargoHasErrorStatus N_CargoHasErrorStatus_Node0 -- No --> N_CargoHasErrorStatus_Node1 N_CargoHasErrorStatus_Node1 -- No --> E_CargoHasErrorStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with status indicators
WHEN:
The system checks for error conditions
THEN:
Error index management is triggered if cargo has CPCARGO-ERROR, CPCARGO-PENDING, or USCARGO-ERROR status
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for index updates
WHEN:
The system checks for CP cargo error status OR CP cargo pending status OR US cargo error status
THEN:
The cargo is classified as having error status if any of these conditions are true
β Consolidated Acceptance Criteria
- The system processes error index fields → origin error index is populated with error code 'E', origin station number, and 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_PopulateOriginErrorIndex(["Start Step"])
E_PopulateOriginErrorIndex(["End Step"])
N_PopulateOriginErrorIndex_Node0{"The system processes error index
fields"}:::decision N_PopulateOriginErrorIndex_Node0_action["Origin error index is populated
with error code E , origin station
number, and cargo CCN key"]:::exclusion N_PopulateOriginErrorIndex_Node0 -- Yes -->|Alternative| N_PopulateOriginErrorIndex_Node0_action N_PopulateOriginErrorIndex_Node0_action --> E_PopulateOriginErrorIndex S_PopulateOriginErrorIndex --> N_PopulateOriginErrorIndex_Node0 N_PopulateOriginErrorIndex_Node0 -- No --> E_PopulateOriginErrorIndex
fields"}:::decision N_PopulateOriginErrorIndex_Node0_action["Origin error index is populated
with error code E , origin station
number, and cargo CCN key"]:::exclusion N_PopulateOriginErrorIndex_Node0 -- Yes -->|Alternative| N_PopulateOriginErrorIndex_Node0_action N_PopulateOriginErrorIndex_Node0_action --> E_PopulateOriginErrorIndex S_PopulateOriginErrorIndex --> N_PopulateOriginErrorIndex_Node0 N_PopulateOriginErrorIndex_Node0 -- No --> E_PopulateOriginErrorIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record with error status
WHEN:
The system processes error index fields
THEN:
Origin error index is populated with error code 'E', origin station number, and cargo CCN key
β Consolidated Acceptance Criteria
- The system looks up border station information → mC table is queried using location ID to retrieve border station number
- The system looks up MC table using cargo location ID → if table lookup is successful, the border station number is retrieved from the table 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_GetBorderStationfromMCTable(["Start Step"])
E_GetBorderStationfromMCTable(["End Step"])
N_GetBorderStationfromMCTable_Node0{"The system looks up border station
information"}:::decision N_GetBorderStationfromMCTable_Node0_action["MC table is queried using location
ID to retrieve border station number"]:::main N_GetBorderStationfromMCTable_Node0 -- Yes --> N_GetBorderStationfromMCTable_Node0_action N_GetBorderStationfromMCTable_Node0_action --> E_GetBorderStationfromMCTable S_GetBorderStationfromMCTable --> N_GetBorderStationfromMCTable_Node0 N_GetBorderStationfromMCTable_Node1{"The system looks up MC table using
cargo location ID"}:::decision N_GetBorderStationfromMCTable_Node1_action["If table lookup is successful, the
border station number is retrieved
from the table segment"]:::main N_GetBorderStationfromMCTable_Node1 -- Yes --> N_GetBorderStationfromMCTable_Node1_action N_GetBorderStationfromMCTable_Node1_action --> E_GetBorderStationfromMCTable N_GetBorderStationfromMCTable_Node0 -- No --> N_GetBorderStationfromMCTable_Node1 N_GetBorderStationfromMCTable_Node1 -- No --> E_GetBorderStationfromMCTable
information"}:::decision N_GetBorderStationfromMCTable_Node0_action["MC table is queried using location
ID to retrieve border station number"]:::main N_GetBorderStationfromMCTable_Node0 -- Yes --> N_GetBorderStationfromMCTable_Node0_action N_GetBorderStationfromMCTable_Node0_action --> E_GetBorderStationfromMCTable S_GetBorderStationfromMCTable --> N_GetBorderStationfromMCTable_Node0 N_GetBorderStationfromMCTable_Node1{"The system looks up MC table using
cargo location ID"}:::decision N_GetBorderStationfromMCTable_Node1_action["If table lookup is successful, the
border station number is retrieved
from the table segment"]:::main N_GetBorderStationfromMCTable_Node1 -- Yes --> N_GetBorderStationfromMCTable_Node1_action N_GetBorderStationfromMCTable_Node1_action --> E_GetBorderStationfromMCTable N_GetBorderStationfromMCTable_Node0 -- No --> N_GetBorderStationfromMCTable_Node1 N_GetBorderStationfromMCTable_Node1 -- No --> E_GetBorderStationfromMCTable
File: GCCUSIO.cbl
GIVEN:
A cargo record requiring border error index and location ID
WHEN:
The system looks up border station information
THEN:
MC table is queried using location ID to retrieve border station number
File: GCCUSIO.cbl
GIVEN:
Cargo has error status and error index record needs border station information
WHEN:
The system looks up MC table using cargo location ID
THEN:
If table lookup is successful, the border station number is retrieved from the table segment
β Consolidated Acceptance Criteria
- The system processes border error index → border error index is populated with error code 'E', border station number from MC table, and 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_PopulateBorderErrorIndex(["Start Step"])
E_PopulateBorderErrorIndex(["End Step"])
N_PopulateBorderErrorIndex_Node0{"The system processes border error
index"}:::decision N_PopulateBorderErrorIndex_Node0_action["Border error index is populated
with error code E , border station
number from MC table, and cargo CCN
key"]:::exclusion N_PopulateBorderErrorIndex_Node0 -- Yes -->|Alternative| N_PopulateBorderErrorIndex_Node0_action N_PopulateBorderErrorIndex_Node0_action --> E_PopulateBorderErrorIndex S_PopulateBorderErrorIndex --> N_PopulateBorderErrorIndex_Node0 N_PopulateBorderErrorIndex_Node0 -- No --> E_PopulateBorderErrorIndex
index"}:::decision N_PopulateBorderErrorIndex_Node0_action["Border error index is populated
with error code E , border station
number from MC table, and cargo CCN
key"]:::exclusion N_PopulateBorderErrorIndex_Node0 -- Yes -->|Alternative| N_PopulateBorderErrorIndex_Node0_action N_PopulateBorderErrorIndex_Node0_action --> E_PopulateBorderErrorIndex S_PopulateBorderErrorIndex --> N_PopulateBorderErrorIndex_Node0 N_PopulateBorderErrorIndex_Node0 -- No --> E_PopulateBorderErrorIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record with error status and successful border station lookup
WHEN:
The system processes border error index
THEN:
Border error index is populated with error code 'E', border station number from MC table, and cargo CCN key
β Consolidated Acceptance Criteria
- The system processes destination error index → destination error index is populated with error code 'E', destination station number, and 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_PopulateDestinationErrorIndex(["Start Step"])
E_PopulateDestinationErrorIndex(["End Step"])
N_PopulateDestinationErrorIndex_Node0{"The system processes destination
error index"}:::decision N_PopulateDestinationErrorIndex_Node0_action["Destination error index is
populated with error code E ,
destination station number, and
cargo CCN key"]:::exclusion N_PopulateDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_PopulateDestinationErrorIndex_Node0_action N_PopulateDestinationErrorIndex_Node0_action --> E_PopulateDestinationErrorIndex S_PopulateDestinationErrorIndex --> N_PopulateDestinationErrorIndex_Node0 N_PopulateDestinationErrorIndex_Node0 -- No --> E_PopulateDestinationErrorIndex
error index"}:::decision N_PopulateDestinationErrorIndex_Node0_action["Destination error index is
populated with error code E ,
destination station number, and
cargo CCN key"]:::exclusion N_PopulateDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_PopulateDestinationErrorIndex_Node0_action N_PopulateDestinationErrorIndex_Node0_action --> E_PopulateDestinationErrorIndex S_PopulateDestinationErrorIndex --> N_PopulateDestinationErrorIndex_Node0 N_PopulateDestinationErrorIndex_Node0 -- No --> E_PopulateDestinationErrorIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record with error status
WHEN:
The system processes destination error index
THEN:
Destination error index is populated with error code 'E', destination station number, and cargo CCN key
β Consolidated Acceptance Criteria
- The system checks for existing GCSB1RT index record → existing record is updated if found, otherwise new record is 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_GCSB1RTIndexRecordExists(["Start Step"])
E_GCSB1RTIndexRecordExists(["End Step"])
N_GCSB1RTIndexRecordExists_Node0{"The system checks for existing
GCSB1RT index record"}:::decision N_GCSB1RTIndexRecordExists_Node0_action["Existing record is updated if
found, otherwise new record is
created"]:::main N_GCSB1RTIndexRecordExists_Node0 -- Yes --> N_GCSB1RTIndexRecordExists_Node0_action N_GCSB1RTIndexRecordExists_Node0_action --> E_GCSB1RTIndexRecordExists S_GCSB1RTIndexRecordExists --> N_GCSB1RTIndexRecordExists_Node0 N_GCSB1RTIndexRecordExists_Node0 -- No --> E_GCSB1RTIndexRecordExists
GCSB1RT index record"}:::decision N_GCSB1RTIndexRecordExists_Node0_action["Existing record is updated if
found, otherwise new record is
created"]:::main N_GCSB1RTIndexRecordExists_Node0 -- Yes --> N_GCSB1RTIndexRecordExists_Node0_action N_GCSB1RTIndexRecordExists_Node0_action --> E_GCSB1RTIndexRecordExists S_GCSB1RTIndexRecordExists --> N_GCSB1RTIndexRecordExists_Node0 N_GCSB1RTIndexRecordExists_Node0 -- No --> E_GCSB1RTIndexRecordExists
File: GCCUSIO.cbl
GIVEN:
Error index fields populated for a cargo record
WHEN:
The system checks for existing GCSB1RT index record
THEN:
Existing record is updated if found, otherwise new record is created
β Consolidated Acceptance Criteria
- The system processes error index record creation → new GCSB1RT record is inserted with populated error index fields
- The system processes hold index management → the system inserts a new index record with cargo key and hold field information
- Error index fields have been populated → the system creates a new cargo index record in GCSB1RT database with the error information
- Hold index fields have been populated → the system creates a new cargo index record in GCSB1RT database with the hold information
- The system attempts to update the index → the system creates a new GCSB1RT index record with the populated error field values
- The system attempts to update the index → the system creates a new GCSB1RT index record with the populated hold field 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_CreateNewIndexRecord(["Start Step"])
E_CreateNewIndexRecord(["End Step"])
N_CreateNewIndexRecord_Node0{"The system processes error index
record creation"}:::decision N_CreateNewIndexRecord_Node0_action["New GCSB1RT record is inserted with
populated error index fields"]:::exclusion N_CreateNewIndexRecord_Node0 -- Yes -->|Alternative| N_CreateNewIndexRecord_Node0_action N_CreateNewIndexRecord_Node0_action --> E_CreateNewIndexRecord S_CreateNewIndexRecord --> N_CreateNewIndexRecord_Node0 N_CreateNewIndexRecord_Node1{"The system processes hold index
management"}:::decision N_CreateNewIndexRecord_Node1_action["The system inserts a new index
record with cargo key and hold field
information"]:::main N_CreateNewIndexRecord_Node1 -- Yes --> N_CreateNewIndexRecord_Node1_action N_CreateNewIndexRecord_Node1_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node0 -- No --> N_CreateNewIndexRecord_Node1 N_CreateNewIndexRecord_Node2{"Error index fields have been
populated"}:::decision N_CreateNewIndexRecord_Node2_action["The system creates a new cargo
index record in GCSB1RT database
with the error information"]:::exclusion N_CreateNewIndexRecord_Node2 -- Yes -->|Alternative| N_CreateNewIndexRecord_Node2_action N_CreateNewIndexRecord_Node2_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node1 -- No --> N_CreateNewIndexRecord_Node2 N_CreateNewIndexRecord_Node3{"Hold index fields have been
populated"}:::decision N_CreateNewIndexRecord_Node3_action["The system creates a new cargo
index record in GCSB1RT database
with the hold information"]:::main N_CreateNewIndexRecord_Node3 -- Yes --> N_CreateNewIndexRecord_Node3_action N_CreateNewIndexRecord_Node3_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node2 -- No --> N_CreateNewIndexRecord_Node3 N_CreateNewIndexRecord_Node4{"The system attempts to update the
index"}:::decision N_CreateNewIndexRecord_Node4_action["The system creates a new GCSB1RT
index record with the populated
error field values"]:::main N_CreateNewIndexRecord_Node4 -- Yes --> N_CreateNewIndexRecord_Node4_action N_CreateNewIndexRecord_Node4_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node3 -- No --> N_CreateNewIndexRecord_Node4 N_CreateNewIndexRecord_Node5{"The system attempts to update the
index"}:::decision N_CreateNewIndexRecord_Node5_action["The system creates a new GCSB1RT
index record with the populated hold
field values"]:::main N_CreateNewIndexRecord_Node5 -- Yes --> N_CreateNewIndexRecord_Node5_action N_CreateNewIndexRecord_Node5_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node4 -- No --> N_CreateNewIndexRecord_Node5 N_CreateNewIndexRecord_Node5 -- No --> E_CreateNewIndexRecord
record creation"}:::decision N_CreateNewIndexRecord_Node0_action["New GCSB1RT record is inserted with
populated error index fields"]:::exclusion N_CreateNewIndexRecord_Node0 -- Yes -->|Alternative| N_CreateNewIndexRecord_Node0_action N_CreateNewIndexRecord_Node0_action --> E_CreateNewIndexRecord S_CreateNewIndexRecord --> N_CreateNewIndexRecord_Node0 N_CreateNewIndexRecord_Node1{"The system processes hold index
management"}:::decision N_CreateNewIndexRecord_Node1_action["The system inserts a new index
record with cargo key and hold field
information"]:::main N_CreateNewIndexRecord_Node1 -- Yes --> N_CreateNewIndexRecord_Node1_action N_CreateNewIndexRecord_Node1_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node0 -- No --> N_CreateNewIndexRecord_Node1 N_CreateNewIndexRecord_Node2{"Error index fields have been
populated"}:::decision N_CreateNewIndexRecord_Node2_action["The system creates a new cargo
index record in GCSB1RT database
with the error information"]:::exclusion N_CreateNewIndexRecord_Node2 -- Yes -->|Alternative| N_CreateNewIndexRecord_Node2_action N_CreateNewIndexRecord_Node2_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node1 -- No --> N_CreateNewIndexRecord_Node2 N_CreateNewIndexRecord_Node3{"Hold index fields have been
populated"}:::decision N_CreateNewIndexRecord_Node3_action["The system creates a new cargo
index record in GCSB1RT database
with the hold information"]:::main N_CreateNewIndexRecord_Node3 -- Yes --> N_CreateNewIndexRecord_Node3_action N_CreateNewIndexRecord_Node3_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node2 -- No --> N_CreateNewIndexRecord_Node3 N_CreateNewIndexRecord_Node4{"The system attempts to update the
index"}:::decision N_CreateNewIndexRecord_Node4_action["The system creates a new GCSB1RT
index record with the populated
error field values"]:::main N_CreateNewIndexRecord_Node4 -- Yes --> N_CreateNewIndexRecord_Node4_action N_CreateNewIndexRecord_Node4_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node3 -- No --> N_CreateNewIndexRecord_Node4 N_CreateNewIndexRecord_Node5{"The system attempts to update the
index"}:::decision N_CreateNewIndexRecord_Node5_action["The system creates a new GCSB1RT
index record with the populated hold
field values"]:::main N_CreateNewIndexRecord_Node5 -- Yes --> N_CreateNewIndexRecord_Node5_action N_CreateNewIndexRecord_Node5_action --> E_CreateNewIndexRecord N_CreateNewIndexRecord_Node4 -- No --> N_CreateNewIndexRecord_Node5 N_CreateNewIndexRecord_Node5 -- No --> E_CreateNewIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record with error status and no existing GCSB1RT record
WHEN:
The system processes error index record creation
THEN:
New GCSB1RT record is inserted with populated error index fields
File: GCCUSIO.cbl
GIVEN:
No GCSB1RT index record exists for the cargo and hold index fields are populated
WHEN:
The system processes hold index management
THEN:
- The system inserts a new index record with cargo key
- Hold field information
File: GCCUSIO.cbl
GIVEN:
No cargo index record exists in GCSB1RT database AND cargo has error status
WHEN:
Error index fields have been populated
THEN:
The system creates a new cargo index record in GCSB1RT database with the error information
File: GCCUSIO.cbl
GIVEN:
No cargo index record exists in GCSB1RT database AND cargo has hold status
WHEN:
Hold index fields have been populated
THEN:
The system creates a new cargo index record in GCSB1RT database with the hold information
File: GCCUSIO.cbl
GIVEN:
Cargo has error or pending status AND error index fields have been populated AND no existing GCSB1RT index record is found for the cargo
WHEN:
The system attempts to update the index
THEN:
The system creates a new GCSB1RT index record with the populated error field values
File: GCCUSIO.cbl
GIVEN:
Cargo has hold status AND hold index fields have been populated AND no existing GCSB1RT index record is found for the cargo
WHEN:
The system attempts to update the index
THEN:
The system creates a new GCSB1RT index record with the populated hold field values
β Consolidated Acceptance Criteria
- The system processes error index record update → existing GCSB1RT record is updated with current error index fields
- The system processes hold index management → the system replaces the existing index record with updated hold field information
- Error index fields have been populated → the system updates the existing cargo index record in GCSB1RT database with the error information
- Hold index fields have been populated → the system updates the existing cargo index record in GCSB1RT database with the hold information
- The system attempts to update the index → the system updates the existing GCSB1RT index record with the current error field values
- The system attempts to update the index → the system updates the existing GCSB1RT index record with the current hold field 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_UpdateExistingIndexRecord(["Start Step"])
E_UpdateExistingIndexRecord(["End Step"])
N_UpdateExistingIndexRecord_Node0{"The system processes error index
record update"}:::decision N_UpdateExistingIndexRecord_Node0_action["Existing GCSB1RT record is updated
with current error index fields"]:::exclusion N_UpdateExistingIndexRecord_Node0 -- Yes -->|Alternative| N_UpdateExistingIndexRecord_Node0_action N_UpdateExistingIndexRecord_Node0_action --> E_UpdateExistingIndexRecord S_UpdateExistingIndexRecord --> N_UpdateExistingIndexRecord_Node0 N_UpdateExistingIndexRecord_Node1{"The system processes hold index
management"}:::decision N_UpdateExistingIndexRecord_Node1_action["The system replaces the existing
index record with updated hold field
information"]:::main N_UpdateExistingIndexRecord_Node1 -- Yes --> N_UpdateExistingIndexRecord_Node1_action N_UpdateExistingIndexRecord_Node1_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node0 -- No --> N_UpdateExistingIndexRecord_Node1 N_UpdateExistingIndexRecord_Node2{"Error index fields have been
populated"}:::decision N_UpdateExistingIndexRecord_Node2_action["The system updates the existing
cargo index record in GCSB1RT
database with the error information"]:::exclusion N_UpdateExistingIndexRecord_Node2 -- Yes -->|Alternative| N_UpdateExistingIndexRecord_Node2_action N_UpdateExistingIndexRecord_Node2_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node1 -- No --> N_UpdateExistingIndexRecord_Node2 N_UpdateExistingIndexRecord_Node3{"Hold index fields have been
populated"}:::decision N_UpdateExistingIndexRecord_Node3_action["The system updates the existing
cargo index record in GCSB1RT
database with the hold information"]:::main N_UpdateExistingIndexRecord_Node3 -- Yes --> N_UpdateExistingIndexRecord_Node3_action N_UpdateExistingIndexRecord_Node3_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node2 -- No --> N_UpdateExistingIndexRecord_Node3 N_UpdateExistingIndexRecord_Node4{"The system attempts to update the
index"}:::decision N_UpdateExistingIndexRecord_Node4_action["The system updates the existing
GCSB1RT index record with the
current error field values"]:::main N_UpdateExistingIndexRecord_Node4 -- Yes --> N_UpdateExistingIndexRecord_Node4_action N_UpdateExistingIndexRecord_Node4_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node3 -- No --> N_UpdateExistingIndexRecord_Node4 N_UpdateExistingIndexRecord_Node5{"The system attempts to update the
index"}:::decision N_UpdateExistingIndexRecord_Node5_action["The system updates the existing
GCSB1RT index record with the
current hold field values"]:::main N_UpdateExistingIndexRecord_Node5 -- Yes --> N_UpdateExistingIndexRecord_Node5_action N_UpdateExistingIndexRecord_Node5_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node4 -- No --> N_UpdateExistingIndexRecord_Node5 N_UpdateExistingIndexRecord_Node5 -- No --> E_UpdateExistingIndexRecord
record update"}:::decision N_UpdateExistingIndexRecord_Node0_action["Existing GCSB1RT record is updated
with current error index fields"]:::exclusion N_UpdateExistingIndexRecord_Node0 -- Yes -->|Alternative| N_UpdateExistingIndexRecord_Node0_action N_UpdateExistingIndexRecord_Node0_action --> E_UpdateExistingIndexRecord S_UpdateExistingIndexRecord --> N_UpdateExistingIndexRecord_Node0 N_UpdateExistingIndexRecord_Node1{"The system processes hold index
management"}:::decision N_UpdateExistingIndexRecord_Node1_action["The system replaces the existing
index record with updated hold field
information"]:::main N_UpdateExistingIndexRecord_Node1 -- Yes --> N_UpdateExistingIndexRecord_Node1_action N_UpdateExistingIndexRecord_Node1_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node0 -- No --> N_UpdateExistingIndexRecord_Node1 N_UpdateExistingIndexRecord_Node2{"Error index fields have been
populated"}:::decision N_UpdateExistingIndexRecord_Node2_action["The system updates the existing
cargo index record in GCSB1RT
database with the error information"]:::exclusion N_UpdateExistingIndexRecord_Node2 -- Yes -->|Alternative| N_UpdateExistingIndexRecord_Node2_action N_UpdateExistingIndexRecord_Node2_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node1 -- No --> N_UpdateExistingIndexRecord_Node2 N_UpdateExistingIndexRecord_Node3{"Hold index fields have been
populated"}:::decision N_UpdateExistingIndexRecord_Node3_action["The system updates the existing
cargo index record in GCSB1RT
database with the hold information"]:::main N_UpdateExistingIndexRecord_Node3 -- Yes --> N_UpdateExistingIndexRecord_Node3_action N_UpdateExistingIndexRecord_Node3_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node2 -- No --> N_UpdateExistingIndexRecord_Node3 N_UpdateExistingIndexRecord_Node4{"The system attempts to update the
index"}:::decision N_UpdateExistingIndexRecord_Node4_action["The system updates the existing
GCSB1RT index record with the
current error field values"]:::main N_UpdateExistingIndexRecord_Node4 -- Yes --> N_UpdateExistingIndexRecord_Node4_action N_UpdateExistingIndexRecord_Node4_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node3 -- No --> N_UpdateExistingIndexRecord_Node4 N_UpdateExistingIndexRecord_Node5{"The system attempts to update the
index"}:::decision N_UpdateExistingIndexRecord_Node5_action["The system updates the existing
GCSB1RT index record with the
current hold field values"]:::main N_UpdateExistingIndexRecord_Node5 -- Yes --> N_UpdateExistingIndexRecord_Node5_action N_UpdateExistingIndexRecord_Node5_action --> E_UpdateExistingIndexRecord N_UpdateExistingIndexRecord_Node4 -- No --> N_UpdateExistingIndexRecord_Node5 N_UpdateExistingIndexRecord_Node5 -- No --> E_UpdateExistingIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record with error status and existing GCSB1RT record
WHEN:
The system processes error index record update
THEN:
Existing GCSB1RT record is updated with current error index fields
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT index record exists for the cargo and hold index fields are populated
WHEN:
The system processes hold index management
THEN:
The system replaces the existing index record with updated hold field information
File: GCCUSIO.cbl
GIVEN:
A cargo index record already exists in GCSB1RT database AND cargo has error status
WHEN:
Error index fields have been populated
THEN:
The system updates the existing cargo index record in GCSB1RT database with the error information
File: GCCUSIO.cbl
GIVEN:
A cargo index record already exists in GCSB1RT database AND cargo has hold status
WHEN:
Hold index fields have been populated
THEN:
The system updates the existing cargo index record in GCSB1RT database with the hold information
File: GCCUSIO.cbl
GIVEN:
Cargo has error or pending status AND error index fields have been populated AND an existing GCSB1RT index record is found for the cargo
WHEN:
The system attempts to update the index
THEN:
The system updates the existing GCSB1RT index record with the current error field values
File: GCCUSIO.cbl
GIVEN:
Cargo has hold status AND hold index fields have been populated AND an existing GCSB1RT index record is found for the cargo
WHEN:
The system attempts to update the index
THEN:
The system updates the existing GCSB1RT index record with the current hold field values
β Consolidated Acceptance Criteria
- The system processes error index cleanup → error origin, destination, and border index fields are 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_RemoveErrorIndexFields(["Start Step"])
E_RemoveErrorIndexFields(["End Step"])
N_RemoveErrorIndexFields_Node0{"The system processes error index
cleanup"}:::decision N_RemoveErrorIndexFields_Node0_action["Error origin, destination, and
border index fields are cleared to
spaces"]:::exclusion N_RemoveErrorIndexFields_Node0 -- Yes -->|Alternative| N_RemoveErrorIndexFields_Node0_action N_RemoveErrorIndexFields_Node0_action --> E_RemoveErrorIndexFields S_RemoveErrorIndexFields --> N_RemoveErrorIndexFields_Node0 N_RemoveErrorIndexFields_Node0 -- No --> E_RemoveErrorIndexFields
cleanup"}:::decision N_RemoveErrorIndexFields_Node0_action["Error origin, destination, and
border index fields are cleared to
spaces"]:::exclusion N_RemoveErrorIndexFields_Node0 -- Yes -->|Alternative| N_RemoveErrorIndexFields_Node0_action N_RemoveErrorIndexFields_Node0_action --> E_RemoveErrorIndexFields S_RemoveErrorIndexFields --> N_RemoveErrorIndexFields_Node0 N_RemoveErrorIndexFields_Node0 -- No --> E_RemoveErrorIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record without error status but with existing error index fields
WHEN:
The system processes error index cleanup
THEN:
Error origin, destination, and border index fields are cleared to spaces
β Consolidated Acceptance Criteria
- The system checks if all error and hold fields are empty → record is deleted if all fields are empty, otherwise record is updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllErrorFieldsEmpty(["Start Step"])
E_AllErrorFieldsEmpty(["End Step"])
N_AllErrorFieldsEmpty_Node0{"The system checks if all error and
hold fields are empty"}:::decision N_AllErrorFieldsEmpty_Node0_action["Record is deleted if all fields are
empty, otherwise record is updated"]:::exclusion N_AllErrorFieldsEmpty_Node0 -- Yes -->|Alternative| N_AllErrorFieldsEmpty_Node0_action N_AllErrorFieldsEmpty_Node0_action --> E_AllErrorFieldsEmpty S_AllErrorFieldsEmpty --> N_AllErrorFieldsEmpty_Node0 N_AllErrorFieldsEmpty_Node0 -- No --> E_AllErrorFieldsEmpty
hold fields are empty"}:::decision N_AllErrorFieldsEmpty_Node0_action["Record is deleted if all fields are
empty, otherwise record is updated"]:::exclusion N_AllErrorFieldsEmpty_Node0 -- Yes -->|Alternative| N_AllErrorFieldsEmpty_Node0_action N_AllErrorFieldsEmpty_Node0_action --> E_AllErrorFieldsEmpty S_AllErrorFieldsEmpty --> N_AllErrorFieldsEmpty_Node0 N_AllErrorFieldsEmpty_Node0 -- No --> E_AllErrorFieldsEmpty
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT record with error fields cleared
WHEN:
- The system checks if all error
- Hold fields are empty
THEN:
Record is deleted if all fields are empty, otherwise record is updated
β Consolidated Acceptance Criteria
- The system processes index record cleanup → gCSB1RT record is deleted from the database
- The system determines index record is no longer needed → the system deletes the GCSB1RT index record completely
- If remaining index content → the system deletes the GCSB1RT index record completely
- If remaining index content → the system deletes the GCSB1RT index record completely
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteIndexRecord(["Start Step"])
E_DeleteIndexRecord(["End Step"])
N_DeleteIndexRecord_Node0{"The system processes index record
cleanup"}:::decision N_DeleteIndexRecord_Node0_action["GCSB1RT record is deleted from the
database"]:::main N_DeleteIndexRecord_Node0 -- Yes --> N_DeleteIndexRecord_Node0_action N_DeleteIndexRecord_Node0_action --> E_DeleteIndexRecord S_DeleteIndexRecord --> N_DeleteIndexRecord_Node0 N_DeleteIndexRecord_Node1{"The system determines index record
is no longer needed"}:::decision N_DeleteIndexRecord_Node1_action["The system deletes the GCSB1RT
index record completely"]:::main N_DeleteIndexRecord_Node1 -- Yes --> N_DeleteIndexRecord_Node1_action N_DeleteIndexRecord_Node1_action --> E_DeleteIndexRecord N_DeleteIndexRecord_Node0 -- No --> N_DeleteIndexRecord_Node1 N_DeleteIndexRecord_Node2{"The system evaluates remaining
index content"}:::decision N_DeleteIndexRecord_Node2_action["The system deletes the GCSB1RT
index record completely"]:::main N_DeleteIndexRecord_Node2 -- Yes --> N_DeleteIndexRecord_Node2_action N_DeleteIndexRecord_Node2_action --> E_DeleteIndexRecord N_DeleteIndexRecord_Node1 -- No --> N_DeleteIndexRecord_Node2 N_DeleteIndexRecord_Node3{"The system evaluates remaining
index content"}:::decision N_DeleteIndexRecord_Node3_action["The system deletes the GCSB1RT
index record completely"]:::main N_DeleteIndexRecord_Node3 -- Yes --> N_DeleteIndexRecord_Node3_action N_DeleteIndexRecord_Node3_action --> E_DeleteIndexRecord N_DeleteIndexRecord_Node2 -- No --> N_DeleteIndexRecord_Node3 N_DeleteIndexRecord_Node3 -- No --> E_DeleteIndexRecord
cleanup"}:::decision N_DeleteIndexRecord_Node0_action["GCSB1RT record is deleted from the
database"]:::main N_DeleteIndexRecord_Node0 -- Yes --> N_DeleteIndexRecord_Node0_action N_DeleteIndexRecord_Node0_action --> E_DeleteIndexRecord S_DeleteIndexRecord --> N_DeleteIndexRecord_Node0 N_DeleteIndexRecord_Node1{"The system determines index record
is no longer needed"}:::decision N_DeleteIndexRecord_Node1_action["The system deletes the GCSB1RT
index record completely"]:::main N_DeleteIndexRecord_Node1 -- Yes --> N_DeleteIndexRecord_Node1_action N_DeleteIndexRecord_Node1_action --> E_DeleteIndexRecord N_DeleteIndexRecord_Node0 -- No --> N_DeleteIndexRecord_Node1 N_DeleteIndexRecord_Node2{"The system evaluates remaining
index content"}:::decision N_DeleteIndexRecord_Node2_action["The system deletes the GCSB1RT
index record completely"]:::main N_DeleteIndexRecord_Node2 -- Yes --> N_DeleteIndexRecord_Node2_action N_DeleteIndexRecord_Node2_action --> E_DeleteIndexRecord N_DeleteIndexRecord_Node1 -- No --> N_DeleteIndexRecord_Node2 N_DeleteIndexRecord_Node3{"The system evaluates remaining
index content"}:::decision N_DeleteIndexRecord_Node3_action["The system deletes the GCSB1RT
index record completely"]:::main N_DeleteIndexRecord_Node3 -- Yes --> N_DeleteIndexRecord_Node3_action N_DeleteIndexRecord_Node3_action --> E_DeleteIndexRecord N_DeleteIndexRecord_Node2 -- No --> N_DeleteIndexRecord_Node3 N_DeleteIndexRecord_Node3 -- No --> E_DeleteIndexRecord
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT record with all error and hold index fields empty
WHEN:
The system processes index record cleanup
THEN:
GCSB1RT record is deleted from the database
File: GCCUSIO.cbl
GIVEN:
Hold index fields are cleared and no error index fields contain data
WHEN:
The system determines index record is no longer needed
THEN:
The system deletes the GCSB1RT index record completely
File: GCCUSIO.cbl
GIVEN:
Error index fields have been cleared AND the held destination index field is empty AND the held border index field is empty
WHEN:
The system evaluates remaining index content
THEN:
The system deletes the GCSB1RT index record completely
File: GCCUSIO.cbl
GIVEN:
Hold index fields have been cleared AND the error destination index field is empty AND the error origin index field is empty AND the error border index field is empty
WHEN:
The system evaluates remaining index content
THEN:
The system deletes the GCSB1RT index record completely
β Consolidated Acceptance Criteria
- The system processes partial index cleanup → gCSB1RT record is updated with remaining non-empty index fields
- The system processes index record maintenance → the system replaces the index record with cleared hold fields but preserved error field information
- If remaining index content → the system updates the existing GCSB1RT index record with the current field values
- If remaining index content → the system updates the existing GCSB1RT index record with the current field 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_UpdateIndexRecord(["Start Step"])
E_UpdateIndexRecord(["End Step"])
N_UpdateIndexRecord_Node0{"The system processes partial index
cleanup"}:::decision N_UpdateIndexRecord_Node0_action["GCSB1RT record is updated with
remaining non-empty index fields"]:::main N_UpdateIndexRecord_Node0 -- Yes --> N_UpdateIndexRecord_Node0_action N_UpdateIndexRecord_Node0_action --> E_UpdateIndexRecord S_UpdateIndexRecord --> N_UpdateIndexRecord_Node0 N_UpdateIndexRecord_Node1{"The system processes index record
maintenance"}:::decision N_UpdateIndexRecord_Node1_action["The system replaces the index
record with cleared hold fields but
preserved error field information"]:::main N_UpdateIndexRecord_Node1 -- Yes --> N_UpdateIndexRecord_Node1_action N_UpdateIndexRecord_Node1_action --> E_UpdateIndexRecord N_UpdateIndexRecord_Node0 -- No --> N_UpdateIndexRecord_Node1 N_UpdateIndexRecord_Node2{"The system evaluates remaining
index content"}:::decision N_UpdateIndexRecord_Node2_action["The system updates the existing
GCSB1RT index record with the
current field values"]:::main N_UpdateIndexRecord_Node2 -- Yes --> N_UpdateIndexRecord_Node2_action N_UpdateIndexRecord_Node2_action --> E_UpdateIndexRecord N_UpdateIndexRecord_Node1 -- No --> N_UpdateIndexRecord_Node2 N_UpdateIndexRecord_Node3{"The system evaluates remaining
index content"}:::decision N_UpdateIndexRecord_Node3_action["The system updates the existing
GCSB1RT index record with the
current field values"]:::main N_UpdateIndexRecord_Node3 -- Yes --> N_UpdateIndexRecord_Node3_action N_UpdateIndexRecord_Node3_action --> E_UpdateIndexRecord N_UpdateIndexRecord_Node2 -- No --> N_UpdateIndexRecord_Node3 N_UpdateIndexRecord_Node3 -- No --> E_UpdateIndexRecord
cleanup"}:::decision N_UpdateIndexRecord_Node0_action["GCSB1RT record is updated with
remaining non-empty index fields"]:::main N_UpdateIndexRecord_Node0 -- Yes --> N_UpdateIndexRecord_Node0_action N_UpdateIndexRecord_Node0_action --> E_UpdateIndexRecord S_UpdateIndexRecord --> N_UpdateIndexRecord_Node0 N_UpdateIndexRecord_Node1{"The system processes index record
maintenance"}:::decision N_UpdateIndexRecord_Node1_action["The system replaces the index
record with cleared hold fields but
preserved error field information"]:::main N_UpdateIndexRecord_Node1 -- Yes --> N_UpdateIndexRecord_Node1_action N_UpdateIndexRecord_Node1_action --> E_UpdateIndexRecord N_UpdateIndexRecord_Node0 -- No --> N_UpdateIndexRecord_Node1 N_UpdateIndexRecord_Node2{"The system evaluates remaining
index content"}:::decision N_UpdateIndexRecord_Node2_action["The system updates the existing
GCSB1RT index record with the
current field values"]:::main N_UpdateIndexRecord_Node2 -- Yes --> N_UpdateIndexRecord_Node2_action N_UpdateIndexRecord_Node2_action --> E_UpdateIndexRecord N_UpdateIndexRecord_Node1 -- No --> N_UpdateIndexRecord_Node2 N_UpdateIndexRecord_Node3{"The system evaluates remaining
index content"}:::decision N_UpdateIndexRecord_Node3_action["The system updates the existing
GCSB1RT index record with the
current field values"]:::main N_UpdateIndexRecord_Node3 -- Yes --> N_UpdateIndexRecord_Node3_action N_UpdateIndexRecord_Node3_action --> E_UpdateIndexRecord N_UpdateIndexRecord_Node2 -- No --> N_UpdateIndexRecord_Node3 N_UpdateIndexRecord_Node3 -- No --> E_UpdateIndexRecord
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT record with some error fields cleared but hold fields still populated
WHEN:
The system processes partial index cleanup
THEN:
GCSB1RT record is updated with remaining non-empty index fields
File: GCCUSIO.cbl
GIVEN:
Hold index fields are cleared but error index fields contain data
WHEN:
The system processes index record maintenance
THEN:
The system replaces the index record with cleared hold fields but preserved error field information
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Error index fields have been cleared AND either the held destination index field is not empty OR the held border index field is not empty
WHEN:
The system evaluates remaining index content
THEN:
The system updates the existing GCSB1RT index record with the current field values
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Hold index fields have been cleared AND either the error destination index field is not empty OR the error origin index field is not empty OR the error border index field is not empty
WHEN:
The system evaluates remaining index content
THEN:
The system updates the existing GCSB1RT index record with the current field values
β Consolidated Acceptance Criteria
- The system processes origin error search → gCSB1RT is queried using origin error station and cargo key to find matching 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_SearchOriginErrorIndex(["Start Step"])
E_SearchOriginErrorIndex(["End Step"])
N_SearchOriginErrorIndex_Node0{"The system processes origin error
search"}:::decision N_SearchOriginErrorIndex_Node0_action["GCSB1RT is queried using origin
error station and cargo key to find
matching records"]:::exclusion N_SearchOriginErrorIndex_Node0 -- Yes -->|Alternative| N_SearchOriginErrorIndex_Node0_action N_SearchOriginErrorIndex_Node0_action --> E_SearchOriginErrorIndex S_SearchOriginErrorIndex --> N_SearchOriginErrorIndex_Node0 N_SearchOriginErrorIndex_Node0 -- No --> E_SearchOriginErrorIndex
search"}:::decision N_SearchOriginErrorIndex_Node0_action["GCSB1RT is queried using origin
error station and cargo key to find
matching records"]:::exclusion N_SearchOriginErrorIndex_Node0 -- Yes -->|Alternative| N_SearchOriginErrorIndex_Node0_action N_SearchOriginErrorIndex_Node0_action --> E_SearchOriginErrorIndex S_SearchOriginErrorIndex --> N_SearchOriginErrorIndex_Node0 N_SearchOriginErrorIndex_Node0 -- No --> E_SearchOriginErrorIndex
File: GCCUSIO.cbl
GIVEN:
A search request for origin error index
WHEN:
The system processes origin error search
THEN:
- Gcsb1rt is queried using origin error station
- Cargo key to find matching records
β Consolidated Acceptance Criteria
- The system processes border error search → gCSB1RT is queried using border error station and cargo key to find matching 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_SearchBorderErrorIndex(["Start Step"])
E_SearchBorderErrorIndex(["End Step"])
N_SearchBorderErrorIndex_Node0{"The system processes border error
search"}:::decision N_SearchBorderErrorIndex_Node0_action["GCSB1RT is queried using border
error station and cargo key to find
matching records"]:::exclusion N_SearchBorderErrorIndex_Node0 -- Yes -->|Alternative| N_SearchBorderErrorIndex_Node0_action N_SearchBorderErrorIndex_Node0_action --> E_SearchBorderErrorIndex S_SearchBorderErrorIndex --> N_SearchBorderErrorIndex_Node0 N_SearchBorderErrorIndex_Node0 -- No --> E_SearchBorderErrorIndex
search"}:::decision N_SearchBorderErrorIndex_Node0_action["GCSB1RT is queried using border
error station and cargo key to find
matching records"]:::exclusion N_SearchBorderErrorIndex_Node0 -- Yes -->|Alternative| N_SearchBorderErrorIndex_Node0_action N_SearchBorderErrorIndex_Node0_action --> E_SearchBorderErrorIndex S_SearchBorderErrorIndex --> N_SearchBorderErrorIndex_Node0 N_SearchBorderErrorIndex_Node0 -- No --> E_SearchBorderErrorIndex
File: GCCUSIO.cbl
GIVEN:
A search request for border error index
WHEN:
The system processes border error search
THEN:
- Gcsb1rt is queried using border error station
- Cargo key to find matching records
β Consolidated Acceptance Criteria
- The system processes destination error search → gCSB1RT is queried using destination error station and cargo key to find matching 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_SearchDestinationErrorIndex(["Start Step"])
E_SearchDestinationErrorIndex(["End Step"])
N_SearchDestinationErrorIndex_Node0{"The system processes destination
error search"}:::decision N_SearchDestinationErrorIndex_Node0_action["GCSB1RT is queried using
destination error station and cargo
key to find matching records"]:::exclusion N_SearchDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_SearchDestinationErrorIndex_Node0_action N_SearchDestinationErrorIndex_Node0_action --> E_SearchDestinationErrorIndex S_SearchDestinationErrorIndex --> N_SearchDestinationErrorIndex_Node0 N_SearchDestinationErrorIndex_Node0 -- No --> E_SearchDestinationErrorIndex
error search"}:::decision N_SearchDestinationErrorIndex_Node0_action["GCSB1RT is queried using
destination error station and cargo
key to find matching records"]:::exclusion N_SearchDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_SearchDestinationErrorIndex_Node0_action N_SearchDestinationErrorIndex_Node0_action --> E_SearchDestinationErrorIndex S_SearchDestinationErrorIndex --> N_SearchDestinationErrorIndex_Node0 N_SearchDestinationErrorIndex_Node0 -- No --> E_SearchDestinationErrorIndex
File: GCCUSIO.cbl
GIVEN:
A search request for destination error index
WHEN:
The system processes destination error search
THEN:
- Gcsb1rt is queried using destination error station
- Cargo key to find matching records
β Consolidated Acceptance Criteria
- The system processes search results → primary cargo records are retrieved from GCSUSRT using cargo keys found in index 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_RetrieveMatchingCargoRecords(["Start Step"])
E_RetrieveMatchingCargoRecords(["End Step"])
N_RetrieveMatchingCargoRecords_Node0{"The system processes search results"}:::decision
N_RetrieveMatchingCargoRecords_Node0_action["Primary cargo records are retrieved
from GCSUSRT using cargo keys found
in index search"]:::main N_RetrieveMatchingCargoRecords_Node0 -- Yes --> N_RetrieveMatchingCargoRecords_Node0_action N_RetrieveMatchingCargoRecords_Node0_action --> E_RetrieveMatchingCargoRecords S_RetrieveMatchingCargoRecords --> N_RetrieveMatchingCargoRecords_Node0 N_RetrieveMatchingCargoRecords_Node0 -- No --> E_RetrieveMatchingCargoRecords
from GCSUSRT using cargo keys found
in index search"]:::main N_RetrieveMatchingCargoRecords_Node0 -- Yes --> N_RetrieveMatchingCargoRecords_Node0_action N_RetrieveMatchingCargoRecords_Node0_action --> E_RetrieveMatchingCargoRecords S_RetrieveMatchingCargoRecords --> N_RetrieveMatchingCargoRecords_Node0 N_RetrieveMatchingCargoRecords_Node0 -- No --> E_RetrieveMatchingCargoRecords
File: GCCUSIO.cbl
GIVEN:
Successful error index search results from GCSB1RT
WHEN:
The system processes search results
THEN:
Primary cargo records are retrieved from GCSUSRT using cargo keys found in index search
β Consolidated Acceptance Criteria
- The origin error index needs to be populated → the error code for origin station must be set to 'E'
- The destination error index population process is initiated → the destination error code field must 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_SetErrorCodetoE(["Start Step"])
E_SetErrorCodetoE(["End Step"])
N_SetErrorCodetoE_Node0{"The origin error index needs to be
populated"}:::decision N_SetErrorCodetoE_Node0_action["The error code for origin station
must be set to E"]:::exclusion N_SetErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetErrorCodetoE_Node0_action N_SetErrorCodetoE_Node0_action --> E_SetErrorCodetoE S_SetErrorCodetoE --> N_SetErrorCodetoE_Node0 N_SetErrorCodetoE_Node1{"The destination error index
population process is initiated"}:::decision N_SetErrorCodetoE_Node1_action["The destination error code field
must be set to E"]:::exclusion N_SetErrorCodetoE_Node1 -- Yes -->|Alternative| N_SetErrorCodetoE_Node1_action N_SetErrorCodetoE_Node1_action --> E_SetErrorCodetoE N_SetErrorCodetoE_Node0 -- No --> N_SetErrorCodetoE_Node1 N_SetErrorCodetoE_Node1 -- No --> E_SetErrorCodetoE
populated"}:::decision N_SetErrorCodetoE_Node0_action["The error code for origin station
must be set to E"]:::exclusion N_SetErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetErrorCodetoE_Node0_action N_SetErrorCodetoE_Node0_action --> E_SetErrorCodetoE S_SetErrorCodetoE --> N_SetErrorCodetoE_Node0 N_SetErrorCodetoE_Node1{"The destination error index
population process is initiated"}:::decision N_SetErrorCodetoE_Node1_action["The destination error code field
must be set to E"]:::exclusion N_SetErrorCodetoE_Node1 -- Yes -->|Alternative| N_SetErrorCodetoE_Node1_action N_SetErrorCodetoE_Node1_action --> E_SetErrorCodetoE N_SetErrorCodetoE_Node0 -- No --> N_SetErrorCodetoE_Node1 N_SetErrorCodetoE_Node1 -- No --> E_SetErrorCodetoE
File: GCCUSIO.cbl
GIVEN:
The system is processing error fields for origin station cargo processing
WHEN:
The origin error index needs to be populated
THEN:
The error code for origin station must be set to 'E'
File: GCCUSIO.cbl
GIVEN:
The system is processing destination error index fields for a cargo record
WHEN:
The destination error index population process is initiated
THEN:
The destination error code field must be set to 'E'
β Consolidated Acceptance Criteria
- Processing error conditions for the origin station → the origin station number must be extracted from the cargo record field RT28-ORIG-STN-NUM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractOriginStationNumber(["Start Step"])
E_ExtractOriginStationNumber(["End Step"])
N_ExtractOriginStationNumber_Node0{"Processing error conditions for the
origin station"}:::decision N_ExtractOriginStationNumber_Node0_action["The origin station number must be
extracted from the cargo record
field RT28-ORIG-STN-NUM"]:::exclusion N_ExtractOriginStationNumber_Node0 -- Yes -->|Alternative| N_ExtractOriginStationNumber_Node0_action N_ExtractOriginStationNumber_Node0_action --> E_ExtractOriginStationNumber S_ExtractOriginStationNumber --> N_ExtractOriginStationNumber_Node0 N_ExtractOriginStationNumber_Node0 -- No --> E_ExtractOriginStationNumber
origin station"}:::decision N_ExtractOriginStationNumber_Node0_action["The origin station number must be
extracted from the cargo record
field RT28-ORIG-STN-NUM"]:::exclusion N_ExtractOriginStationNumber_Node0 -- Yes -->|Alternative| N_ExtractOriginStationNumber_Node0_action N_ExtractOriginStationNumber_Node0_action --> E_ExtractOriginStationNumber S_ExtractOriginStationNumber --> N_ExtractOriginStationNumber_Node0 N_ExtractOriginStationNumber_Node0 -- No --> E_ExtractOriginStationNumber
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with origin station information
WHEN:
Processing error conditions for the origin station
THEN:
The origin station number must be extracted from the cargo record field RT28-ORIG-STN-NUM
β Consolidated Acceptance Criteria
- Building the error index for origin station processing → the origin error index key must be set to the extracted 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_SetOriginErrorIndexKey(["Start Step"])
E_SetOriginErrorIndexKey(["End Step"])
N_SetOriginErrorIndexKey_Node0{"Building the error index for origin
station processing"}:::decision N_SetOriginErrorIndexKey_Node0_action["The origin error index key must be
set to the extracted origin station
number"]:::exclusion N_SetOriginErrorIndexKey_Node0 -- Yes -->|Alternative| N_SetOriginErrorIndexKey_Node0_action N_SetOriginErrorIndexKey_Node0_action --> E_SetOriginErrorIndexKey S_SetOriginErrorIndexKey --> N_SetOriginErrorIndexKey_Node0 N_SetOriginErrorIndexKey_Node0 -- No --> E_SetOriginErrorIndexKey
station processing"}:::decision N_SetOriginErrorIndexKey_Node0_action["The origin error index key must be
set to the extracted origin station
number"]:::exclusion N_SetOriginErrorIndexKey_Node0 -- Yes -->|Alternative| N_SetOriginErrorIndexKey_Node0_action N_SetOriginErrorIndexKey_Node0_action --> E_SetOriginErrorIndexKey S_SetOriginErrorIndexKey --> N_SetOriginErrorIndexKey_Node0 N_SetOriginErrorIndexKey_Node0 -- No --> E_SetOriginErrorIndexKey
File: GCCUSIO.cbl
GIVEN:
The origin station number has been extracted from the cargo record
WHEN:
Building the error index for origin station processing
THEN:
The origin error index key must be set to the extracted origin station number
β Consolidated Acceptance Criteria
- Processing error conditions that need to be linked to specific cargo → the cargo CCN key must be extracted from the cargo record 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_ExtractCargoCCNKey(["Start Step"])
E_ExtractCargoCCNKey(["End Step"])
N_ExtractCargoCCNKey_Node0{"Processing error conditions that
need to be linked to specific cargo"}:::decision N_ExtractCargoCCNKey_Node0_action["The cargo CCN key must be extracted
from the cargo record US-CCN-KEY
field"]:::exclusion N_ExtractCargoCCNKey_Node0 -- Yes -->|Alternative| N_ExtractCargoCCNKey_Node0_action N_ExtractCargoCCNKey_Node0_action --> E_ExtractCargoCCNKey S_ExtractCargoCCNKey --> N_ExtractCargoCCNKey_Node0 N_ExtractCargoCCNKey_Node0 -- No --> E_ExtractCargoCCNKey
need to be linked to specific cargo"}:::decision N_ExtractCargoCCNKey_Node0_action["The cargo CCN key must be extracted
from the cargo record US-CCN-KEY
field"]:::exclusion N_ExtractCargoCCNKey_Node0 -- Yes -->|Alternative| N_ExtractCargoCCNKey_Node0_action N_ExtractCargoCCNKey_Node0_action --> E_ExtractCargoCCNKey S_ExtractCargoCCNKey --> N_ExtractCargoCCNKey_Node0 N_ExtractCargoCCNKey_Node0 -- No --> E_ExtractCargoCCNKey
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with a unique CCN key identifier
WHEN:
Processing error conditions that need to be linked to specific cargo
THEN:
The cargo CCN key must be extracted from the cargo record US-CCN-KEY field
β Consolidated Acceptance Criteria
- Building the error index that links errors to specific cargo → the origin error cargo key must be set to the extracted 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_SetOriginErrorCargoKey(["Start Step"])
E_SetOriginErrorCargoKey(["End Step"])
N_SetOriginErrorCargoKey_Node0{"Building the error index that links
errors to specific cargo"}:::decision N_SetOriginErrorCargoKey_Node0_action["The origin error cargo key must be
set to the extracted cargo CCN key"]:::exclusion N_SetOriginErrorCargoKey_Node0 -- Yes -->|Alternative| N_SetOriginErrorCargoKey_Node0_action N_SetOriginErrorCargoKey_Node0_action --> E_SetOriginErrorCargoKey S_SetOriginErrorCargoKey --> N_SetOriginErrorCargoKey_Node0 N_SetOriginErrorCargoKey_Node0 -- No --> E_SetOriginErrorCargoKey
errors to specific cargo"}:::decision N_SetOriginErrorCargoKey_Node0_action["The origin error cargo key must be
set to the extracted cargo CCN key"]:::exclusion N_SetOriginErrorCargoKey_Node0 -- Yes -->|Alternative| N_SetOriginErrorCargoKey_Node0_action N_SetOriginErrorCargoKey_Node0_action --> E_SetOriginErrorCargoKey S_SetOriginErrorCargoKey --> N_SetOriginErrorCargoKey_Node0 N_SetOriginErrorCargoKey_Node0 -- No --> E_SetOriginErrorCargoKey
File: GCCUSIO.cbl
GIVEN:
The cargo CCN key has been extracted from the cargo record
WHEN:
Building the error index that links errors to specific cargo
THEN:
The origin error cargo key must be set to the extracted cargo CCN key
β Consolidated Acceptance Criteria
- The system prepares for table lookup → all table request parameters are cleared and initialized to spaces, and PCB flags are reset
- The system prepares for table lookup → all table request parameters are cleared including key values and control 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_InitializeTableRequestParameters(["Start Step"])
E_InitializeTableRequestParameters(["End Step"])
N_InitializeTableRequestParameters_Node0{"The system prepares for table
lookup"}:::decision N_InitializeTableRequestParameters_Node0_action["All table request parameters are
cleared and initialized to spaces,
and PCB flags are reset"]:::main N_InitializeTableRequestParameters_Node0 -- Yes --> N_InitializeTableRequestParameters_Node0_action N_InitializeTableRequestParameters_Node0_action --> E_InitializeTableRequestParameters S_InitializeTableRequestParameters --> N_InitializeTableRequestParameters_Node0 N_InitializeTableRequestParameters_Node1{"The system prepares for table
lookup"}:::decision N_InitializeTableRequestParameters_Node1_action["All table request parameters are
cleared including key values and
control flags"]:::main N_InitializeTableRequestParameters_Node1 -- Yes --> N_InitializeTableRequestParameters_Node1_action N_InitializeTableRequestParameters_Node1_action --> E_InitializeTableRequestParameters N_InitializeTableRequestParameters_Node0 -- No --> N_InitializeTableRequestParameters_Node1 N_InitializeTableRequestParameters_Node1 -- No --> E_InitializeTableRequestParameters
lookup"}:::decision N_InitializeTableRequestParameters_Node0_action["All table request parameters are
cleared and initialized to spaces,
and PCB flags are reset"]:::main N_InitializeTableRequestParameters_Node0 -- Yes --> N_InitializeTableRequestParameters_Node0_action N_InitializeTableRequestParameters_Node0_action --> E_InitializeTableRequestParameters S_InitializeTableRequestParameters --> N_InitializeTableRequestParameters_Node0 N_InitializeTableRequestParameters_Node1{"The system prepares for table
lookup"}:::decision N_InitializeTableRequestParameters_Node1_action["All table request parameters are
cleared including key values and
control flags"]:::main N_InitializeTableRequestParameters_Node1 -- Yes --> N_InitializeTableRequestParameters_Node1_action N_InitializeTableRequestParameters_Node1_action --> E_InitializeTableRequestParameters N_InitializeTableRequestParameters_Node0 -- No --> N_InitializeTableRequestParameters_Node1 N_InitializeTableRequestParameters_Node1 -- No --> E_InitializeTableRequestParameters
File: GCCUSIO.cbl
GIVEN:
A request to retrieve border station information from MC table
WHEN:
The system prepares for table lookup
THEN:
- All table request parameters are cleared
- Initialized to spaces, and pcb flags are reset
File: GCCUSIO.cbl
GIVEN:
A request to extract station information is initiated
WHEN:
The system prepares for table lookup
THEN:
- All table request parameters are cleared including key values
- Control flags
β Consolidated Acceptance Criteria
- The system configures the database operation type → the function code is set to 'GU' for Get Unique operation
- The system prepares to retrieve border station information → the function code is set to 'GU' to perform a unique record retrieval
- IH table lookup parameters are being initialized → the function code should be set to 'GU' for Get Unique operation
- The system sets the operation type for table access → the function code is set to 'GU' to indicate a unique record retrieval operation
- The system configures the database operation type → the function code is set to 'GU' for unique 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_SetFunctionCodetoGU(["Start Step"])
E_SetFunctionCodetoGU(["End Step"])
N_SetFunctionCodetoGU_Node0{"The system configures the database
operation type"}:::decision N_SetFunctionCodetoGU_Node0_action["The function code is set to GU for
Get Unique operation"]:::main N_SetFunctionCodetoGU_Node0 -- Yes --> N_SetFunctionCodetoGU_Node0_action N_SetFunctionCodetoGU_Node0_action --> E_SetFunctionCodetoGU S_SetFunctionCodetoGU --> N_SetFunctionCodetoGU_Node0 N_SetFunctionCodetoGU_Node1{"The system prepares to retrieve
border station information"}:::decision N_SetFunctionCodetoGU_Node1_action["The function code is set to GU to
perform a unique record retrieval"]:::main N_SetFunctionCodetoGU_Node1 -- Yes --> N_SetFunctionCodetoGU_Node1_action N_SetFunctionCodetoGU_Node1_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node0 -- No --> N_SetFunctionCodetoGU_Node1 N_SetFunctionCodetoGU_Node2{"IH table lookup parameters are
being initialized"}:::decision N_SetFunctionCodetoGU_Node2_action["The function code should be set to
GU for Get Unique operation"]:::main N_SetFunctionCodetoGU_Node2 -- Yes --> N_SetFunctionCodetoGU_Node2_action N_SetFunctionCodetoGU_Node2_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node1 -- No --> N_SetFunctionCodetoGU_Node2 N_SetFunctionCodetoGU_Node3{"The system sets the operation type
for table access"}:::decision N_SetFunctionCodetoGU_Node3_action["The function code is set to GU to
indicate a unique record retrieval
operation"]:::main N_SetFunctionCodetoGU_Node3 -- Yes --> N_SetFunctionCodetoGU_Node3_action N_SetFunctionCodetoGU_Node3_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node2 -- No --> N_SetFunctionCodetoGU_Node3 N_SetFunctionCodetoGU_Node4{"The system configures the database
operation type"}:::decision N_SetFunctionCodetoGU_Node4_action["The function code is set to GU for
unique record retrieval"]:::main N_SetFunctionCodetoGU_Node4 -- Yes --> N_SetFunctionCodetoGU_Node4_action N_SetFunctionCodetoGU_Node4_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node3 -- No --> N_SetFunctionCodetoGU_Node4 N_SetFunctionCodetoGU_Node4 -- No --> E_SetFunctionCodetoGU
operation type"}:::decision N_SetFunctionCodetoGU_Node0_action["The function code is set to GU for
Get Unique operation"]:::main N_SetFunctionCodetoGU_Node0 -- Yes --> N_SetFunctionCodetoGU_Node0_action N_SetFunctionCodetoGU_Node0_action --> E_SetFunctionCodetoGU S_SetFunctionCodetoGU --> N_SetFunctionCodetoGU_Node0 N_SetFunctionCodetoGU_Node1{"The system prepares to retrieve
border station information"}:::decision N_SetFunctionCodetoGU_Node1_action["The function code is set to GU to
perform a unique record retrieval"]:::main N_SetFunctionCodetoGU_Node1 -- Yes --> N_SetFunctionCodetoGU_Node1_action N_SetFunctionCodetoGU_Node1_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node0 -- No --> N_SetFunctionCodetoGU_Node1 N_SetFunctionCodetoGU_Node2{"IH table lookup parameters are
being initialized"}:::decision N_SetFunctionCodetoGU_Node2_action["The function code should be set to
GU for Get Unique operation"]:::main N_SetFunctionCodetoGU_Node2 -- Yes --> N_SetFunctionCodetoGU_Node2_action N_SetFunctionCodetoGU_Node2_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node1 -- No --> N_SetFunctionCodetoGU_Node2 N_SetFunctionCodetoGU_Node3{"The system sets the operation type
for table access"}:::decision N_SetFunctionCodetoGU_Node3_action["The function code is set to GU to
indicate a unique record retrieval
operation"]:::main N_SetFunctionCodetoGU_Node3 -- Yes --> N_SetFunctionCodetoGU_Node3_action N_SetFunctionCodetoGU_Node3_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node2 -- No --> N_SetFunctionCodetoGU_Node3 N_SetFunctionCodetoGU_Node4{"The system configures the database
operation type"}:::decision N_SetFunctionCodetoGU_Node4_action["The function code is set to GU for
unique record retrieval"]:::main N_SetFunctionCodetoGU_Node4 -- Yes --> N_SetFunctionCodetoGU_Node4_action N_SetFunctionCodetoGU_Node4_action --> E_SetFunctionCodetoGU N_SetFunctionCodetoGU_Node3 -- No --> N_SetFunctionCodetoGU_Node4 N_SetFunctionCodetoGU_Node4 -- No --> E_SetFunctionCodetoGU
File: GCCUSIO.cbl
GIVEN:
A table lookup request is being prepared
WHEN:
The system configures the database operation type
THEN:
The function code is set to 'GU' for Get Unique operation
File: GCCUSIO.cbl
GIVEN:
Border station lookup parameters are initialized
WHEN:
The system prepares to retrieve border station information
THEN:
The function code is set to 'GU' to perform a unique record retrieval
File: GCCUSIO.cbl
GIVEN:
The system needs to retrieve Iron Highway table configuration
WHEN:
IH table lookup parameters are being initialized
THEN:
The function code should be set to 'GU' for Get Unique operation
File: GCCUSIO.cbl
GIVEN:
A table lookup operation is being configured
WHEN:
The system sets the operation type for table access
THEN:
The function code is set to 'GU' to indicate a unique record retrieval operation
File: GCCUSIO.cbl
GIVEN:
Station information lookup is being prepared
WHEN:
The system configures the database operation type
THEN:
The function code is set to 'GU' for unique record retrieval
β Consolidated Acceptance Criteria
- The system identifies which table to query → the table ID is set to 'MC' to target the MC table
- The system needs to identify the correct table type → the table ID is set to 'MC' and function code is set to 'GU' for station table lookup
- The system identifies which table contains border station data → the table ID is set to 'MC' to access the border station reference table
- The system configures the table identifier → the table ID is set to 'MC' to target the station master table
- The system selects the appropriate data source → the table ID is set to 'MC' to access the station master table
- The system configures table lookup parameters → table ID is set to 'MC' to identify the station master 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_SetTableIDtoMC(["Start Step"])
E_SetTableIDtoMC(["End Step"])
N_SetTableIDtoMC_Node0{"The system identifies which table
to query"}:::decision N_SetTableIDtoMC_Node0_action["The table ID is set to MC to target
the MC table"]:::main N_SetTableIDtoMC_Node0 -- Yes --> N_SetTableIDtoMC_Node0_action N_SetTableIDtoMC_Node0_action --> E_SetTableIDtoMC S_SetTableIDtoMC --> N_SetTableIDtoMC_Node0 N_SetTableIDtoMC_Node1{"The system needs to identify the
correct table type"}:::decision N_SetTableIDtoMC_Node1_action["The table ID is set to MC and
function code is set to GU for
station table lookup"]:::main N_SetTableIDtoMC_Node1 -- Yes --> N_SetTableIDtoMC_Node1_action N_SetTableIDtoMC_Node1_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node0 -- No --> N_SetTableIDtoMC_Node1 N_SetTableIDtoMC_Node2{"The system identifies which table
contains border station data"}:::decision N_SetTableIDtoMC_Node2_action["The table ID is set to MC to access
the border station reference table"]:::main N_SetTableIDtoMC_Node2 -- Yes --> N_SetTableIDtoMC_Node2_action N_SetTableIDtoMC_Node2_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node1 -- No --> N_SetTableIDtoMC_Node2 N_SetTableIDtoMC_Node3{"The system configures the table
identifier"}:::decision N_SetTableIDtoMC_Node3_action["The table ID is set to MC to target
the station master table"]:::main N_SetTableIDtoMC_Node3 -- Yes --> N_SetTableIDtoMC_Node3_action N_SetTableIDtoMC_Node3_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node2 -- No --> N_SetTableIDtoMC_Node3 N_SetTableIDtoMC_Node4{"The system selects the appropriate
data source"}:::decision N_SetTableIDtoMC_Node4_action["The table ID is set to MC to access
the station master table"]:::main N_SetTableIDtoMC_Node4 -- Yes --> N_SetTableIDtoMC_Node4_action N_SetTableIDtoMC_Node4_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node3 -- No --> N_SetTableIDtoMC_Node4 N_SetTableIDtoMC_Node5{"The system configures table lookup
parameters"}:::decision N_SetTableIDtoMC_Node5_action["Table ID is set to MC to identify
the station master table"]:::main N_SetTableIDtoMC_Node5 -- Yes --> N_SetTableIDtoMC_Node5_action N_SetTableIDtoMC_Node5_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node4 -- No --> N_SetTableIDtoMC_Node5 N_SetTableIDtoMC_Node5 -- No --> E_SetTableIDtoMC
to query"}:::decision N_SetTableIDtoMC_Node0_action["The table ID is set to MC to target
the MC table"]:::main N_SetTableIDtoMC_Node0 -- Yes --> N_SetTableIDtoMC_Node0_action N_SetTableIDtoMC_Node0_action --> E_SetTableIDtoMC S_SetTableIDtoMC --> N_SetTableIDtoMC_Node0 N_SetTableIDtoMC_Node1{"The system needs to identify the
correct table type"}:::decision N_SetTableIDtoMC_Node1_action["The table ID is set to MC and
function code is set to GU for
station table lookup"]:::main N_SetTableIDtoMC_Node1 -- Yes --> N_SetTableIDtoMC_Node1_action N_SetTableIDtoMC_Node1_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node0 -- No --> N_SetTableIDtoMC_Node1 N_SetTableIDtoMC_Node2{"The system identifies which table
contains border station data"}:::decision N_SetTableIDtoMC_Node2_action["The table ID is set to MC to access
the border station reference table"]:::main N_SetTableIDtoMC_Node2 -- Yes --> N_SetTableIDtoMC_Node2_action N_SetTableIDtoMC_Node2_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node1 -- No --> N_SetTableIDtoMC_Node2 N_SetTableIDtoMC_Node3{"The system configures the table
identifier"}:::decision N_SetTableIDtoMC_Node3_action["The table ID is set to MC to target
the station master table"]:::main N_SetTableIDtoMC_Node3 -- Yes --> N_SetTableIDtoMC_Node3_action N_SetTableIDtoMC_Node3_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node2 -- No --> N_SetTableIDtoMC_Node3 N_SetTableIDtoMC_Node4{"The system selects the appropriate
data source"}:::decision N_SetTableIDtoMC_Node4_action["The table ID is set to MC to access
the station master table"]:::main N_SetTableIDtoMC_Node4 -- Yes --> N_SetTableIDtoMC_Node4_action N_SetTableIDtoMC_Node4_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node3 -- No --> N_SetTableIDtoMC_Node4 N_SetTableIDtoMC_Node5{"The system configures table lookup
parameters"}:::decision N_SetTableIDtoMC_Node5_action["Table ID is set to MC to identify
the station master table"]:::main N_SetTableIDtoMC_Node5 -- Yes --> N_SetTableIDtoMC_Node5_action N_SetTableIDtoMC_Node5_action --> E_SetTableIDtoMC N_SetTableIDtoMC_Node4 -- No --> N_SetTableIDtoMC_Node5 N_SetTableIDtoMC_Node5 -- No --> E_SetTableIDtoMC
File: GCCUSIO.cbl
GIVEN:
A table lookup request for border station information
WHEN:
The system identifies which table to query
THEN:
The table ID is set to 'MC' to target the MC table
File: GCCUSIO.cbl
GIVEN:
A station information lookup is required
WHEN:
The system needs to identify the correct table type
THEN:
The table ID is set to 'MC' and function code is set to 'GU' for station table lookup
File: GCCUSIO.cbl
GIVEN:
Function code is set for border station lookup
WHEN:
The system identifies which table contains border station data
THEN:
The table ID is set to 'MC' to access the border station reference table
File: GCCUSIO.cbl
GIVEN:
A station information lookup is required
WHEN:
The system configures the table identifier
THEN:
The table ID is set to 'MC' to target the station master table
File: GCCUSIO.cbl
GIVEN:
A station information lookup is required
WHEN:
The system selects the appropriate data source
THEN:
The table ID is set to 'MC' to access the station master table
File: GCCUSIO.cbl
GIVEN:
A requirement to lookup station master data
WHEN:
The system configures table lookup parameters
THEN:
Table ID is set to 'MC' to identify the station master table
β Consolidated Acceptance Criteria
- The system prepares the MC table lookup key → the location ID from the cargo record is used as the sequence ID for table lookup
- The system needs to specify which location to lookup → the location ID from the cargo record is used as the search sequence ID for the MC table 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_SetLocationIDfromCargoRecord(["Start Step"])
E_SetLocationIDfromCargoRecord(["End Step"])
N_SetLocationIDfromCargoRecord_Node0{"The system prepares the MC table
lookup key"}:::decision N_SetLocationIDfromCargoRecord_Node0_action["The location ID from the cargo
record is used as the sequence ID
for table lookup"]:::main N_SetLocationIDfromCargoRecord_Node0 -- Yes --> N_SetLocationIDfromCargoRecord_Node0_action N_SetLocationIDfromCargoRecord_Node0_action --> E_SetLocationIDfromCargoRecord S_SetLocationIDfromCargoRecord --> N_SetLocationIDfromCargoRecord_Node0 N_SetLocationIDfromCargoRecord_Node1{"The system needs to specify which
location to lookup"}:::decision N_SetLocationIDfromCargoRecord_Node1_action["The location ID from the cargo
record is used as the search
sequence ID for the MC table lookup"]:::main N_SetLocationIDfromCargoRecord_Node1 -- Yes --> N_SetLocationIDfromCargoRecord_Node1_action N_SetLocationIDfromCargoRecord_Node1_action --> E_SetLocationIDfromCargoRecord N_SetLocationIDfromCargoRecord_Node0 -- No --> N_SetLocationIDfromCargoRecord_Node1 N_SetLocationIDfromCargoRecord_Node1 -- No --> E_SetLocationIDfromCargoRecord
lookup key"}:::decision N_SetLocationIDfromCargoRecord_Node0_action["The location ID from the cargo
record is used as the sequence ID
for table lookup"]:::main N_SetLocationIDfromCargoRecord_Node0 -- Yes --> N_SetLocationIDfromCargoRecord_Node0_action N_SetLocationIDfromCargoRecord_Node0_action --> E_SetLocationIDfromCargoRecord S_SetLocationIDfromCargoRecord --> N_SetLocationIDfromCargoRecord_Node0 N_SetLocationIDfromCargoRecord_Node1{"The system needs to specify which
location to lookup"}:::decision N_SetLocationIDfromCargoRecord_Node1_action["The location ID from the cargo
record is used as the search
sequence ID for the MC table lookup"]:::main N_SetLocationIDfromCargoRecord_Node1 -- Yes --> N_SetLocationIDfromCargoRecord_Node1_action N_SetLocationIDfromCargoRecord_Node1_action --> E_SetLocationIDfromCargoRecord N_SetLocationIDfromCargoRecord_Node0 -- No --> N_SetLocationIDfromCargoRecord_Node1 N_SetLocationIDfromCargoRecord_Node1 -- No --> E_SetLocationIDfromCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record with location ID information
WHEN:
The system prepares the MC table lookup key
THEN:
The location ID from the cargo record is used as the sequence ID for table lookup
File: GCCUSIO.cbl
GIVEN:
MC table is identified for border station lookup
WHEN:
The system needs to specify which location to lookup
THEN:
The location ID from the cargo record is used as the search sequence ID for the MC table lookup
β Consolidated Acceptance Criteria
- The system needs to retrieve MC table data → the GCCTBIO service is called with the configured parameters to perform the table lookup
- The system executes the border station lookup → the GCCTBIO table lookup service is called with the prepared parameters to retrieve border 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_CallTableLookupServiceGCCTBIO(["Start Step"])
E_CallTableLookupServiceGCCTBIO(["End Step"])
N_CallTableLookupServiceGCCTBIO_Node0{"The system needs to retrieve MC
table data"}:::decision N_CallTableLookupServiceGCCTBIO_Node0_action["The GCCTBIO service is called with
the configured parameters to perform
the table lookup"]:::main N_CallTableLookupServiceGCCTBIO_Node0 -- Yes --> N_CallTableLookupServiceGCCTBIO_Node0_action N_CallTableLookupServiceGCCTBIO_Node0_action --> E_CallTableLookupServiceGCCTBIO S_CallTableLookupServiceGCCTBIO --> N_CallTableLookupServiceGCCTBIO_Node0 N_CallTableLookupServiceGCCTBIO_Node1{"The system executes the border
station lookup"}:::decision N_CallTableLookupServiceGCCTBIO_Node1_action["The GCCTBIO table lookup service is
called with the prepared parameters
to retrieve border station data"]:::main N_CallTableLookupServiceGCCTBIO_Node1 -- Yes --> N_CallTableLookupServiceGCCTBIO_Node1_action N_CallTableLookupServiceGCCTBIO_Node1_action --> E_CallTableLookupServiceGCCTBIO N_CallTableLookupServiceGCCTBIO_Node0 -- No --> N_CallTableLookupServiceGCCTBIO_Node1 N_CallTableLookupServiceGCCTBIO_Node1 -- No --> E_CallTableLookupServiceGCCTBIO
table data"}:::decision N_CallTableLookupServiceGCCTBIO_Node0_action["The GCCTBIO service is called with
the configured parameters to perform
the table lookup"]:::main N_CallTableLookupServiceGCCTBIO_Node0 -- Yes --> N_CallTableLookupServiceGCCTBIO_Node0_action N_CallTableLookupServiceGCCTBIO_Node0_action --> E_CallTableLookupServiceGCCTBIO S_CallTableLookupServiceGCCTBIO --> N_CallTableLookupServiceGCCTBIO_Node0 N_CallTableLookupServiceGCCTBIO_Node1{"The system executes the border
station lookup"}:::decision N_CallTableLookupServiceGCCTBIO_Node1_action["The GCCTBIO table lookup service is
called with the prepared parameters
to retrieve border station data"]:::main N_CallTableLookupServiceGCCTBIO_Node1 -- Yes --> N_CallTableLookupServiceGCCTBIO_Node1_action N_CallTableLookupServiceGCCTBIO_Node1_action --> E_CallTableLookupServiceGCCTBIO N_CallTableLookupServiceGCCTBIO_Node0 -- No --> N_CallTableLookupServiceGCCTBIO_Node1 N_CallTableLookupServiceGCCTBIO_Node1 -- No --> E_CallTableLookupServiceGCCTBIO
File: GCCUSIO.cbl
GIVEN:
All table lookup parameters are properly configured
WHEN:
The system needs to retrieve MC table data
THEN:
The GCCTBIO service is called with the configured parameters to perform the table lookup
File: GCCUSIO.cbl
GIVEN:
All lookup parameters are set with MC table ID and location ID
WHEN:
The system executes the border station lookup
THEN:
The GCCTBIO table lookup service is called with the prepared parameters to retrieve border station data
β Consolidated Acceptance Criteria
- If the lookup result → if return flag equals '0' then lookup is successful, otherwise lookup failed
- The system checks the lookup result → if the return flag equals '0', the lookup is considered successful and border station processing continues, otherwise border index processing is skipped
- The table lookup return flag equals '0' → the lookup is considered successful and station number extraction proceeds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TableLookupSuccessful(["Start Step"])
E_TableLookupSuccessful(["End Step"])
N_TableLookupSuccessful_Node0{"The system evaluates the lookup
result"}:::decision N_TableLookupSuccessful_Node0_action["If return flag equals 0 then lookup
is successful, otherwise lookup
failed"]:::main N_TableLookupSuccessful_Node0 -- Yes --> N_TableLookupSuccessful_Node0_action N_TableLookupSuccessful_Node0_action --> E_TableLookupSuccessful S_TableLookupSuccessful --> N_TableLookupSuccessful_Node0 N_TableLookupSuccessful_Node1{"The system checks the lookup result"}:::decision N_TableLookupSuccessful_Node1_action["If the return flag equals 0 , the
lookup is considered successful and
border station processing continues,
otherwise border index processing is
skipped"]:::main N_TableLookupSuccessful_Node1 -- Yes --> N_TableLookupSuccessful_Node1_action N_TableLookupSuccessful_Node1_action --> E_TableLookupSuccessful N_TableLookupSuccessful_Node0 -- No --> N_TableLookupSuccessful_Node1 N_TableLookupSuccessful_Node2{"The table lookup return flag equals
0"}:::decision N_TableLookupSuccessful_Node2_action["The lookup is considered successful
and station number extraction
proceeds"]:::main N_TableLookupSuccessful_Node2 -- Yes --> N_TableLookupSuccessful_Node2_action N_TableLookupSuccessful_Node2_action --> E_TableLookupSuccessful N_TableLookupSuccessful_Node1 -- No --> N_TableLookupSuccessful_Node2 N_TableLookupSuccessful_Node2 -- No --> E_TableLookupSuccessful
result"}:::decision N_TableLookupSuccessful_Node0_action["If return flag equals 0 then lookup
is successful, otherwise lookup
failed"]:::main N_TableLookupSuccessful_Node0 -- Yes --> N_TableLookupSuccessful_Node0_action N_TableLookupSuccessful_Node0_action --> E_TableLookupSuccessful S_TableLookupSuccessful --> N_TableLookupSuccessful_Node0 N_TableLookupSuccessful_Node1{"The system checks the lookup result"}:::decision N_TableLookupSuccessful_Node1_action["If the return flag equals 0 , the
lookup is considered successful and
border station processing continues,
otherwise border index processing is
skipped"]:::main N_TableLookupSuccessful_Node1 -- Yes --> N_TableLookupSuccessful_Node1_action N_TableLookupSuccessful_Node1_action --> E_TableLookupSuccessful N_TableLookupSuccessful_Node0 -- No --> N_TableLookupSuccessful_Node1 N_TableLookupSuccessful_Node2{"The table lookup return flag equals
0"}:::decision N_TableLookupSuccessful_Node2_action["The lookup is considered successful
and station number extraction
proceeds"]:::main N_TableLookupSuccessful_Node2 -- Yes --> N_TableLookupSuccessful_Node2_action N_TableLookupSuccessful_Node2_action --> E_TableLookupSuccessful N_TableLookupSuccessful_Node1 -- No --> N_TableLookupSuccessful_Node2 N_TableLookupSuccessful_Node2 -- No --> E_TableLookupSuccessful
File: GCCUSIO.cbl
GIVEN:
A completed MC table lookup operation
WHEN:
The system evaluates the lookup result
THEN:
If return flag equals '0' then lookup is successful, otherwise lookup failed
File: GCCUSIO.cbl
GIVEN:
An MC table lookup has been performed for border station information
WHEN:
The system checks the lookup result
THEN:
- If the return flag equals '0', the lookup is considered successful
- Border station processing continues, otherwise border index processing is skipped
File: GCCUSIO.cbl
GIVEN:
MC table lookup has been performed for border station information
WHEN:
The table lookup return flag equals '0'
THEN:
- The lookup is considered successful
- Station number extraction proceeds
β Consolidated Acceptance Criteria
- The system processes the MC segment information → the border station number is extracted from the MC segment structure
- The system processes the retrieved MC table segment → the border station number is extracted from the MC segment and made available for error index population
- The system processes the retrieved MC table data → the border station number is extracted from the MC segment and made available for cargo status 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_ExtractBorderStationNumberfromMCSegment(["Start Step"])
E_ExtractBorderStationNumberfromMCSegment(["End Step"])
N_ExtractBorderStationNumberfromMCSegment_Node0{"The system processes the MC segment
information"}:::decision N_ExtractBorderStationNumberfromMCSegment_Node0_action["The border station number is
extracted from the MC segment
structure"]:::main N_ExtractBorderStationNumberfromMCSegment_Node0 -- Yes --> N_ExtractBorderStationNumberfromMCSegment_Node0_action N_ExtractBorderStationNumberfromMCSegment_Node0_action --> E_ExtractBorderStationNumberfromMCSegment S_ExtractBorderStationNumberfromMCSegment --> N_ExtractBorderStationNumberfromMCSegment_Node0 N_ExtractBorderStationNumberfromMCSegment_Node1{"The system processes the retrieved
MC table segment"}:::decision N_ExtractBorderStationNumberfromMCSegment_Node1_action["The border station number is
extracted from the MC segment and
made available for error index
population"]:::main N_ExtractBorderStationNumberfromMCSegment_Node1 -- Yes --> N_ExtractBorderStationNumberfromMCSegment_Node1_action N_ExtractBorderStationNumberfromMCSegment_Node1_action --> E_ExtractBorderStationNumberfromMCSegment N_ExtractBorderStationNumberfromMCSegment_Node0 -- No --> N_ExtractBorderStationNumberfromMCSegment_Node1 N_ExtractBorderStationNumberfromMCSegment_Node2{"The system processes the retrieved
MC table data"}:::decision N_ExtractBorderStationNumberfromMCSegment_Node2_action["The border station number is
extracted from the MC segment and
made available for cargo status
processing"]:::main N_ExtractBorderStationNumberfromMCSegment_Node2 -- Yes --> N_ExtractBorderStationNumberfromMCSegment_Node2_action N_ExtractBorderStationNumberfromMCSegment_Node2_action --> E_ExtractBorderStationNumberfromMCSegment N_ExtractBorderStationNumberfromMCSegment_Node1 -- No --> N_ExtractBorderStationNumberfromMCSegment_Node2 N_ExtractBorderStationNumberfromMCSegment_Node2 -- No --> E_ExtractBorderStationNumberfromMCSegment
information"}:::decision N_ExtractBorderStationNumberfromMCSegment_Node0_action["The border station number is
extracted from the MC segment
structure"]:::main N_ExtractBorderStationNumberfromMCSegment_Node0 -- Yes --> N_ExtractBorderStationNumberfromMCSegment_Node0_action N_ExtractBorderStationNumberfromMCSegment_Node0_action --> E_ExtractBorderStationNumberfromMCSegment S_ExtractBorderStationNumberfromMCSegment --> N_ExtractBorderStationNumberfromMCSegment_Node0 N_ExtractBorderStationNumberfromMCSegment_Node1{"The system processes the retrieved
MC table segment"}:::decision N_ExtractBorderStationNumberfromMCSegment_Node1_action["The border station number is
extracted from the MC segment and
made available for error index
population"]:::main N_ExtractBorderStationNumberfromMCSegment_Node1 -- Yes --> N_ExtractBorderStationNumberfromMCSegment_Node1_action N_ExtractBorderStationNumberfromMCSegment_Node1_action --> E_ExtractBorderStationNumberfromMCSegment N_ExtractBorderStationNumberfromMCSegment_Node0 -- No --> N_ExtractBorderStationNumberfromMCSegment_Node1 N_ExtractBorderStationNumberfromMCSegment_Node2{"The system processes the retrieved
MC table data"}:::decision N_ExtractBorderStationNumberfromMCSegment_Node2_action["The border station number is
extracted from the MC segment and
made available for cargo status
processing"]:::main N_ExtractBorderStationNumberfromMCSegment_Node2 -- Yes --> N_ExtractBorderStationNumberfromMCSegment_Node2_action N_ExtractBorderStationNumberfromMCSegment_Node2_action --> E_ExtractBorderStationNumberfromMCSegment N_ExtractBorderStationNumberfromMCSegment_Node1 -- No --> N_ExtractBorderStationNumberfromMCSegment_Node2 N_ExtractBorderStationNumberfromMCSegment_Node2 -- No --> E_ExtractBorderStationNumberfromMCSegment
File: GCCUSIO.cbl
GIVEN:
A successful MC table lookup with retrieved table segment data
WHEN:
The system processes the MC segment information
THEN:
The border station number is extracted from the MC segment structure
File: GCCUSIO.cbl
GIVEN:
Border station lookup was successful with return flag '0'
WHEN:
The system processes the retrieved MC table segment
THEN:
- The border station number is extracted from the mc segment
- Made available for error index population
File: GCCUSIO.cbl
GIVEN:
MC table lookup was successful and returned a valid table segment
WHEN:
The system processes the retrieved MC table data
THEN:
- The border station number is extracted from the mc segment
- Made available for cargo status processing
β Consolidated Acceptance Criteria
- The system updates error index fields → the border station number is assigned to the error border 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_SetBorderStationinIndexFields(["Start Step"])
E_SetBorderStationinIndexFields(["End Step"])
N_SetBorderStationinIndexFields_Node0{"The system updates error index
fields"}:::decision N_SetBorderStationinIndexFields_Node0_action["The border station number is
assigned to the error border key
field"]:::exclusion N_SetBorderStationinIndexFields_Node0 -- Yes -->|Alternative| N_SetBorderStationinIndexFields_Node0_action N_SetBorderStationinIndexFields_Node0_action --> E_SetBorderStationinIndexFields S_SetBorderStationinIndexFields --> N_SetBorderStationinIndexFields_Node0 N_SetBorderStationinIndexFields_Node0 -- No --> E_SetBorderStationinIndexFields
fields"}:::decision N_SetBorderStationinIndexFields_Node0_action["The border station number is
assigned to the error border key
field"]:::exclusion N_SetBorderStationinIndexFields_Node0 -- Yes -->|Alternative| N_SetBorderStationinIndexFields_Node0_action N_SetBorderStationinIndexFields_Node0_action --> E_SetBorderStationinIndexFields S_SetBorderStationinIndexFields --> N_SetBorderStationinIndexFields_Node0 N_SetBorderStationinIndexFields_Node0 -- No --> E_SetBorderStationinIndexFields
File: GCCUSIO.cbl
GIVEN:
A successfully extracted border station number from MC table
WHEN:
The system updates error index fields
THEN:
The border station number is assigned to the error border key field
β Consolidated Acceptance Criteria
- The system processes error fields for border station tracking → the border error code is set to 'E' to identify it as an 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_SetErrorCodetoEforBorder(["Start Step"])
E_SetErrorCodetoEforBorder(["End Step"])
N_SetErrorCodetoEforBorder_Node0{"The system processes error fields
for border station tracking"}:::decision N_SetErrorCodetoEforBorder_Node0_action["The border error code is set to E
to identify it as an error condition"]:::exclusion N_SetErrorCodetoEforBorder_Node0 -- Yes -->|Alternative| N_SetErrorCodetoEforBorder_Node0_action N_SetErrorCodetoEforBorder_Node0_action --> E_SetErrorCodetoEforBorder S_SetErrorCodetoEforBorder --> N_SetErrorCodetoEforBorder_Node0 N_SetErrorCodetoEforBorder_Node0 -- No --> E_SetErrorCodetoEforBorder
for border station tracking"}:::decision N_SetErrorCodetoEforBorder_Node0_action["The border error code is set to E
to identify it as an error condition"]:::exclusion N_SetErrorCodetoEforBorder_Node0 -- Yes -->|Alternative| N_SetErrorCodetoEforBorder_Node0_action N_SetErrorCodetoEforBorder_Node0_action --> E_SetErrorCodetoEforBorder S_SetErrorCodetoEforBorder --> N_SetErrorCodetoEforBorder_Node0 N_SetErrorCodetoEforBorder_Node0 -- No --> E_SetErrorCodetoEforBorder
File: GCCUSIO.cbl
GIVEN:
A cargo record requires border error index processing
WHEN:
The system processes error fields for border station tracking
THEN:
The border error code is set to 'E' to identify it as an error condition
β Consolidated Acceptance Criteria
- Border error index processing requires station number lookup → the location ID is retrieved from the cargo record RT04 field for table 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_GetLocationIDfromCargoRecord(["Start Step"])
E_GetLocationIDfromCargoRecord(["End Step"])
N_GetLocationIDfromCargoRecord_Node0{"Border error index processing
requires station number lookup"}:::decision N_GetLocationIDfromCargoRecord_Node0_action["The location ID is retrieved from
the cargo record RT04 field for
table lookup"]:::exclusion N_GetLocationIDfromCargoRecord_Node0 -- Yes -->|Alternative| N_GetLocationIDfromCargoRecord_Node0_action N_GetLocationIDfromCargoRecord_Node0_action --> E_GetLocationIDfromCargoRecord S_GetLocationIDfromCargoRecord --> N_GetLocationIDfromCargoRecord_Node0 N_GetLocationIDfromCargoRecord_Node0 -- No --> E_GetLocationIDfromCargoRecord
requires station number lookup"}:::decision N_GetLocationIDfromCargoRecord_Node0_action["The location ID is retrieved from
the cargo record RT04 field for
table lookup"]:::exclusion N_GetLocationIDfromCargoRecord_Node0 -- Yes -->|Alternative| N_GetLocationIDfromCargoRecord_Node0_action N_GetLocationIDfromCargoRecord_Node0_action --> E_GetLocationIDfromCargoRecord S_GetLocationIDfromCargoRecord --> N_GetLocationIDfromCargoRecord_Node0 N_GetLocationIDfromCargoRecord_Node0 -- No --> E_GetLocationIDfromCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record contains location information
WHEN:
Border error index processing requires station number lookup
THEN:
The location ID is retrieved from the cargo record RT04 field for table lookup
β Consolidated Acceptance Criteria
- The system needs to determine the border station number → the MC table lookup service is called with function code 'GU', table ID 'MC', and the location ID as sequence 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_CallMCTableLookupforBorderStation(["Start Step"])
E_CallMCTableLookupforBorderStation(["End Step"])
N_CallMCTableLookupforBorderStation_Node0{"The system needs to determine the
border station number"}:::decision N_CallMCTableLookupforBorderStation_Node0_action["The MC table lookup service is
called with function code GU , table
ID MC , and the location ID as
sequence identifier"]:::main N_CallMCTableLookupforBorderStation_Node0 -- Yes --> N_CallMCTableLookupforBorderStation_Node0_action N_CallMCTableLookupforBorderStation_Node0_action --> E_CallMCTableLookupforBorderStation S_CallMCTableLookupforBorderStation --> N_CallMCTableLookupforBorderStation_Node0 N_CallMCTableLookupforBorderStation_Node0 -- No --> E_CallMCTableLookupforBorderStation
border station number"}:::decision N_CallMCTableLookupforBorderStation_Node0_action["The MC table lookup service is
called with function code GU , table
ID MC , and the location ID as
sequence identifier"]:::main N_CallMCTableLookupforBorderStation_Node0 -- Yes --> N_CallMCTableLookupforBorderStation_Node0_action N_CallMCTableLookupforBorderStation_Node0_action --> E_CallMCTableLookupforBorderStation S_CallMCTableLookupforBorderStation --> N_CallMCTableLookupforBorderStation_Node0 N_CallMCTableLookupforBorderStation_Node0 -- No --> E_CallMCTableLookupforBorderStation
File: GCCUSIO.cbl
GIVEN:
A location ID is available for border station lookup
WHEN:
The system needs to determine the border station number
THEN:
The MC table lookup service is called with function code 'GU', table ID 'MC', and the location ID as sequence identifier
β Consolidated Acceptance Criteria
- The system processes the returned MC table segment → the border station number is extracted from the MC segment station number 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_ExtractBorderStationNumberfromMCTable(["Start Step"])
E_ExtractBorderStationNumberfromMCTable(["End Step"])
N_ExtractBorderStationNumberfromMCTable_Node0{"The system processes the returned
MC table segment"}:::decision N_ExtractBorderStationNumberfromMCTable_Node0_action["The border station number is
extracted from the MC segment
station number field"]:::main N_ExtractBorderStationNumberfromMCTable_Node0 -- Yes --> N_ExtractBorderStationNumberfromMCTable_Node0_action N_ExtractBorderStationNumberfromMCTable_Node0_action --> E_ExtractBorderStationNumberfromMCTable S_ExtractBorderStationNumberfromMCTable --> N_ExtractBorderStationNumberfromMCTable_Node0 N_ExtractBorderStationNumberfromMCTable_Node0 -- No --> E_ExtractBorderStationNumberfromMCTable
MC table segment"}:::decision N_ExtractBorderStationNumberfromMCTable_Node0_action["The border station number is
extracted from the MC segment
station number field"]:::main N_ExtractBorderStationNumberfromMCTable_Node0 -- Yes --> N_ExtractBorderStationNumberfromMCTable_Node0_action N_ExtractBorderStationNumberfromMCTable_Node0_action --> E_ExtractBorderStationNumberfromMCTable S_ExtractBorderStationNumberfromMCTable --> N_ExtractBorderStationNumberfromMCTable_Node0 N_ExtractBorderStationNumberfromMCTable_Node0 -- No --> E_ExtractBorderStationNumberfromMCTable
File: GCCUSIO.cbl
GIVEN:
MC table lookup has returned successfully with table segment data
WHEN:
The system processes the returned MC table segment
THEN:
The border station number is extracted from the MC segment station number field
β Consolidated Acceptance Criteria
- The system builds the border error index key → the border error index key is set with the retrieved border 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_SetBorderErrorIndexKeywithStationNumber(["Start Step"])
E_SetBorderErrorIndexKeywithStationNumber(["End Step"])
N_SetBorderErrorIndexKeywithStationNumber_Node0{"The system builds the border error
index key"}:::decision N_SetBorderErrorIndexKeywithStationNumber_Node0_action["The border error index key is set
with the retrieved border station
number"]:::exclusion N_SetBorderErrorIndexKeywithStationNumber_Node0 -- Yes -->|Alternative| N_SetBorderErrorIndexKeywithStationNumber_Node0_action N_SetBorderErrorIndexKeywithStationNumber_Node0_action --> E_SetBorderErrorIndexKeywithStationNumber S_SetBorderErrorIndexKeywithStationNumber --> N_SetBorderErrorIndexKeywithStationNumber_Node0 N_SetBorderErrorIndexKeywithStationNumber_Node0 -- No --> E_SetBorderErrorIndexKeywithStationNumber
index key"}:::decision N_SetBorderErrorIndexKeywithStationNumber_Node0_action["The border error index key is set
with the retrieved border station
number"]:::exclusion N_SetBorderErrorIndexKeywithStationNumber_Node0 -- Yes -->|Alternative| N_SetBorderErrorIndexKeywithStationNumber_Node0_action N_SetBorderErrorIndexKeywithStationNumber_Node0_action --> E_SetBorderErrorIndexKeywithStationNumber S_SetBorderErrorIndexKeywithStationNumber --> N_SetBorderErrorIndexKeywithStationNumber_Node0 N_SetBorderErrorIndexKeywithStationNumber_Node0 -- No --> E_SetBorderErrorIndexKeywithStationNumber
File: GCCUSIO.cbl
GIVEN:
A border station number has been successfully retrieved from MC table lookup
WHEN:
The system builds the border error index key
THEN:
The border error index key is set with the retrieved border station number
β Consolidated Acceptance Criteria
- The system finalizes the border error index key construction → the cargo CCN key is set as the border error cargo identifier in the index 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_SetBorderErrorIndexKeywithCargoCCN(["Start Step"])
E_SetBorderErrorIndexKeywithCargoCCN(["End Step"])
N_SetBorderErrorIndexKeywithCargoCCN_Node0{"The system finalizes the border
error index key construction"}:::decision N_SetBorderErrorIndexKeywithCargoCCN_Node0_action["The cargo CCN key is set as the
border error cargo identifier in the
index key"]:::exclusion N_SetBorderErrorIndexKeywithCargoCCN_Node0 -- Yes -->|Alternative| N_SetBorderErrorIndexKeywithCargoCCN_Node0_action N_SetBorderErrorIndexKeywithCargoCCN_Node0_action --> E_SetBorderErrorIndexKeywithCargoCCN S_SetBorderErrorIndexKeywithCargoCCN --> N_SetBorderErrorIndexKeywithCargoCCN_Node0 N_SetBorderErrorIndexKeywithCargoCCN_Node0 -- No --> E_SetBorderErrorIndexKeywithCargoCCN
error index key construction"}:::decision N_SetBorderErrorIndexKeywithCargoCCN_Node0_action["The cargo CCN key is set as the
border error cargo identifier in the
index key"]:::exclusion N_SetBorderErrorIndexKeywithCargoCCN_Node0 -- Yes -->|Alternative| N_SetBorderErrorIndexKeywithCargoCCN_Node0_action N_SetBorderErrorIndexKeywithCargoCCN_Node0_action --> E_SetBorderErrorIndexKeywithCargoCCN S_SetBorderErrorIndexKeywithCargoCCN --> N_SetBorderErrorIndexKeywithCargoCCN_Node0 N_SetBorderErrorIndexKeywithCargoCCN_Node0 -- No --> E_SetBorderErrorIndexKeywithCargoCCN
File: GCCUSIO.cbl
GIVEN:
A cargo record has a valid CCN key and border station number is available
WHEN:
The system finalizes the border error index key construction
THEN:
The cargo CCN key is set as the border error cargo identifier in the index key
β Consolidated Acceptance Criteria
- The destination error index is being populated → the destination station number must be extracted from the cargo record's destination station 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_ExtractDestinationStationNumber(["Start Step"])
E_ExtractDestinationStationNumber(["End Step"])
N_ExtractDestinationStationNumber_Node0{"The destination error index is
being populated"}:::decision N_ExtractDestinationStationNumber_Node0_action["The destination station number must
be extracted from the cargo record s
destination station field"]:::exclusion N_ExtractDestinationStationNumber_Node0 -- Yes -->|Alternative| N_ExtractDestinationStationNumber_Node0_action N_ExtractDestinationStationNumber_Node0_action --> E_ExtractDestinationStationNumber S_ExtractDestinationStationNumber --> N_ExtractDestinationStationNumber_Node0 N_ExtractDestinationStationNumber_Node0 -- No --> E_ExtractDestinationStationNumber
being populated"}:::decision N_ExtractDestinationStationNumber_Node0_action["The destination station number must
be extracted from the cargo record s
destination station field"]:::exclusion N_ExtractDestinationStationNumber_Node0 -- Yes -->|Alternative| N_ExtractDestinationStationNumber_Node0_action N_ExtractDestinationStationNumber_Node0_action --> E_ExtractDestinationStationNumber S_ExtractDestinationStationNumber --> N_ExtractDestinationStationNumber_Node0 N_ExtractDestinationStationNumber_Node0 -- No --> E_ExtractDestinationStationNumber
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with destination station information
WHEN:
The destination error index is being populated
THEN:
The destination station number must be extracted from the cargo record's destination station field
β Consolidated Acceptance Criteria
- The destination error index is being populated → the cargo's CCN key must be retrieved from 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_GetCargoCCNKey(["Start Step"])
E_GetCargoCCNKey(["End Step"])
N_GetCargoCCNKey_Node0{"The destination error index is
being populated"}:::decision N_GetCargoCCNKey_Node0_action["The cargo s CCN key must be
retrieved from the cargo record"]:::exclusion N_GetCargoCCNKey_Node0 -- Yes -->|Alternative| N_GetCargoCCNKey_Node0_action N_GetCargoCCNKey_Node0_action --> E_GetCargoCCNKey S_GetCargoCCNKey --> N_GetCargoCCNKey_Node0 N_GetCargoCCNKey_Node0 -- No --> E_GetCargoCCNKey
being populated"}:::decision N_GetCargoCCNKey_Node0_action["The cargo s CCN key must be
retrieved from the cargo record"]:::exclusion N_GetCargoCCNKey_Node0 -- Yes -->|Alternative| N_GetCargoCCNKey_Node0_action N_GetCargoCCNKey_Node0_action --> E_GetCargoCCNKey S_GetCargoCCNKey --> N_GetCargoCCNKey_Node0 N_GetCargoCCNKey_Node0 -- No --> E_GetCargoCCNKey
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with a valid CCN key
WHEN:
The destination error index is being populated
THEN:
The cargo's CCN key must be retrieved from the cargo record
β Consolidated Acceptance Criteria
- The error code field needs to be set → the GCB1-KEY-ECODE-DEST field must 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_SetGCB1KEYECODEDESTE(["Start Step"])
E_SetGCB1KEYECODEDESTE(["End Step"])
N_SetGCB1KEYECODEDESTE_Node0{"The error code field needs to be
set"}:::decision N_SetGCB1KEYECODEDESTE_Node0_action["The GCB1-KEY-ECODE-DEST field must
be set to E"]:::exclusion N_SetGCB1KEYECODEDESTE_Node0 -- Yes -->|Alternative| N_SetGCB1KEYECODEDESTE_Node0_action N_SetGCB1KEYECODEDESTE_Node0_action --> E_SetGCB1KEYECODEDESTE S_SetGCB1KEYECODEDESTE --> N_SetGCB1KEYECODEDESTE_Node0 N_SetGCB1KEYECODEDESTE_Node0 -- No --> E_SetGCB1KEYECODEDESTE
set"}:::decision N_SetGCB1KEYECODEDESTE_Node0_action["The GCB1-KEY-ECODE-DEST field must
be set to E"]:::exclusion N_SetGCB1KEYECODEDESTE_Node0 -- Yes -->|Alternative| N_SetGCB1KEYECODEDESTE_Node0_action N_SetGCB1KEYECODEDESTE_Node0_action --> E_SetGCB1KEYECODEDESTE S_SetGCB1KEYECODEDESTE --> N_SetGCB1KEYECODEDESTE_Node0 N_SetGCB1KEYECODEDESTE_Node0 -- No --> E_SetGCB1KEYECODEDESTE
File: GCCUSIO.cbl
GIVEN:
The destination error index is being created or updated
WHEN:
The error code field needs to be set
THEN:
The GCB1-KEY-ECODE-DEST field must be set to 'E'
β Consolidated Acceptance Criteria
- The destination error index is being populated → the GCB1-KEY-ERROR-DEST field must be set to the destination 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_SetGCB1KEYERRORDESTDestinationStationNumber(["Start Step"])
E_SetGCB1KEYERRORDESTDestinationStationNumber(["End Step"])
N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0{"The destination error index is
being populated"}:::decision N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0_action["The GCB1-KEY-ERROR-DEST field must
be set to the destination station
number"]:::exclusion N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0 -- Yes -->|Alternative| N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0_action N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0_action --> E_SetGCB1KEYERRORDESTDestinationStationNumber S_SetGCB1KEYERRORDESTDestinationStationNumber --> N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0 N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0 -- No --> E_SetGCB1KEYERRORDESTDestinationStationNumber
being populated"}:::decision N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0_action["The GCB1-KEY-ERROR-DEST field must
be set to the destination station
number"]:::exclusion N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0 -- Yes -->|Alternative| N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0_action N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0_action --> E_SetGCB1KEYERRORDESTDestinationStationNumber S_SetGCB1KEYERRORDESTDestinationStationNumber --> N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0 N_SetGCB1KEYERRORDESTDestinationStationNumber_Node0 -- No --> E_SetGCB1KEYERRORDESTDestinationStationNumber
File: GCCUSIO.cbl
GIVEN:
The destination station number has been extracted from the cargo record
WHEN:
The destination error index is being populated
THEN:
The GCB1-KEY-ERROR-DEST field must be set to the destination station number
β Consolidated Acceptance Criteria
- The destination error index is being populated → the GCB1-KEY-ERROR-DEST-CARGO field must be set to the cargo's 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_SetGCB1KEYERRORDESTCARGOCCNKey(["Start Step"])
E_SetGCB1KEYERRORDESTCARGOCCNKey(["End Step"])
N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0{"The destination error index is
being populated"}:::decision N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0_action["The GCB1-KEY-ERROR-DEST-CARGO field
must be set to the cargo s CCN key"]:::exclusion N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0 -- Yes -->|Alternative| N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0_action N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0_action --> E_SetGCB1KEYERRORDESTCARGOCCNKey S_SetGCB1KEYERRORDESTCARGOCCNKey --> N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0 N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0 -- No --> E_SetGCB1KEYERRORDESTCARGOCCNKey
being populated"}:::decision N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0_action["The GCB1-KEY-ERROR-DEST-CARGO field
must be set to the cargo s CCN key"]:::exclusion N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0 -- Yes -->|Alternative| N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0_action N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0_action --> E_SetGCB1KEYERRORDESTCARGOCCNKey S_SetGCB1KEYERRORDESTCARGOCCNKey --> N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0 N_SetGCB1KEYERRORDESTCARGOCCNKey_Node0 -- No --> E_SetGCB1KEYERRORDESTCARGOCCNKey
File: GCCUSIO.cbl
GIVEN:
The cargo CCN key has been retrieved from the cargo record
WHEN:
The destination error index is being populated
THEN:
The GCB1-KEY-ERROR-DEST-CARGO field must be set to the cargo's CCN key
β Consolidated Acceptance Criteria
- The system checks for hold status conditions → the system identifies if cargo is in any hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA) or has no hold status
- The system checks for destination hold status types including HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, or HOLDFDA → the system identifies whether destination hold index processing is required
- The system checks for border hold requirements → border hold processing is triggered only for specific hold status types: HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA
- The system checks for any active hold conditions including USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, USCARGO-HOLD-D, USCARGO-PR-H-DE, or USCARGO-HOLDFDA → the system proceeds with hold index processing if any hold condition is active, otherwise skips hold 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_CheckCargoHoldStatus(["Start Step"])
E_CheckCargoHoldStatus(["End Step"])
N_CheckCargoHoldStatus_Node0{"The system checks for hold status
conditions"}:::decision N_CheckCargoHoldStatus_Node0_action["The system identifies if cargo is
in any hold status HOLD, HOLDPCS,
PR-HPCS, HOLD-B, PR-H-BO, HOLD-D,
PR-H-DE, HOLDFDA or has no hold
status"]:::main N_CheckCargoHoldStatus_Node0 -- Yes --> N_CheckCargoHoldStatus_Node0_action N_CheckCargoHoldStatus_Node0_action --> E_CheckCargoHoldStatus S_CheckCargoHoldStatus --> N_CheckCargoHoldStatus_Node0 N_CheckCargoHoldStatus_Node1{"The system checks for destination
hold status types including HOLD,
HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE,
or HOLDFDA"}:::decision N_CheckCargoHoldStatus_Node1_action["The system identifies whether
destination hold index processing is
required"]:::main N_CheckCargoHoldStatus_Node1 -- Yes --> N_CheckCargoHoldStatus_Node1_action N_CheckCargoHoldStatus_Node1_action --> E_CheckCargoHoldStatus N_CheckCargoHoldStatus_Node0 -- No --> N_CheckCargoHoldStatus_Node1 N_CheckCargoHoldStatus_Node2{"The system checks for border hold
requirements"}:::decision N_CheckCargoHoldStatus_Node2_action["Border hold processing is triggered
only for specific hold status types:
HOLD, HOLDPCS, PR-HPCS, HOLD-B,
PR-H-BO, or HOLDFDA"]:::main N_CheckCargoHoldStatus_Node2 -- Yes --> N_CheckCargoHoldStatus_Node2_action N_CheckCargoHoldStatus_Node2_action --> E_CheckCargoHoldStatus N_CheckCargoHoldStatus_Node1 -- No --> N_CheckCargoHoldStatus_Node2 N_CheckCargoHoldStatus_Node3{"The system checks for any active
hold conditions including
USCARGO-HOLD, USCARGO-HOLDPCS,
USCARGO-PR-HPCS, USCARGO-HOLD-B,
USCARGO-PR-H-BO, USCARGO-HOLD-D,
USCARGO-PR-H-DE, or USCARGO-HOLDFDA"}:::decision N_CheckCargoHoldStatus_Node3_action["The system proceeds with hold index
processing if any hold condition is
active, otherwise skips hold
processing"]:::main N_CheckCargoHoldStatus_Node3 -- Yes --> N_CheckCargoHoldStatus_Node3_action N_CheckCargoHoldStatus_Node3_action --> E_CheckCargoHoldStatus N_CheckCargoHoldStatus_Node2 -- No --> N_CheckCargoHoldStatus_Node3 N_CheckCargoHoldStatus_Node3 -- No --> E_CheckCargoHoldStatus
conditions"}:::decision N_CheckCargoHoldStatus_Node0_action["The system identifies if cargo is
in any hold status HOLD, HOLDPCS,
PR-HPCS, HOLD-B, PR-H-BO, HOLD-D,
PR-H-DE, HOLDFDA or has no hold
status"]:::main N_CheckCargoHoldStatus_Node0 -- Yes --> N_CheckCargoHoldStatus_Node0_action N_CheckCargoHoldStatus_Node0_action --> E_CheckCargoHoldStatus S_CheckCargoHoldStatus --> N_CheckCargoHoldStatus_Node0 N_CheckCargoHoldStatus_Node1{"The system checks for destination
hold status types including HOLD,
HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE,
or HOLDFDA"}:::decision N_CheckCargoHoldStatus_Node1_action["The system identifies whether
destination hold index processing is
required"]:::main N_CheckCargoHoldStatus_Node1 -- Yes --> N_CheckCargoHoldStatus_Node1_action N_CheckCargoHoldStatus_Node1_action --> E_CheckCargoHoldStatus N_CheckCargoHoldStatus_Node0 -- No --> N_CheckCargoHoldStatus_Node1 N_CheckCargoHoldStatus_Node2{"The system checks for border hold
requirements"}:::decision N_CheckCargoHoldStatus_Node2_action["Border hold processing is triggered
only for specific hold status types:
HOLD, HOLDPCS, PR-HPCS, HOLD-B,
PR-H-BO, or HOLDFDA"]:::main N_CheckCargoHoldStatus_Node2 -- Yes --> N_CheckCargoHoldStatus_Node2_action N_CheckCargoHoldStatus_Node2_action --> E_CheckCargoHoldStatus N_CheckCargoHoldStatus_Node1 -- No --> N_CheckCargoHoldStatus_Node2 N_CheckCargoHoldStatus_Node3{"The system checks for any active
hold conditions including
USCARGO-HOLD, USCARGO-HOLDPCS,
USCARGO-PR-HPCS, USCARGO-HOLD-B,
USCARGO-PR-H-BO, USCARGO-HOLD-D,
USCARGO-PR-H-DE, or USCARGO-HOLDFDA"}:::decision N_CheckCargoHoldStatus_Node3_action["The system proceeds with hold index
processing if any hold condition is
active, otherwise skips hold
processing"]:::main N_CheckCargoHoldStatus_Node3 -- Yes --> N_CheckCargoHoldStatus_Node3_action N_CheckCargoHoldStatus_Node3_action --> E_CheckCargoHoldStatus N_CheckCargoHoldStatus_Node2 -- No --> N_CheckCargoHoldStatus_Node3 N_CheckCargoHoldStatus_Node3 -- No --> E_CheckCargoHoldStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with various status indicators
WHEN:
The system checks for hold status conditions
THEN:
The system identifies if cargo is in any hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA) or has no hold status
File: GCCUSIO.cbl
GIVEN:
A cargo record with various hold status conditions
WHEN:
The system checks for destination hold status types including HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, or HOLDFDA
THEN:
The system identifies whether destination hold index processing is required
File: GCCUSIO.cbl
GIVEN:
A cargo record with various hold status conditions
WHEN:
The system checks for border hold requirements
THEN:
Border hold processing is triggered only for specific hold status types: HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA
File: GCCUSIO.cbl
GIVEN:
A cargo record with various status flags
WHEN:
The system checks for any active hold conditions including USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, USCARGO-HOLD-D, USCARGO-PR-H-DE, or USCARGO-HOLDFDA
THEN:
The system proceeds with hold index processing if any hold condition is active, otherwise skips hold processing
β Consolidated Acceptance Criteria
- The system analyzes the specific hold status codes → the system determines if the hold is destination-related (HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, HOLDFDA) or border-related (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLDFDA)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineHoldType(["Start Step"])
E_DetermineHoldType(["End Step"])
N_DetermineHoldType_Node0{"The system analyzes the specific
hold status codes"}:::decision N_DetermineHoldType_Node0_action["The system determines if the hold
is destination-related HOLD,
HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE,
HOLDFDA or border-related HOLD,
HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO,
HOLDFDA"]:::main N_DetermineHoldType_Node0 -- Yes --> N_DetermineHoldType_Node0_action N_DetermineHoldType_Node0_action --> E_DetermineHoldType S_DetermineHoldType --> N_DetermineHoldType_Node0 N_DetermineHoldType_Node0 -- No --> E_DetermineHoldType
hold status codes"}:::decision N_DetermineHoldType_Node0_action["The system determines if the hold
is destination-related HOLD,
HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE,
HOLDFDA or border-related HOLD,
HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO,
HOLDFDA"]:::main N_DetermineHoldType_Node0 -- Yes --> N_DetermineHoldType_Node0_action N_DetermineHoldType_Node0_action --> E_DetermineHoldType S_DetermineHoldType --> N_DetermineHoldType_Node0 N_DetermineHoldType_Node0 -- No --> E_DetermineHoldType
File: GCCUSIO.cbl
GIVEN:
Cargo is confirmed to be in hold status
WHEN:
The system analyzes the specific hold status codes
THEN:
The system determines if the hold is destination-related (HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, HOLDFDA) or border-related (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLDFDA)
β Consolidated Acceptance Criteria
- The system processes hold index fields → the system sets destination station number to held-dest field and cargo CCN key to held-dest-cargo field
- The cargo has US cargo hold status:
- US cargo hold PCS status
- US cargo pre-hold PCS status
- US cargo hold destination status
- US cargo pre-hold destination status
- US cargo hold FDA status
- The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-D or USCARGO-PR-H-DE or USCARGO-HOLDFDA status → the system sets the destination hold index with the destination station number and copies the cargo control number key to the destination hold cargo field
- The cargo status is HOLD or HOLDPCS or PR-HPCS or HOLD-D or PR-H-DE or HOLDFDA → the system sets the destination hold index using the destination station number and cargo CCN key
- The system processes the hold status → the system sets GCB1-KEY-HELD-DEST to cargo destination station number RT29-DEST-STN-NUM and GCB1-KEY-HELD-DEST-CARGO to cargo CCN key
- The cargo status is USCARGO-HOLD:
- USCARGO-HOLDPCS
- USCARGO-PR-HPCS
- USCARGO-HOLD-D
- USCARGO-PR-H-DE
- USCARGO-HOLDFDA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationHoldIndex(["Start Step"])
E_SetDestinationHoldIndex(["End Step"])
N_SetDestinationHoldIndex_Node0{"The system processes hold index
fields"}:::decision N_SetDestinationHoldIndex_Node0_action["The system sets destination station
number to held-dest field and cargo
CCN key to held-dest-cargo field"]:::main N_SetDestinationHoldIndex_Node0 -- Yes --> N_SetDestinationHoldIndex_Node0_action N_SetDestinationHoldIndex_Node0_action --> E_SetDestinationHoldIndex S_SetDestinationHoldIndex --> N_SetDestinationHoldIndex_Node0 N_SetDestinationHoldIndex_Node1{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold destination status OR US
cargo pre-hold destination status OR
US cargo hold FDA status"}:::decision N_SetDestinationHoldIndex_Node1_action["Set cargo destination station
number to held destination index
field AND set cargo CCN key to held
destination cargo field"]:::main N_SetDestinationHoldIndex_Node1 -- Yes --> N_SetDestinationHoldIndex_Node1_action N_SetDestinationHoldIndex_Node1_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node0 -- No --> N_SetDestinationHoldIndex_Node1 N_SetDestinationHoldIndex_Node2{"The cargo has USCARGO-HOLD or
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-D or USCARGO-PR-H-DE
or USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndex_Node2_action["The system sets the destination
hold index with the destination
station number and copies the cargo
control number key to the
destination hold cargo field"]:::main N_SetDestinationHoldIndex_Node2 -- Yes --> N_SetDestinationHoldIndex_Node2_action N_SetDestinationHoldIndex_Node2_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node1 -- No --> N_SetDestinationHoldIndex_Node2 N_SetDestinationHoldIndex_Node3{"The cargo status is HOLD or HOLDPCS
or PR-HPCS or HOLD-D or PR-H-DE or
HOLDFDA"}:::decision N_SetDestinationHoldIndex_Node3_action["The system sets the destination
hold index using the destination
station number and cargo CCN key"]:::main N_SetDestinationHoldIndex_Node3 -- Yes --> N_SetDestinationHoldIndex_Node3_action N_SetDestinationHoldIndex_Node3_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node2 -- No --> N_SetDestinationHoldIndex_Node3 N_SetDestinationHoldIndex_Node4{"The system processes the hold
status"}:::decision N_SetDestinationHoldIndex_Node4_action["The system sets GCB1-KEY-HELD-DEST
to cargo destination station number
RT29-DEST-STN-NUM and
GCB1-KEY-HELD-DEST-CARGO to cargo
CCN key"]:::main N_SetDestinationHoldIndex_Node4 -- Yes --> N_SetDestinationHoldIndex_Node4_action N_SetDestinationHoldIndex_Node4_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node3 -- No --> N_SetDestinationHoldIndex_Node4 N_SetDestinationHoldIndex_Node5{"The cargo status is USCARGO-HOLD OR
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-D OR USCARGO-PR-H-DE
OR USCARGO-HOLDFDA"}:::decision N_SetDestinationHoldIndex_Node5_action["Set the destination station number
from cargo record to held
destination key AND set the cargo
CCN key to held destination cargo
key"]:::main N_SetDestinationHoldIndex_Node5 -- Yes --> N_SetDestinationHoldIndex_Node5_action N_SetDestinationHoldIndex_Node5_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node4 -- No --> N_SetDestinationHoldIndex_Node5 N_SetDestinationHoldIndex_Node5 -- No --> E_SetDestinationHoldIndex
fields"}:::decision N_SetDestinationHoldIndex_Node0_action["The system sets destination station
number to held-dest field and cargo
CCN key to held-dest-cargo field"]:::main N_SetDestinationHoldIndex_Node0 -- Yes --> N_SetDestinationHoldIndex_Node0_action N_SetDestinationHoldIndex_Node0_action --> E_SetDestinationHoldIndex S_SetDestinationHoldIndex --> N_SetDestinationHoldIndex_Node0 N_SetDestinationHoldIndex_Node1{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold destination status OR US
cargo pre-hold destination status OR
US cargo hold FDA status"}:::decision N_SetDestinationHoldIndex_Node1_action["Set cargo destination station
number to held destination index
field AND set cargo CCN key to held
destination cargo field"]:::main N_SetDestinationHoldIndex_Node1 -- Yes --> N_SetDestinationHoldIndex_Node1_action N_SetDestinationHoldIndex_Node1_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node0 -- No --> N_SetDestinationHoldIndex_Node1 N_SetDestinationHoldIndex_Node2{"The cargo has USCARGO-HOLD or
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-D or USCARGO-PR-H-DE
or USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndex_Node2_action["The system sets the destination
hold index with the destination
station number and copies the cargo
control number key to the
destination hold cargo field"]:::main N_SetDestinationHoldIndex_Node2 -- Yes --> N_SetDestinationHoldIndex_Node2_action N_SetDestinationHoldIndex_Node2_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node1 -- No --> N_SetDestinationHoldIndex_Node2 N_SetDestinationHoldIndex_Node3{"The cargo status is HOLD or HOLDPCS
or PR-HPCS or HOLD-D or PR-H-DE or
HOLDFDA"}:::decision N_SetDestinationHoldIndex_Node3_action["The system sets the destination
hold index using the destination
station number and cargo CCN key"]:::main N_SetDestinationHoldIndex_Node3 -- Yes --> N_SetDestinationHoldIndex_Node3_action N_SetDestinationHoldIndex_Node3_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node2 -- No --> N_SetDestinationHoldIndex_Node3 N_SetDestinationHoldIndex_Node4{"The system processes the hold
status"}:::decision N_SetDestinationHoldIndex_Node4_action["The system sets GCB1-KEY-HELD-DEST
to cargo destination station number
RT29-DEST-STN-NUM and
GCB1-KEY-HELD-DEST-CARGO to cargo
CCN key"]:::main N_SetDestinationHoldIndex_Node4 -- Yes --> N_SetDestinationHoldIndex_Node4_action N_SetDestinationHoldIndex_Node4_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node3 -- No --> N_SetDestinationHoldIndex_Node4 N_SetDestinationHoldIndex_Node5{"The cargo status is USCARGO-HOLD OR
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-D OR USCARGO-PR-H-DE
OR USCARGO-HOLDFDA"}:::decision N_SetDestinationHoldIndex_Node5_action["Set the destination station number
from cargo record to held
destination key AND set the cargo
CCN key to held destination cargo
key"]:::main N_SetDestinationHoldIndex_Node5 -- Yes --> N_SetDestinationHoldIndex_Node5_action N_SetDestinationHoldIndex_Node5_action --> E_SetDestinationHoldIndex N_SetDestinationHoldIndex_Node4 -- No --> N_SetDestinationHoldIndex_Node5 N_SetDestinationHoldIndex_Node5 -- No --> E_SetDestinationHoldIndex
File: GCCUSIO.cbl
GIVEN:
Cargo has destination hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, HOLDFDA)
WHEN:
The system processes hold index fields
THEN:
- The system sets destination station number to held-dest field
- Cargo ccn key to held-dest-cargo field
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status conditions
WHEN:
The cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold destination status OR US cargo pre-hold destination status OR US cargo hold FDA status
THEN:
- Set cargo destination station number to held destination index field
- Set cargo ccn key to held destination cargo field
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with hold status conditions
WHEN:
The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-D or USCARGO-PR-H-DE or USCARGO-HOLDFDA status
THEN:
- The system sets the destination hold index with the destination station number
- Copies the cargo control number key to the destination hold cargo field
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with destination hold status conditions
WHEN:
The cargo status is HOLD or HOLDPCS or PR-HPCS or HOLD-D or PR-H-DE or HOLDFDA
THEN:
- The system sets the destination hold index using the destination station number
- Cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record with destination-related hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, or HOLDFDA)
WHEN:
The system processes the hold status
THEN:
- The system sets gcb1-key-held-dest to cargo destination station number rt29-dest-stn-num
- Gcb1-key-held-dest-cargo to cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with hold status conditions
WHEN:
The cargo status is USCARGO-HOLD OR USCARGO-HOLDPCS OR USCARGO-PR-HPCS OR USCARGO-HOLD-D OR USCARGO-PR-H-DE OR USCARGO-HOLDFDA
THEN:
- Set the destination station number from cargo record to held destination key
- Set the cargo ccn key to held destination cargo key
β Consolidated Acceptance Criteria
- The system processes hold index fields → the system retrieves border station from MC table lookup and sets held-border field to border station number and held-border-cargo field to cargo CCN key
- The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-B or USCARGO-PR-H-BO or USCARGO-HOLDFDA status → the system sets the border hold index with the border station number and copies the cargo control number key to the border hold cargo field
- The cargo status is HOLD or HOLDPCS or PR-HPCS or HOLD-B or PR-H-BO or HOLDFDA → the system performs MC table lookup and sets the border hold index using the border station number and cargo CCN key
- The system processes the hold status → the system retrieves station information for the border location and sets GCB1-KEY-HELD-BORDER to the border station number and GCB1-KEY-HELD-BORDER-CARGO to cargo CCN key
- The cargo status is USCARGO-HOLD:
- USCARGO-HOLDPCS
- USCARGO-PR-HPCS
- USCARGO-HOLD-B
- USCARGO-PR-H-BO
- USCARGO-HOLDFDA AND table lookup returns success flag '0'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderHoldIndex(["Start Step"])
E_SetBorderHoldIndex(["End Step"])
N_SetBorderHoldIndex_Node0{"The system processes hold index
fields"}:::decision N_SetBorderHoldIndex_Node0_action["The system retrieves border station
from MC table lookup and sets
held-border field to border station
number and held-border-cargo field
to cargo CCN key"]:::main N_SetBorderHoldIndex_Node0 -- Yes --> N_SetBorderHoldIndex_Node0_action N_SetBorderHoldIndex_Node0_action --> E_SetBorderHoldIndex S_SetBorderHoldIndex --> N_SetBorderHoldIndex_Node0 N_SetBorderHoldIndex_Node1{"The cargo has USCARGO-HOLD or
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-B or USCARGO-PR-H-BO
or USCARGO-HOLDFDA status"}:::decision N_SetBorderHoldIndex_Node1_action["The system sets the border hold
index with the border station number
and copies the cargo control number
key to the border hold cargo field"]:::main N_SetBorderHoldIndex_Node1 -- Yes --> N_SetBorderHoldIndex_Node1_action N_SetBorderHoldIndex_Node1_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node0 -- No --> N_SetBorderHoldIndex_Node1 N_SetBorderHoldIndex_Node2{"The cargo status is HOLD or HOLDPCS
or PR-HPCS or HOLD-B or PR-H-BO or
HOLDFDA"}:::decision N_SetBorderHoldIndex_Node2_action["The system performs MC table lookup
and sets the border hold index using
the border station number and cargo
CCN key"]:::main N_SetBorderHoldIndex_Node2 -- Yes --> N_SetBorderHoldIndex_Node2_action N_SetBorderHoldIndex_Node2_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node1 -- No --> N_SetBorderHoldIndex_Node2 N_SetBorderHoldIndex_Node3{"The system processes the hold
status"}:::decision N_SetBorderHoldIndex_Node3_action["The system retrieves station
information for the border location
and sets GCB1-KEY-HELD-BORDER to the
border station number and
GCB1-KEY-HELD-BORDER-CARGO to cargo
CCN key"]:::main N_SetBorderHoldIndex_Node3 -- Yes --> N_SetBorderHoldIndex_Node3_action N_SetBorderHoldIndex_Node3_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node2 -- No --> N_SetBorderHoldIndex_Node3 N_SetBorderHoldIndex_Node4{"The cargo status is USCARGO-HOLD OR
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-B OR USCARGO-PR-H-BO
OR USCARGO-HOLDFDA AND table lookup
returns success flag 0"}:::decision N_SetBorderHoldIndex_Node4_action["Set the MC station number from
table segment to held border key AND
set the cargo CCN key to held border
cargo key"]:::main N_SetBorderHoldIndex_Node4 -- Yes --> N_SetBorderHoldIndex_Node4_action N_SetBorderHoldIndex_Node4_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node3 -- No --> N_SetBorderHoldIndex_Node4 N_SetBorderHoldIndex_Node4 -- No --> E_SetBorderHoldIndex
fields"}:::decision N_SetBorderHoldIndex_Node0_action["The system retrieves border station
from MC table lookup and sets
held-border field to border station
number and held-border-cargo field
to cargo CCN key"]:::main N_SetBorderHoldIndex_Node0 -- Yes --> N_SetBorderHoldIndex_Node0_action N_SetBorderHoldIndex_Node0_action --> E_SetBorderHoldIndex S_SetBorderHoldIndex --> N_SetBorderHoldIndex_Node0 N_SetBorderHoldIndex_Node1{"The cargo has USCARGO-HOLD or
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-B or USCARGO-PR-H-BO
or USCARGO-HOLDFDA status"}:::decision N_SetBorderHoldIndex_Node1_action["The system sets the border hold
index with the border station number
and copies the cargo control number
key to the border hold cargo field"]:::main N_SetBorderHoldIndex_Node1 -- Yes --> N_SetBorderHoldIndex_Node1_action N_SetBorderHoldIndex_Node1_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node0 -- No --> N_SetBorderHoldIndex_Node1 N_SetBorderHoldIndex_Node2{"The cargo status is HOLD or HOLDPCS
or PR-HPCS or HOLD-B or PR-H-BO or
HOLDFDA"}:::decision N_SetBorderHoldIndex_Node2_action["The system performs MC table lookup
and sets the border hold index using
the border station number and cargo
CCN key"]:::main N_SetBorderHoldIndex_Node2 -- Yes --> N_SetBorderHoldIndex_Node2_action N_SetBorderHoldIndex_Node2_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node1 -- No --> N_SetBorderHoldIndex_Node2 N_SetBorderHoldIndex_Node3{"The system processes the hold
status"}:::decision N_SetBorderHoldIndex_Node3_action["The system retrieves station
information for the border location
and sets GCB1-KEY-HELD-BORDER to the
border station number and
GCB1-KEY-HELD-BORDER-CARGO to cargo
CCN key"]:::main N_SetBorderHoldIndex_Node3 -- Yes --> N_SetBorderHoldIndex_Node3_action N_SetBorderHoldIndex_Node3_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node2 -- No --> N_SetBorderHoldIndex_Node3 N_SetBorderHoldIndex_Node4{"The cargo status is USCARGO-HOLD OR
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-B OR USCARGO-PR-H-BO
OR USCARGO-HOLDFDA AND table lookup
returns success flag 0"}:::decision N_SetBorderHoldIndex_Node4_action["Set the MC station number from
table segment to held border key AND
set the cargo CCN key to held border
cargo key"]:::main N_SetBorderHoldIndex_Node4 -- Yes --> N_SetBorderHoldIndex_Node4_action N_SetBorderHoldIndex_Node4_action --> E_SetBorderHoldIndex N_SetBorderHoldIndex_Node3 -- No --> N_SetBorderHoldIndex_Node4 N_SetBorderHoldIndex_Node4 -- No --> E_SetBorderHoldIndex
File: GCCUSIO.cbl
GIVEN:
Cargo has border hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLDFDA)
WHEN:
The system processes hold index fields
THEN:
- The system retrieves border station from mc table lookup
- Sets held-border field to border station number
- Held-border-cargo field to cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with hold status conditions
WHEN:
The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-B or USCARGO-PR-H-BO or USCARGO-HOLDFDA status
THEN:
- The system sets the border hold index with the border station number
- Copies the cargo control number key to the border hold cargo field
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with border hold status conditions
WHEN:
The cargo status is HOLD or HOLDPCS or PR-HPCS or HOLD-B or PR-H-BO or HOLDFDA
THEN:
- The system performs mc table lookup
- Sets the border hold index using the border station number
- Cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record with border-related hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA)
WHEN:
The system processes the hold status
THEN:
- The system retrieves station information for the border location
- Sets gcb1-key-held-border to the border station number
- Gcb1-key-held-border-cargo to cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with hold status conditions AND MC table lookup is successful
WHEN:
- The cargo status is uscargo-hold or uscargo-holdpcs or uscargo-pr-hpcs or uscargo-hold-b or uscargo-pr-h-bo or uscargo-holdfda
- Table lookup returns success flag '0'
THEN:
- Set the mc station number from table segment to held border key
- Set the cargo ccn key to held border cargo key
β Consolidated Acceptance Criteria
- The system needs border station information → the system calls table lookup service with MC table ID and location ID to retrieve station number
- The system needs to determine the border station for error indexing → the system performs a table lookup using the location ID from field RT04-LOCATION-ID-NAME to retrieve border station details from the MC table
- The system needs to determine the border station for error indexing → the system performs a table lookup using the cargo's location ID to retrieve the corresponding border station information
- The system needs to determine the border station number → the system calls the table lookup service with table ID 'MC' and cargo location ID to retrieve the station number
- The system needs to determine border station number for hold indexing → the system calls table lookup service with MC table ID and cargo location ID to retrieve station number
- Border hold processing is required for the cargo → call table lookup service with function code 'GU', table ID 'MC', and cargo location ID as sequence ID to retrieve station number 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_LookupBorderStationfromMCTable(["Start Step"])
E_LookupBorderStationfromMCTable(["End Step"])
N_LookupBorderStationfromMCTable_Node0{"The system needs border station
information"}:::decision N_LookupBorderStationfromMCTable_Node0_action["The system calls table lookup
service with MC table ID and
location ID to retrieve station
number"]:::main N_LookupBorderStationfromMCTable_Node0 -- Yes --> N_LookupBorderStationfromMCTable_Node0_action N_LookupBorderStationfromMCTable_Node0_action --> E_LookupBorderStationfromMCTable S_LookupBorderStationfromMCTable --> N_LookupBorderStationfromMCTable_Node0 N_LookupBorderStationfromMCTable_Node1{"The system needs to determine the
border station for error indexing"}:::decision N_LookupBorderStationfromMCTable_Node1_action["The system performs a table lookup
using the location ID from field
RT04-LOCATION-ID-NAME to retrieve
border station details from the MC
table"]:::exclusion N_LookupBorderStationfromMCTable_Node1 -- Yes -->|Alternative| N_LookupBorderStationfromMCTable_Node1_action N_LookupBorderStationfromMCTable_Node1_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node0 -- No --> N_LookupBorderStationfromMCTable_Node1 N_LookupBorderStationfromMCTable_Node2{"The system needs to determine the
border station for error indexing"}:::decision N_LookupBorderStationfromMCTable_Node2_action["The system performs a table lookup
using the cargo s location ID to
retrieve the corresponding border
station information"]:::exclusion N_LookupBorderStationfromMCTable_Node2 -- Yes -->|Alternative| N_LookupBorderStationfromMCTable_Node2_action N_LookupBorderStationfromMCTable_Node2_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node1 -- No --> N_LookupBorderStationfromMCTable_Node2 N_LookupBorderStationfromMCTable_Node3{"The system needs to determine the
border station number"}:::decision N_LookupBorderStationfromMCTable_Node3_action["The system calls the table lookup
service with table ID MC and cargo
location ID to retrieve the station
number"]:::main N_LookupBorderStationfromMCTable_Node3 -- Yes --> N_LookupBorderStationfromMCTable_Node3_action N_LookupBorderStationfromMCTable_Node3_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node2 -- No --> N_LookupBorderStationfromMCTable_Node3 N_LookupBorderStationfromMCTable_Node4{"The system needs to determine
border station number for hold
indexing"}:::decision N_LookupBorderStationfromMCTable_Node4_action["The system calls table lookup
service with MC table ID and cargo
location ID to retrieve station
number"]:::main N_LookupBorderStationfromMCTable_Node4 -- Yes --> N_LookupBorderStationfromMCTable_Node4_action N_LookupBorderStationfromMCTable_Node4_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node3 -- No --> N_LookupBorderStationfromMCTable_Node4 N_LookupBorderStationfromMCTable_Node5{"Border hold processing is required
for the cargo"}:::decision N_LookupBorderStationfromMCTable_Node5_action["Call table lookup service with
function code GU , table ID MC , and
cargo location ID as sequence ID to
retrieve station number information"]:::main N_LookupBorderStationfromMCTable_Node5 -- Yes --> N_LookupBorderStationfromMCTable_Node5_action N_LookupBorderStationfromMCTable_Node5_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node4 -- No --> N_LookupBorderStationfromMCTable_Node5 N_LookupBorderStationfromMCTable_Node5 -- No --> E_LookupBorderStationfromMCTable
information"}:::decision N_LookupBorderStationfromMCTable_Node0_action["The system calls table lookup
service with MC table ID and
location ID to retrieve station
number"]:::main N_LookupBorderStationfromMCTable_Node0 -- Yes --> N_LookupBorderStationfromMCTable_Node0_action N_LookupBorderStationfromMCTable_Node0_action --> E_LookupBorderStationfromMCTable S_LookupBorderStationfromMCTable --> N_LookupBorderStationfromMCTable_Node0 N_LookupBorderStationfromMCTable_Node1{"The system needs to determine the
border station for error indexing"}:::decision N_LookupBorderStationfromMCTable_Node1_action["The system performs a table lookup
using the location ID from field
RT04-LOCATION-ID-NAME to retrieve
border station details from the MC
table"]:::exclusion N_LookupBorderStationfromMCTable_Node1 -- Yes -->|Alternative| N_LookupBorderStationfromMCTable_Node1_action N_LookupBorderStationfromMCTable_Node1_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node0 -- No --> N_LookupBorderStationfromMCTable_Node1 N_LookupBorderStationfromMCTable_Node2{"The system needs to determine the
border station for error indexing"}:::decision N_LookupBorderStationfromMCTable_Node2_action["The system performs a table lookup
using the cargo s location ID to
retrieve the corresponding border
station information"]:::exclusion N_LookupBorderStationfromMCTable_Node2 -- Yes -->|Alternative| N_LookupBorderStationfromMCTable_Node2_action N_LookupBorderStationfromMCTable_Node2_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node1 -- No --> N_LookupBorderStationfromMCTable_Node2 N_LookupBorderStationfromMCTable_Node3{"The system needs to determine the
border station number"}:::decision N_LookupBorderStationfromMCTable_Node3_action["The system calls the table lookup
service with table ID MC and cargo
location ID to retrieve the station
number"]:::main N_LookupBorderStationfromMCTable_Node3 -- Yes --> N_LookupBorderStationfromMCTable_Node3_action N_LookupBorderStationfromMCTable_Node3_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node2 -- No --> N_LookupBorderStationfromMCTable_Node3 N_LookupBorderStationfromMCTable_Node4{"The system needs to determine
border station number for hold
indexing"}:::decision N_LookupBorderStationfromMCTable_Node4_action["The system calls table lookup
service with MC table ID and cargo
location ID to retrieve station
number"]:::main N_LookupBorderStationfromMCTable_Node4 -- Yes --> N_LookupBorderStationfromMCTable_Node4_action N_LookupBorderStationfromMCTable_Node4_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node3 -- No --> N_LookupBorderStationfromMCTable_Node4 N_LookupBorderStationfromMCTable_Node5{"Border hold processing is required
for the cargo"}:::decision N_LookupBorderStationfromMCTable_Node5_action["Call table lookup service with
function code GU , table ID MC , and
cargo location ID as sequence ID to
retrieve station number information"]:::main N_LookupBorderStationfromMCTable_Node5 -- Yes --> N_LookupBorderStationfromMCTable_Node5_action N_LookupBorderStationfromMCTable_Node5_action --> E_LookupBorderStationfromMCTable N_LookupBorderStationfromMCTable_Node4 -- No --> N_LookupBorderStationfromMCTable_Node5 N_LookupBorderStationfromMCTable_Node5 -- No --> E_LookupBorderStationfromMCTable
File: GCCUSIO.cbl
GIVEN:
Cargo requires border hold index and has location ID
WHEN:
The system needs border station information
THEN:
- The system calls table lookup service with mc table id
- Location id to retrieve station number
File: GCCUSIO.cbl
GIVEN:
A cargo record contains location identifier information
WHEN:
The system needs to determine the border station for error indexing
THEN:
The system performs a table lookup using the location ID from field RT04-LOCATION-ID-NAME to retrieve border station details from the MC table
File: GCCUSIO.cbl
GIVEN:
A cargo record contains a location ID and the MC table is available
WHEN:
The system needs to determine the border station for error indexing
THEN:
The system performs a table lookup using the cargo's location ID to retrieve the corresponding border station information
File: GCCUSIO.cbl
GIVEN:
A cargo record requires border hold index population
WHEN:
The system needs to determine the border station number
THEN:
The system calls the table lookup service with table ID 'MC' and cargo location ID to retrieve the station number
File: GCCUSIO.cbl
GIVEN:
A cargo record requiring border hold index processing
WHEN:
The system needs to determine border station number for hold indexing
THEN:
- The system calls table lookup service with mc table id
- Cargo location id to retrieve station number
File: GCCUSIO.cbl
GIVEN:
A cargo record with location ID exists
WHEN:
Border hold processing is required for the cargo
THEN:
Call table lookup service with function code 'GU', table ID 'MC', and cargo location ID as sequence ID to retrieve station number information
β Consolidated Acceptance Criteria
- The system processes hold index management → the system clears held-dest-index and held-border-index fields to spaces
- The cargo has no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → clear the held destination index field AND clear the held border index field in the GCSB1RT record
- The system processes the cargo status update → the system clears the held destination index and held border index fields in the status record
- The cargo has no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → the held destination index and held border index fields should be cleared to spaces
- The cargo does NOT have USCARGO-HOLD AND NOT USCARGO-HOLDPCS AND NOT USCARGO-PR-HPCS AND NOT USCARGO-HOLD-B AND NOT USCARGO-PR-H-BO AND NOT USCARGO-HOLD-D AND NOT USCARGO-PR-H-DE AND NOT USCARGO-HOLDFDA status conditions → the system should clear the held destination index and held border index fields and determine if status record deletion is required
- The system processes cargo status update → the system clears GCB1-HELD-DEST-INDEX and GCB1-HELD-BORDER-INDEX fields to spaces
- The system processes the cargo status update → the system clears the held destination index field AND clears the held border index field
- The cargo no longer has any of the hold status conditions (USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, USCARGO-HOLD-D, USCARGO-PR-H-DE, USCARGO-HOLDFDA) → the system clears the held destination index and held border index fields
- The cargo does not have any hold status conditions (USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, USCARGO-HOLD-D, USCARGO-PR-H-DE, USCARGO-HOLDFDA) → the system clears the held destination index and held border index fields by setting them 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_ClearHoldIndexFields(["Start Step"])
E_ClearHoldIndexFields(["End Step"])
N_ClearHoldIndexFields_Node0{"The system processes hold index
management"}:::decision N_ClearHoldIndexFields_Node0_action["The system clears held-dest-index
and held-border-index fields to
spaces"]:::main N_ClearHoldIndexFields_Node0 -- Yes --> N_ClearHoldIndexFields_Node0_action N_ClearHoldIndexFields_Node0_action --> E_ClearHoldIndexFields S_ClearHoldIndexFields --> N_ClearHoldIndexFields_Node0 N_ClearHoldIndexFields_Node1{"The cargo has no US cargo hold
status AND no US cargo hold PCS
status AND no US cargo pre-hold PCS
status AND no US cargo hold border
status AND no US cargo pre-hold
border status AND no US cargo hold
destination status AND no US cargo
pre-hold destination status AND no
US cargo hold FDA status"}:::decision N_ClearHoldIndexFields_Node1_action["Clear the held destination index
field AND clear the held border
index field in the GCSB1RT record"]:::main N_ClearHoldIndexFields_Node1 -- Yes --> N_ClearHoldIndexFields_Node1_action N_ClearHoldIndexFields_Node1_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node0 -- No --> N_ClearHoldIndexFields_Node1 N_ClearHoldIndexFields_Node2{"The system processes the cargo
status update"}:::decision N_ClearHoldIndexFields_Node2_action["The system clears the held
destination index and held border
index fields in the status record"]:::main N_ClearHoldIndexFields_Node2 -- Yes --> N_ClearHoldIndexFields_Node2_action N_ClearHoldIndexFields_Node2_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node1 -- No --> N_ClearHoldIndexFields_Node2 N_ClearHoldIndexFields_Node3{"The cargo has no US cargo hold
status AND no US cargo hold PCS
status AND no US cargo pre-hold PCS
status AND no US cargo hold border
status AND no US cargo pre-hold
border status AND no US cargo hold
destination status AND no US cargo
pre-hold destination status AND no
US cargo hold FDA status"}:::decision N_ClearHoldIndexFields_Node3_action["The held destination index and held
border index fields should be
cleared to spaces"]:::main N_ClearHoldIndexFields_Node3 -- Yes --> N_ClearHoldIndexFields_Node3_action N_ClearHoldIndexFields_Node3_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node2 -- No --> N_ClearHoldIndexFields_Node3 N_ClearHoldIndexFields_Node4{"The cargo does NOT have
USCARGO-HOLD AND NOT USCARGO-HOLDPCS
AND NOT USCARGO-PR-HPCS AND NOT
USCARGO-HOLD-B AND NOT
USCARGO-PR-H-BO AND NOT
USCARGO-HOLD-D AND NOT
USCARGO-PR-H-DE AND NOT
USCARGO-HOLDFDA status conditions"}:::decision N_ClearHoldIndexFields_Node4_action["The system should clear the held
destination index and held border
index fields and determine if status
record deletion is required"]:::main N_ClearHoldIndexFields_Node4 -- Yes --> N_ClearHoldIndexFields_Node4_action N_ClearHoldIndexFields_Node4_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node3 -- No --> N_ClearHoldIndexFields_Node4 N_ClearHoldIndexFields_Node5{"The system processes cargo status
update"}:::decision N_ClearHoldIndexFields_Node5_action["The system clears
GCB1-HELD-DEST-INDEX and
GCB1-HELD-BORDER-INDEX fields to
spaces"]:::main N_ClearHoldIndexFields_Node5 -- Yes --> N_ClearHoldIndexFields_Node5_action N_ClearHoldIndexFields_Node5_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node4 -- No --> N_ClearHoldIndexFields_Node5 N_ClearHoldIndexFields_Node6{"The system processes the cargo
status update"}:::decision N_ClearHoldIndexFields_Node6_action["The system clears the held
destination index field AND clears
the held border index field"]:::main N_ClearHoldIndexFields_Node6 -- Yes --> N_ClearHoldIndexFields_Node6_action N_ClearHoldIndexFields_Node6_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node5 -- No --> N_ClearHoldIndexFields_Node6 N_ClearHoldIndexFields_Node7{"The cargo no longer has any of the
hold status conditions USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-B, USCARGO-PR-H-BO,
USCARGO-HOLD-D, USCARGO-PR-H-DE,
USCARGO-HOLDFDA"}:::decision N_ClearHoldIndexFields_Node7_action["The system clears the held
destination index and held border
index fields"]:::main N_ClearHoldIndexFields_Node7 -- Yes --> N_ClearHoldIndexFields_Node7_action N_ClearHoldIndexFields_Node7_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node6 -- No --> N_ClearHoldIndexFields_Node7 N_ClearHoldIndexFields_Node8{"The cargo does not have any hold
status conditions USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-B, USCARGO-PR-H-BO,
USCARGO-HOLD-D, USCARGO-PR-H-DE,
USCARGO-HOLDFDA"}:::decision N_ClearHoldIndexFields_Node8_action["The system clears the held
destination index and held border
index fields by setting them to
spaces"]:::main N_ClearHoldIndexFields_Node8 -- Yes --> N_ClearHoldIndexFields_Node8_action N_ClearHoldIndexFields_Node8_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node7 -- No --> N_ClearHoldIndexFields_Node8 N_ClearHoldIndexFields_Node8 -- No --> E_ClearHoldIndexFields
management"}:::decision N_ClearHoldIndexFields_Node0_action["The system clears held-dest-index
and held-border-index fields to
spaces"]:::main N_ClearHoldIndexFields_Node0 -- Yes --> N_ClearHoldIndexFields_Node0_action N_ClearHoldIndexFields_Node0_action --> E_ClearHoldIndexFields S_ClearHoldIndexFields --> N_ClearHoldIndexFields_Node0 N_ClearHoldIndexFields_Node1{"The cargo has no US cargo hold
status AND no US cargo hold PCS
status AND no US cargo pre-hold PCS
status AND no US cargo hold border
status AND no US cargo pre-hold
border status AND no US cargo hold
destination status AND no US cargo
pre-hold destination status AND no
US cargo hold FDA status"}:::decision N_ClearHoldIndexFields_Node1_action["Clear the held destination index
field AND clear the held border
index field in the GCSB1RT record"]:::main N_ClearHoldIndexFields_Node1 -- Yes --> N_ClearHoldIndexFields_Node1_action N_ClearHoldIndexFields_Node1_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node0 -- No --> N_ClearHoldIndexFields_Node1 N_ClearHoldIndexFields_Node2{"The system processes the cargo
status update"}:::decision N_ClearHoldIndexFields_Node2_action["The system clears the held
destination index and held border
index fields in the status record"]:::main N_ClearHoldIndexFields_Node2 -- Yes --> N_ClearHoldIndexFields_Node2_action N_ClearHoldIndexFields_Node2_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node1 -- No --> N_ClearHoldIndexFields_Node2 N_ClearHoldIndexFields_Node3{"The cargo has no US cargo hold
status AND no US cargo hold PCS
status AND no US cargo pre-hold PCS
status AND no US cargo hold border
status AND no US cargo pre-hold
border status AND no US cargo hold
destination status AND no US cargo
pre-hold destination status AND no
US cargo hold FDA status"}:::decision N_ClearHoldIndexFields_Node3_action["The held destination index and held
border index fields should be
cleared to spaces"]:::main N_ClearHoldIndexFields_Node3 -- Yes --> N_ClearHoldIndexFields_Node3_action N_ClearHoldIndexFields_Node3_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node2 -- No --> N_ClearHoldIndexFields_Node3 N_ClearHoldIndexFields_Node4{"The cargo does NOT have
USCARGO-HOLD AND NOT USCARGO-HOLDPCS
AND NOT USCARGO-PR-HPCS AND NOT
USCARGO-HOLD-B AND NOT
USCARGO-PR-H-BO AND NOT
USCARGO-HOLD-D AND NOT
USCARGO-PR-H-DE AND NOT
USCARGO-HOLDFDA status conditions"}:::decision N_ClearHoldIndexFields_Node4_action["The system should clear the held
destination index and held border
index fields and determine if status
record deletion is required"]:::main N_ClearHoldIndexFields_Node4 -- Yes --> N_ClearHoldIndexFields_Node4_action N_ClearHoldIndexFields_Node4_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node3 -- No --> N_ClearHoldIndexFields_Node4 N_ClearHoldIndexFields_Node5{"The system processes cargo status
update"}:::decision N_ClearHoldIndexFields_Node5_action["The system clears
GCB1-HELD-DEST-INDEX and
GCB1-HELD-BORDER-INDEX fields to
spaces"]:::main N_ClearHoldIndexFields_Node5 -- Yes --> N_ClearHoldIndexFields_Node5_action N_ClearHoldIndexFields_Node5_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node4 -- No --> N_ClearHoldIndexFields_Node5 N_ClearHoldIndexFields_Node6{"The system processes the cargo
status update"}:::decision N_ClearHoldIndexFields_Node6_action["The system clears the held
destination index field AND clears
the held border index field"]:::main N_ClearHoldIndexFields_Node6 -- Yes --> N_ClearHoldIndexFields_Node6_action N_ClearHoldIndexFields_Node6_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node5 -- No --> N_ClearHoldIndexFields_Node6 N_ClearHoldIndexFields_Node7{"The cargo no longer has any of the
hold status conditions USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-B, USCARGO-PR-H-BO,
USCARGO-HOLD-D, USCARGO-PR-H-DE,
USCARGO-HOLDFDA"}:::decision N_ClearHoldIndexFields_Node7_action["The system clears the held
destination index and held border
index fields"]:::main N_ClearHoldIndexFields_Node7 -- Yes --> N_ClearHoldIndexFields_Node7_action N_ClearHoldIndexFields_Node7_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node6 -- No --> N_ClearHoldIndexFields_Node7 N_ClearHoldIndexFields_Node8{"The cargo does not have any hold
status conditions USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-B, USCARGO-PR-H-BO,
USCARGO-HOLD-D, USCARGO-PR-H-DE,
USCARGO-HOLDFDA"}:::decision N_ClearHoldIndexFields_Node8_action["The system clears the held
destination index and held border
index fields by setting them to
spaces"]:::main N_ClearHoldIndexFields_Node8 -- Yes --> N_ClearHoldIndexFields_Node8_action N_ClearHoldIndexFields_Node8_action --> E_ClearHoldIndexFields N_ClearHoldIndexFields_Node7 -- No --> N_ClearHoldIndexFields_Node8 N_ClearHoldIndexFields_Node8 -- No --> E_ClearHoldIndexFields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is not in any hold status (not HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA)
WHEN:
The system processes hold index management
THEN:
- The system clears held-dest-index
- Held-border-index fields to spaces
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in GCSB1RT index database
WHEN:
- The cargo has no us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
- Clear the held destination index field
- Clear the held border index field in the gcsb1rt record
File: GCCUSIO.cbl
GIVEN:
A cargo record with no hold conditions (RT11 USCARGO-HOLD, RT11 USCARGO-HOLDPCS, RT11 USCARGO-PR-HPCS, RT11 USCARGO-HOLD-B, RT11 USCARGO-PR-H-BO, RT11 USCARGO-HOLD-D, RT11 USCARGO-PR-H-DE, RT11 USCARGO-HOLDFDA) but with error conditions
WHEN:
The system processes the cargo status update
THEN:
- The system clears the held destination index
- Held border index fields in the status record
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with a GCSB1RT status record
WHEN:
- The cargo has no us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
- The held destination index
- Held border index fields should be cleared to spaces
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record being processed for status table updates
WHEN:
- The cargo does not have uscargo-hold
- Not uscargo-holdpcs
- Not uscargo-pr-hpcs
- Not uscargo-hold-b
- Not uscargo-pr-h-bo
- Not uscargo-hold-d
- Not uscargo-pr-h-de
- Not uscargo-holdfda status conditions
THEN:
- The system should clear the held destination index
- Held border index fields
- Determine if status record deletion is required
File: GCCUSIO.cbl
GIVEN:
A cargo record with no hold status conditions
WHEN:
The system processes cargo status update
THEN:
- The system clears gcb1-held-dest-index
- Gcb1-held-border-index fields to spaces
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists in the GCSB1RT index table AND the cargo does not have USCARGO-HOLD status AND the cargo does not have USCARGO-HOLDPCS status AND the cargo does not have USCARGO-PR-HPCS status AND the cargo does not have USCARGO-HOLD-B status AND the cargo does not have USCARGO-PR-H-BO status AND the cargo does not have USCARGO-HOLD-D status AND the cargo does not have USCARGO-PR-H-DE status AND the cargo does not have USCARGO-HOLDFDA status
WHEN:
The system processes the cargo status update
THEN:
- The system clears the held destination index field
- Clears the held border index field
File: GCCUSIO.cbl
GIVEN:
A cargo record that previously had hold conditions
WHEN:
The cargo no longer has any of the hold status conditions (USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, USCARGO-HOLD-D, USCARGO-PR-H-DE, USCARGO-HOLDFDA)
THEN:
- The system clears the held destination index
- Held border index fields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists in the system
WHEN:
The cargo does not have any hold status conditions (USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, USCARGO-HOLD-D, USCARGO-PR-H-DE, USCARGO-HOLDFDA)
THEN:
- The system clears the held destination index
- Held border index fields by setting them to spaces
β Consolidated Acceptance Criteria
- The system checks for other active index types → the system determines if error indexes (error-dest-index, error-orig-index, error-border-index) contain data to decide record retention
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyOtherIndexTypesActive(["Start Step"])
E_AnyOtherIndexTypesActive(["End Step"])
N_AnyOtherIndexTypesActive_Node0{"The system checks for other active
index types"}:::decision N_AnyOtherIndexTypesActive_Node0_action["The system determines if error
indexes error-dest-index,
error-orig-index, error-border-index
contain data to decide record
retention"]:::main N_AnyOtherIndexTypesActive_Node0 -- Yes --> N_AnyOtherIndexTypesActive_Node0_action N_AnyOtherIndexTypesActive_Node0_action --> E_AnyOtherIndexTypesActive S_AnyOtherIndexTypesActive --> N_AnyOtherIndexTypesActive_Node0 N_AnyOtherIndexTypesActive_Node0 -- No --> E_AnyOtherIndexTypesActive
index types"}:::decision N_AnyOtherIndexTypesActive_Node0_action["The system determines if error
indexes error-dest-index,
error-orig-index, error-border-index
contain data to decide record
retention"]:::main N_AnyOtherIndexTypesActive_Node0 -- Yes --> N_AnyOtherIndexTypesActive_Node0_action N_AnyOtherIndexTypesActive_Node0_action --> E_AnyOtherIndexTypesActive S_AnyOtherIndexTypesActive --> N_AnyOtherIndexTypesActive_Node0 N_AnyOtherIndexTypesActive_Node0 -- No --> E_AnyOtherIndexTypesActive
File: GCCUSIO.cbl
GIVEN:
Hold index fields have been cleared and an existing index record is found
WHEN:
The system checks for other active index types
THEN:
The system determines if error indexes (error-dest-index, error-orig-index, error-border-index) contain data to decide record retention
β Consolidated Acceptance Criteria
- The cargo status indicates HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, or HOLDFDA → the system sets the destination station number as held destination key and the CCN key as held destination cargo key
- The cargo status indicates HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA → the system initiates MC table lookup to determine the border station 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_CheckCargoStatusforHoldConditions(["Start Step"])
E_CheckCargoStatusforHoldConditions(["End Step"])
N_CheckCargoStatusforHoldConditions_Node0{"The cargo status indicates HOLD,
HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE,
or HOLDFDA"}:::decision N_CheckCargoStatusforHoldConditions_Node0_action["The system sets the destination
station number as held destination
key and the CCN key as held
destination cargo key"]:::main N_CheckCargoStatusforHoldConditions_Node0 -- Yes --> N_CheckCargoStatusforHoldConditions_Node0_action N_CheckCargoStatusforHoldConditions_Node0_action --> E_CheckCargoStatusforHoldConditions S_CheckCargoStatusforHoldConditions --> N_CheckCargoStatusforHoldConditions_Node0 N_CheckCargoStatusforHoldConditions_Node1{"The cargo status indicates HOLD,
HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO,
or HOLDFDA"}:::decision N_CheckCargoStatusforHoldConditions_Node1_action["The system initiates MC table
lookup to determine the border
station information"]:::main N_CheckCargoStatusforHoldConditions_Node1 -- Yes --> N_CheckCargoStatusforHoldConditions_Node1_action N_CheckCargoStatusforHoldConditions_Node1_action --> E_CheckCargoStatusforHoldConditions N_CheckCargoStatusforHoldConditions_Node0 -- No --> N_CheckCargoStatusforHoldConditions_Node1 N_CheckCargoStatusforHoldConditions_Node1 -- No --> E_CheckCargoStatusforHoldConditions
HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE,
or HOLDFDA"}:::decision N_CheckCargoStatusforHoldConditions_Node0_action["The system sets the destination
station number as held destination
key and the CCN key as held
destination cargo key"]:::main N_CheckCargoStatusforHoldConditions_Node0 -- Yes --> N_CheckCargoStatusforHoldConditions_Node0_action N_CheckCargoStatusforHoldConditions_Node0_action --> E_CheckCargoStatusforHoldConditions S_CheckCargoStatusforHoldConditions --> N_CheckCargoStatusforHoldConditions_Node0 N_CheckCargoStatusforHoldConditions_Node1{"The cargo status indicates HOLD,
HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO,
or HOLDFDA"}:::decision N_CheckCargoStatusforHoldConditions_Node1_action["The system initiates MC table
lookup to determine the border
station information"]:::main N_CheckCargoStatusforHoldConditions_Node1 -- Yes --> N_CheckCargoStatusforHoldConditions_Node1_action N_CheckCargoStatusforHoldConditions_Node1_action --> E_CheckCargoStatusforHoldConditions N_CheckCargoStatusforHoldConditions_Node0 -- No --> N_CheckCargoStatusforHoldConditions_Node1 N_CheckCargoStatusforHoldConditions_Node1 -- No --> E_CheckCargoStatusforHoldConditions
File: GCCUSIO.cbl
GIVEN:
A cargo record with US cargo status conditions
WHEN:
The cargo status indicates HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, or HOLDFDA
THEN:
- The system sets the destination station number as held destination key
- The ccn key as held destination cargo key
File: GCCUSIO.cbl
GIVEN:
A cargo record with US cargo status conditions
WHEN:
The cargo status indicates HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA
THEN:
The system initiates MC table lookup to determine the border station information
β Consolidated Acceptance Criteria
- The system performs MC table lookup using the location ID as sequence ID → the system retrieves the corresponding station segment information from the MC 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_GetStationInformationfromMCTable(["Start Step"])
E_GetStationInformationfromMCTable(["End Step"])
N_GetStationInformationfromMCTable_Node0{"The system performs MC table lookup
using the location ID as sequence ID"}:::decision N_GetStationInformationfromMCTable_Node0_action["The system retrieves the
corresponding station segment
information from the MC table"]:::main N_GetStationInformationfromMCTable_Node0 -- Yes --> N_GetStationInformationfromMCTable_Node0_action N_GetStationInformationfromMCTable_Node0_action --> E_GetStationInformationfromMCTable S_GetStationInformationfromMCTable --> N_GetStationInformationfromMCTable_Node0 N_GetStationInformationfromMCTable_Node0 -- No --> E_GetStationInformationfromMCTable
using the location ID as sequence ID"}:::decision N_GetStationInformationfromMCTable_Node0_action["The system retrieves the
corresponding station segment
information from the MC table"]:::main N_GetStationInformationfromMCTable_Node0 -- Yes --> N_GetStationInformationfromMCTable_Node0_action N_GetStationInformationfromMCTable_Node0_action --> E_GetStationInformationfromMCTable S_GetStationInformationfromMCTable --> N_GetStationInformationfromMCTable_Node0 N_GetStationInformationfromMCTable_Node0 -- No --> E_GetStationInformationfromMCTable
File: GCCUSIO.cbl
GIVEN:
A cargo record requiring border hold processing with a location ID
WHEN:
The system performs MC table lookup using the location ID as sequence ID
THEN:
The system retrieves the corresponding station segment information from the MC table
β Consolidated Acceptance Criteria
- The station segment contains valid station number information → the system sets the station number as held border key and the CCN key as held border cargo 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_SetBorderStationNumber(["Start Step"])
E_SetBorderStationNumber(["End Step"])
N_SetBorderStationNumber_Node0{"The station segment contains valid
station number information"}:::decision N_SetBorderStationNumber_Node0_action["The system sets the station number
as held border key and the CCN key
as held border cargo key"]:::main N_SetBorderStationNumber_Node0 -- Yes --> N_SetBorderStationNumber_Node0_action N_SetBorderStationNumber_Node0_action --> E_SetBorderStationNumber S_SetBorderStationNumber --> N_SetBorderStationNumber_Node0 N_SetBorderStationNumber_Node0 -- No --> E_SetBorderStationNumber
station number information"}:::decision N_SetBorderStationNumber_Node0_action["The system sets the station number
as held border key and the CCN key
as held border cargo key"]:::main N_SetBorderStationNumber_Node0 -- Yes --> N_SetBorderStationNumber_Node0_action N_SetBorderStationNumber_Node0_action --> E_SetBorderStationNumber S_SetBorderStationNumber --> N_SetBorderStationNumber_Node0 N_SetBorderStationNumber_Node0 -- No --> E_SetBorderStationNumber
File: GCCUSIO.cbl
GIVEN:
A successful MC table lookup that returns station information with return flag '0'
WHEN:
The station segment contains valid station number information
THEN:
- The system sets the station number as held border key
- The ccn key as held border cargo key
β Consolidated Acceptance Criteria
- The system processes destination hold index creation → the destination station number is assigned to the destination hold index 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_SetDestinationHoldIndexKey(["Start Step"])
E_SetDestinationHoldIndexKey(["End Step"])
N_SetDestinationHoldIndexKey_Node0{"The system processes destination
hold index creation"}:::decision N_SetDestinationHoldIndexKey_Node0_action["The destination station number is
assigned to the destination hold
index key field"]:::main N_SetDestinationHoldIndexKey_Node0 -- Yes --> N_SetDestinationHoldIndexKey_Node0_action N_SetDestinationHoldIndexKey_Node0_action --> E_SetDestinationHoldIndexKey S_SetDestinationHoldIndexKey --> N_SetDestinationHoldIndexKey_Node0 N_SetDestinationHoldIndexKey_Node0 -- No --> E_SetDestinationHoldIndexKey
hold index creation"}:::decision N_SetDestinationHoldIndexKey_Node0_action["The destination station number is
assigned to the destination hold
index key field"]:::main N_SetDestinationHoldIndexKey_Node0 -- Yes --> N_SetDestinationHoldIndexKey_Node0_action N_SetDestinationHoldIndexKey_Node0_action --> E_SetDestinationHoldIndexKey S_SetDestinationHoldIndexKey --> N_SetDestinationHoldIndexKey_Node0 N_SetDestinationHoldIndexKey_Node0 -- No --> E_SetDestinationHoldIndexKey
File: GCCUSIO.cbl
GIVEN:
A cargo record with destination hold status and a destination station number
WHEN:
The system processes destination hold index creation
THEN:
The destination station number is assigned to the destination hold index key field
β Consolidated Acceptance Criteria
- The system creates the destination hold index entry → the cargo CCN key is assigned to the destination hold cargo reference 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_SetCargoCCNforDestinationHold(["Start Step"])
E_SetCargoCCNforDestinationHold(["End Step"])
N_SetCargoCCNforDestinationHold_Node0{"The system creates the destination
hold index entry"}:::decision N_SetCargoCCNforDestinationHold_Node0_action["The cargo CCN key is assigned to
the destination hold cargo reference
field"]:::main N_SetCargoCCNforDestinationHold_Node0 -- Yes --> N_SetCargoCCNforDestinationHold_Node0_action N_SetCargoCCNforDestinationHold_Node0_action --> E_SetCargoCCNforDestinationHold S_SetCargoCCNforDestinationHold --> N_SetCargoCCNforDestinationHold_Node0 N_SetCargoCCNforDestinationHold_Node0 -- No --> E_SetCargoCCNforDestinationHold
hold index entry"}:::decision N_SetCargoCCNforDestinationHold_Node0_action["The cargo CCN key is assigned to
the destination hold cargo reference
field"]:::main N_SetCargoCCNforDestinationHold_Node0 -- Yes --> N_SetCargoCCNforDestinationHold_Node0_action N_SetCargoCCNforDestinationHold_Node0_action --> E_SetCargoCCNforDestinationHold S_SetCargoCCNforDestinationHold --> N_SetCargoCCNforDestinationHold_Node0 N_SetCargoCCNforDestinationHold_Node0 -- No --> E_SetCargoCCNforDestinationHold
File: GCCUSIO.cbl
GIVEN:
A cargo record with destination hold status and a valid CCN key
WHEN:
The system creates the destination hold index entry
THEN:
The cargo CCN key is assigned to the destination hold cargo reference field
β Consolidated Acceptance Criteria
- The hold status is HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA → border hold index processing is required and MC table lookup 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_IsBorderHoldStatus(["Start Step"])
E_IsBorderHoldStatus(["End Step"])
N_IsBorderHoldStatus_Node0{"The hold status is HOLD, HOLDPCS,
PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA"}:::decision N_IsBorderHoldStatus_Node0_action["Border hold index processing is
required and MC table lookup is
initiated"]:::main N_IsBorderHoldStatus_Node0 -- Yes --> N_IsBorderHoldStatus_Node0_action N_IsBorderHoldStatus_Node0_action --> E_IsBorderHoldStatus S_IsBorderHoldStatus --> N_IsBorderHoldStatus_Node0 N_IsBorderHoldStatus_Node0 -- No --> E_IsBorderHoldStatus
PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA"}:::decision N_IsBorderHoldStatus_Node0_action["Border hold index processing is
required and MC table lookup is
initiated"]:::main N_IsBorderHoldStatus_Node0 -- Yes --> N_IsBorderHoldStatus_Node0_action N_IsBorderHoldStatus_Node0_action --> E_IsBorderHoldStatus S_IsBorderHoldStatus --> N_IsBorderHoldStatus_Node0 N_IsBorderHoldStatus_Node0 -- No --> E_IsBorderHoldStatus
File: GCCUSIO.cbl
GIVEN:
Cargo with confirmed hold status conditions
WHEN:
The hold status is HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA
THEN:
- Border hold index processing is required
- Mc table lookup is initiated
β Consolidated Acceptance Criteria
- MC table lookup is performed using table ID 'MC' and cargo location ID as sequence ID → system attempts to retrieve corresponding station information from the MC 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_PerformMCTableLookup(["Start Step"])
E_PerformMCTableLookup(["End Step"])
N_PerformMCTableLookup_Node0{"MC table lookup is performed using
table ID MC and cargo location ID as
sequence ID"}:::decision N_PerformMCTableLookup_Node0_action["System attempts to retrieve
corresponding station information
from the MC reference table"]:::main N_PerformMCTableLookup_Node0 -- Yes --> N_PerformMCTableLookup_Node0_action N_PerformMCTableLookup_Node0_action --> E_PerformMCTableLookup S_PerformMCTableLookup --> N_PerformMCTableLookup_Node0 N_PerformMCTableLookup_Node0 -- No --> E_PerformMCTableLookup
table ID MC and cargo location ID as
sequence ID"}:::decision N_PerformMCTableLookup_Node0_action["System attempts to retrieve
corresponding station information
from the MC reference table"]:::main N_PerformMCTableLookup_Node0 -- Yes --> N_PerformMCTableLookup_Node0_action N_PerformMCTableLookup_Node0_action --> E_PerformMCTableLookup S_PerformMCTableLookup --> N_PerformMCTableLookup_Node0 N_PerformMCTableLookup_Node0 -- No --> E_PerformMCTableLookup
File: GCCUSIO.cbl
GIVEN:
Cargo requiring border hold index with location ID information
WHEN:
MC table lookup is performed using table ID 'MC' and cargo location ID as sequence ID
THEN:
System attempts to retrieve corresponding station information from the MC reference table
β Consolidated Acceptance Criteria
- Station information is available in the MC table segment → the MC station number is extracted and prepared for border hold index key 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_ExtractStationNumberfromMCTable(["Start Step"])
E_ExtractStationNumberfromMCTable(["End Step"])
N_ExtractStationNumberfromMCTable_Node0{"Station information is available in
the MC table segment"}:::decision N_ExtractStationNumberfromMCTable_Node0_action["The MC station number is extracted
and prepared for border hold index
key population"]:::main N_ExtractStationNumberfromMCTable_Node0 -- Yes --> N_ExtractStationNumberfromMCTable_Node0_action N_ExtractStationNumberfromMCTable_Node0_action --> E_ExtractStationNumberfromMCTable S_ExtractStationNumberfromMCTable --> N_ExtractStationNumberfromMCTable_Node0 N_ExtractStationNumberfromMCTable_Node0 -- No --> E_ExtractStationNumberfromMCTable
the MC table segment"}:::decision N_ExtractStationNumberfromMCTable_Node0_action["The MC station number is extracted
and prepared for border hold index
key population"]:::main N_ExtractStationNumberfromMCTable_Node0 -- Yes --> N_ExtractStationNumberfromMCTable_Node0_action N_ExtractStationNumberfromMCTable_Node0_action --> E_ExtractStationNumberfromMCTable S_ExtractStationNumberfromMCTable --> N_ExtractStationNumberfromMCTable_Node0 N_ExtractStationNumberfromMCTable_Node0 -- No --> E_ExtractStationNumberfromMCTable
File: GCCUSIO.cbl
GIVEN:
Successful MC table lookup with valid table segment data
WHEN:
Station information is available in the MC table segment
THEN:
- The mc station number is extracted
- Prepared for border hold index key population
β Consolidated Acceptance Criteria
- Border hold index requires population → the border hold index key is set with the extracted MC 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_SetBorderHoldIndexKey(["Start Step"])
E_SetBorderHoldIndexKey(["End Step"])
N_SetBorderHoldIndexKey_Node0{"Border hold index requires
population"}:::decision N_SetBorderHoldIndexKey_Node0_action["The border hold index key is set
with the extracted MC station number"]:::main N_SetBorderHoldIndexKey_Node0 -- Yes --> N_SetBorderHoldIndexKey_Node0_action N_SetBorderHoldIndexKey_Node0_action --> E_SetBorderHoldIndexKey S_SetBorderHoldIndexKey --> N_SetBorderHoldIndexKey_Node0 N_SetBorderHoldIndexKey_Node0 -- No --> E_SetBorderHoldIndexKey
population"}:::decision N_SetBorderHoldIndexKey_Node0_action["The border hold index key is set
with the extracted MC station number"]:::main N_SetBorderHoldIndexKey_Node0 -- Yes --> N_SetBorderHoldIndexKey_Node0_action N_SetBorderHoldIndexKey_Node0_action --> E_SetBorderHoldIndexKey S_SetBorderHoldIndexKey --> N_SetBorderHoldIndexKey_Node0 N_SetBorderHoldIndexKey_Node0 -- No --> E_SetBorderHoldIndexKey
File: GCCUSIO.cbl
GIVEN:
Valid border station number extracted from MC table
WHEN:
Border hold index requires population
THEN:
The border hold index key is set with the extracted MC station number
β Consolidated Acceptance Criteria
- Cargo CCN key is available for reference → the border hold cargo key is set with the cargo's US CCN key for 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_SetBorderHoldCargoKey(["Start Step"])
E_SetBorderHoldCargoKey(["End Step"])
N_SetBorderHoldCargoKey_Node0{"Cargo CCN key is available for
reference"}:::decision N_SetBorderHoldCargoKey_Node0_action["The border hold cargo key is set
with the cargo s US CCN key for
cross-reference"]:::main N_SetBorderHoldCargoKey_Node0 -- Yes --> N_SetBorderHoldCargoKey_Node0_action N_SetBorderHoldCargoKey_Node0_action --> E_SetBorderHoldCargoKey S_SetBorderHoldCargoKey --> N_SetBorderHoldCargoKey_Node0 N_SetBorderHoldCargoKey_Node0 -- No --> E_SetBorderHoldCargoKey
reference"}:::decision N_SetBorderHoldCargoKey_Node0_action["The border hold cargo key is set
with the cargo s US CCN key for
cross-reference"]:::main N_SetBorderHoldCargoKey_Node0 -- Yes --> N_SetBorderHoldCargoKey_Node0_action N_SetBorderHoldCargoKey_Node0_action --> E_SetBorderHoldCargoKey S_SetBorderHoldCargoKey --> N_SetBorderHoldCargoKey_Node0 N_SetBorderHoldCargoKey_Node0 -- No --> E_SetBorderHoldCargoKey
File: GCCUSIO.cbl
GIVEN:
Border hold index key has been populated with station number
WHEN:
Cargo CCN key is available for reference
THEN:
The border hold cargo key is set with the cargo's US CCN key for cross-reference
β Consolidated Acceptance Criteria
- The system retrieves the existing record and evaluates the new cargo data content → if the new data contains only spaces, low-values, or underscores, the system should delete the existing record; otherwise it should insert or replace the record based on whether 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_NewDataEmpty(["Start Step"])
E_NewDataEmpty(["End Step"])
N_NewDataEmpty_Node0{"The system retrieves the existing
record and evaluates the new cargo
data content"}:::decision N_NewDataEmpty_Node0_action["If the new data contains only
spaces, low-values, or underscores,
the system should delete the
existing record otherwise it should
insert or replace the record based
on whether it exists"]:::main N_NewDataEmpty_Node0 -- Yes --> N_NewDataEmpty_Node0_action N_NewDataEmpty_Node0_action --> E_NewDataEmpty S_NewDataEmpty --> N_NewDataEmpty_Node0 N_NewDataEmpty_Node0 -- No --> E_NewDataEmpty
record and evaluates the new cargo
data content"}:::decision N_NewDataEmpty_Node0_action["If the new data contains only
spaces, low-values, or underscores,
the system should delete the
existing record otherwise it should
insert or replace the record based
on whether it exists"]:::main N_NewDataEmpty_Node0 -- Yes --> N_NewDataEmpty_Node0_action N_NewDataEmpty_Node0_action --> E_NewDataEmpty S_NewDataEmpty --> N_NewDataEmpty_Node0 N_NewDataEmpty_Node0 -- No --> E_NewDataEmpty
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data segment (GCSA2RT) replace operation is requested
WHEN:
- The system retrieves the existing record
- Evaluates the new cargo data content
THEN:
If the new data contains only spaces, low-values, or underscores, the system should delete the existing record; otherwise it should insert or replace the record based on whether it exists
β Consolidated Acceptance Criteria
- If the cargo data content for insertion → the system should only proceed with insertion if the data is not all spaces, not all low-values, and not all underscores
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertDataValid(["Start Step"])
E_InsertDataValid(["End Step"])
N_InsertDataValid_Node0{"The system evaluates the cargo data
content for insertion"}:::decision N_InsertDataValid_Node0_action["The system should only proceed with
insertion if the data is not all
spaces, not all low-values, and not
all underscores"]:::main N_InsertDataValid_Node0 -- Yes --> N_InsertDataValid_Node0_action N_InsertDataValid_Node0_action --> E_InsertDataValid S_InsertDataValid --> N_InsertDataValid_Node0 N_InsertDataValid_Node0 -- No --> E_InsertDataValid
content for insertion"}:::decision N_InsertDataValid_Node0_action["The system should only proceed with
insertion if the data is not all
spaces, not all low-values, and not
all underscores"]:::main N_InsertDataValid_Node0 -- Yes --> N_InsertDataValid_Node0_action N_InsertDataValid_Node0_action --> E_InsertDataValid S_InsertDataValid --> N_InsertDataValid_Node0 N_InsertDataValid_Node0 -- No --> E_InsertDataValid
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data segment (GCSA2RT) insert operation is requested
WHEN:
The system evaluates the cargo data content for insertion
THEN:
The system should only proceed with insertion if the data is not all spaces, not all low-values, and not all underscores
β Consolidated Acceptance Criteria
- The system attempts to retrieve the existing record using GHU function → if the record exists (status code is not 'GE'), the system should proceed with deletion; if not found, the operation should continue 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_DeleteSecondaryRecord(["Start Step"])
E_DeleteSecondaryRecord(["End Step"])
N_DeleteSecondaryRecord_Node0{"The system attempts to retrieve the
existing record using GHU function"}:::decision N_DeleteSecondaryRecord_Node0_action["If the record exists status code is
not GE , the system should proceed
with deletion if not found, the
operation should continue without
error"]:::main N_DeleteSecondaryRecord_Node0 -- Yes --> N_DeleteSecondaryRecord_Node0_action N_DeleteSecondaryRecord_Node0_action --> E_DeleteSecondaryRecord S_DeleteSecondaryRecord --> N_DeleteSecondaryRecord_Node0 N_DeleteSecondaryRecord_Node0 -- No --> E_DeleteSecondaryRecord
existing record using GHU function"}:::decision N_DeleteSecondaryRecord_Node0_action["If the record exists status code is
not GE , the system should proceed
with deletion if not found, the
operation should continue without
error"]:::main N_DeleteSecondaryRecord_Node0 -- Yes --> N_DeleteSecondaryRecord_Node0_action N_DeleteSecondaryRecord_Node0_action --> E_DeleteSecondaryRecord S_DeleteSecondaryRecord --> N_DeleteSecondaryRecord_Node0 N_DeleteSecondaryRecord_Node0 -- No --> E_DeleteSecondaryRecord
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data segment (GCSA2RT) delete operation is requested
WHEN:
The system attempts to retrieve the existing record using GHU function
THEN:
If the record exists (status code is not 'GE'), the system should proceed with deletion; if not found, the operation should continue without error
β Consolidated Acceptance Criteria
- If the index type specified in the request → if SECN-KEY index is specified, use secondary key search; otherwise use primary key search with built secondary SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IndexType(["Start Step"])
E_IndexType(["End Step"])
N_IndexType_Node0{"The system evaluates the index type
specified in the request"}:::decision N_IndexType_Node0_action["If SECN-KEY index is specified, use
secondary key search otherwise use
primary key search with built
secondary SSA"]:::main N_IndexType_Node0 -- Yes --> N_IndexType_Node0_action N_IndexType_Node0_action --> E_IndexType S_IndexType --> N_IndexType_Node0 N_IndexType_Node0 -- No --> E_IndexType
specified in the request"}:::decision N_IndexType_Node0_action["If SECN-KEY index is specified, use
secondary key search otherwise use
primary key search with built
secondary SSA"]:::main N_IndexType_Node0 -- Yes --> N_IndexType_Node0_action N_IndexType_Node0_action --> E_IndexType S_IndexType --> N_IndexType_Node0 N_IndexType_Node0 -- No --> E_IndexType
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data retrieval operation is requested
WHEN:
The system evaluates the index type specified in the request
THEN:
If SECN-KEY index is specified, use secondary key search; otherwise use primary key search with built secondary SSA
β Consolidated Acceptance Criteria
- The system attempts to retrieve the existing record using GHU function with 'GE' accept status → if the status code equals 'GE', the record is not found and requires insertion; if status code is spaces, the record exists and can be replaced or deleted based on data content
- The status code is empty (spaces) → the system determines that the record was found and sets the found flag to true
- If the database status code → if status code equals spaces then record is found, otherwise record is not found
- The system checks the operation result status → the system proceeds with N9 extraction if the record exists, otherwise terminates N9 processing
- The retrieval operation completes → the system checks if the record was found successfully to determine N9 data availability
- The system checks the database status code returned from the operation → if the status code is spaces (blank), the record was found; if the status code is not spaces, the record was not found
- If the search results → if the status code is spaces, the record exists; otherwise, the record does not 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_RecordFound(["Start Step"])
E_RecordFound(["End Step"])
N_RecordFound_Node0{"The system attempts to retrieve the
existing record using GHU function
with GE accept status"}:::decision N_RecordFound_Node0_action["If the status code equals GE , the
record is not found and requires
insertion if status code is spaces,
the record exists and can be
replaced or deleted based on data
content"]:::main N_RecordFound_Node0 -- Yes --> N_RecordFound_Node0_action N_RecordFound_Node0_action --> E_RecordFound S_RecordFound --> N_RecordFound_Node0 N_RecordFound_Node1{"The status code is empty spaces"}:::decision N_RecordFound_Node1_action["The system determines that the
record was found and sets the found
flag to true"]:::main N_RecordFound_Node1 -- Yes --> N_RecordFound_Node1_action N_RecordFound_Node1_action --> E_RecordFound N_RecordFound_Node0 -- No --> N_RecordFound_Node1 N_RecordFound_Node2{"The system evaluates the database
status code"}:::decision N_RecordFound_Node2_action["If status code equals spaces then
record is found, otherwise record is
not found"]:::main N_RecordFound_Node2 -- Yes --> N_RecordFound_Node2_action N_RecordFound_Node2_action --> E_RecordFound N_RecordFound_Node1 -- No --> N_RecordFound_Node2 N_RecordFound_Node3{"The system checks the operation
result status"}:::decision N_RecordFound_Node3_action["The system proceeds with N9
extraction if the record exists,
otherwise terminates N9 processing"]:::main N_RecordFound_Node3 -- Yes --> N_RecordFound_Node3_action N_RecordFound_Node3_action --> E_RecordFound N_RecordFound_Node2 -- No --> N_RecordFound_Node3 N_RecordFound_Node4{"The retrieval operation completes"}:::decision N_RecordFound_Node4_action["The system checks if the record was
found successfully to determine N9
data availability"]:::main N_RecordFound_Node4 -- Yes --> N_RecordFound_Node4_action N_RecordFound_Node4_action --> E_RecordFound N_RecordFound_Node3 -- No --> N_RecordFound_Node4 N_RecordFound_Node5{"The system checks the database
status code returned from the
operation"}:::decision N_RecordFound_Node5_action["If the status code is spaces blank,
the record was found if the status
code is not spaces, the record was
not found"]:::main N_RecordFound_Node5 -- Yes --> N_RecordFound_Node5_action N_RecordFound_Node5_action --> E_RecordFound N_RecordFound_Node4 -- No --> N_RecordFound_Node5 N_RecordFound_Node6{"The system evaluates the search
results"}:::decision N_RecordFound_Node6_action["If the status code is spaces, the
record exists otherwise, the record
does not exist"]:::main N_RecordFound_Node6 -- Yes --> N_RecordFound_Node6_action N_RecordFound_Node6_action --> E_RecordFound N_RecordFound_Node5 -- No --> N_RecordFound_Node6 N_RecordFound_Node6 -- No --> E_RecordFound
existing record using GHU function
with GE accept status"}:::decision N_RecordFound_Node0_action["If the status code equals GE , the
record is not found and requires
insertion if status code is spaces,
the record exists and can be
replaced or deleted based on data
content"]:::main N_RecordFound_Node0 -- Yes --> N_RecordFound_Node0_action N_RecordFound_Node0_action --> E_RecordFound S_RecordFound --> N_RecordFound_Node0 N_RecordFound_Node1{"The status code is empty spaces"}:::decision N_RecordFound_Node1_action["The system determines that the
record was found and sets the found
flag to true"]:::main N_RecordFound_Node1 -- Yes --> N_RecordFound_Node1_action N_RecordFound_Node1_action --> E_RecordFound N_RecordFound_Node0 -- No --> N_RecordFound_Node1 N_RecordFound_Node2{"The system evaluates the database
status code"}:::decision N_RecordFound_Node2_action["If status code equals spaces then
record is found, otherwise record is
not found"]:::main N_RecordFound_Node2 -- Yes --> N_RecordFound_Node2_action N_RecordFound_Node2_action --> E_RecordFound N_RecordFound_Node1 -- No --> N_RecordFound_Node2 N_RecordFound_Node3{"The system checks the operation
result status"}:::decision N_RecordFound_Node3_action["The system proceeds with N9
extraction if the record exists,
otherwise terminates N9 processing"]:::main N_RecordFound_Node3 -- Yes --> N_RecordFound_Node3_action N_RecordFound_Node3_action --> E_RecordFound N_RecordFound_Node2 -- No --> N_RecordFound_Node3 N_RecordFound_Node4{"The retrieval operation completes"}:::decision N_RecordFound_Node4_action["The system checks if the record was
found successfully to determine N9
data availability"]:::main N_RecordFound_Node4 -- Yes --> N_RecordFound_Node4_action N_RecordFound_Node4_action --> E_RecordFound N_RecordFound_Node3 -- No --> N_RecordFound_Node4 N_RecordFound_Node5{"The system checks the database
status code returned from the
operation"}:::decision N_RecordFound_Node5_action["If the status code is spaces blank,
the record was found if the status
code is not spaces, the record was
not found"]:::main N_RecordFound_Node5 -- Yes --> N_RecordFound_Node5_action N_RecordFound_Node5_action --> E_RecordFound N_RecordFound_Node4 -- No --> N_RecordFound_Node5 N_RecordFound_Node6{"The system evaluates the search
results"}:::decision N_RecordFound_Node6_action["If the status code is spaces, the
record exists otherwise, the record
does not exist"]:::main N_RecordFound_Node6 -- Yes --> N_RecordFound_Node6_action N_RecordFound_Node6_action --> E_RecordFound N_RecordFound_Node5 -- No --> N_RecordFound_Node6 N_RecordFound_Node6 -- No --> E_RecordFound
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data replace operation is in progress
WHEN:
The system attempts to retrieve the existing record using GHU function with 'GE' accept status
THEN:
- If the status code equals 'ge', the record is not found
- Requires insertion; if status code is spaces, the record exists
- Can be replaced or deleted based on data content
File: GCCUSIO.cbl
GIVEN:
A database retrieval operation has been completed
WHEN:
The status code is empty (spaces)
THEN:
- The system determines that the record was found
- Sets the found flag to true
File: GCCUSIO.cbl
GIVEN:
A database call response for GCSB1RT record retrieval
WHEN:
The system evaluates the database status code
THEN:
If status code equals spaces then record is found, otherwise record is not found
File: GCCUSIO.cbl
GIVEN:
A database retrieval operation has been executed for secondary cargo record GCSUSS02
WHEN:
The system checks the operation result status
THEN:
The system proceeds with N9 extraction if the record exists, otherwise terminates N9 processing
File: GCCUSIO.cbl
GIVEN:
The system has attempted to retrieve the secondary cargo record with N9 data
WHEN:
The retrieval operation completes
THEN:
The system checks if the record was found successfully to determine N9 data availability
File: GCCUSIO.cbl
GIVEN:
A database retrieval operation for GCSB1RT index record has been executed
WHEN:
The system checks the database status code returned from the operation
THEN:
If the status code is spaces (blank), the record was found; if the status code is not spaces, the record was not found
File: GCCUSIO.cbl
GIVEN:
A database search for hold index records has been executed
WHEN:
The system evaluates the search results
THEN:
If the status code is spaces, the record exists; otherwise, the record does not exist
β Consolidated Acceptance Criteria
- The system retrieves the record using GHU function with 'GE' accept status → if the status code is spaces, the record exists and should be deleted; if status code is 'GE', the record does not exist and no deletion is 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_RecordExists(["Start Step"])
E_RecordExists(["End Step"])
N_RecordExists_Node0{"The system retrieves the record
using GHU function with GE accept
status"}:::decision N_RecordExists_Node0_action["If the status code is spaces, the
record exists and should be deleted
if status code is GE , the record
does not exist and no deletion is
needed"]:::main N_RecordExists_Node0 -- Yes --> N_RecordExists_Node0_action N_RecordExists_Node0_action --> E_RecordExists S_RecordExists --> N_RecordExists_Node0 N_RecordExists_Node0 -- No --> E_RecordExists
using GHU function with GE accept
status"}:::decision N_RecordExists_Node0_action["If the status code is spaces, the
record exists and should be deleted
if status code is GE , the record
does not exist and no deletion is
needed"]:::main N_RecordExists_Node0 -- Yes --> N_RecordExists_Node0_action N_RecordExists_Node0_action --> E_RecordExists S_RecordExists --> N_RecordExists_Node0 N_RecordExists_Node0 -- No --> E_RecordExists
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data delete operation is requested
WHEN:
The system retrieves the record using GHU function with 'GE' accept status
THEN:
- If the status code is spaces, the record exists
- Should be deleted; if status code is 'ge', the record does not exist
- No deletion is needed
β Consolidated Acceptance Criteria
- The function code is REPL (Replace) or DLET (Delete) → the system routes to retrieval processing to check for existing records before performing the 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_FunctionType(["Start Step"])
E_FunctionType(["End Step"])
N_FunctionType_Node0{"The function code is REPL Replace
or DLET Delete"}:::decision N_FunctionType_Node0_action["The system routes to retrieval
processing to check for existing
records before performing the
operation"]:::main N_FunctionType_Node0 -- Yes --> N_FunctionType_Node0_action N_FunctionType_Node0_action --> E_FunctionType S_FunctionType --> N_FunctionType_Node0 N_FunctionType_Node0 -- No --> E_FunctionType
or DLET Delete"}:::decision N_FunctionType_Node0_action["The system routes to retrieval
processing to check for existing
records before performing the
operation"]:::main N_FunctionType_Node0 -- Yes --> N_FunctionType_Node0_action N_FunctionType_Node0_action --> E_FunctionType S_FunctionType --> N_FunctionType_Node0 N_FunctionType_Node0 -- No --> E_FunctionType
File: GCCUSIO.cbl
GIVEN:
A secondary cargo data processing request is received
WHEN:
The function code is REPL (Replace) or DLET (Delete)
THEN:
The system routes to retrieval processing to check for existing records before performing the operation
β Consolidated Acceptance Criteria
- The system needs to verify record existence → the function code is temporarily changed to GHU (Get Hold Unique) for the existence 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_SetFunctiontoGHUforRetrieval(["Start Step"])
E_SetFunctiontoGHUforRetrieval(["End Step"])
N_SetFunctiontoGHUforRetrieval_Node0{"The system needs to verify record
existence"}:::decision N_SetFunctiontoGHUforRetrieval_Node0_action["The function code is temporarily
changed to GHU Get Hold Unique for
the existence check"]:::main N_SetFunctiontoGHUforRetrieval_Node0 -- Yes --> N_SetFunctiontoGHUforRetrieval_Node0_action N_SetFunctiontoGHUforRetrieval_Node0_action --> E_SetFunctiontoGHUforRetrieval S_SetFunctiontoGHUforRetrieval --> N_SetFunctiontoGHUforRetrieval_Node0 N_SetFunctiontoGHUforRetrieval_Node0 -- No --> E_SetFunctiontoGHUforRetrieval
existence"}:::decision N_SetFunctiontoGHUforRetrieval_Node0_action["The function code is temporarily
changed to GHU Get Hold Unique for
the existence check"]:::main N_SetFunctiontoGHUforRetrieval_Node0 -- Yes --> N_SetFunctiontoGHUforRetrieval_Node0_action N_SetFunctiontoGHUforRetrieval_Node0_action --> E_SetFunctiontoGHUforRetrieval S_SetFunctiontoGHUforRetrieval --> N_SetFunctiontoGHUforRetrieval_Node0 N_SetFunctiontoGHUforRetrieval_Node0 -- No --> E_SetFunctiontoGHUforRetrieval
File: GCCUSIO.cbl
GIVEN:
A REPL or DLET operation is requested for secondary cargo data
WHEN:
The system needs to verify record existence
THEN:
The function code is temporarily changed to GHU (Get Hold Unique) for the existence check
β Consolidated Acceptance Criteria
- The system prepares the database call parameters → the accept status is set to 'GE' to handle both found and not-found scenarios gracefully
- The system prepares to update an existing index record → the accept status must be set to 'GE' to indicate successful processing expectation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAcceptStatustoGE(["Start Step"])
E_SetAcceptStatustoGE(["End Step"])
N_SetAcceptStatustoGE_Node0{"The system prepares the database
call parameters"}:::decision N_SetAcceptStatustoGE_Node0_action["The accept status is set to GE to
handle both found and not-found
scenarios gracefully"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node1{"The system prepares to update an
existing index record"}:::decision N_SetAcceptStatustoGE_Node1_action["The accept status must be set to GE
to indicate successful processing
expectation"]:::main N_SetAcceptStatustoGE_Node1 -- Yes --> N_SetAcceptStatustoGE_Node1_action N_SetAcceptStatustoGE_Node1_action --> E_SetAcceptStatustoGE N_SetAcceptStatustoGE_Node0 -- No --> N_SetAcceptStatustoGE_Node1 N_SetAcceptStatustoGE_Node1 -- No --> E_SetAcceptStatustoGE
call parameters"}:::decision N_SetAcceptStatustoGE_Node0_action["The accept status is set to GE to
handle both found and not-found
scenarios gracefully"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node1{"The system prepares to update an
existing index record"}:::decision N_SetAcceptStatustoGE_Node1_action["The accept status must be set to GE
to indicate successful processing
expectation"]:::main N_SetAcceptStatustoGE_Node1 -- Yes --> N_SetAcceptStatustoGE_Node1_action N_SetAcceptStatustoGE_Node1_action --> E_SetAcceptStatustoGE N_SetAcceptStatustoGE_Node0 -- No --> N_SetAcceptStatustoGE_Node1 N_SetAcceptStatustoGE_Node1 -- No --> E_SetAcceptStatustoGE
File: GCCUSIO.cbl
GIVEN:
A secondary record existence check is being performed
WHEN:
The system prepares the database call parameters
THEN:
- The accept status is set to 'ge' to handle both found
- Not-found scenarios gracefully
File: GCCUSIO.cbl
GIVEN:
An index record update operation is being performed on GCSB1RT
WHEN:
The system prepares to update an existing index record
THEN:
The accept status must be set to 'GE' to indicate successful processing expectation
β Consolidated Acceptance Criteria
- The secondary record key is available and not empty → the system builds a qualified SSA (Segment Search Argument) using the key value for precise record 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_BuildSecondarySSAwithKey(["Start Step"])
E_BuildSecondarySSAwithKey(["End Step"])
N_BuildSecondarySSAwithKey_Node0{"The secondary record key is
available and not empty"}:::decision N_BuildSecondarySSAwithKey_Node0_action["The system builds a qualified SSA
Segment Search Argument using the
key value for precise record
location"]:::main N_BuildSecondarySSAwithKey_Node0 -- Yes --> N_BuildSecondarySSAwithKey_Node0_action N_BuildSecondarySSAwithKey_Node0_action --> E_BuildSecondarySSAwithKey S_BuildSecondarySSAwithKey --> N_BuildSecondarySSAwithKey_Node0 N_BuildSecondarySSAwithKey_Node0 -- No --> E_BuildSecondarySSAwithKey
available and not empty"}:::decision N_BuildSecondarySSAwithKey_Node0_action["The system builds a qualified SSA
Segment Search Argument using the
key value for precise record
location"]:::main N_BuildSecondarySSAwithKey_Node0 -- Yes --> N_BuildSecondarySSAwithKey_Node0_action N_BuildSecondarySSAwithKey_Node0_action --> E_BuildSecondarySSAwithKey S_BuildSecondarySSAwithKey --> N_BuildSecondarySSAwithKey_Node0 N_BuildSecondarySSAwithKey_Node0 -- No --> E_BuildSecondarySSAwithKey
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A secondary cargo record needs to be retrieved
WHEN:
- The secondary record key is available
- Not empty
THEN:
The system builds a qualified SSA (Segment Search Argument) using the key value for precise record location
β Consolidated Acceptance Criteria
- The database call is executed → the system attempts to retrieve the secondary cargo record and returns the 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_CallDatabasewithRetrievalParameters(["Start Step"])
E_CallDatabasewithRetrievalParameters(["End Step"])
N_CallDatabasewithRetrievalParameters_Node0{"The database call is executed"}:::decision
N_CallDatabasewithRetrievalParameters_Node0_action["The system attempts to retrieve the
secondary cargo record and returns
the operation status"]:::main N_CallDatabasewithRetrievalParameters_Node0 -- Yes --> N_CallDatabasewithRetrievalParameters_Node0_action N_CallDatabasewithRetrievalParameters_Node0_action --> E_CallDatabasewithRetrievalParameters S_CallDatabasewithRetrievalParameters --> N_CallDatabasewithRetrievalParameters_Node0 N_CallDatabasewithRetrievalParameters_Node0 -- No --> E_CallDatabasewithRetrievalParameters
secondary cargo record and returns
the operation status"]:::main N_CallDatabasewithRetrievalParameters_Node0 -- Yes --> N_CallDatabasewithRetrievalParameters_Node0_action N_CallDatabasewithRetrievalParameters_Node0_action --> E_CallDatabasewithRetrievalParameters S_CallDatabasewithRetrievalParameters --> N_CallDatabasewithRetrievalParameters_Node0 N_CallDatabasewithRetrievalParameters_Node0 -- No --> E_CallDatabasewithRetrievalParameters
File: GCCUSIO.cbl
GIVEN:
The retrieval parameters are properly configured with function code, PCB, and SSA
WHEN:
The database call is executed
THEN:
- The system attempts to retrieve the secondary cargo record
- Returns the operation status
β Consolidated Acceptance Criteria
- The status code is 'GE' (record not found) → the system sets the not-found flag and prepares for insert operation if data is 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_SetNotFoundFlagNoRecord(["Start Step"])
E_SetNotFoundFlagNoRecord(["End Step"])
N_SetNotFoundFlagNoRecord_Node0{"The status code is GE record not
found"}:::decision N_SetNotFoundFlagNoRecord_Node0_action["The system sets the not-found flag
and prepares for insert operation if
data is provided"]:::main N_SetNotFoundFlagNoRecord_Node0 -- Yes --> N_SetNotFoundFlagNoRecord_Node0_action N_SetNotFoundFlagNoRecord_Node0_action --> E_SetNotFoundFlagNoRecord S_SetNotFoundFlagNoRecord --> N_SetNotFoundFlagNoRecord_Node0 N_SetNotFoundFlagNoRecord_Node0 -- No --> E_SetNotFoundFlagNoRecord
found"}:::decision N_SetNotFoundFlagNoRecord_Node0_action["The system sets the not-found flag
and prepares for insert operation if
data is provided"]:::main N_SetNotFoundFlagNoRecord_Node0 -- Yes --> N_SetNotFoundFlagNoRecord_Node0_action N_SetNotFoundFlagNoRecord_Node0_action --> E_SetNotFoundFlagNoRecord S_SetNotFoundFlagNoRecord --> N_SetNotFoundFlagNoRecord_Node0 N_SetNotFoundFlagNoRecord_Node0 -- No --> E_SetNotFoundFlagNoRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A database retrieval operation has been completed
WHEN:
The status code is 'GE' (record not found)
THEN:
- The system sets the not-found flag
- Prepares for insert operation if data is provided
β Consolidated Acceptance Criteria
- The data content is all spaces, low-values, or underscore characters → the system treats this as empty data and prepares for delete operation if record exists, or skips operation if record doesn't 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_DataContentCheck(["Start Step"])
E_DataContentCheck(["End Step"])
N_DataContentCheck_Node0{"The data content is all spaces,
low-values, or underscore characters"}:::decision N_DataContentCheck_Node0_action["The system treats this as empty
data and prepares for delete
operation if record exists, or skips
operation if record doesn t exist"]:::main N_DataContentCheck_Node0 -- Yes --> N_DataContentCheck_Node0_action N_DataContentCheck_Node0_action --> E_DataContentCheck S_DataContentCheck --> N_DataContentCheck_Node0 N_DataContentCheck_Node0 -- No --> E_DataContentCheck
low-values, or underscore characters"}:::decision N_DataContentCheck_Node0_action["The system treats this as empty
data and prepares for delete
operation if record exists, or skips
operation if record doesn t exist"]:::main N_DataContentCheck_Node0 -- Yes --> N_DataContentCheck_Node0_action N_DataContentCheck_Node0_action --> E_DataContentCheck S_DataContentCheck --> N_DataContentCheck_Node0 N_DataContentCheck_Node0 -- No --> E_DataContentCheck
File: GCCUSIO.cbl
GIVEN:
Secondary cargo data has been prepared for processing
WHEN:
The data content is all spaces, low-values, or underscore characters
THEN:
- The system treats this as empty data
- Prepares for delete operation if record exists, or skips operation if record doesn't exist
β Consolidated Acceptance Criteria
- The operation type is REPL and data is not empty → the system prepares to replace the existing record with the new data using REPL function 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_PrepareforReplaceOperation(["Start Step"])
E_PrepareforReplaceOperation(["End Step"])
N_PrepareforReplaceOperation_Node0{"The operation type is REPL and data
is not empty"}:::decision N_PrepareforReplaceOperation_Node0_action["The system prepares to replace the
existing record with the new data
using REPL function code"]:::main N_PrepareforReplaceOperation_Node0 -- Yes --> N_PrepareforReplaceOperation_Node0_action N_PrepareforReplaceOperation_Node0_action --> E_PrepareforReplaceOperation S_PrepareforReplaceOperation --> N_PrepareforReplaceOperation_Node0 N_PrepareforReplaceOperation_Node0 -- No --> E_PrepareforReplaceOperation
is not empty"}:::decision N_PrepareforReplaceOperation_Node0_action["The system prepares to replace the
existing record with the new data
using REPL function code"]:::main N_PrepareforReplaceOperation_Node0 -- Yes --> N_PrepareforReplaceOperation_Node0_action N_PrepareforReplaceOperation_Node0_action --> E_PrepareforReplaceOperation S_PrepareforReplaceOperation --> N_PrepareforReplaceOperation_Node0 N_PrepareforReplaceOperation_Node0 -- No --> E_PrepareforReplaceOperation
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
An existing secondary cargo record is found and new data contains meaningful content
WHEN:
- The operation type is repl
- Data is not empty
THEN:
The system prepares to replace the existing record with the new data using REPL function code
β Consolidated Acceptance Criteria
- The operation type is REPL and data is not empty → the system changes the function code to ISRT to insert a new record with the provided 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_PrepareforInsertOperation(["Start Step"])
E_PrepareforInsertOperation(["End Step"])
N_PrepareforInsertOperation_Node0{"The operation type is REPL and data
is not empty"}:::decision N_PrepareforInsertOperation_Node0_action["The system changes the function
code to ISRT to insert a new record
with the provided data"]:::main N_PrepareforInsertOperation_Node0 -- Yes --> N_PrepareforInsertOperation_Node0_action N_PrepareforInsertOperation_Node0_action --> E_PrepareforInsertOperation S_PrepareforInsertOperation --> N_PrepareforInsertOperation_Node0 N_PrepareforInsertOperation_Node0 -- No --> E_PrepareforInsertOperation
is not empty"}:::decision N_PrepareforInsertOperation_Node0_action["The system changes the function
code to ISRT to insert a new record
with the provided data"]:::main N_PrepareforInsertOperation_Node0 -- Yes --> N_PrepareforInsertOperation_Node0_action N_PrepareforInsertOperation_Node0_action --> E_PrepareforInsertOperation S_PrepareforInsertOperation --> N_PrepareforInsertOperation_Node0 N_PrepareforInsertOperation_Node0 -- No --> E_PrepareforInsertOperation
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
No existing secondary cargo record is found and new data contains meaningful content
WHEN:
- The operation type is repl
- Data is not empty
THEN:
The system changes the function code to ISRT to insert a new record with the provided data
β Consolidated Acceptance Criteria
- The data content is empty (spaces, low-values, or underscores) or function code is DLET → the system prepares to delete the existing record using DLET function 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_PrepareforDeleteOperation(["Start Step"])
E_PrepareforDeleteOperation(["End Step"])
N_PrepareforDeleteOperation_Node0{"The data content is empty spaces,
low-values, or underscores or
function code is DLET"}:::decision N_PrepareforDeleteOperation_Node0_action["The system prepares to delete the
existing record using DLET function
code"]:::main N_PrepareforDeleteOperation_Node0 -- Yes --> N_PrepareforDeleteOperation_Node0_action N_PrepareforDeleteOperation_Node0_action --> E_PrepareforDeleteOperation S_PrepareforDeleteOperation --> N_PrepareforDeleteOperation_Node0 N_PrepareforDeleteOperation_Node0 -- No --> E_PrepareforDeleteOperation
low-values, or underscores or
function code is DLET"}:::decision N_PrepareforDeleteOperation_Node0_action["The system prepares to delete the
existing record using DLET function
code"]:::main N_PrepareforDeleteOperation_Node0 -- Yes --> N_PrepareforDeleteOperation_Node0_action N_PrepareforDeleteOperation_Node0_action --> E_PrepareforDeleteOperation S_PrepareforDeleteOperation --> N_PrepareforDeleteOperation_Node0 N_PrepareforDeleteOperation_Node0 -- No --> E_PrepareforDeleteOperation
File: GCCUSIO.cbl
GIVEN:
An existing secondary cargo record is found and either new data is empty or delete operation is explicitly requested
WHEN:
The data content is empty (spaces, low-values, or underscores) or function code is DLET
THEN:
The system prepares to delete the existing record using DLET function code
β Consolidated Acceptance Criteria
- The cargo data is not all spaces, not all low-values, and not all underscore characters → the system proceeds with the insert operation using the provided meaningful 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_ContinuewithRequestedOperation(["Start Step"])
E_ContinuewithRequestedOperation(["End Step"])
N_ContinuewithRequestedOperation_Node0{"The cargo data is not all spaces,
not all low-values, and not all
underscore characters"}:::decision N_ContinuewithRequestedOperation_Node0_action["The system proceeds with the insert
operation using the provided
meaningful data"]:::main N_ContinuewithRequestedOperation_Node0 -- Yes --> N_ContinuewithRequestedOperation_Node0_action N_ContinuewithRequestedOperation_Node0_action --> E_ContinuewithRequestedOperation S_ContinuewithRequestedOperation --> N_ContinuewithRequestedOperation_Node0 N_ContinuewithRequestedOperation_Node0 -- No --> E_ContinuewithRequestedOperation
not all low-values, and not all
underscore characters"}:::decision N_ContinuewithRequestedOperation_Node0_action["The system proceeds with the insert
operation using the provided
meaningful data"]:::main N_ContinuewithRequestedOperation_Node0 -- Yes --> N_ContinuewithRequestedOperation_Node0_action N_ContinuewithRequestedOperation_Node0_action --> E_ContinuewithRequestedOperation S_ContinuewithRequestedOperation --> N_ContinuewithRequestedOperation_Node0 N_ContinuewithRequestedOperation_Node0 -- No --> E_ContinuewithRequestedOperation
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
An insert operation is requested for secondary cargo data
WHEN:
The cargo data is not all spaces, not all low-values, and not all underscore characters
THEN:
The system proceeds with the insert operation using the provided meaningful data
β Consolidated Acceptance Criteria
- The function code is GU (Get Unique) or GN (Get Next) AND the secondary key (GCSUSS00-KEY) is empty spaces → set error code '0012' and error message 'SECN-KEY EQUAL SPACES' to indicate invalid 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_IsFunctionGUorGN(["Start Step"])
E_IsFunctionGUorGN(["End Step"])
N_IsFunctionGUorGN_Node0{"The function code is GU Get Unique
or GN Get Next AND the secondary key
GCSUSS00-KEY is empty spaces"}:::decision N_IsFunctionGUorGN_Node0_action["Set error code 0012 and error
message SECN-KEY EQUAL SPACES to
indicate invalid parameters"]:::main N_IsFunctionGUorGN_Node0 -- Yes --> N_IsFunctionGUorGN_Node0_action N_IsFunctionGUorGN_Node0_action --> E_IsFunctionGUorGN S_IsFunctionGUorGN --> N_IsFunctionGUorGN_Node0 N_IsFunctionGUorGN_Node0 -- No --> E_IsFunctionGUorGN
or GN Get Next AND the secondary key
GCSUSS00-KEY is empty spaces"}:::decision N_IsFunctionGUorGN_Node0_action["Set error code 0012 and error
message SECN-KEY EQUAL SPACES to
indicate invalid parameters"]:::main N_IsFunctionGUorGN_Node0 -- Yes --> N_IsFunctionGUorGN_Node0_action N_IsFunctionGUorGN_Node0_action --> E_IsFunctionGUorGN S_IsFunctionGUorGN --> N_IsFunctionGUorGN_Node0 N_IsFunctionGUorGN_Node0 -- No --> E_IsFunctionGUorGN
File: GCCUSIO.cbl
GIVEN:
A request to build secondary SSA parameters for database access
WHEN:
The function code is GU (Get Unique) or GN (Get Next) AND the secondary key (GCSUSS00-KEY) is empty spaces
THEN:
Set error code '0012' and error message 'SECN-KEY EQUAL SPACES' to indicate invalid parameters
β Consolidated Acceptance Criteria
- Building SSA parameters for secondary segment access → map the secondary key (GCSUSS00-KEY) to the database search value (GCA2-KEY-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_MapSecondaryKeytoSearchValue(["Start Step"])
E_MapSecondaryKeytoSearchValue(["End Step"])
N_MapSecondaryKeytoSearchValue_Node0{"Building SSA parameters for
secondary segment access"}:::decision N_MapSecondaryKeytoSearchValue_Node0_action["Map the secondary key GCSUSS00-KEY
to the database search value
GCA2-KEY-VALUE"]:::main N_MapSecondaryKeytoSearchValue_Node0 -- Yes --> N_MapSecondaryKeytoSearchValue_Node0_action N_MapSecondaryKeytoSearchValue_Node0_action --> E_MapSecondaryKeytoSearchValue S_MapSecondaryKeytoSearchValue --> N_MapSecondaryKeytoSearchValue_Node0 N_MapSecondaryKeytoSearchValue_Node0 -- No --> E_MapSecondaryKeytoSearchValue
secondary segment access"}:::decision N_MapSecondaryKeytoSearchValue_Node0_action["Map the secondary key GCSUSS00-KEY
to the database search value
GCA2-KEY-VALUE"]:::main N_MapSecondaryKeytoSearchValue_Node0 -- Yes --> N_MapSecondaryKeytoSearchValue_Node0_action N_MapSecondaryKeytoSearchValue_Node0_action --> E_MapSecondaryKeytoSearchValue S_MapSecondaryKeytoSearchValue --> N_MapSecondaryKeytoSearchValue_Node0 N_MapSecondaryKeytoSearchValue_Node0 -- No --> E_MapSecondaryKeytoSearchValue
File: GCCUSIO.cbl
GIVEN:
A valid secondary key is provided for database access
WHEN:
Building SSA parameters for secondary segment access
THEN:
Map the secondary key (GCSUSS00-KEY) to the database search value (GCA2-KEY-VALUE)
β Consolidated Acceptance Criteria
- Configuring database access parameters → set the PCB (Program Communication Block) to GCA2-PCB for secondary database path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBPathforSecondaryDatabase(["Start Step"])
E_SetPCBPathforSecondaryDatabase(["End Step"])
N_SetPCBPathforSecondaryDatabase_Node0{"Configuring database access
parameters"}:::decision N_SetPCBPathforSecondaryDatabase_Node0_action["Set the PCB Program Communication
Block to GCA2-PCB for secondary
database path"]:::main N_SetPCBPathforSecondaryDatabase_Node0 -- Yes --> N_SetPCBPathforSecondaryDatabase_Node0_action N_SetPCBPathforSecondaryDatabase_Node0_action --> E_SetPCBPathforSecondaryDatabase S_SetPCBPathforSecondaryDatabase --> N_SetPCBPathforSecondaryDatabase_Node0 N_SetPCBPathforSecondaryDatabase_Node0 -- No --> E_SetPCBPathforSecondaryDatabase
parameters"}:::decision N_SetPCBPathforSecondaryDatabase_Node0_action["Set the PCB Program Communication
Block to GCA2-PCB for secondary
database path"]:::main N_SetPCBPathforSecondaryDatabase_Node0 -- Yes --> N_SetPCBPathforSecondaryDatabase_Node0_action N_SetPCBPathforSecondaryDatabase_Node0_action --> E_SetPCBPathforSecondaryDatabase S_SetPCBPathforSecondaryDatabase --> N_SetPCBPathforSecondaryDatabase_Node0 N_SetPCBPathforSecondaryDatabase_Node0 -- No --> E_SetPCBPathforSecondaryDatabase
File: GCCUSIO.cbl
GIVEN:
Secondary key mapping is completed successfully
WHEN:
Configuring database access parameters
THEN:
Set the PCB (Program Communication Block) to GCA2-PCB for secondary database path
β Consolidated Acceptance Criteria
- Finalizing SSA parameters for database access → set the SSA statement to GCA2-SSA-QUAL (qualified SSA) for targeted 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_ConstructQualifiedSSAStatement(["Start Step"])
E_ConstructQualifiedSSAStatement(["End Step"])
N_ConstructQualifiedSSAStatement_Node0{"Finalizing SSA parameters for
database access"}:::decision N_ConstructQualifiedSSAStatement_Node0_action["Set the SSA statement to
GCA2-SSA-QUAL qualified SSA for
targeted record retrieval"]:::main N_ConstructQualifiedSSAStatement_Node0 -- Yes --> N_ConstructQualifiedSSAStatement_Node0_action N_ConstructQualifiedSSAStatement_Node0_action --> E_ConstructQualifiedSSAStatement S_ConstructQualifiedSSAStatement --> N_ConstructQualifiedSSAStatement_Node0 N_ConstructQualifiedSSAStatement_Node0 -- No --> E_ConstructQualifiedSSAStatement
database access"}:::decision N_ConstructQualifiedSSAStatement_Node0_action["Set the SSA statement to
GCA2-SSA-QUAL qualified SSA for
targeted record retrieval"]:::main N_ConstructQualifiedSSAStatement_Node0 -- Yes --> N_ConstructQualifiedSSAStatement_Node0_action N_ConstructQualifiedSSAStatement_Node0_action --> E_ConstructQualifiedSSAStatement S_ConstructQualifiedSSAStatement --> N_ConstructQualifiedSSAStatement_Node0 N_ConstructQualifiedSSAStatement_Node0 -- No --> E_ConstructQualifiedSSAStatement
File: GCCUSIO.cbl
GIVEN:
Database path is configured and search key is mapped
WHEN:
Finalizing SSA parameters for database access
THEN:
Set the SSA statement to GCA2-SSA-QUAL (qualified SSA) for targeted record retrieval
β Consolidated Acceptance Criteria
- The system builds SSA parameters for database access → the system creates a qualified SSA using the CCN key value for targeted 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_SetQualifiedSSAwithCCNKey(["Start Step"])
E_SetQualifiedSSAwithCCNKey(["End Step"])
N_SetQualifiedSSAwithCCNKey_Node0{"The system builds SSA parameters
for database access"}:::decision N_SetQualifiedSSAwithCCNKey_Node0_action["The system creates a qualified SSA
using the CCN key value for targeted
record retrieval"]:::main N_SetQualifiedSSAwithCCNKey_Node0 -- Yes --> N_SetQualifiedSSAwithCCNKey_Node0_action N_SetQualifiedSSAwithCCNKey_Node0_action --> E_SetQualifiedSSAwithCCNKey S_SetQualifiedSSAwithCCNKey --> N_SetQualifiedSSAwithCCNKey_Node0 N_SetQualifiedSSAwithCCNKey_Node0 -- No --> E_SetQualifiedSSAwithCCNKey
for database access"}:::decision N_SetQualifiedSSAwithCCNKey_Node0_action["The system creates a qualified SSA
using the CCN key value for targeted
record retrieval"]:::main N_SetQualifiedSSAwithCCNKey_Node0 -- Yes --> N_SetQualifiedSSAwithCCNKey_Node0_action N_SetQualifiedSSAwithCCNKey_Node0_action --> E_SetQualifiedSSAwithCCNKey S_SetQualifiedSSAwithCCNKey --> N_SetQualifiedSSAwithCCNKey_Node0 N_SetQualifiedSSAwithCCNKey_Node0 -- No --> E_SetQualifiedSSAwithCCNKey
File: GCCUSIO.cbl
GIVEN:
A primary cargo segment (GCSUSRT) operation is being processed AND the CCN key field contains a valid value (not spaces)
WHEN:
The system builds SSA parameters for database access
THEN:
The system creates a qualified SSA using the CCN key value for targeted record retrieval
β Consolidated Acceptance Criteria
- The system builds SSA parameters for database access → the system creates an unqualified SSA for broader record access without key constraints
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUnqualifiedSSA(["Start Step"])
E_SetUnqualifiedSSA(["End Step"])
N_SetUnqualifiedSSA_Node0{"The system builds SSA parameters
for database access"}:::decision N_SetUnqualifiedSSA_Node0_action["The system creates an unqualified
SSA for broader record access
without key constraints"]:::main N_SetUnqualifiedSSA_Node0 -- Yes --> N_SetUnqualifiedSSA_Node0_action N_SetUnqualifiedSSA_Node0_action --> E_SetUnqualifiedSSA S_SetUnqualifiedSSA --> N_SetUnqualifiedSSA_Node0 N_SetUnqualifiedSSA_Node0 -- No --> E_SetUnqualifiedSSA
for database access"}:::decision N_SetUnqualifiedSSA_Node0_action["The system creates an unqualified
SSA for broader record access
without key constraints"]:::main N_SetUnqualifiedSSA_Node0 -- Yes --> N_SetUnqualifiedSSA_Node0_action N_SetUnqualifiedSSA_Node0_action --> E_SetUnqualifiedSSA S_SetUnqualifiedSSA --> N_SetUnqualifiedSSA_Node0 N_SetUnqualifiedSSA_Node0 -- No --> E_SetUnqualifiedSSA
File: GCCUSIO.cbl
GIVEN:
A primary cargo segment (GCSUSRT) operation is being processed AND the CCN key field is empty or contains only spaces
WHEN:
The system builds SSA parameters for database access
THEN:
The system creates an unqualified SSA for broader record access without key constraints
β Consolidated Acceptance Criteria
- The system builds SSA parameters for database access → the system creates a qualified SSA using the secondary key value for targeted 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_SetQualifiedSSAwithSecondaryKey(["Start Step"])
E_SetQualifiedSSAwithSecondaryKey(["End Step"])
N_SetQualifiedSSAwithSecondaryKey_Node0{"The system builds SSA parameters
for database access"}:::decision N_SetQualifiedSSAwithSecondaryKey_Node0_action["The system creates a qualified SSA
using the secondary key value for
targeted record retrieval"]:::main N_SetQualifiedSSAwithSecondaryKey_Node0 -- Yes --> N_SetQualifiedSSAwithSecondaryKey_Node0_action N_SetQualifiedSSAwithSecondaryKey_Node0_action --> E_SetQualifiedSSAwithSecondaryKey S_SetQualifiedSSAwithSecondaryKey --> N_SetQualifiedSSAwithSecondaryKey_Node0 N_SetQualifiedSSAwithSecondaryKey_Node0 -- No --> E_SetQualifiedSSAwithSecondaryKey
for database access"}:::decision N_SetQualifiedSSAwithSecondaryKey_Node0_action["The system creates a qualified SSA
using the secondary key value for
targeted record retrieval"]:::main N_SetQualifiedSSAwithSecondaryKey_Node0 -- Yes --> N_SetQualifiedSSAwithSecondaryKey_Node0_action N_SetQualifiedSSAwithSecondaryKey_Node0_action --> E_SetQualifiedSSAwithSecondaryKey S_SetQualifiedSSAwithSecondaryKey --> N_SetQualifiedSSAwithSecondaryKey_Node0 N_SetQualifiedSSAwithSecondaryKey_Node0 -- No --> E_SetQualifiedSSAwithSecondaryKey
File: GCCUSIO.cbl
GIVEN:
A secondary cargo segment (GCSA2RT) operation is being processed AND the secondary key field contains a valid value (not spaces)
WHEN:
The system builds SSA parameters for database access
THEN:
The system creates a qualified SSA using the secondary key value for targeted record retrieval
β Consolidated Acceptance Criteria
- The system attempts to build SSA parameters for database access → the system returns error code '0012' with message 'SECN-KEY EQUAL SPACES'
- The system attempts to build SSA parameters for database access → the system returns error code '0012' with message 'GCSA8RT-KEY EQUAL 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_ReturnErrorKeyRequired(["Start Step"])
E_ReturnErrorKeyRequired(["End Step"])
N_ReturnErrorKeyRequired_Node0{"The system attempts to build SSA
parameters for database access"}:::decision N_ReturnErrorKeyRequired_Node0_action["The system returns error code 0012
with message SECN-KEY EQUAL SPACES"]:::main N_ReturnErrorKeyRequired_Node0 -- Yes --> N_ReturnErrorKeyRequired_Node0_action N_ReturnErrorKeyRequired_Node0_action --> E_ReturnErrorKeyRequired S_ReturnErrorKeyRequired --> N_ReturnErrorKeyRequired_Node0 N_ReturnErrorKeyRequired_Node1{"The system attempts to build SSA
parameters for database access"}:::decision N_ReturnErrorKeyRequired_Node1_action["The system returns error code 0012
with message GCSA8RT-KEY EQUAL
SPACES"]:::main N_ReturnErrorKeyRequired_Node1 -- Yes --> N_ReturnErrorKeyRequired_Node1_action N_ReturnErrorKeyRequired_Node1_action --> E_ReturnErrorKeyRequired N_ReturnErrorKeyRequired_Node0 -- No --> N_ReturnErrorKeyRequired_Node1 N_ReturnErrorKeyRequired_Node1 -- No --> E_ReturnErrorKeyRequired
parameters for database access"}:::decision N_ReturnErrorKeyRequired_Node0_action["The system returns error code 0012
with message SECN-KEY EQUAL SPACES"]:::main N_ReturnErrorKeyRequired_Node0 -- Yes --> N_ReturnErrorKeyRequired_Node0_action N_ReturnErrorKeyRequired_Node0_action --> E_ReturnErrorKeyRequired S_ReturnErrorKeyRequired --> N_ReturnErrorKeyRequired_Node0 N_ReturnErrorKeyRequired_Node1{"The system attempts to build SSA
parameters for database access"}:::decision N_ReturnErrorKeyRequired_Node1_action["The system returns error code 0012
with message GCSA8RT-KEY EQUAL
SPACES"]:::main N_ReturnErrorKeyRequired_Node1 -- Yes --> N_ReturnErrorKeyRequired_Node1_action N_ReturnErrorKeyRequired_Node1_action --> E_ReturnErrorKeyRequired N_ReturnErrorKeyRequired_Node0 -- No --> N_ReturnErrorKeyRequired_Node1 N_ReturnErrorKeyRequired_Node1 -- No --> E_ReturnErrorKeyRequired
File: GCCUSIO.cbl
GIVEN:
A secondary cargo segment (GCSA2RT) retrieval operation (GU or GN) is being processed AND the secondary key field is empty or contains only spaces
WHEN:
The system attempts to build SSA parameters for database access
THEN:
The system returns error code '0012' with message 'SECN-KEY EQUAL SPACES'
File: GCCUSIO.cbl
GIVEN:
A message segment (GCSA8RT) retrieval operation (GU or GN) is being processed AND the message key field is empty or contains only spaces
WHEN:
The system attempts to build SSA parameters for database access
THEN:
The system returns error code '0012' with message 'GCSA8RT-KEY EQUAL SPACES'
β Consolidated Acceptance Criteria
- The system builds SSA parameters for database access → the system creates a qualified SSA using the message key value for targeted 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_SetQualifiedSSAwithMessageKey(["Start Step"])
E_SetQualifiedSSAwithMessageKey(["End Step"])
N_SetQualifiedSSAwithMessageKey_Node0{"The system builds SSA parameters
for database access"}:::decision N_SetQualifiedSSAwithMessageKey_Node0_action["The system creates a qualified SSA
using the message key value for
targeted record retrieval"]:::main N_SetQualifiedSSAwithMessageKey_Node0 -- Yes --> N_SetQualifiedSSAwithMessageKey_Node0_action N_SetQualifiedSSAwithMessageKey_Node0_action --> E_SetQualifiedSSAwithMessageKey S_SetQualifiedSSAwithMessageKey --> N_SetQualifiedSSAwithMessageKey_Node0 N_SetQualifiedSSAwithMessageKey_Node0 -- No --> E_SetQualifiedSSAwithMessageKey
for database access"}:::decision N_SetQualifiedSSAwithMessageKey_Node0_action["The system creates a qualified SSA
using the message key value for
targeted record retrieval"]:::main N_SetQualifiedSSAwithMessageKey_Node0 -- Yes --> N_SetQualifiedSSAwithMessageKey_Node0_action N_SetQualifiedSSAwithMessageKey_Node0_action --> E_SetQualifiedSSAwithMessageKey S_SetQualifiedSSAwithMessageKey --> N_SetQualifiedSSAwithMessageKey_Node0 N_SetQualifiedSSAwithMessageKey_Node0 -- No --> E_SetQualifiedSSAwithMessageKey
File: GCCUSIO.cbl
GIVEN:
A message segment (GCSA8RT) operation is being processed AND the message key field contains a valid value (not spaces)
WHEN:
The system builds SSA parameters for database access
THEN:
The system creates a qualified SSA using the message key value for targeted record retrieval
β Consolidated Acceptance Criteria
- The system builds SSA parameters for database access → the system assigns the table key value and creates a qualified SSA for targeted table 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_SetQualifiedSSAwithTableKey(["Start Step"])
E_SetQualifiedSSAwithTableKey(["End Step"])
N_SetQualifiedSSAwithTableKey_Node0{"The system builds SSA parameters
for database access"}:::decision N_SetQualifiedSSAwithTableKey_Node0_action["The system assigns the table key
value and creates a qualified SSA
for targeted table record retrieval"]:::main N_SetQualifiedSSAwithTableKey_Node0 -- Yes --> N_SetQualifiedSSAwithTableKey_Node0_action N_SetQualifiedSSAwithTableKey_Node0_action --> E_SetQualifiedSSAwithTableKey S_SetQualifiedSSAwithTableKey --> N_SetQualifiedSSAwithTableKey_Node0 N_SetQualifiedSSAwithTableKey_Node0 -- No --> E_SetQualifiedSSAwithTableKey
for database access"}:::decision N_SetQualifiedSSAwithTableKey_Node0_action["The system assigns the table key
value and creates a qualified SSA
for targeted table record retrieval"]:::main N_SetQualifiedSSAwithTableKey_Node0 -- Yes --> N_SetQualifiedSSAwithTableKey_Node0_action N_SetQualifiedSSAwithTableKey_Node0_action --> E_SetQualifiedSSAwithTableKey S_SetQualifiedSSAwithTableKey --> N_SetQualifiedSSAwithTableKey_Node0 N_SetQualifiedSSAwithTableKey_Node0 -- No --> E_SetQualifiedSSAwithTableKey
File: GCCUSIO.cbl
GIVEN:
A table segment (GCST2RT) operation is being processed
WHEN:
The system builds SSA parameters for database access
THEN:
- The system assigns the table key value
- Creates a qualified ssa for targeted table record retrieval
β Consolidated Acceptance Criteria
- The function code is GU (Get Unique) or GN (Get Next) and the primary key US-CCN-KEY contains spaces → the system uses unqualified SSA for browse operation and sets primary PCB for database access
- The primary key US-CCN-KEY is not spaces and contains a valid cargo control number → the system uses qualified SSA with the primary key value and sets primary PCB for targeted database access
- The function code is not GU (Get Unique) or GN (Get Next) but is ISRT (Insert), REPL (Replace), DLET (Delete), or ZAP → the system proceeds directly to database access without primary key 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_PrimaryKeyAvailable(["Start Step"])
E_PrimaryKeyAvailable(["End Step"])
N_PrimaryKeyAvailable_Node0{"The function code is GU Get Unique
or GN Get Next and the primary key
US-CCN-KEY contains spaces"}:::decision N_PrimaryKeyAvailable_Node0_action["The system uses unqualified SSA for
browse operation and sets primary
PCB for database access"]:::main N_PrimaryKeyAvailable_Node0 -- Yes --> N_PrimaryKeyAvailable_Node0_action N_PrimaryKeyAvailable_Node0_action --> E_PrimaryKeyAvailable S_PrimaryKeyAvailable --> N_PrimaryKeyAvailable_Node0 N_PrimaryKeyAvailable_Node1{"The primary key US-CCN-KEY is not
spaces and contains a valid cargo
control number"}:::decision N_PrimaryKeyAvailable_Node1_action["The system uses qualified SSA with
the primary key value and sets
primary PCB for targeted database
access"]:::main N_PrimaryKeyAvailable_Node1 -- Yes --> N_PrimaryKeyAvailable_Node1_action N_PrimaryKeyAvailable_Node1_action --> E_PrimaryKeyAvailable N_PrimaryKeyAvailable_Node0 -- No --> N_PrimaryKeyAvailable_Node1 N_PrimaryKeyAvailable_Node2{"The function code is not GU Get
Unique or GN Get Next but is ISRT
Insert, REPL Replace, DLET Delete,
or ZAP"}:::decision N_PrimaryKeyAvailable_Node2_action["The system proceeds directly to
database access without primary key
validation checks"]:::main N_PrimaryKeyAvailable_Node2 -- Yes --> N_PrimaryKeyAvailable_Node2_action N_PrimaryKeyAvailable_Node2_action --> E_PrimaryKeyAvailable N_PrimaryKeyAvailable_Node1 -- No --> N_PrimaryKeyAvailable_Node2 N_PrimaryKeyAvailable_Node2 -- No --> E_PrimaryKeyAvailable
or GN Get Next and the primary key
US-CCN-KEY contains spaces"}:::decision N_PrimaryKeyAvailable_Node0_action["The system uses unqualified SSA for
browse operation and sets primary
PCB for database access"]:::main N_PrimaryKeyAvailable_Node0 -- Yes --> N_PrimaryKeyAvailable_Node0_action N_PrimaryKeyAvailable_Node0_action --> E_PrimaryKeyAvailable S_PrimaryKeyAvailable --> N_PrimaryKeyAvailable_Node0 N_PrimaryKeyAvailable_Node1{"The primary key US-CCN-KEY is not
spaces and contains a valid cargo
control number"}:::decision N_PrimaryKeyAvailable_Node1_action["The system uses qualified SSA with
the primary key value and sets
primary PCB for targeted database
access"]:::main N_PrimaryKeyAvailable_Node1 -- Yes --> N_PrimaryKeyAvailable_Node1_action N_PrimaryKeyAvailable_Node1_action --> E_PrimaryKeyAvailable N_PrimaryKeyAvailable_Node0 -- No --> N_PrimaryKeyAvailable_Node1 N_PrimaryKeyAvailable_Node2{"The function code is not GU Get
Unique or GN Get Next but is ISRT
Insert, REPL Replace, DLET Delete,
or ZAP"}:::decision N_PrimaryKeyAvailable_Node2_action["The system proceeds directly to
database access without primary key
validation checks"]:::main N_PrimaryKeyAvailable_Node2 -- Yes --> N_PrimaryKeyAvailable_Node2_action N_PrimaryKeyAvailable_Node2_action --> E_PrimaryKeyAvailable N_PrimaryKeyAvailable_Node1 -- No --> N_PrimaryKeyAvailable_Node2 N_PrimaryKeyAvailable_Node2 -- No --> E_PrimaryKeyAvailable
File: GCCUSIO.cbl
GIVEN:
A cargo database operation is being performed with a specific function code and primary key (US-CCN-KEY)
WHEN:
The function code is GU (Get Unique) or GN (Get Next) and the primary key US-CCN-KEY contains spaces
THEN:
- The system uses unqualified ssa for browse operation
- Sets primary pcb for database access
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo database operation is being performed with function code GU (Get Unique) or GN (Get Next)
WHEN:
- The primary key us-ccn-key is not spaces
- Contains a valid cargo control number
THEN:
- The system uses qualified ssa with the primary key value
- Sets primary pcb for targeted database access
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo database operation is being performed
WHEN:
The function code is not GU (Get Unique) or GN (Get Next) but is ISRT (Insert), REPL (Replace), DLET (Delete), or ZAP
THEN:
The system proceeds directly to database access without primary key validation checks
β Consolidated Acceptance Criteria
- The system checks if secondary key index flag (GCWUSIO-INDEX-SECN-KEY) is set to true → if secondary key index is available, use secondary key index search with GCA2-PCB2 and build qualified SSA with GCSUSS00-KEY mapped to GCB2-KEY-VALUE, otherwise use primary key direct access with GCA2-PCB and build qualified SSA with GCSUSS00-KEY mapped to GCA2-KEY-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_SecondaryKeyAvailable(["Start Step"])
E_SecondaryKeyAvailable(["End Step"])
N_SecondaryKeyAvailable_Node0{"The system checks if secondary key
index flag GCWUSIO-INDEX-SECN-KEY is
set to true"}:::decision N_SecondaryKeyAvailable_Node0_action["If secondary key index is
available, use secondary key index
search with GCA2-PCB2 and build
qualified SSA with GCSUSS00-KEY
mapped to GCB2-KEY-VALUE, otherwise
use primary key direct access with
GCA2-PCB and build qualified SSA
with GCSUSS00-KEY mapped to
GCA2-KEY-VALUE"]:::main N_SecondaryKeyAvailable_Node0 -- Yes --> N_SecondaryKeyAvailable_Node0_action N_SecondaryKeyAvailable_Node0_action --> E_SecondaryKeyAvailable S_SecondaryKeyAvailable --> N_SecondaryKeyAvailable_Node0 N_SecondaryKeyAvailable_Node0 -- No --> E_SecondaryKeyAvailable
index flag GCWUSIO-INDEX-SECN-KEY is
set to true"}:::decision N_SecondaryKeyAvailable_Node0_action["If secondary key index is
available, use secondary key index
search with GCA2-PCB2 and build
qualified SSA with GCSUSS00-KEY
mapped to GCB2-KEY-VALUE, otherwise
use primary key direct access with
GCA2-PCB and build qualified SSA
with GCSUSS00-KEY mapped to
GCA2-KEY-VALUE"]:::main N_SecondaryKeyAvailable_Node0 -- Yes --> N_SecondaryKeyAvailable_Node0_action N_SecondaryKeyAvailable_Node0_action --> E_SecondaryKeyAvailable S_SecondaryKeyAvailable --> N_SecondaryKeyAvailable_Node0 N_SecondaryKeyAvailable_Node0 -- No --> E_SecondaryKeyAvailable
File: GCCUSIO.cbl
GIVEN:
A secondary database processing request is received
WHEN:
The system checks if secondary key index flag (GCWUSIO-INDEX-SECN-KEY) is set to true
THEN:
- If secondary key index is available, use secondary key index search with gca2-pcb2
- Build qualified ssa with gcsuss00-key mapped to gcb2-key-value, otherwise use primary key direct access with gca2-pcb
- Build qualified ssa with gcsuss00-key mapped to gca2-key-value
β Consolidated Acceptance Criteria
- The system checks if the GCSA8RT key field is empty (contains only spaces) → if the key is empty, set error code '0012' and error message 'GCSA8RT-KEY EQUAL SPACES', otherwise allow processing to 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_MessageKeyAvailable(["Start Step"])
E_MessageKeyAvailable(["End Step"])
N_MessageKeyAvailable_Node0{"The system checks if the GCSA8RT
key field is empty contains only
spaces"}:::decision N_MessageKeyAvailable_Node0_action["If the key is empty, set error code
0012 and error message GCSA8RT-KEY
EQUAL SPACES , otherwise allow
processing to continue"]:::main N_MessageKeyAvailable_Node0 -- Yes --> N_MessageKeyAvailable_Node0_action N_MessageKeyAvailable_Node0_action --> E_MessageKeyAvailable S_MessageKeyAvailable --> N_MessageKeyAvailable_Node0 N_MessageKeyAvailable_Node0 -- No --> E_MessageKeyAvailable
key field is empty contains only
spaces"}:::decision N_MessageKeyAvailable_Node0_action["If the key is empty, set error code
0012 and error message GCSA8RT-KEY
EQUAL SPACES , otherwise allow
processing to continue"]:::main N_MessageKeyAvailable_Node0 -- Yes --> N_MessageKeyAvailable_Node0_action N_MessageKeyAvailable_Node0_action --> E_MessageKeyAvailable S_MessageKeyAvailable --> N_MessageKeyAvailable_Node0 N_MessageKeyAvailable_Node0 -- No --> E_MessageKeyAvailable
File: GCCUSIO.cbl
GIVEN:
A request to process GCSA8RT segment with Get Unique or Get Next function code
WHEN:
The system checks if the GCSA8RT key field is empty (contains only spaces)
THEN:
If the key is empty, set error code '0012' and error message 'GCSA8RT-KEY EQUAL SPACES', otherwise allow processing to continue
β Consolidated Acceptance Criteria
- The cargo data content equals all spaces → the data should be marked as empty and invalid 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_DataALLSPACES(["Start Step"])
E_DataALLSPACES(["End Step"])
N_DataALLSPACES_Node0{"The cargo data content equals all
spaces"}:::decision N_DataALLSPACES_Node0_action["The data should be marked as empty
and invalid for processing"]:::main N_DataALLSPACES_Node0 -- Yes --> N_DataALLSPACES_Node0_action N_DataALLSPACES_Node0_action --> E_DataALLSPACES S_DataALLSPACES --> N_DataALLSPACES_Node0 N_DataALLSPACES_Node0 -- No --> E_DataALLSPACES
spaces"}:::decision N_DataALLSPACES_Node0_action["The data should be marked as empty
and invalid for processing"]:::main N_DataALLSPACES_Node0 -- Yes --> N_DataALLSPACES_Node0_action N_DataALLSPACES_Node0_action --> E_DataALLSPACES S_DataALLSPACES --> N_DataALLSPACES_Node0 N_DataALLSPACES_Node0 -- No --> E_DataALLSPACES
File: GCCUSIO.cbl
GIVEN:
Secondary cargo data is being processed for validation
WHEN:
The cargo data content equals all spaces
THEN:
- The data should be marked as empty
- Invalid for processing
β Consolidated Acceptance Criteria
- The cargo data content equals all low-values → the data should be marked as empty and invalid 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_DataALLLOWVALUES(["Start Step"])
E_DataALLLOWVALUES(["End Step"])
N_DataALLLOWVALUES_Node0{"The cargo data content equals all
low-values"}:::decision N_DataALLLOWVALUES_Node0_action["The data should be marked as empty
and invalid for processing"]:::main N_DataALLLOWVALUES_Node0 -- Yes --> N_DataALLLOWVALUES_Node0_action N_DataALLLOWVALUES_Node0_action --> E_DataALLLOWVALUES S_DataALLLOWVALUES --> N_DataALLLOWVALUES_Node0 N_DataALLLOWVALUES_Node0 -- No --> E_DataALLLOWVALUES
low-values"}:::decision N_DataALLLOWVALUES_Node0_action["The data should be marked as empty
and invalid for processing"]:::main N_DataALLLOWVALUES_Node0 -- Yes --> N_DataALLLOWVALUES_Node0_action N_DataALLLOWVALUES_Node0_action --> E_DataALLLOWVALUES S_DataALLLOWVALUES --> N_DataALLLOWVALUES_Node0 N_DataALLLOWVALUES_Node0 -- No --> E_DataALLLOWVALUES
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Secondary cargo data is being processed for validation and does not contain all spaces
WHEN:
The cargo data content equals all low-values
THEN:
- The data should be marked as empty
- Invalid for processing
β Consolidated Acceptance Criteria
- The cargo data content equals all underscore characters → the data should be marked as empty and invalid 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_DataALLUnderscores(["Start Step"])
E_DataALLUnderscores(["End Step"])
N_DataALLUnderscores_Node0{"The cargo data content equals all
underscore characters"}:::decision N_DataALLUnderscores_Node0_action["The data should be marked as empty
and invalid for processing"]:::main N_DataALLUnderscores_Node0 -- Yes --> N_DataALLUnderscores_Node0_action N_DataALLUnderscores_Node0_action --> E_DataALLUnderscores S_DataALLUnderscores --> N_DataALLUnderscores_Node0 N_DataALLUnderscores_Node0 -- No --> E_DataALLUnderscores
underscore characters"}:::decision N_DataALLUnderscores_Node0_action["The data should be marked as empty
and invalid for processing"]:::main N_DataALLUnderscores_Node0 -- Yes --> N_DataALLUnderscores_Node0_action N_DataALLUnderscores_Node0_action --> E_DataALLUnderscores S_DataALLUnderscores --> N_DataALLUnderscores_Node0 N_DataALLUnderscores_Node0 -- No --> E_DataALLUnderscores
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Secondary cargo data is being processed for validation and does not contain all spaces or low-values
WHEN:
The cargo data content equals all underscore characters
THEN:
- The data should be marked as empty
- Invalid for processing
β Consolidated Acceptance Criteria
- The cargo data content does not equal all spaces and does not equal all low-values and does not equal all underscore characters → the data should be marked as valid for processing
- The cargo data does NOT equal ALL SPACES AND does NOT equal ALL LOW-VALUES AND does NOT equal ALL UNDERSCORES → mark the data as valid and continue with 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_MarkDataasValid(["Start Step"])
E_MarkDataasValid(["End Step"])
N_MarkDataasValid_Node0{"The cargo data content does not
equal all spaces and does not equal
all low-values and does not equal
all underscore characters"}:::decision N_MarkDataasValid_Node0_action["The data should be marked as valid
for processing"]:::main N_MarkDataasValid_Node0 -- Yes --> N_MarkDataasValid_Node0_action N_MarkDataasValid_Node0_action --> E_MarkDataasValid S_MarkDataasValid --> N_MarkDataasValid_Node0 N_MarkDataasValid_Node1{"The cargo data does NOT equal ALL
SPACES AND does NOT equal ALL
LOW-VALUES AND does NOT equal ALL
UNDERSCORES"}:::decision N_MarkDataasValid_Node1_action["Mark the data as valid and continue
with normal processing"]:::main N_MarkDataasValid_Node1 -- Yes --> N_MarkDataasValid_Node1_action N_MarkDataasValid_Node1_action --> E_MarkDataasValid N_MarkDataasValid_Node0 -- No --> N_MarkDataasValid_Node1 N_MarkDataasValid_Node1 -- No --> E_MarkDataasValid
equal all spaces and does not equal
all low-values and does not equal
all underscore characters"}:::decision N_MarkDataasValid_Node0_action["The data should be marked as valid
for processing"]:::main N_MarkDataasValid_Node0 -- Yes --> N_MarkDataasValid_Node0_action N_MarkDataasValid_Node0_action --> E_MarkDataasValid S_MarkDataasValid --> N_MarkDataasValid_Node0 N_MarkDataasValid_Node1{"The cargo data does NOT equal ALL
SPACES AND does NOT equal ALL
LOW-VALUES AND does NOT equal ALL
UNDERSCORES"}:::decision N_MarkDataasValid_Node1_action["Mark the data as valid and continue
with normal processing"]:::main N_MarkDataasValid_Node1 -- Yes --> N_MarkDataasValid_Node1_action N_MarkDataasValid_Node1_action --> E_MarkDataasValid N_MarkDataasValid_Node0 -- No --> N_MarkDataasValid_Node1 N_MarkDataasValid_Node1 -- No --> E_MarkDataasValid
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Secondary cargo data is being processed for validation
WHEN:
- The cargo data content does not equal all spaces
- Does not equal all low-values
- Does not equal all underscore characters
THEN:
The data should be marked as valid for processing
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Secondary cargo data is being processed
WHEN:
- The cargo data does not equal all spaces
- Does not equal all low-values
- Does not equal all underscores
THEN:
- Mark the data as valid
- Continue with normal processing
β Consolidated Acceptance Criteria
- The function code is ISRT (Insert) → the insert operation should be skipped and not 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_SkipInsertOperation(["Start Step"])
E_SkipInsertOperation(["End Step"])
N_SkipInsertOperation_Node0{"The function code is ISRT Insert"}:::decision
N_SkipInsertOperation_Node0_action["The insert operation should be
skipped and not executed"]:::main N_SkipInsertOperation_Node0 -- Yes --> N_SkipInsertOperation_Node0_action N_SkipInsertOperation_Node0_action --> E_SkipInsertOperation S_SkipInsertOperation --> N_SkipInsertOperation_Node0 N_SkipInsertOperation_Node0 -- No --> E_SkipInsertOperation
skipped and not executed"]:::main N_SkipInsertOperation_Node0 -- Yes --> N_SkipInsertOperation_Node0_action N_SkipInsertOperation_Node0_action --> E_SkipInsertOperation S_SkipInsertOperation --> N_SkipInsertOperation_Node0 N_SkipInsertOperation_Node0 -- No --> E_SkipInsertOperation
File: GCCUSIO.cbl
GIVEN:
A secondary cargo insert operation is requested and the data has been validated as empty or invalid
WHEN:
The function code is ISRT (Insert)
THEN:
- The insert operation should be skipped
- Not executed
β Consolidated Acceptance Criteria
- The function code is REPL (Replace) and an existing record is found → a delete operation should be executed to remove the existing 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_ExecuteDeleteOperation(["Start Step"])
E_ExecuteDeleteOperation(["End Step"])
N_ExecuteDeleteOperation_Node0{"The function code is REPL Replace
and an existing record is found"}:::decision N_ExecuteDeleteOperation_Node0_action["A delete operation should be
executed to remove the existing
record"]:::main N_ExecuteDeleteOperation_Node0 -- Yes --> N_ExecuteDeleteOperation_Node0_action N_ExecuteDeleteOperation_Node0_action --> E_ExecuteDeleteOperation S_ExecuteDeleteOperation --> N_ExecuteDeleteOperation_Node0 N_ExecuteDeleteOperation_Node0 -- No --> E_ExecuteDeleteOperation
and an existing record is found"}:::decision N_ExecuteDeleteOperation_Node0_action["A delete operation should be
executed to remove the existing
record"]:::main N_ExecuteDeleteOperation_Node0 -- Yes --> N_ExecuteDeleteOperation_Node0_action N_ExecuteDeleteOperation_Node0_action --> E_ExecuteDeleteOperation S_ExecuteDeleteOperation --> N_ExecuteDeleteOperation_Node0 N_ExecuteDeleteOperation_Node0 -- No --> E_ExecuteDeleteOperation
File: GCCUSIO.cbl
GIVEN:
A secondary cargo replace operation is requested and the new data has been validated as empty or invalid
WHEN:
The function code is REPL (Replace) and an existing record is found
THEN:
A delete operation should be executed to remove the existing record
β Consolidated Acceptance Criteria
- The function code is REPL (Replace) and an existing record is found → the replace operation should proceed to update the existing record with the new valid 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_ProceedwithReplace(["Start Step"])
E_ProceedwithReplace(["End Step"])
N_ProceedwithReplace_Node0{"The function code is REPL Replace
and an existing record is found"}:::decision N_ProceedwithReplace_Node0_action["The replace operation should
proceed to update the existing
record with the new valid data"]:::main N_ProceedwithReplace_Node0 -- Yes --> N_ProceedwithReplace_Node0_action N_ProceedwithReplace_Node0_action --> E_ProceedwithReplace S_ProceedwithReplace --> N_ProceedwithReplace_Node0 N_ProceedwithReplace_Node0 -- No --> E_ProceedwithReplace
and an existing record is found"}:::decision N_ProceedwithReplace_Node0_action["The replace operation should
proceed to update the existing
record with the new valid data"]:::main N_ProceedwithReplace_Node0 -- Yes --> N_ProceedwithReplace_Node0_action N_ProceedwithReplace_Node0_action --> E_ProceedwithReplace S_ProceedwithReplace --> N_ProceedwithReplace_Node0 N_ProceedwithReplace_Node0 -- No --> E_ProceedwithReplace
File: GCCUSIO.cbl
GIVEN:
A secondary cargo replace operation is requested and the data has been validated as valid
WHEN:
The function code is REPL (Replace) and an existing record is found
THEN:
The replace operation should proceed to update the existing record with the new valid data
β Consolidated Acceptance Criteria
- The function code is REPL (Replace) and no existing record is found → an insert operation should be executed to create a new record with the valid 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_ProceedwithInsert(["Start Step"])
E_ProceedwithInsert(["End Step"])
N_ProceedwithInsert_Node0{"The function code is REPL Replace
and no existing record is found"}:::decision N_ProceedwithInsert_Node0_action["An insert operation should be
executed to create a new record with
the valid data"]:::main N_ProceedwithInsert_Node0 -- Yes --> N_ProceedwithInsert_Node0_action N_ProceedwithInsert_Node0_action --> E_ProceedwithInsert S_ProceedwithInsert --> N_ProceedwithInsert_Node0 N_ProceedwithInsert_Node0 -- No --> E_ProceedwithInsert
and no existing record is found"}:::decision N_ProceedwithInsert_Node0_action["An insert operation should be
executed to create a new record with
the valid data"]:::main N_ProceedwithInsert_Node0 -- Yes --> N_ProceedwithInsert_Node0_action N_ProceedwithInsert_Node0_action --> E_ProceedwithInsert S_ProceedwithInsert --> N_ProceedwithInsert_Node0 N_ProceedwithInsert_Node0 -- No --> E_ProceedwithInsert
File: GCCUSIO.cbl
GIVEN:
A secondary cargo replace operation is requested and the data has been validated as valid
WHEN:
The function code is REPL (Replace) and no existing record is found
THEN:
An insert operation should be executed to create a new record with the valid data
β Consolidated Acceptance Criteria
- The cargo data equals ALL SPACES:
- ALL LOW-VALUES
- ALL UNDERSCORES
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCargoDataContent(["Start Step"])
E_CheckCargoDataContent(["End Step"])
N_CheckCargoDataContent_Node0{"The cargo data equals ALL SPACES OR
ALL LOW-VALUES OR ALL UNDERSCORES"}:::decision N_CheckCargoDataContent_Node0_action["Mark the data as empty and invalid
for processing"]:::main N_CheckCargoDataContent_Node0 -- Yes --> N_CheckCargoDataContent_Node0_action N_CheckCargoDataContent_Node0_action --> E_CheckCargoDataContent S_CheckCargoDataContent --> N_CheckCargoDataContent_Node0 N_CheckCargoDataContent_Node0 -- No --> E_CheckCargoDataContent
ALL LOW-VALUES OR ALL UNDERSCORES"}:::decision N_CheckCargoDataContent_Node0_action["Mark the data as empty and invalid
for processing"]:::main N_CheckCargoDataContent_Node0 -- Yes --> N_CheckCargoDataContent_Node0_action N_CheckCargoDataContent_Node0_action --> E_CheckCargoDataContent S_CheckCargoDataContent --> N_CheckCargoDataContent_Node0 N_CheckCargoDataContent_Node0 -- No --> E_CheckCargoDataContent
File: GCCUSIO.cbl
GIVEN:
Secondary cargo data is being processed for REPL function
WHEN:
The cargo data equals ALL SPACES OR ALL LOW-VALUES OR ALL UNDERSCORES
THEN:
- Mark the data as empty
- Invalid for processing
β Consolidated Acceptance Criteria
- The cargo data equals ALL SPACES:
- ALL LOW-VALUES
- ALL UNDERSCORES
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipINSERTOperation(["Start Step"])
E_SkipINSERTOperation(["End Step"])
N_SkipINSERTOperation_Node0{"The cargo data equals ALL SPACES OR
ALL LOW-VALUES OR ALL UNDERSCORES"}:::decision N_SkipINSERTOperation_Node0_action["Skip the INSERT operation and do
not create a record"]:::main N_SkipINSERTOperation_Node0 -- Yes --> N_SkipINSERTOperation_Node0_action N_SkipINSERTOperation_Node0_action --> E_SkipINSERTOperation S_SkipINSERTOperation --> N_SkipINSERTOperation_Node0 N_SkipINSERTOperation_Node0 -- No --> E_SkipINSERTOperation
ALL LOW-VALUES OR ALL UNDERSCORES"}:::decision N_SkipINSERTOperation_Node0_action["Skip the INSERT operation and do
not create a record"]:::main N_SkipINSERTOperation_Node0 -- Yes --> N_SkipINSERTOperation_Node0_action N_SkipINSERTOperation_Node0_action --> E_SkipINSERTOperation S_SkipINSERTOperation --> N_SkipINSERTOperation_Node0 N_SkipINSERTOperation_Node0 -- No --> E_SkipINSERTOperation
File: GCCUSIO.cbl
GIVEN:
Function code is ISRT for secondary cargo data
WHEN:
The cargo data equals ALL SPACES OR ALL LOW-VALUES OR ALL UNDERSCORES
THEN:
- Skip the insert operation
- Do not create a record
β Consolidated Acceptance Criteria
- The replacement cargo data equals ALL SPACES:
- ALL LOW-VALUES
- ALL UNDERSCORES
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PerformDELETEOperation(["Start Step"])
E_PerformDELETEOperation(["End Step"])
N_PerformDELETEOperation_Node0{"The replacement cargo data equals
ALL SPACES OR ALL LOW-VALUES OR ALL
UNDERSCORES"}:::decision N_PerformDELETEOperation_Node0_action["Perform DELETE operation to remove
the existing record"]:::main N_PerformDELETEOperation_Node0 -- Yes --> N_PerformDELETEOperation_Node0_action N_PerformDELETEOperation_Node0_action --> E_PerformDELETEOperation S_PerformDELETEOperation --> N_PerformDELETEOperation_Node0 N_PerformDELETEOperation_Node0 -- No --> E_PerformDELETEOperation
ALL SPACES OR ALL LOW-VALUES OR ALL
UNDERSCORES"}:::decision N_PerformDELETEOperation_Node0_action["Perform DELETE operation to remove
the existing record"]:::main N_PerformDELETEOperation_Node0 -- Yes --> N_PerformDELETEOperation_Node0_action N_PerformDELETEOperation_Node0_action --> E_PerformDELETEOperation S_PerformDELETEOperation --> N_PerformDELETEOperation_Node0 N_PerformDELETEOperation_Node0 -- No --> E_PerformDELETEOperation
File: GCCUSIO.cbl
GIVEN:
Function code is REPL for secondary cargo data AND existing record is found
WHEN:
The replacement cargo data equals ALL SPACES OR ALL LOW-VALUES OR ALL UNDERSCORES
THEN:
Perform DELETE operation to remove the existing record
β Consolidated Acceptance Criteria
- The replacement cargo data does NOT equal ALL SPACES AND does NOT equal ALL LOW-VALUES AND does NOT equal ALL UNDERSCORES → perform REPL operation to update the existing record with new data
- The cargo data does NOT equal ALL SPACES AND does NOT equal ALL LOW-VALUES AND does NOT equal ALL UNDERSCORES → perform ISRT operation to create a 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_ContinuewithNormalProcessing(["Start Step"])
E_ContinuewithNormalProcessing(["End Step"])
N_ContinuewithNormalProcessing_Node0{"The replacement cargo data does NOT
equal ALL SPACES AND does NOT equal
ALL LOW-VALUES AND does NOT equal
ALL UNDERSCORES"}:::decision N_ContinuewithNormalProcessing_Node0_action["Perform REPL operation to update
the existing record with new data"]:::main N_ContinuewithNormalProcessing_Node0 -- Yes --> N_ContinuewithNormalProcessing_Node0_action N_ContinuewithNormalProcessing_Node0_action --> E_ContinuewithNormalProcessing S_ContinuewithNormalProcessing --> N_ContinuewithNormalProcessing_Node0 N_ContinuewithNormalProcessing_Node1{"The cargo data does NOT equal ALL
SPACES AND does NOT equal ALL
LOW-VALUES AND does NOT equal ALL
UNDERSCORES"}:::decision N_ContinuewithNormalProcessing_Node1_action["Perform ISRT operation to create a
new record"]:::main N_ContinuewithNormalProcessing_Node1 -- Yes --> N_ContinuewithNormalProcessing_Node1_action N_ContinuewithNormalProcessing_Node1_action --> E_ContinuewithNormalProcessing N_ContinuewithNormalProcessing_Node0 -- No --> N_ContinuewithNormalProcessing_Node1 N_ContinuewithNormalProcessing_Node1 -- No --> E_ContinuewithNormalProcessing
equal ALL SPACES AND does NOT equal
ALL LOW-VALUES AND does NOT equal
ALL UNDERSCORES"}:::decision N_ContinuewithNormalProcessing_Node0_action["Perform REPL operation to update
the existing record with new data"]:::main N_ContinuewithNormalProcessing_Node0 -- Yes --> N_ContinuewithNormalProcessing_Node0_action N_ContinuewithNormalProcessing_Node0_action --> E_ContinuewithNormalProcessing S_ContinuewithNormalProcessing --> N_ContinuewithNormalProcessing_Node0 N_ContinuewithNormalProcessing_Node1{"The cargo data does NOT equal ALL
SPACES AND does NOT equal ALL
LOW-VALUES AND does NOT equal ALL
UNDERSCORES"}:::decision N_ContinuewithNormalProcessing_Node1_action["Perform ISRT operation to create a
new record"]:::main N_ContinuewithNormalProcessing_Node1 -- Yes --> N_ContinuewithNormalProcessing_Node1_action N_ContinuewithNormalProcessing_Node1_action --> E_ContinuewithNormalProcessing N_ContinuewithNormalProcessing_Node0 -- No --> N_ContinuewithNormalProcessing_Node1 N_ContinuewithNormalProcessing_Node1 -- No --> E_ContinuewithNormalProcessing
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Function code is REPL for secondary cargo data AND existing record is found
WHEN:
- The replacement cargo data does not equal all spaces
- Does not equal all low-values
- Does not equal all underscores
THEN:
Perform REPL operation to update the existing record with new data
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Function code is REPL for secondary cargo data AND no existing record is found
WHEN:
- The cargo data does not equal all spaces
- Does not equal all low-values
- Does not equal all underscores
THEN:
Perform ISRT operation to create a new record
β Consolidated Acceptance Criteria
- The system checks if a secondary index key (GCWUSIO-INDEX-SECN-KEY) is provided in the request → if secondary index key is provided, route to secondary index search processing, otherwise route to primary key search 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_SecondaryIndexKeyProvided(["Start Step"])
E_SecondaryIndexKeyProvided(["End Step"])
N_SecondaryIndexKeyProvided_Node0{"The system checks if a secondary
index key GCWUSIO-INDEX-SECN-KEY is
provided in the request"}:::decision N_SecondaryIndexKeyProvided_Node0_action["If secondary index key is provided,
route to secondary index search
processing, otherwise route to
primary key search processing"]:::main N_SecondaryIndexKeyProvided_Node0 -- Yes --> N_SecondaryIndexKeyProvided_Node0_action N_SecondaryIndexKeyProvided_Node0_action --> E_SecondaryIndexKeyProvided S_SecondaryIndexKeyProvided --> N_SecondaryIndexKeyProvided_Node0 N_SecondaryIndexKeyProvided_Node0 -- No --> E_SecondaryIndexKeyProvided
index key GCWUSIO-INDEX-SECN-KEY is
provided in the request"}:::decision N_SecondaryIndexKeyProvided_Node0_action["If secondary index key is provided,
route to secondary index search
processing, otherwise route to
primary key search processing"]:::main N_SecondaryIndexKeyProvided_Node0 -- Yes --> N_SecondaryIndexKeyProvided_Node0_action N_SecondaryIndexKeyProvided_Node0_action --> E_SecondaryIndexKeyProvided S_SecondaryIndexKeyProvided --> N_SecondaryIndexKeyProvided_Node0 N_SecondaryIndexKeyProvided_Node0 -- No --> E_SecondaryIndexKeyProvided
File: GCCUSIO.cbl
GIVEN:
A request to retrieve secondary cargo data (GCSA2RT segment) with retrieval function codes (GU or GN)
WHEN:
The system checks if a secondary index key (GCWUSIO-INDEX-SECN-KEY) is provided in the request
THEN:
If secondary index key is provided, route to secondary index search processing, otherwise route to primary key search processing
β Consolidated Acceptance Criteria
- The system processes the secondary index search request → set the secondary key value to GCB2-KEY-VALUE, set the operator to GCB2-OPERATOR, use qualified SSA (GCB2-SSA-QUAL), set PCB to GCA2-PCB2, and execute the 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_UseSecondaryIndexSearch(["Start Step"])
E_UseSecondaryIndexSearch(["End Step"])
N_UseSecondaryIndexSearch_Node0{"The system processes the secondary
index search request"}:::decision N_UseSecondaryIndexSearch_Node0_action["Set the secondary key value to
GCB2-KEY-VALUE, set the operator to
GCB2-OPERATOR, use qualified SSA
GCB2-SSA-QUAL, set PCB to GCA2-PCB2,
and execute the database call"]:::main N_UseSecondaryIndexSearch_Node0 -- Yes --> N_UseSecondaryIndexSearch_Node0_action N_UseSecondaryIndexSearch_Node0_action --> E_UseSecondaryIndexSearch S_UseSecondaryIndexSearch --> N_UseSecondaryIndexSearch_Node0 N_UseSecondaryIndexSearch_Node0 -- No --> E_UseSecondaryIndexSearch
index search request"}:::decision N_UseSecondaryIndexSearch_Node0_action["Set the secondary key value to
GCB2-KEY-VALUE, set the operator to
GCB2-OPERATOR, use qualified SSA
GCB2-SSA-QUAL, set PCB to GCA2-PCB2,
and execute the database call"]:::main N_UseSecondaryIndexSearch_Node0 -- Yes --> N_UseSecondaryIndexSearch_Node0_action N_UseSecondaryIndexSearch_Node0_action --> E_UseSecondaryIndexSearch S_UseSecondaryIndexSearch --> N_UseSecondaryIndexSearch_Node0 N_UseSecondaryIndexSearch_Node0 -- No --> E_UseSecondaryIndexSearch
File: GCCUSIO.cbl
GIVEN:
A secondary index key (GCWUSIO-INDEX-SECN-KEY) is provided for secondary cargo data retrieval
WHEN:
The system processes the secondary index search request
THEN:
Set the secondary key value to GCB2-KEY-VALUE, set the operator to GCB2-OPERATOR, use qualified SSA (GCB2-SSA-QUAL), set PCB to GCA2-PCB2, and execute the database call
β Consolidated Acceptance Criteria
- The system needs to build SSA for primary key search on secondary data → if the secondary key (GCSUSS00-KEY) is spaces, set error '0012' with message 'SECN-KEY EQUAL SPACES', otherwise set GCSUSS00-KEY to GCA2-KEY-VALUE, use qualified SSA (GCA2-SSA-QUAL), and set PCB to GCA2-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_BuildPrimarySecondarySSA(["Start Step"])
E_BuildPrimarySecondarySSA(["End Step"])
N_BuildPrimarySecondarySSA_Node0{"The system needs to build SSA for
primary key search on secondary data"}:::decision N_BuildPrimarySecondarySSA_Node0_action["If the secondary key GCSUSS00-KEY
is spaces, set error 0012 with
message SECN-KEY EQUAL SPACES ,
otherwise set GCSUSS00-KEY to
GCA2-KEY-VALUE, use qualified SSA
GCA2-SSA-QUAL, and set PCB to
GCA2-PCB"]:::main N_BuildPrimarySecondarySSA_Node0 -- Yes --> N_BuildPrimarySecondarySSA_Node0_action N_BuildPrimarySecondarySSA_Node0_action --> E_BuildPrimarySecondarySSA S_BuildPrimarySecondarySSA --> N_BuildPrimarySecondarySSA_Node0 N_BuildPrimarySecondarySSA_Node0 -- No --> E_BuildPrimarySecondarySSA
primary key search on secondary data"}:::decision N_BuildPrimarySecondarySSA_Node0_action["If the secondary key GCSUSS00-KEY
is spaces, set error 0012 with
message SECN-KEY EQUAL SPACES ,
otherwise set GCSUSS00-KEY to
GCA2-KEY-VALUE, use qualified SSA
GCA2-SSA-QUAL, and set PCB to
GCA2-PCB"]:::main N_BuildPrimarySecondarySSA_Node0 -- Yes --> N_BuildPrimarySecondarySSA_Node0_action N_BuildPrimarySecondarySSA_Node0_action --> E_BuildPrimarySecondarySSA S_BuildPrimarySecondarySSA --> N_BuildPrimarySecondarySSA_Node0 N_BuildPrimarySecondarySSA_Node0 -- No --> E_BuildPrimarySecondarySSA
File: GCCUSIO.cbl
GIVEN:
No secondary index key is provided for secondary cargo data retrieval and function code is GU or GN
WHEN:
The system needs to build SSA for primary key search on secondary data
THEN:
If the secondary key (GCSUSS00-KEY) is spaces, set error '0012' with message 'SECN-KEY EQUAL SPACES', otherwise set GCSUSS00-KEY to GCA2-KEY-VALUE, use qualified SSA (GCA2-SSA-QUAL), and set PCB to GCA2-PCB
β Consolidated Acceptance Criteria
- The GCSA8RT key field is empty or contains only spaces → return error code '0012' with message 'GCSA8RT-KEY EQUAL 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_MessageKeyValid(["Start Step"])
E_MessageKeyValid(["End Step"])
N_MessageKeyValid_Node0{"The GCSA8RT key field is empty or
contains only spaces"}:::decision N_MessageKeyValid_Node0_action["Return error code 0012 with message
GCSA8RT-KEY EQUAL SPACES"]:::main N_MessageKeyValid_Node0 -- Yes --> N_MessageKeyValid_Node0_action N_MessageKeyValid_Node0_action --> E_MessageKeyValid S_MessageKeyValid --> N_MessageKeyValid_Node0 N_MessageKeyValid_Node0 -- No --> E_MessageKeyValid
contains only spaces"}:::decision N_MessageKeyValid_Node0_action["Return error code 0012 with message
GCSA8RT-KEY EQUAL SPACES"]:::main N_MessageKeyValid_Node0 -- Yes --> N_MessageKeyValid_Node0_action N_MessageKeyValid_Node0_action --> E_MessageKeyValid S_MessageKeyValid --> N_MessageKeyValid_Node0 N_MessageKeyValid_Node0 -- No --> E_MessageKeyValid
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message processing request with function code GU or GN
WHEN:
The GCSA8RT key field is empty or contains only spaces
THEN:
Return error code '0012' with message 'GCSA8RT-KEY EQUAL SPACES'
β Consolidated Acceptance Criteria
- The delete function is initiated → first perform a GHU (Get Hold Unique) operation to check if the message exists
- The insert function is initiated → first perform a GHU operation to check if the message 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_CheckifMessageExists(["Start Step"])
E_CheckifMessageExists(["End Step"])
N_CheckifMessageExists_Node0{"The delete function is initiated"}:::decision
N_CheckifMessageExists_Node0_action["First perform a GHU Get Hold Unique
operation to check if the message
exists"]:::main N_CheckifMessageExists_Node0 -- Yes --> N_CheckifMessageExists_Node0_action N_CheckifMessageExists_Node0_action --> E_CheckifMessageExists S_CheckifMessageExists --> N_CheckifMessageExists_Node0 N_CheckifMessageExists_Node1{"The insert function is initiated"}:::decision N_CheckifMessageExists_Node1_action["First perform a GHU operation to
check if the message already exists"]:::main N_CheckifMessageExists_Node1 -- Yes --> N_CheckifMessageExists_Node1_action N_CheckifMessageExists_Node1_action --> E_CheckifMessageExists N_CheckifMessageExists_Node0 -- No --> N_CheckifMessageExists_Node1 N_CheckifMessageExists_Node1 -- No --> E_CheckifMessageExists
operation to check if the message
exists"]:::main N_CheckifMessageExists_Node0 -- Yes --> N_CheckifMessageExists_Node0_action N_CheckifMessageExists_Node0_action --> E_CheckifMessageExists S_CheckifMessageExists --> N_CheckifMessageExists_Node0 N_CheckifMessageExists_Node1{"The insert function is initiated"}:::decision N_CheckifMessageExists_Node1_action["First perform a GHU operation to
check if the message already exists"]:::main N_CheckifMessageExists_Node1 -- Yes --> N_CheckifMessageExists_Node1_action N_CheckifMessageExists_Node1_action --> E_CheckifMessageExists N_CheckifMessageExists_Node0 -- No --> N_CheckifMessageExists_Node1 N_CheckifMessageExists_Node1 -- No --> E_CheckifMessageExists
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message delete request
WHEN:
The delete function is initiated
THEN:
First perform a GHU (Get Hold Unique) operation to check if the message exists
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message insert request
WHEN:
The insert function is initiated
THEN:
First perform a GHU operation to check if the message already exists
β Consolidated Acceptance Criteria
- The message exists in the system (status code is spaces) → proceed with the delete operation using DLET function code
- The message already exists in the system (status code is spaces) → use REPL function code to replace the existing message, otherwise use ISRT function code to insert new 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_MessageFound(["Start Step"])
E_MessageFound(["End Step"])
N_MessageFound_Node0{"The message exists in the system
status code is spaces"}:::decision N_MessageFound_Node0_action["Proceed with the delete operation
using DLET function code"]:::main N_MessageFound_Node0 -- Yes --> N_MessageFound_Node0_action N_MessageFound_Node0_action --> E_MessageFound S_MessageFound --> N_MessageFound_Node0 N_MessageFound_Node1{"The message already exists in the
system status code is spaces"}:::decision N_MessageFound_Node1_action["Use REPL function code to replace
the existing message, otherwise use
ISRT function code to insert new
message"]:::main N_MessageFound_Node1 -- Yes --> N_MessageFound_Node1_action N_MessageFound_Node1_action --> E_MessageFound N_MessageFound_Node0 -- No --> N_MessageFound_Node1 N_MessageFound_Node1 -- No --> E_MessageFound
status code is spaces"}:::decision N_MessageFound_Node0_action["Proceed with the delete operation
using DLET function code"]:::main N_MessageFound_Node0 -- Yes --> N_MessageFound_Node0_action N_MessageFound_Node0_action --> E_MessageFound S_MessageFound --> N_MessageFound_Node0 N_MessageFound_Node1{"The message already exists in the
system status code is spaces"}:::decision N_MessageFound_Node1_action["Use REPL function code to replace
the existing message, otherwise use
ISRT function code to insert new
message"]:::main N_MessageFound_Node1 -- Yes --> N_MessageFound_Node1_action N_MessageFound_Node1_action --> E_MessageFound N_MessageFound_Node0 -- No --> N_MessageFound_Node1 N_MessageFound_Node1 -- No --> E_MessageFound
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message delete request has been processed
WHEN:
The message exists in the system (status code is spaces)
THEN:
Proceed with the delete operation using DLET function code
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message insert request has checked for existing message
WHEN:
The message already exists in the system (status code is spaces)
THEN:
Use REPL function code to replace the existing message, otherwise use ISRT function code to insert new message
β Consolidated Acceptance Criteria
- The message data needs to be stored → combine the GCSA8RT key with the saved IO area data to create the complete message 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_FormatMessageData(["Start Step"])
E_FormatMessageData(["End Step"])
N_FormatMessageData_Node0{"The message data needs to be stored"}:::decision
N_FormatMessageData_Node0_action["Combine the GCSA8RT key with the
saved IO area data to create the
complete message segment"]:::main N_FormatMessageData_Node0 -- Yes --> N_FormatMessageData_Node0_action N_FormatMessageData_Node0_action --> E_FormatMessageData S_FormatMessageData --> N_FormatMessageData_Node0 N_FormatMessageData_Node0 -- No --> E_FormatMessageData
saved IO area data to create the
complete message segment"]:::main N_FormatMessageData_Node0 -- Yes --> N_FormatMessageData_Node0_action N_FormatMessageData_Node0_action --> E_FormatMessageData S_FormatMessageData --> N_FormatMessageData_Node0 N_FormatMessageData_Node0 -- No --> E_FormatMessageData
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message insert or replace operation
WHEN:
The message data needs to be stored
THEN:
Combine the GCSA8RT key with the saved IO area data to create the complete message segment
β Consolidated Acceptance Criteria
- The retrieval operation is initiated → build qualified SSA with the message key and perform the database call
- Processing GU operations with valid key → the message segment must be retrieved using the qualified SSA and appropriate 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_RetrieveMessageSegment(["Start Step"])
E_RetrieveMessageSegment(["End Step"])
N_RetrieveMessageSegment_Node0{"The retrieval operation is
initiated"}:::decision N_RetrieveMessageSegment_Node0_action["Build qualified SSA with the
message key and perform the database
call"]:::main N_RetrieveMessageSegment_Node0 -- Yes --> N_RetrieveMessageSegment_Node0_action N_RetrieveMessageSegment_Node0_action --> E_RetrieveMessageSegment S_RetrieveMessageSegment --> N_RetrieveMessageSegment_Node0 N_RetrieveMessageSegment_Node1{"Processing GU operations with valid
key"}:::decision N_RetrieveMessageSegment_Node1_action["The message segment must be
retrieved using the qualified SSA
and appropriate PCB"]:::main N_RetrieveMessageSegment_Node1 -- Yes --> N_RetrieveMessageSegment_Node1_action N_RetrieveMessageSegment_Node1_action --> E_RetrieveMessageSegment N_RetrieveMessageSegment_Node0 -- No --> N_RetrieveMessageSegment_Node1 N_RetrieveMessageSegment_Node1 -- No --> E_RetrieveMessageSegment
initiated"}:::decision N_RetrieveMessageSegment_Node0_action["Build qualified SSA with the
message key and perform the database
call"]:::main N_RetrieveMessageSegment_Node0 -- Yes --> N_RetrieveMessageSegment_Node0_action N_RetrieveMessageSegment_Node0_action --> E_RetrieveMessageSegment S_RetrieveMessageSegment --> N_RetrieveMessageSegment_Node0 N_RetrieveMessageSegment_Node1{"Processing GU operations with valid
key"}:::decision N_RetrieveMessageSegment_Node1_action["The message segment must be
retrieved using the qualified SSA
and appropriate PCB"]:::main N_RetrieveMessageSegment_Node1 -- Yes --> N_RetrieveMessageSegment_Node1_action N_RetrieveMessageSegment_Node1_action --> E_RetrieveMessageSegment N_RetrieveMessageSegment_Node0 -- No --> N_RetrieveMessageSegment_Node1 N_RetrieveMessageSegment_Node1 -- No --> E_RetrieveMessageSegment
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message retrieval request with function code GU
WHEN:
The retrieval operation is initiated
THEN:
- Build qualified ssa with the message key
- Perform the database call
File: GCCUSIO.cbl
GIVEN:
A valid message key exists for retrieval
WHEN:
Processing GU operations with valid key
THEN:
- The message segment must be retrieved using the qualified ssa
- Appropriate pcb
β Consolidated Acceptance Criteria
- The message data needs to be returned to the caller → extract the data portion from the complete message segment and move it to the IO area, excluding the key 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_SeparateKeyfromData(["Start Step"])
E_SeparateKeyfromData(["End Step"])
N_SeparateKeyfromData_Node0{"The message data needs to be
returned to the caller"}:::decision N_SeparateKeyfromData_Node0_action["Extract the data portion from the
complete message segment and move it
to the IO area, excluding the key
portion"]:::main N_SeparateKeyfromData_Node0 -- Yes --> N_SeparateKeyfromData_Node0_action N_SeparateKeyfromData_Node0_action --> E_SeparateKeyfromData S_SeparateKeyfromData --> N_SeparateKeyfromData_Node0 N_SeparateKeyfromData_Node0 -- No --> E_SeparateKeyfromData
returned to the caller"}:::decision N_SeparateKeyfromData_Node0_action["Extract the data portion from the
complete message segment and move it
to the IO area, excluding the key
portion"]:::main N_SeparateKeyfromData_Node0 -- Yes --> N_SeparateKeyfromData_Node0_action N_SeparateKeyfromData_Node0_action --> E_SeparateKeyfromData S_SeparateKeyfromData --> N_SeparateKeyfromData_Node0 N_SeparateKeyfromData_Node0 -- No --> E_SeparateKeyfromData
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT message has been successfully retrieved
WHEN:
The message data needs to be returned to the caller
THEN:
- Extract the data portion from the complete message segment
- Move it to the io area, excluding the key portion
β Consolidated Acceptance Criteria
- The system processes the insert operation for GCSA8RT segment → the system extracts the message key from the input, extracts the data content, combines the key and data into a properly structured message segment, and prepares it for database storage
- The system attempts to retrieve the existing message using GHU function → if the message exists, the system performs a replace operation; if the message does not exist, the system performs an 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_StructureMessageforInsertReplace(["Start Step"])
E_StructureMessageforInsertReplace(["End Step"])
N_StructureMessageforInsertReplace_Node0{"The system processes the insert
operation for GCSA8RT segment"}:::decision N_StructureMessageforInsertReplace_Node0_action["The system extracts the message key
from the input, extracts the data
content, combines the key and data
into a properly structured message
segment, and prepares it for
database storage"]:::main N_StructureMessageforInsertReplace_Node0 -- Yes --> N_StructureMessageforInsertReplace_Node0_action N_StructureMessageforInsertReplace_Node0_action --> E_StructureMessageforInsertReplace S_StructureMessageforInsertReplace --> N_StructureMessageforInsertReplace_Node0 N_StructureMessageforInsertReplace_Node1{"The system attempts to retrieve the
existing message using GHU function"}:::decision N_StructureMessageforInsertReplace_Node1_action["If the message exists, the system
performs a replace operation if the
message does not exist, the system
performs an insert operation"]:::main N_StructureMessageforInsertReplace_Node1 -- Yes --> N_StructureMessageforInsertReplace_Node1_action N_StructureMessageforInsertReplace_Node1_action --> E_StructureMessageforInsertReplace N_StructureMessageforInsertReplace_Node0 -- No --> N_StructureMessageforInsertReplace_Node1 N_StructureMessageforInsertReplace_Node1 -- No --> E_StructureMessageforInsertReplace
operation for GCSA8RT segment"}:::decision N_StructureMessageforInsertReplace_Node0_action["The system extracts the message key
from the input, extracts the data
content, combines the key and data
into a properly structured message
segment, and prepares it for
database storage"]:::main N_StructureMessageforInsertReplace_Node0 -- Yes --> N_StructureMessageforInsertReplace_Node0_action N_StructureMessageforInsertReplace_Node0_action --> E_StructureMessageforInsertReplace S_StructureMessageforInsertReplace --> N_StructureMessageforInsertReplace_Node0 N_StructureMessageforInsertReplace_Node1{"The system attempts to retrieve the
existing message using GHU function"}:::decision N_StructureMessageforInsertReplace_Node1_action["If the message exists, the system
performs a replace operation if the
message does not exist, the system
performs an insert operation"]:::main N_StructureMessageforInsertReplace_Node1 -- Yes --> N_StructureMessageforInsertReplace_Node1_action N_StructureMessageforInsertReplace_Node1_action --> E_StructureMessageforInsertReplace N_StructureMessageforInsertReplace_Node0 -- No --> N_StructureMessageforInsertReplace_Node1 N_StructureMessageforInsertReplace_Node1 -- No --> E_StructureMessageforInsertReplace
File: GCCUSIO.cbl
GIVEN:
A message insert operation is requested with message data containing key and content information
WHEN:
The system processes the insert operation for GCSA8RT segment
THEN:
- The system extracts the message key from the input, extracts the data content, combines the key
- Data into a properly structured message segment, and prepares it for database storage
File: GCCUSIO.cbl
GIVEN:
An insert operation is requested for a message segment
WHEN:
The system attempts to retrieve the existing message using GHU function
THEN:
If the message exists, the system performs a replace operation; if the message does not exist, the system performs an insert operation
β Consolidated Acceptance Criteria
- The system successfully retrieves the message segment from storage → the system extracts the data content from the retrieved segment structure and formats it for return 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_ExtractDataContentfromSegment(["Start Step"])
E_ExtractDataContentfromSegment(["End Step"])
N_ExtractDataContentfromSegment_Node0{"The system successfully retrieves
the message segment from storage"}:::decision N_ExtractDataContentfromSegment_Node0_action["The system extracts the data
content from the retrieved segment
structure and formats it for return
to the calling program"]:::main N_ExtractDataContentfromSegment_Node0 -- Yes --> N_ExtractDataContentfromSegment_Node0_action N_ExtractDataContentfromSegment_Node0_action --> E_ExtractDataContentfromSegment S_ExtractDataContentfromSegment --> N_ExtractDataContentfromSegment_Node0 N_ExtractDataContentfromSegment_Node0 -- No --> E_ExtractDataContentfromSegment
the message segment from storage"}:::decision N_ExtractDataContentfromSegment_Node0_action["The system extracts the data
content from the retrieved segment
structure and formats it for return
to the calling program"]:::main N_ExtractDataContentfromSegment_Node0 -- Yes --> N_ExtractDataContentfromSegment_Node0_action N_ExtractDataContentfromSegment_Node0_action --> E_ExtractDataContentfromSegment S_ExtractDataContentfromSegment --> N_ExtractDataContentfromSegment_Node0 N_ExtractDataContentfromSegment_Node0 -- No --> E_ExtractDataContentfromSegment
File: GCCUSIO.cbl
GIVEN:
A message retrieval operation is requested for GCSA8RT segment
WHEN:
The system successfully retrieves the message segment from storage
THEN:
- The system extracts the data content from the retrieved segment structure
- Formats it for return to the calling program
β Consolidated Acceptance Criteria
- The message key is empty or contains only spaces → the system sets error number '0012' and error message 'GCSA8RT-KEY EQUAL SPACES' to indicate invalid key for 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_ExtractMessageKey(["Start Step"])
E_ExtractMessageKey(["End Step"])
N_ExtractMessageKey_Node0{"The message key is empty or
contains only spaces"}:::decision N_ExtractMessageKey_Node0_action["The system sets error number 0012
and error message GCSA8RT-KEY EQUAL
SPACES to indicate invalid key for
retrieval"]:::main N_ExtractMessageKey_Node0 -- Yes --> N_ExtractMessageKey_Node0_action N_ExtractMessageKey_Node0_action --> E_ExtractMessageKey S_ExtractMessageKey --> N_ExtractMessageKey_Node0 N_ExtractMessageKey_Node0 -- No --> E_ExtractMessageKey
contains only spaces"}:::decision N_ExtractMessageKey_Node0_action["The system sets error number 0012
and error message GCSA8RT-KEY EQUAL
SPACES to indicate invalid key for
retrieval"]:::main N_ExtractMessageKey_Node0 -- Yes --> N_ExtractMessageKey_Node0_action N_ExtractMessageKey_Node0_action --> E_ExtractMessageKey S_ExtractMessageKey --> N_ExtractMessageKey_Node0 N_ExtractMessageKey_Node0 -- No --> E_ExtractMessageKey
File: GCCUSIO.cbl
GIVEN:
A message retrieval operation (GU or GN) is requested for GCSA8RT segment
WHEN:
The message key is empty or contains only spaces
THEN:
The system sets error number '0012' and error message 'GCSA8RT-KEY EQUAL SPACES' to indicate invalid key for retrieval
β Consolidated Acceptance Criteria
- If the function code → the system routes to delete processing for 'DLET', insert processing for 'ISRT', or retrieval processing for 'GU' function 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_MessageOperationType(["Start Step"])
E_MessageOperationType(["End Step"])
N_MessageOperationType_Node0{"The system evaluates the function
code"}:::decision N_MessageOperationType_Node0_action["The system routes to delete
processing for DLET , insert
processing for ISRT , or retrieval
processing for GU function codes"]:::main N_MessageOperationType_Node0 -- Yes --> N_MessageOperationType_Node0_action N_MessageOperationType_Node0_action --> E_MessageOperationType S_MessageOperationType --> N_MessageOperationType_Node0 N_MessageOperationType_Node0 -- No --> E_MessageOperationType
code"}:::decision N_MessageOperationType_Node0_action["The system routes to delete
processing for DLET , insert
processing for ISRT , or retrieval
processing for GU function codes"]:::main N_MessageOperationType_Node0 -- Yes --> N_MessageOperationType_Node0_action N_MessageOperationType_Node0_action --> E_MessageOperationType S_MessageOperationType --> N_MessageOperationType_Node0 N_MessageOperationType_Node0 -- No --> E_MessageOperationType
File: GCCUSIO.cbl
GIVEN:
A message operation request is received for GCSA8RT segment
WHEN:
The system evaluates the function code
THEN:
The system routes to delete processing for 'DLET', insert processing for 'ISRT', or retrieval processing for 'GU' function codes
β Consolidated Acceptance Criteria
- The operation type is ISRT or REPL → the original IO area content must be saved to working storage before any modifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveOriginalIOArea(["Start Step"])
E_SaveOriginalIOArea(["End Step"])
N_SaveOriginalIOArea_Node0{"The operation type is ISRT or REPL"}:::decision
N_SaveOriginalIOArea_Node0_action["The original IO area content must
be saved to working storage before
any modifications"]:::main N_SaveOriginalIOArea_Node0 -- Yes --> N_SaveOriginalIOArea_Node0_action N_SaveOriginalIOArea_Node0_action --> E_SaveOriginalIOArea S_SaveOriginalIOArea --> N_SaveOriginalIOArea_Node0 N_SaveOriginalIOArea_Node0 -- No --> E_SaveOriginalIOArea
be saved to working storage before
any modifications"]:::main N_SaveOriginalIOArea_Node0 -- Yes --> N_SaveOriginalIOArea_Node0_action N_SaveOriginalIOArea_Node0_action --> E_SaveOriginalIOArea S_SaveOriginalIOArea --> N_SaveOriginalIOArea_Node0 N_SaveOriginalIOArea_Node0 -- No --> E_SaveOriginalIOArea
File: GCCUSIO.cbl
GIVEN:
A message segment insert or replace operation is being performed
WHEN:
The operation type is ISRT or REPL
THEN:
The original IO area content must be saved to working storage before any modifications
β Consolidated Acceptance Criteria
- The operation is insert or replace → the message key must be extracted from the GCWUSIO input area to the working storage 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_ExtractMessageKeyfromInput(["Start Step"])
E_ExtractMessageKeyfromInput(["End Step"])
N_ExtractMessageKeyfromInput_Node0{"The operation is insert or replace"}:::decision
N_ExtractMessageKeyfromInput_Node0_action["The message key must be extracted
from the GCWUSIO input area to the
working storage key field"]:::main N_ExtractMessageKeyfromInput_Node0 -- Yes --> N_ExtractMessageKeyfromInput_Node0_action N_ExtractMessageKeyfromInput_Node0_action --> E_ExtractMessageKeyfromInput S_ExtractMessageKeyfromInput --> N_ExtractMessageKeyfromInput_Node0 N_ExtractMessageKeyfromInput_Node0 -- No --> E_ExtractMessageKeyfromInput
from the GCWUSIO input area to the
working storage key field"]:::main N_ExtractMessageKeyfromInput_Node0 -- Yes --> N_ExtractMessageKeyfromInput_Node0_action N_ExtractMessageKeyfromInput_Node0_action --> E_ExtractMessageKeyfromInput S_ExtractMessageKeyfromInput --> N_ExtractMessageKeyfromInput_Node0 N_ExtractMessageKeyfromInput_Node0 -- No --> E_ExtractMessageKeyfromInput
File: GCCUSIO.cbl
GIVEN:
A message segment operation requires key extraction
WHEN:
The operation is insert or replace
THEN:
The message key must be extracted from the GCWUSIO input area to the working storage key field
β Consolidated Acceptance Criteria
- Processing insert or replace operations → the message data content must be extracted from the saved IO area to working storage data 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_ExtractMessageDatafromInput(["Start Step"])
E_ExtractMessageDatafromInput(["End Step"])
N_ExtractMessageDatafromInput_Node0{"Processing insert or replace
operations"}:::decision N_ExtractMessageDatafromInput_Node0_action["The message data content must be
extracted from the saved IO area to
working storage data field"]:::main N_ExtractMessageDatafromInput_Node0 -- Yes --> N_ExtractMessageDatafromInput_Node0_action N_ExtractMessageDatafromInput_Node0_action --> E_ExtractMessageDatafromInput S_ExtractMessageDatafromInput --> N_ExtractMessageDatafromInput_Node0 N_ExtractMessageDatafromInput_Node0 -- No --> E_ExtractMessageDatafromInput
operations"}:::decision N_ExtractMessageDatafromInput_Node0_action["The message data content must be
extracted from the saved IO area to
working storage data field"]:::main N_ExtractMessageDatafromInput_Node0 -- Yes --> N_ExtractMessageDatafromInput_Node0_action N_ExtractMessageDatafromInput_Node0_action --> E_ExtractMessageDatafromInput S_ExtractMessageDatafromInput --> N_ExtractMessageDatafromInput_Node0 N_ExtractMessageDatafromInput_Node0 -- No --> E_ExtractMessageDatafromInput
File: GCCUSIO.cbl
GIVEN:
A message segment requires data extraction
WHEN:
Processing insert or replace operations
THEN:
The message data content must be extracted from the saved IO area to working storage data field
β Consolidated Acceptance Criteria
- Structuring a message segment → the key must be moved to the appropriate working storage 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_MoveKeytoWorkingStorageKeyField(["Start Step"])
E_MoveKeytoWorkingStorageKeyField(["End Step"])
N_MoveKeytoWorkingStorageKeyField_Node0{"Structuring a message segment"}:::decision
N_MoveKeytoWorkingStorageKeyField_Node0_action["The key must be moved to the
appropriate working storage key
field"]:::main N_MoveKeytoWorkingStorageKeyField_Node0 -- Yes --> N_MoveKeytoWorkingStorageKeyField_Node0_action N_MoveKeytoWorkingStorageKeyField_Node0_action --> E_MoveKeytoWorkingStorageKeyField S_MoveKeytoWorkingStorageKeyField --> N_MoveKeytoWorkingStorageKeyField_Node0 N_MoveKeytoWorkingStorageKeyField_Node0 -- No --> E_MoveKeytoWorkingStorageKeyField
appropriate working storage key
field"]:::main N_MoveKeytoWorkingStorageKeyField_Node0 -- Yes --> N_MoveKeytoWorkingStorageKeyField_Node0_action N_MoveKeytoWorkingStorageKeyField_Node0_action --> E_MoveKeytoWorkingStorageKeyField S_MoveKeytoWorkingStorageKeyField --> N_MoveKeytoWorkingStorageKeyField_Node0 N_MoveKeytoWorkingStorageKeyField_Node0 -- No --> E_MoveKeytoWorkingStorageKeyField
File: GCCUSIO.cbl
GIVEN:
Message key has been extracted from input
WHEN:
Structuring a message segment
THEN:
The key must be moved to the appropriate working storage key field
β Consolidated Acceptance Criteria
- Structuring a message segment → the data must be moved to the appropriate working storage data 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_MoveDatatoWorkingStorageDataField(["Start Step"])
E_MoveDatatoWorkingStorageDataField(["End Step"])
N_MoveDatatoWorkingStorageDataField_Node0{"Structuring a message segment"}:::decision
N_MoveDatatoWorkingStorageDataField_Node0_action["The data must be moved to the
appropriate working storage data
field"]:::main N_MoveDatatoWorkingStorageDataField_Node0 -- Yes --> N_MoveDatatoWorkingStorageDataField_Node0_action N_MoveDatatoWorkingStorageDataField_Node0_action --> E_MoveDatatoWorkingStorageDataField S_MoveDatatoWorkingStorageDataField --> N_MoveDatatoWorkingStorageDataField_Node0 N_MoveDatatoWorkingStorageDataField_Node0 -- No --> E_MoveDatatoWorkingStorageDataField
appropriate working storage data
field"]:::main N_MoveDatatoWorkingStorageDataField_Node0 -- Yes --> N_MoveDatatoWorkingStorageDataField_Node0_action N_MoveDatatoWorkingStorageDataField_Node0_action --> E_MoveDatatoWorkingStorageDataField S_MoveDatatoWorkingStorageDataField --> N_MoveDatatoWorkingStorageDataField_Node0 N_MoveDatatoWorkingStorageDataField_Node0 -- No --> E_MoveDatatoWorkingStorageDataField
File: GCCUSIO.cbl
GIVEN:
Message data has been extracted from input
WHEN:
Structuring a message segment
THEN:
The data must be moved to the appropriate working storage data field
β Consolidated Acceptance Criteria
- Creating a structured segment for database operations → the key and data must be combined into the complete segment structure in working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineKeyandDataintoSegmentFormat(["Start Step"])
E_CombineKeyandDataintoSegmentFormat(["End Step"])
N_CombineKeyandDataintoSegmentFormat_Node0{"Creating a structured segment for
database operations"}:::decision N_CombineKeyandDataintoSegmentFormat_Node0_action["The key and data must be combined
into the complete segment structure
in working storage"]:::main N_CombineKeyandDataintoSegmentFormat_Node0 -- Yes --> N_CombineKeyandDataintoSegmentFormat_Node0_action N_CombineKeyandDataintoSegmentFormat_Node0_action --> E_CombineKeyandDataintoSegmentFormat S_CombineKeyandDataintoSegmentFormat --> N_CombineKeyandDataintoSegmentFormat_Node0 N_CombineKeyandDataintoSegmentFormat_Node0 -- No --> E_CombineKeyandDataintoSegmentFormat
database operations"}:::decision N_CombineKeyandDataintoSegmentFormat_Node0_action["The key and data must be combined
into the complete segment structure
in working storage"]:::main N_CombineKeyandDataintoSegmentFormat_Node0 -- Yes --> N_CombineKeyandDataintoSegmentFormat_Node0_action N_CombineKeyandDataintoSegmentFormat_Node0_action --> E_CombineKeyandDataintoSegmentFormat S_CombineKeyandDataintoSegmentFormat --> N_CombineKeyandDataintoSegmentFormat_Node0 N_CombineKeyandDataintoSegmentFormat_Node0 -- No --> E_CombineKeyandDataintoSegmentFormat
File: GCCUSIO.cbl
GIVEN:
Message key and data are in working storage fields
WHEN:
Creating a structured segment for database operations
THEN:
- The key
- Data must be combined into the complete segment structure in working storage
β Consolidated Acceptance Criteria
- Preparing for database insert or replace operation → the structured segment must be moved to the GCWUSIO 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_MoveStructuredSegmenttoIOArea(["Start Step"])
E_MoveStructuredSegmenttoIOArea(["End Step"])
N_MoveStructuredSegmenttoIOArea_Node0{"Preparing for database insert or
replace operation"}:::decision N_MoveStructuredSegmenttoIOArea_Node0_action["The structured segment must be
moved to the GCWUSIO IO area"]:::main N_MoveStructuredSegmenttoIOArea_Node0 -- Yes --> N_MoveStructuredSegmenttoIOArea_Node0_action N_MoveStructuredSegmenttoIOArea_Node0_action --> E_MoveStructuredSegmenttoIOArea S_MoveStructuredSegmenttoIOArea --> N_MoveStructuredSegmenttoIOArea_Node0 N_MoveStructuredSegmenttoIOArea_Node0 -- No --> E_MoveStructuredSegmenttoIOArea
replace operation"}:::decision N_MoveStructuredSegmenttoIOArea_Node0_action["The structured segment must be
moved to the GCWUSIO IO area"]:::main N_MoveStructuredSegmenttoIOArea_Node0 -- Yes --> N_MoveStructuredSegmenttoIOArea_Node0_action N_MoveStructuredSegmenttoIOArea_Node0_action --> E_MoveStructuredSegmenttoIOArea S_MoveStructuredSegmenttoIOArea --> N_MoveStructuredSegmenttoIOArea_Node0 N_MoveStructuredSegmenttoIOArea_Node0 -- No --> E_MoveStructuredSegmenttoIOArea
File: GCCUSIO.cbl
GIVEN:
A complete segment structure exists in working storage
WHEN:
Preparing for database insert or replace operation
THEN:
The structured segment must be moved to the GCWUSIO IO area
β Consolidated Acceptance Criteria
- The function code is GU or GN and the message key is spaces → an error must be set indicating the key cannot be 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_ValidateKeyNotSpaces(["Start Step"])
E_ValidateKeyNotSpaces(["End Step"])
N_ValidateKeyNotSpaces_Node0{"The function code is GU or GN and
the message key is spaces"}:::decision N_ValidateKeyNotSpaces_Node0_action["An error must be set indicating the
key cannot be spaces"]:::main N_ValidateKeyNotSpaces_Node0 -- Yes --> N_ValidateKeyNotSpaces_Node0_action N_ValidateKeyNotSpaces_Node0_action --> E_ValidateKeyNotSpaces S_ValidateKeyNotSpaces --> N_ValidateKeyNotSpaces_Node0 N_ValidateKeyNotSpaces_Node0 -- No --> E_ValidateKeyNotSpaces
the message key is spaces"}:::decision N_ValidateKeyNotSpaces_Node0_action["An error must be set indicating the
key cannot be spaces"]:::main N_ValidateKeyNotSpaces_Node0 -- Yes --> N_ValidateKeyNotSpaces_Node0_action N_ValidateKeyNotSpaces_Node0_action --> E_ValidateKeyNotSpaces S_ValidateKeyNotSpaces --> N_ValidateKeyNotSpaces_Node0 N_ValidateKeyNotSpaces_Node0 -- No --> E_ValidateKeyNotSpaces
File: GCCUSIO.cbl
GIVEN:
A message segment retrieval operation is requested
WHEN:
- The function code is gu or gn
- The message key is spaces
THEN:
An error must be set indicating the key cannot be spaces
β Consolidated Acceptance Criteria
- Key validation fails for GU or GN operations → error number '0012' and message 'GCSA8RT-KEY EQUAL SPACES' must 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_SetErrorKeyCannotbeSpaces(["Start Step"])
E_SetErrorKeyCannotbeSpaces(["End Step"])
N_SetErrorKeyCannotbeSpaces_Node0{"Key validation fails for GU or GN
operations"}:::decision N_SetErrorKeyCannotbeSpaces_Node0_action["Error number 0012 and message
GCSA8RT-KEY EQUAL SPACES must be set"]:::main N_SetErrorKeyCannotbeSpaces_Node0 -- Yes --> N_SetErrorKeyCannotbeSpaces_Node0_action N_SetErrorKeyCannotbeSpaces_Node0_action --> E_SetErrorKeyCannotbeSpaces S_SetErrorKeyCannotbeSpaces --> N_SetErrorKeyCannotbeSpaces_Node0 N_SetErrorKeyCannotbeSpaces_Node0 -- No --> E_SetErrorKeyCannotbeSpaces
operations"}:::decision N_SetErrorKeyCannotbeSpaces_Node0_action["Error number 0012 and message
GCSA8RT-KEY EQUAL SPACES must be set"]:::main N_SetErrorKeyCannotbeSpaces_Node0 -- Yes --> N_SetErrorKeyCannotbeSpaces_Node0_action N_SetErrorKeyCannotbeSpaces_Node0_action --> E_SetErrorKeyCannotbeSpaces S_SetErrorKeyCannotbeSpaces --> N_SetErrorKeyCannotbeSpaces_Node0 N_SetErrorKeyCannotbeSpaces_Node0 -- No --> E_SetErrorKeyCannotbeSpaces
File: GCCUSIO.cbl
GIVEN:
A retrieval operation has an empty message key
WHEN:
Key validation fails for GU or GN operations
THEN:
Error number '0012' and message 'GCSA8RT-KEY EQUAL SPACES' must be set
β Consolidated Acceptance Criteria
- Processing the retrieved segment data → the complete segment must be moved to working storage for data 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_ExtractSegmentintoWorkingStorage(["Start Step"])
E_ExtractSegmentintoWorkingStorage(["End Step"])
N_ExtractSegmentintoWorkingStorage_Node0{"Processing the retrieved segment
data"}:::decision N_ExtractSegmentintoWorkingStorage_Node0_action["The complete segment must be moved
to working storage for data
extraction"]:::main N_ExtractSegmentintoWorkingStorage_Node0 -- Yes --> N_ExtractSegmentintoWorkingStorage_Node0_action N_ExtractSegmentintoWorkingStorage_Node0_action --> E_ExtractSegmentintoWorkingStorage S_ExtractSegmentintoWorkingStorage --> N_ExtractSegmentintoWorkingStorage_Node0 N_ExtractSegmentintoWorkingStorage_Node0 -- No --> E_ExtractSegmentintoWorkingStorage
data"}:::decision N_ExtractSegmentintoWorkingStorage_Node0_action["The complete segment must be moved
to working storage for data
extraction"]:::main N_ExtractSegmentintoWorkingStorage_Node0 -- Yes --> N_ExtractSegmentintoWorkingStorage_Node0_action N_ExtractSegmentintoWorkingStorage_Node0_action --> E_ExtractSegmentintoWorkingStorage S_ExtractSegmentintoWorkingStorage --> N_ExtractSegmentintoWorkingStorage_Node0 N_ExtractSegmentintoWorkingStorage_Node0 -- No --> E_ExtractSegmentintoWorkingStorage
File: GCCUSIO.cbl
GIVEN:
A message segment has been successfully retrieved
WHEN:
Processing the retrieved segment data
THEN:
The complete segment must be moved to working storage for data extraction
β Consolidated Acceptance Criteria
- Preparing retrieval operation response → only the data portion must be moved back to the GCWUSIO 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_MoveDataPortiontoIOArea(["Start Step"])
E_MoveDataPortiontoIOArea(["End Step"])
N_MoveDataPortiontoIOArea_Node0{"Preparing retrieval operation
response"}:::decision N_MoveDataPortiontoIOArea_Node0_action["Only the data portion must be moved
back to the GCWUSIO IO area"]:::main N_MoveDataPortiontoIOArea_Node0 -- Yes --> N_MoveDataPortiontoIOArea_Node0_action N_MoveDataPortiontoIOArea_Node0_action --> E_MoveDataPortiontoIOArea S_MoveDataPortiontoIOArea --> N_MoveDataPortiontoIOArea_Node0 N_MoveDataPortiontoIOArea_Node0 -- No --> E_MoveDataPortiontoIOArea
response"}:::decision N_MoveDataPortiontoIOArea_Node0_action["Only the data portion must be moved
back to the GCWUSIO IO area"]:::main N_MoveDataPortiontoIOArea_Node0 -- Yes --> N_MoveDataPortiontoIOArea_Node0_action N_MoveDataPortiontoIOArea_Node0_action --> E_MoveDataPortiontoIOArea S_MoveDataPortiontoIOArea --> N_MoveDataPortiontoIOArea_Node0 N_MoveDataPortiontoIOArea_Node0 -- No --> E_MoveDataPortiontoIOArea
File: GCCUSIO.cbl
GIVEN:
Message segment data has been extracted to working storage
WHEN:
Preparing retrieval operation response
THEN:
Only the data portion must be moved back to the GCWUSIO IO area
β Consolidated Acceptance Criteria
- The system processes the delete request → the system retrieves the existing record first using 'GHU' function and if the record exists, deletes it using 'DLET' function with unqualified SSA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteOperationCompleted(["Start Step"])
E_DeleteOperationCompleted(["End Step"])
N_DeleteOperationCompleted_Node0{"The system processes the delete
request"}:::decision N_DeleteOperationCompleted_Node0_action["The system retrieves the existing
record first using GHU function and
if the record exists, deletes it
using DLET function with unqualified
SSA"]:::main N_DeleteOperationCompleted_Node0 -- Yes --> N_DeleteOperationCompleted_Node0_action N_DeleteOperationCompleted_Node0_action --> E_DeleteOperationCompleted S_DeleteOperationCompleted --> N_DeleteOperationCompleted_Node0 N_DeleteOperationCompleted_Node0 -- No --> E_DeleteOperationCompleted
request"}:::decision N_DeleteOperationCompleted_Node0_action["The system retrieves the existing
record first using GHU function and
if the record exists, deletes it
using DLET function with unqualified
SSA"]:::main N_DeleteOperationCompleted_Node0 -- Yes --> N_DeleteOperationCompleted_Node0_action N_DeleteOperationCompleted_Node0_action --> E_DeleteOperationCompleted S_DeleteOperationCompleted --> N_DeleteOperationCompleted_Node0 N_DeleteOperationCompleted_Node0 -- No --> E_DeleteOperationCompleted
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT segment delete operation is requested with function code 'DLET'
WHEN:
The system processes the delete request
THEN:
- The system retrieves the existing record first using 'ghu' function
- If the record exists, deletes it using 'dlet' function with unqualified ssa
β Consolidated Acceptance Criteria
- The system processes the insert request → the system first attempts to retrieve existing record with 'GHU' function, and if record exists performs 'REPL' operation, otherwise performs 'ISRT' operation with the formatted segment data
- The system prepares the segment data for database operation → the system moves the GCSA8RT key to the segment key field and moves the saved IO area data to the segment data field, then moves the complete formatted segment to the 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_InsertReplaceOperationCompleted(["Start Step"])
E_InsertReplaceOperationCompleted(["End Step"])
N_InsertReplaceOperationCompleted_Node0{"The system processes the insert
request"}:::decision N_InsertReplaceOperationCompleted_Node0_action["The system first attempts to
retrieve existing record with GHU
function, and if record exists
performs REPL operation, otherwise
performs ISRT operation with the
formatted segment data"]:::main N_InsertReplaceOperationCompleted_Node0 -- Yes --> N_InsertReplaceOperationCompleted_Node0_action N_InsertReplaceOperationCompleted_Node0_action --> E_InsertReplaceOperationCompleted S_InsertReplaceOperationCompleted --> N_InsertReplaceOperationCompleted_Node0 N_InsertReplaceOperationCompleted_Node1{"The system prepares the segment
data for database operation"}:::decision N_InsertReplaceOperationCompleted_Node1_action["The system moves the GCSA8RT key to
the segment key field and moves the
saved IO area data to the segment
data field, then moves the complete
formatted segment to the IO area"]:::main N_InsertReplaceOperationCompleted_Node1 -- Yes --> N_InsertReplaceOperationCompleted_Node1_action N_InsertReplaceOperationCompleted_Node1_action --> E_InsertReplaceOperationCompleted N_InsertReplaceOperationCompleted_Node0 -- No --> N_InsertReplaceOperationCompleted_Node1 N_InsertReplaceOperationCompleted_Node1 -- No --> E_InsertReplaceOperationCompleted
request"}:::decision N_InsertReplaceOperationCompleted_Node0_action["The system first attempts to
retrieve existing record with GHU
function, and if record exists
performs REPL operation, otherwise
performs ISRT operation with the
formatted segment data"]:::main N_InsertReplaceOperationCompleted_Node0 -- Yes --> N_InsertReplaceOperationCompleted_Node0_action N_InsertReplaceOperationCompleted_Node0_action --> E_InsertReplaceOperationCompleted S_InsertReplaceOperationCompleted --> N_InsertReplaceOperationCompleted_Node0 N_InsertReplaceOperationCompleted_Node1{"The system prepares the segment
data for database operation"}:::decision N_InsertReplaceOperationCompleted_Node1_action["The system moves the GCSA8RT key to
the segment key field and moves the
saved IO area data to the segment
data field, then moves the complete
formatted segment to the IO area"]:::main N_InsertReplaceOperationCompleted_Node1 -- Yes --> N_InsertReplaceOperationCompleted_Node1_action N_InsertReplaceOperationCompleted_Node1_action --> E_InsertReplaceOperationCompleted N_InsertReplaceOperationCompleted_Node0 -- No --> N_InsertReplaceOperationCompleted_Node1 N_InsertReplaceOperationCompleted_Node1 -- No --> E_InsertReplaceOperationCompleted
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT segment insert operation is requested with function code 'ISRT'
WHEN:
The system processes the insert request
THEN:
The system first attempts to retrieve existing record with 'GHU' function, and if record exists performs 'REPL' operation, otherwise performs 'ISRT' operation with the formatted segment data
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT insert or replace operation is being processed
WHEN:
The system prepares the segment data for database operation
THEN:
- The system moves the gcsa8rt key to the segment key field
- Moves the saved io area data to the segment data field, then moves the complete formatted segment to the io area
β Consolidated Acceptance Criteria
- The system successfully retrieves the record → the system moves the complete IO area to a work segment, extracts only the data portion from the work segment, and moves the extracted data back to the IO area for return
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageDataFormattedforReturn(["Start Step"])
E_MessageDataFormattedforReturn(["End Step"])
N_MessageDataFormattedforReturn_Node0{"The system successfully retrieves
the record"}:::decision N_MessageDataFormattedforReturn_Node0_action["The system moves the complete IO
area to a work segment, extracts
only the data portion from the work
segment, and moves the extracted
data back to the IO area for return"]:::main N_MessageDataFormattedforReturn_Node0 -- Yes --> N_MessageDataFormattedforReturn_Node0_action N_MessageDataFormattedforReturn_Node0_action --> E_MessageDataFormattedforReturn S_MessageDataFormattedforReturn --> N_MessageDataFormattedforReturn_Node0 N_MessageDataFormattedforReturn_Node0 -- No --> E_MessageDataFormattedforReturn
the record"}:::decision N_MessageDataFormattedforReturn_Node0_action["The system moves the complete IO
area to a work segment, extracts
only the data portion from the work
segment, and moves the extracted
data back to the IO area for return"]:::main N_MessageDataFormattedforReturn_Node0 -- Yes --> N_MessageDataFormattedforReturn_Node0_action N_MessageDataFormattedforReturn_Node0_action --> E_MessageDataFormattedforReturn S_MessageDataFormattedforReturn --> N_MessageDataFormattedforReturn_Node0 N_MessageDataFormattedforReturn_Node0 -- No --> E_MessageDataFormattedforReturn
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT segment retrieve operation is requested with function code 'GU'
WHEN:
The system successfully retrieves the record
THEN:
The system moves the complete IO area to a work segment, extracts only the data portion from the work segment, and moves the extracted data back to the IO area for return
β Consolidated Acceptance Criteria
- The system validates the input parameters → if the GCSA8RT key equals spaces, the system sets error number '0012' and error message 'GCSA8RT-KEY EQUAL SPACES', otherwise builds qualified SSA with the key 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_RetrieveOperationCompleted(["Start Step"])
E_RetrieveOperationCompleted(["End Step"])
N_RetrieveOperationCompleted_Node0{"The system validates the input
parameters"}:::decision N_RetrieveOperationCompleted_Node0_action["If the GCSA8RT key equals spaces,
the system sets error number 0012
and error message GCSA8RT-KEY EQUAL
SPACES , otherwise builds qualified
SSA with the key value"]:::main N_RetrieveOperationCompleted_Node0 -- Yes --> N_RetrieveOperationCompleted_Node0_action N_RetrieveOperationCompleted_Node0_action --> E_RetrieveOperationCompleted S_RetrieveOperationCompleted --> N_RetrieveOperationCompleted_Node0 N_RetrieveOperationCompleted_Node0 -- No --> E_RetrieveOperationCompleted
parameters"}:::decision N_RetrieveOperationCompleted_Node0_action["If the GCSA8RT key equals spaces,
the system sets error number 0012
and error message GCSA8RT-KEY EQUAL
SPACES , otherwise builds qualified
SSA with the key value"]:::main N_RetrieveOperationCompleted_Node0 -- Yes --> N_RetrieveOperationCompleted_Node0_action N_RetrieveOperationCompleted_Node0_action --> E_RetrieveOperationCompleted S_RetrieveOperationCompleted --> N_RetrieveOperationCompleted_Node0 N_RetrieveOperationCompleted_Node0 -- No --> E_RetrieveOperationCompleted
File: GCCUSIO.cbl
GIVEN:
A GCSA8RT retrieve operation with function code 'GU' or 'GN' is requested
WHEN:
The system validates the input parameters
THEN:
If the GCSA8RT key equals spaces, the system sets error number '0012' and error message 'GCSA8RT-KEY EQUAL SPACES', otherwise builds qualified SSA with the key value
β Consolidated Acceptance Criteria
- The system prepares for table lookup operation → all table parameters are cleared including second PCB flag, unqualified SSA flag, table key values, and return 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_InitializeTableParameters(["Start Step"])
E_InitializeTableParameters(["End Step"])
N_InitializeTableParameters_Node0{"The system prepares for table
lookup operation"}:::decision N_InitializeTableParameters_Node0_action["All table parameters are cleared
including second PCB flag,
unqualified SSA flag, table key
values, and return flag"]:::main N_InitializeTableParameters_Node0 -- Yes --> N_InitializeTableParameters_Node0_action N_InitializeTableParameters_Node0_action --> E_InitializeTableParameters S_InitializeTableParameters --> N_InitializeTableParameters_Node0 N_InitializeTableParameters_Node0 -- No --> E_InitializeTableParameters
lookup operation"}:::decision N_InitializeTableParameters_Node0_action["All table parameters are cleared
including second PCB flag,
unqualified SSA flag, table key
values, and return flag"]:::main N_InitializeTableParameters_Node0 -- Yes --> N_InitializeTableParameters_Node0_action N_InitializeTableParameters_Node0_action --> E_InitializeTableParameters S_InitializeTableParameters --> N_InitializeTableParameters_Node0 N_InitializeTableParameters_Node0 -- No --> E_InitializeTableParameters
File: GCCUSIO.cbl
GIVEN:
A table lookup request is initiated
WHEN:
The system prepares for table lookup operation
THEN:
All table parameters are cleared including second PCB flag, unqualified SSA flag, table key values, and return flag
β Consolidated Acceptance Criteria
- The system performs station table lookup → the location ID name from the cargo record is used as the station sequence ID key for table 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_SetStationKeyfromLocationID(["Start Step"])
E_SetStationKeyfromLocationID(["End Step"])
N_SetStationKeyfromLocationID_Node0{"The system performs station table
lookup"}:::decision N_SetStationKeyfromLocationID_Node0_action["The location ID name from the cargo
record is used as the station
sequence ID key for table lookup"]:::main N_SetStationKeyfromLocationID_Node0 -- Yes --> N_SetStationKeyfromLocationID_Node0_action N_SetStationKeyfromLocationID_Node0_action --> E_SetStationKeyfromLocationID S_SetStationKeyfromLocationID --> N_SetStationKeyfromLocationID_Node0 N_SetStationKeyfromLocationID_Node0 -- No --> E_SetStationKeyfromLocationID
lookup"}:::decision N_SetStationKeyfromLocationID_Node0_action["The location ID name from the cargo
record is used as the station
sequence ID key for table lookup"]:::main N_SetStationKeyfromLocationID_Node0 -- Yes --> N_SetStationKeyfromLocationID_Node0_action N_SetStationKeyfromLocationID_Node0_action --> E_SetStationKeyfromLocationID S_SetStationKeyfromLocationID --> N_SetStationKeyfromLocationID_Node0 N_SetStationKeyfromLocationID_Node0 -- No --> E_SetStationKeyfromLocationID
File: GCCUSIO.cbl
GIVEN:
A cargo record contains a location ID name
WHEN:
The system performs station table lookup
THEN:
The location ID name from the cargo record is used as the station sequence ID key for table lookup
β Consolidated Acceptance Criteria
- The system needs to retrieve station information → the GCCTBIO table lookup service is called with the prepared parameters to access table segments
- The system calls the table lookup service → the GCCTBIO service is invoked with the configured parameters to retrieve table segment data
- The system needs to retrieve Iron Highway configuration data → the table lookup service should be called with the prepared parameters to retrieve the configuration segment
- The system executes the station information retrieval → the table lookup service is called with function code, table ID, and 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_CallTableLookupService(["Start Step"])
E_CallTableLookupService(["End Step"])
N_CallTableLookupService_Node0{"The system needs to retrieve
station information"}:::decision N_CallTableLookupService_Node0_action["The GCCTBIO table lookup service is
called with the prepared parameters
to access table segments"]:::main N_CallTableLookupService_Node0 -- Yes --> N_CallTableLookupService_Node0_action N_CallTableLookupService_Node0_action --> E_CallTableLookupService S_CallTableLookupService --> N_CallTableLookupService_Node0 N_CallTableLookupService_Node1{"The system calls the table lookup
service"}:::decision N_CallTableLookupService_Node1_action["The GCCTBIO service is invoked with
the configured parameters to
retrieve table segment data"]:::main N_CallTableLookupService_Node1 -- Yes --> N_CallTableLookupService_Node1_action N_CallTableLookupService_Node1_action --> E_CallTableLookupService N_CallTableLookupService_Node0 -- No --> N_CallTableLookupService_Node1 N_CallTableLookupService_Node2{"The system needs to retrieve Iron
Highway configuration data"}:::decision N_CallTableLookupService_Node2_action["The table lookup service should be
called with the prepared parameters
to retrieve the configuration
segment"]:::main N_CallTableLookupService_Node2 -- Yes --> N_CallTableLookupService_Node2_action N_CallTableLookupService_Node2_action --> E_CallTableLookupService N_CallTableLookupService_Node1 -- No --> N_CallTableLookupService_Node2 N_CallTableLookupService_Node3{"The system executes the station
information retrieval"}:::decision N_CallTableLookupService_Node3_action["The table lookup service is called
with function code, table ID, and
search key"]:::main N_CallTableLookupService_Node3 -- Yes --> N_CallTableLookupService_Node3_action N_CallTableLookupService_Node3_action --> E_CallTableLookupService N_CallTableLookupService_Node2 -- No --> N_CallTableLookupService_Node3 N_CallTableLookupService_Node3 -- No --> E_CallTableLookupService
station information"}:::decision N_CallTableLookupService_Node0_action["The GCCTBIO table lookup service is
called with the prepared parameters
to access table segments"]:::main N_CallTableLookupService_Node0 -- Yes --> N_CallTableLookupService_Node0_action N_CallTableLookupService_Node0_action --> E_CallTableLookupService S_CallTableLookupService --> N_CallTableLookupService_Node0 N_CallTableLookupService_Node1{"The system calls the table lookup
service"}:::decision N_CallTableLookupService_Node1_action["The GCCTBIO service is invoked with
the configured parameters to
retrieve table segment data"]:::main N_CallTableLookupService_Node1 -- Yes --> N_CallTableLookupService_Node1_action N_CallTableLookupService_Node1_action --> E_CallTableLookupService N_CallTableLookupService_Node0 -- No --> N_CallTableLookupService_Node1 N_CallTableLookupService_Node2{"The system needs to retrieve Iron
Highway configuration data"}:::decision N_CallTableLookupService_Node2_action["The table lookup service should be
called with the prepared parameters
to retrieve the configuration
segment"]:::main N_CallTableLookupService_Node2 -- Yes --> N_CallTableLookupService_Node2_action N_CallTableLookupService_Node2_action --> E_CallTableLookupService N_CallTableLookupService_Node1 -- No --> N_CallTableLookupService_Node2 N_CallTableLookupService_Node3{"The system executes the station
information retrieval"}:::decision N_CallTableLookupService_Node3_action["The table lookup service is called
with function code, table ID, and
search key"]:::main N_CallTableLookupService_Node3 -- Yes --> N_CallTableLookupService_Node3_action N_CallTableLookupService_Node3_action --> E_CallTableLookupService N_CallTableLookupService_Node2 -- No --> N_CallTableLookupService_Node3 N_CallTableLookupService_Node3 -- No --> E_CallTableLookupService
File: GCCUSIO.cbl
GIVEN:
Table parameters are initialized with MC table ID and station key
WHEN:
The system needs to retrieve station information
THEN:
The GCCTBIO table lookup service is called with the prepared parameters to access table segments
File: GCCUSIO.cbl
GIVEN:
Table lookup parameters are configured with table ID 'IH' and station code
WHEN:
The system calls the table lookup service
THEN:
The GCCTBIO service is invoked with the configured parameters to retrieve table segment data
File: GCCUSIO.cbl
GIVEN:
All Iron Highway table lookup parameters have been prepared including function code, table ID, and station search key
WHEN:
The system needs to retrieve Iron Highway configuration data
THEN:
The table lookup service should be called with the prepared parameters to retrieve the configuration segment
File: GCCUSIO.cbl
GIVEN:
All table lookup parameters are properly configured
WHEN:
The system executes the station information retrieval
THEN:
The table lookup service is called with function code, table ID, and search key
β Consolidated Acceptance Criteria
- The system checks the lookup result → if return flag equals '0' then station record is found, otherwise station record is not found
- If the lookup result → if return flag equals '0' then lookup is successful, otherwise lookup 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_TableRecordFound(["Start Step"])
E_TableRecordFound(["End Step"])
N_TableRecordFound_Node0{"The system checks the lookup result"}:::decision
N_TableRecordFound_Node0_action["If return flag equals 0 then
station record is found, otherwise
station record is not found"]:::main N_TableRecordFound_Node0 -- Yes --> N_TableRecordFound_Node0_action N_TableRecordFound_Node0_action --> E_TableRecordFound S_TableRecordFound --> N_TableRecordFound_Node0 N_TableRecordFound_Node1{"The system evaluates the lookup
result"}:::decision N_TableRecordFound_Node1_action["If return flag equals 0 then lookup
is successful, otherwise lookup
failed"]:::main N_TableRecordFound_Node1 -- Yes --> N_TableRecordFound_Node1_action N_TableRecordFound_Node1_action --> E_TableRecordFound N_TableRecordFound_Node0 -- No --> N_TableRecordFound_Node1 N_TableRecordFound_Node1 -- No --> E_TableRecordFound
station record is found, otherwise
station record is not found"]:::main N_TableRecordFound_Node0 -- Yes --> N_TableRecordFound_Node0_action N_TableRecordFound_Node0_action --> E_TableRecordFound S_TableRecordFound --> N_TableRecordFound_Node0 N_TableRecordFound_Node1{"The system evaluates the lookup
result"}:::decision N_TableRecordFound_Node1_action["If return flag equals 0 then lookup
is successful, otherwise lookup
failed"]:::main N_TableRecordFound_Node1 -- Yes --> N_TableRecordFound_Node1_action N_TableRecordFound_Node1_action --> E_TableRecordFound N_TableRecordFound_Node0 -- No --> N_TableRecordFound_Node1 N_TableRecordFound_Node1 -- No --> E_TableRecordFound
File: GCCUSIO.cbl
GIVEN:
A table lookup operation has been performed
WHEN:
The system checks the lookup result
THEN:
If return flag equals '0' then station record is found, otherwise station record is not found
File: GCCUSIO.cbl
GIVEN:
MC table lookup has been executed
WHEN:
The system evaluates the lookup result
THEN:
If return flag equals '0' then lookup is successful, otherwise lookup failed
β Consolidated Acceptance Criteria
- The system needs to extract station information → the table segment data is moved to MC segment structure and the MC station number is extracted for use
- The system needs the station number for cargo processing → the station number is extracted from the MC table segment data 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_ExtractStationNumber(["Start Step"])
E_ExtractStationNumber(["End Step"])
N_ExtractStationNumber_Node0{"The system needs to extract station
information"}:::decision N_ExtractStationNumber_Node0_action["The table segment data is moved to
MC segment structure and the MC
station number is extracted for use"]:::main N_ExtractStationNumber_Node0 -- Yes --> N_ExtractStationNumber_Node0_action N_ExtractStationNumber_Node0_action --> E_ExtractStationNumber S_ExtractStationNumber --> N_ExtractStationNumber_Node0 N_ExtractStationNumber_Node1{"The system needs the station number
for cargo processing"}:::decision N_ExtractStationNumber_Node1_action["The station number is extracted
from the MC table segment data
structure"]:::main N_ExtractStationNumber_Node1 -- Yes --> N_ExtractStationNumber_Node1_action N_ExtractStationNumber_Node1_action --> E_ExtractStationNumber N_ExtractStationNumber_Node0 -- No --> N_ExtractStationNumber_Node1 N_ExtractStationNumber_Node1 -- No --> E_ExtractStationNumber
information"}:::decision N_ExtractStationNumber_Node0_action["The table segment data is moved to
MC segment structure and the MC
station number is extracted for use"]:::main N_ExtractStationNumber_Node0 -- Yes --> N_ExtractStationNumber_Node0_action N_ExtractStationNumber_Node0_action --> E_ExtractStationNumber S_ExtractStationNumber --> N_ExtractStationNumber_Node0 N_ExtractStationNumber_Node1{"The system needs the station number
for cargo processing"}:::decision N_ExtractStationNumber_Node1_action["The station number is extracted
from the MC table segment data
structure"]:::main N_ExtractStationNumber_Node1 -- Yes --> N_ExtractStationNumber_Node1_action N_ExtractStationNumber_Node1_action --> E_ExtractStationNumber N_ExtractStationNumber_Node0 -- No --> N_ExtractStationNumber_Node1 N_ExtractStationNumber_Node1 -- No --> E_ExtractStationNumber
File: GCCUSIO.cbl
GIVEN:
A station record is found in the MC table
WHEN:
The system needs to extract station information
THEN:
- The table segment data is moved to mc segment structure
- The mc station number is extracted for use
File: GCCUSIO.cbl
GIVEN:
MC table segment data is available in working storage
WHEN:
The system needs the station number for cargo processing
THEN:
The station number is extracted from the MC table segment data structure
β Consolidated Acceptance Criteria
- The system processes border-related cargo operations → the MC station number is used as the border station identifier in cargo status 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_UseStationNumberforBorderProcessing(["Start Step"])
E_UseStationNumberforBorderProcessing(["End Step"])
N_UseStationNumberforBorderProcessing_Node0{"The system processes border-related
cargo operations"}:::decision N_UseStationNumberforBorderProcessing_Node0_action["The MC station number is used as
the border station identifier in
cargo status processing"]:::main N_UseStationNumberforBorderProcessing_Node0 -- Yes --> N_UseStationNumberforBorderProcessing_Node0_action N_UseStationNumberforBorderProcessing_Node0_action --> E_UseStationNumberforBorderProcessing S_UseStationNumberforBorderProcessing --> N_UseStationNumberforBorderProcessing_Node0 N_UseStationNumberforBorderProcessing_Node0 -- No --> E_UseStationNumberforBorderProcessing
cargo operations"}:::decision N_UseStationNumberforBorderProcessing_Node0_action["The MC station number is used as
the border station identifier in
cargo status processing"]:::main N_UseStationNumberforBorderProcessing_Node0 -- Yes --> N_UseStationNumberforBorderProcessing_Node0_action N_UseStationNumberforBorderProcessing_Node0_action --> E_UseStationNumberforBorderProcessing S_UseStationNumberforBorderProcessing --> N_UseStationNumberforBorderProcessing_Node0 N_UseStationNumberforBorderProcessing_Node0 -- No --> E_UseStationNumberforBorderProcessing
File: GCCUSIO.cbl
GIVEN:
A station number has been successfully extracted from MC table
WHEN:
The system processes border-related cargo operations
THEN:
The MC station number is used as the border station identifier in cargo status processing
β Consolidated Acceptance Criteria
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status AND no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → delete the cargo record from GCSB1RT index database and complete 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_NoIndexProcessingRequiredDeleteRecord(["Start Step"])
E_NoIndexProcessingRequiredDeleteRecord(["End Step"])
N_NoIndexProcessingRequiredDeleteRecord_Node0{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_NoIndexProcessingRequiredDeleteRecord_Node0_action["Delete the cargo record from
GCSB1RT index database and complete
index management"]:::exclusion N_NoIndexProcessingRequiredDeleteRecord_Node0 -- Yes -->|Alternative| N_NoIndexProcessingRequiredDeleteRecord_Node0_action N_NoIndexProcessingRequiredDeleteRecord_Node0_action --> E_NoIndexProcessingRequiredDeleteRecord S_NoIndexProcessingRequiredDeleteRecord --> N_NoIndexProcessingRequiredDeleteRecord_Node0 N_NoIndexProcessingRequiredDeleteRecord_Node0 -- No --> E_NoIndexProcessingRequiredDeleteRecord
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_NoIndexProcessingRequiredDeleteRecord_Node0_action["Delete the cargo record from
GCSB1RT index database and complete
index management"]:::exclusion N_NoIndexProcessingRequiredDeleteRecord_Node0 -- Yes -->|Alternative| N_NoIndexProcessingRequiredDeleteRecord_Node0_action N_NoIndexProcessingRequiredDeleteRecord_Node0_action --> E_NoIndexProcessingRequiredDeleteRecord S_NoIndexProcessingRequiredDeleteRecord --> N_NoIndexProcessingRequiredDeleteRecord_Node0 N_NoIndexProcessingRequiredDeleteRecord_Node0 -- No --> E_NoIndexProcessingRequiredDeleteRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
- No us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
- Delete the cargo record from gcsb1rt index database
- Complete index management
β Consolidated Acceptance Criteria
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status → clear the error origin index field AND clear the error destination index field AND clear the error border index field in the GCSB1RT record
- The system processes the cargo status update → the system clears the error origin index, error destination index, and error border index fields in the status record
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status → the error origin index, error destination index, and error border index fields should be cleared to spaces
- The system processes index cleanup for non-error cargo → error origin index, error destination index, and error border index fields are set to spaces
- The system processes the cargo status update → the system clears the error origin index field AND clears the error destination index field AND clears the error border index 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_ClearErrorIndexFields(["Start Step"])
E_ClearErrorIndexFields(["End Step"])
N_ClearErrorIndexFields_Node0{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status"}:::decision N_ClearErrorIndexFields_Node0_action["Clear the error origin index field
AND clear the error destination
index field AND clear the error
border index field in the GCSB1RT
record"]:::exclusion N_ClearErrorIndexFields_Node0 -- Yes -->|Alternative| N_ClearErrorIndexFields_Node0_action N_ClearErrorIndexFields_Node0_action --> E_ClearErrorIndexFields S_ClearErrorIndexFields --> N_ClearErrorIndexFields_Node0 N_ClearErrorIndexFields_Node1{"The system processes the cargo
status update"}:::decision N_ClearErrorIndexFields_Node1_action["The system clears the error origin
index, error destination index, and
error border index fields in the
status record"]:::main N_ClearErrorIndexFields_Node1 -- Yes --> N_ClearErrorIndexFields_Node1_action N_ClearErrorIndexFields_Node1_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node0 -- No --> N_ClearErrorIndexFields_Node1 N_ClearErrorIndexFields_Node2{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status"}:::decision N_ClearErrorIndexFields_Node2_action["The error origin index, error
destination index, and error border
index fields should be cleared to
spaces"]:::exclusion N_ClearErrorIndexFields_Node2 -- Yes -->|Alternative| N_ClearErrorIndexFields_Node2_action N_ClearErrorIndexFields_Node2_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node1 -- No --> N_ClearErrorIndexFields_Node2 N_ClearErrorIndexFields_Node3{"The system processes index cleanup
for non-error cargo"}:::decision N_ClearErrorIndexFields_Node3_action["Error origin index, error
destination index, and error border
index fields are set to spaces"]:::exclusion N_ClearErrorIndexFields_Node3 -- Yes -->|Alternative| N_ClearErrorIndexFields_Node3_action N_ClearErrorIndexFields_Node3_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node2 -- No --> N_ClearErrorIndexFields_Node3 N_ClearErrorIndexFields_Node4{"The system processes the cargo
status update"}:::decision N_ClearErrorIndexFields_Node4_action["The system clears the error origin
index field AND clears the error
destination index field AND clears
the error border index field"]:::main N_ClearErrorIndexFields_Node4 -- Yes --> N_ClearErrorIndexFields_Node4_action N_ClearErrorIndexFields_Node4_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node3 -- No --> N_ClearErrorIndexFields_Node4 N_ClearErrorIndexFields_Node4 -- No --> E_ClearErrorIndexFields
status AND no CP cargo pending
status AND no US cargo error status"}:::decision N_ClearErrorIndexFields_Node0_action["Clear the error origin index field
AND clear the error destination
index field AND clear the error
border index field in the GCSB1RT
record"]:::exclusion N_ClearErrorIndexFields_Node0 -- Yes -->|Alternative| N_ClearErrorIndexFields_Node0_action N_ClearErrorIndexFields_Node0_action --> E_ClearErrorIndexFields S_ClearErrorIndexFields --> N_ClearErrorIndexFields_Node0 N_ClearErrorIndexFields_Node1{"The system processes the cargo
status update"}:::decision N_ClearErrorIndexFields_Node1_action["The system clears the error origin
index, error destination index, and
error border index fields in the
status record"]:::main N_ClearErrorIndexFields_Node1 -- Yes --> N_ClearErrorIndexFields_Node1_action N_ClearErrorIndexFields_Node1_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node0 -- No --> N_ClearErrorIndexFields_Node1 N_ClearErrorIndexFields_Node2{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status"}:::decision N_ClearErrorIndexFields_Node2_action["The error origin index, error
destination index, and error border
index fields should be cleared to
spaces"]:::exclusion N_ClearErrorIndexFields_Node2 -- Yes -->|Alternative| N_ClearErrorIndexFields_Node2_action N_ClearErrorIndexFields_Node2_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node1 -- No --> N_ClearErrorIndexFields_Node2 N_ClearErrorIndexFields_Node3{"The system processes index cleanup
for non-error cargo"}:::decision N_ClearErrorIndexFields_Node3_action["Error origin index, error
destination index, and error border
index fields are set to spaces"]:::exclusion N_ClearErrorIndexFields_Node3 -- Yes -->|Alternative| N_ClearErrorIndexFields_Node3_action N_ClearErrorIndexFields_Node3_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node2 -- No --> N_ClearErrorIndexFields_Node3 N_ClearErrorIndexFields_Node4{"The system processes the cargo
status update"}:::decision N_ClearErrorIndexFields_Node4_action["The system clears the error origin
index field AND clears the error
destination index field AND clears
the error border index field"]:::main N_ClearErrorIndexFields_Node4 -- Yes --> N_ClearErrorIndexFields_Node4_action N_ClearErrorIndexFields_Node4_action --> E_ClearErrorIndexFields N_ClearErrorIndexFields_Node3 -- No --> N_ClearErrorIndexFields_Node4 N_ClearErrorIndexFields_Node4 -- No --> E_ClearErrorIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in GCSB1RT index database
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
THEN:
- Clear the error origin index field
- Clear the error destination index field
- Clear the error border index field in the gcsb1rt record
File: GCCUSIO.cbl
GIVEN:
A cargo record with no error conditions (RT10 CPCARGO-ERROR, RT10 CPCARGO-PENDING, RT11 USCARGO-ERROR) but with hold conditions
WHEN:
The system processes the cargo status update
THEN:
The system clears the error origin index, error destination index, and error border index fields in the status record
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with a GCSB1RT status record
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
THEN:
The error origin index, error destination index, and error border index fields should be cleared to spaces
File: GCCUSIO.cbl
GIVEN:
Cargo no longer has error status but has existing error index record
WHEN:
The system processes index cleanup for non-error cargo
THEN:
Error origin index, error destination index, and error border index fields are set to spaces
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists in the GCSB1RT index table AND the cargo does not have CPCARGO-ERROR status AND the cargo does not have CPCARGO-PENDING status AND the cargo does not have USCARGO-ERROR status
WHEN:
The system processes the cargo status update
THEN:
- The system clears the error origin index field
- Clears the error destination index field
- Clears the error border index field
β Consolidated Acceptance Criteria
- The error destination index field is empty AND the error origin index field is empty AND the error border index field is empty → delete the GCSB1RT record from the index database
- At least one of the following fields is not empty: error destination index field:
- error origin index field
- error border index 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_AnyIndexFieldsRemaining(["Start Step"])
E_AnyIndexFieldsRemaining(["End Step"])
N_AnyIndexFieldsRemaining_Node0{"The error destination index field
is empty AND the error origin index
field is empty AND the error border
index field is empty"}:::decision N_AnyIndexFieldsRemaining_Node0_action["Delete the GCSB1RT record from the
index database"]:::exclusion N_AnyIndexFieldsRemaining_Node0 -- Yes -->|Alternative| N_AnyIndexFieldsRemaining_Node0_action N_AnyIndexFieldsRemaining_Node0_action --> E_AnyIndexFieldsRemaining S_AnyIndexFieldsRemaining --> N_AnyIndexFieldsRemaining_Node0 N_AnyIndexFieldsRemaining_Node1{"At least one of the following
fields is not empty: error
destination index field OR error
origin index field OR error border
index field"}:::decision N_AnyIndexFieldsRemaining_Node1_action["Replace the existing GCSB1RT record
with the updated field values"]:::exclusion N_AnyIndexFieldsRemaining_Node1 -- Yes -->|Alternative| N_AnyIndexFieldsRemaining_Node1_action N_AnyIndexFieldsRemaining_Node1_action --> E_AnyIndexFieldsRemaining N_AnyIndexFieldsRemaining_Node0 -- No --> N_AnyIndexFieldsRemaining_Node1 N_AnyIndexFieldsRemaining_Node1 -- No --> E_AnyIndexFieldsRemaining
is empty AND the error origin index
field is empty AND the error border
index field is empty"}:::decision N_AnyIndexFieldsRemaining_Node0_action["Delete the GCSB1RT record from the
index database"]:::exclusion N_AnyIndexFieldsRemaining_Node0 -- Yes -->|Alternative| N_AnyIndexFieldsRemaining_Node0_action N_AnyIndexFieldsRemaining_Node0_action --> E_AnyIndexFieldsRemaining S_AnyIndexFieldsRemaining --> N_AnyIndexFieldsRemaining_Node0 N_AnyIndexFieldsRemaining_Node1{"At least one of the following
fields is not empty: error
destination index field OR error
origin index field OR error border
index field"}:::decision N_AnyIndexFieldsRemaining_Node1_action["Replace the existing GCSB1RT record
with the updated field values"]:::exclusion N_AnyIndexFieldsRemaining_Node1 -- Yes -->|Alternative| N_AnyIndexFieldsRemaining_Node1_action N_AnyIndexFieldsRemaining_Node1_action --> E_AnyIndexFieldsRemaining N_AnyIndexFieldsRemaining_Node0 -- No --> N_AnyIndexFieldsRemaining_Node1 N_AnyIndexFieldsRemaining_Node1 -- No --> E_AnyIndexFieldsRemaining
File: GCCUSIO.cbl
GIVEN:
Error and hold index fields have been cleared from a GCSB1RT record
WHEN:
- The error destination index field is empty
- The error origin index field is empty
- The error border index field is empty
THEN:
Delete the GCSB1RT record from the index database
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
Error and hold index fields have been cleared from a GCSB1RT record
WHEN:
At least one of the following fields is not empty: error destination index field OR error origin index field OR error border index field
THEN:
Replace the existing GCSB1RT record with the updated field values
β Consolidated Acceptance Criteria
- The cargo has CP cargo error status:
- CP cargo pending status
- US cargo error status
- The system processes error field population → the system sets error code 'E' for origin, border, and destination fields, populates origin error index with origin station number, populates destination error index with destination station number, populates border error index with border station number from MC table lookup, and assigns the cargo CCN key to all error cargo index fields
- The cargo has CP cargo error status:
- CP cargo pending status
- US cargo error status
- The system processes the error status update → the system sets error code origin to 'E' AND sets error origin to origin station number AND sets error origin cargo to CCN key AND sets error code border to 'E' AND retrieves border station from MC table AND sets error border to border station number AND sets error border cargo to CCN key AND sets error code destination to 'E' AND sets error destination to destination station number AND sets error destination cargo to 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_PopulateErrorIndexFields(["Start Step"])
E_PopulateErrorIndexFields(["End Step"])
N_PopulateErrorIndexFields_Node0{"The cargo has CP cargo error status
OR CP cargo pending status OR US
cargo error status"}:::decision N_PopulateErrorIndexFields_Node0_action["Set error code origin to E AND set
error origin station to cargo origin
station number AND set cargo CCN key
to error origin cargo field AND set
error code border to E AND set error
code destination to E AND set cargo
destination station number to error
destination field AND set cargo CCN
key to error destination cargo field"]:::exclusion N_PopulateErrorIndexFields_Node0 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node0_action N_PopulateErrorIndexFields_Node0_action --> E_PopulateErrorIndexFields S_PopulateErrorIndexFields --> N_PopulateErrorIndexFields_Node0 N_PopulateErrorIndexFields_Node1{"The system processes error field
population"}:::decision N_PopulateErrorIndexFields_Node1_action["The system sets error code E for
origin, border, and destination
fields, populates origin error index
with origin station number,
populates destination error index
with destination station number,
populates border error index with
border station number from MC table
lookup, and assigns the cargo CCN
key to all error cargo index fields"]:::exclusion N_PopulateErrorIndexFields_Node1 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node1_action N_PopulateErrorIndexFields_Node1_action --> E_PopulateErrorIndexFields N_PopulateErrorIndexFields_Node0 -- No --> N_PopulateErrorIndexFields_Node1 N_PopulateErrorIndexFields_Node2{"The cargo has CP cargo error status
OR CP cargo pending status OR US
cargo error status"}:::decision N_PopulateErrorIndexFields_Node2_action["The error origin index should be
set to origin station number, error
destination index should be set to
destination station number, error
border index should be set to border
station number from MC table lookup,
and all error code fields should be
set to E"]:::exclusion N_PopulateErrorIndexFields_Node2 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node2_action N_PopulateErrorIndexFields_Node2_action --> E_PopulateErrorIndexFields N_PopulateErrorIndexFields_Node1 -- No --> N_PopulateErrorIndexFields_Node2 N_PopulateErrorIndexFields_Node3{"The system processes the error
status update"}:::decision N_PopulateErrorIndexFields_Node3_action["The system sets error code origin
to E AND sets error origin to origin
station number AND sets error origin
cargo to CCN key AND sets error code
border to E AND retrieves border
station from MC table AND sets error
border to border station number AND
sets error border cargo to CCN key
AND sets error code destination to E
AND sets error destination to
destination station number AND sets
error destination cargo to CCN key"]:::exclusion N_PopulateErrorIndexFields_Node3 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node3_action N_PopulateErrorIndexFields_Node3_action --> E_PopulateErrorIndexFields N_PopulateErrorIndexFields_Node2 -- No --> N_PopulateErrorIndexFields_Node3 N_PopulateErrorIndexFields_Node3 -- No --> E_PopulateErrorIndexFields
OR CP cargo pending status OR US
cargo error status"}:::decision N_PopulateErrorIndexFields_Node0_action["Set error code origin to E AND set
error origin station to cargo origin
station number AND set cargo CCN key
to error origin cargo field AND set
error code border to E AND set error
code destination to E AND set cargo
destination station number to error
destination field AND set cargo CCN
key to error destination cargo field"]:::exclusion N_PopulateErrorIndexFields_Node0 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node0_action N_PopulateErrorIndexFields_Node0_action --> E_PopulateErrorIndexFields S_PopulateErrorIndexFields --> N_PopulateErrorIndexFields_Node0 N_PopulateErrorIndexFields_Node1{"The system processes error field
population"}:::decision N_PopulateErrorIndexFields_Node1_action["The system sets error code E for
origin, border, and destination
fields, populates origin error index
with origin station number,
populates destination error index
with destination station number,
populates border error index with
border station number from MC table
lookup, and assigns the cargo CCN
key to all error cargo index fields"]:::exclusion N_PopulateErrorIndexFields_Node1 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node1_action N_PopulateErrorIndexFields_Node1_action --> E_PopulateErrorIndexFields N_PopulateErrorIndexFields_Node0 -- No --> N_PopulateErrorIndexFields_Node1 N_PopulateErrorIndexFields_Node2{"The cargo has CP cargo error status
OR CP cargo pending status OR US
cargo error status"}:::decision N_PopulateErrorIndexFields_Node2_action["The error origin index should be
set to origin station number, error
destination index should be set to
destination station number, error
border index should be set to border
station number from MC table lookup,
and all error code fields should be
set to E"]:::exclusion N_PopulateErrorIndexFields_Node2 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node2_action N_PopulateErrorIndexFields_Node2_action --> E_PopulateErrorIndexFields N_PopulateErrorIndexFields_Node1 -- No --> N_PopulateErrorIndexFields_Node2 N_PopulateErrorIndexFields_Node3{"The system processes the error
status update"}:::decision N_PopulateErrorIndexFields_Node3_action["The system sets error code origin
to E AND sets error origin to origin
station number AND sets error origin
cargo to CCN key AND sets error code
border to E AND retrieves border
station from MC table AND sets error
border to border station number AND
sets error border cargo to CCN key
AND sets error code destination to E
AND sets error destination to
destination station number AND sets
error destination cargo to CCN key"]:::exclusion N_PopulateErrorIndexFields_Node3 -- Yes -->|Alternative| N_PopulateErrorIndexFields_Node3_action N_PopulateErrorIndexFields_Node3_action --> E_PopulateErrorIndexFields N_PopulateErrorIndexFields_Node2 -- No --> N_PopulateErrorIndexFields_Node3 N_PopulateErrorIndexFields_Node3 -- No --> E_PopulateErrorIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record has error or pending status conditions
WHEN:
The cargo has CP cargo error status OR CP cargo pending status OR US cargo error status
THEN:
- Set error code origin to 'e' and set error origin station to cargo origin station number
- Set cargo ccn key to error origin cargo field
- Set error code border to 'e' and set error code destination to 'e' and set cargo destination station number to error destination field
- Set cargo ccn key to error destination cargo field
File: GCCUSIO.cbl
GIVEN:
A cargo record has error or pending conditions that require error index population
WHEN:
The system processes error field population
THEN:
The system sets error code 'E' for origin, border, and destination fields, populates origin error index with origin station number, populates destination error index with destination station number, populates border error index with border station number from MC table lookup, and assigns the cargo CCN key to all error cargo index fields
File: GCCUSIO.cbl
GIVEN:
A cargo record has error or pending status conditions
WHEN:
The cargo has CP cargo error status OR CP cargo pending status OR US cargo error status
THEN:
The error origin index should be set to origin station number, error destination index should be set to destination station number, error border index should be set to border station number from MC table lookup, and all error code fields should be set to 'E'
File: GCCUSIO.cbl
GIVEN:
A cargo record has CPCARGO-ERROR status OR CPCARGO-PENDING status OR USCARGO-ERROR status
WHEN:
The system processes the error status update
THEN:
- The system sets error code origin to 'e' and sets error origin to origin station number
- Sets error origin cargo to ccn key
- Sets error code border to 'e' and retrieves border station from mc table
- Sets error border to border station number
- Sets error border cargo to ccn key
- Sets error code destination to 'e' and sets error destination to destination station number
- Sets error destination cargo to ccn key
β Consolidated Acceptance Criteria
- The MC table lookup is performed using cargo location ID name → if MC table lookup returns success flag '0', set the MC station number from table segment to error border index field AND set cargo CCN key to error border cargo 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_SetBorderStationCodeviaMCTableLookup(["Start Step"])
E_SetBorderStationCodeviaMCTableLookup(["End Step"])
N_SetBorderStationCodeviaMCTableLookup_Node0{"The MC table lookup is performed
using cargo location ID name"}:::decision N_SetBorderStationCodeviaMCTableLookup_Node0_action["If MC table lookup returns success
flag 0 , set the MC station number
from table segment to error border
index field AND set cargo CCN key to
error border cargo field"]:::main N_SetBorderStationCodeviaMCTableLookup_Node0 -- Yes --> N_SetBorderStationCodeviaMCTableLookup_Node0_action N_SetBorderStationCodeviaMCTableLookup_Node0_action --> E_SetBorderStationCodeviaMCTableLookup S_SetBorderStationCodeviaMCTableLookup --> N_SetBorderStationCodeviaMCTableLookup_Node0 N_SetBorderStationCodeviaMCTableLookup_Node0 -- No --> E_SetBorderStationCodeviaMCTableLookup
using cargo location ID name"}:::decision N_SetBorderStationCodeviaMCTableLookup_Node0_action["If MC table lookup returns success
flag 0 , set the MC station number
from table segment to error border
index field AND set cargo CCN key to
error border cargo field"]:::main N_SetBorderStationCodeviaMCTableLookup_Node0 -- Yes --> N_SetBorderStationCodeviaMCTableLookup_Node0_action N_SetBorderStationCodeviaMCTableLookup_Node0_action --> E_SetBorderStationCodeviaMCTableLookup S_SetBorderStationCodeviaMCTableLookup --> N_SetBorderStationCodeviaMCTableLookup_Node0 N_SetBorderStationCodeviaMCTableLookup_Node0 -- No --> E_SetBorderStationCodeviaMCTableLookup
File: GCCUSIO.cbl
GIVEN:
Error index fields are being populated for a cargo record
WHEN:
The MC table lookup is performed using cargo location ID name
THEN:
- If mc table lookup returns success flag '0', set the mc station number from table segment to error border index field
- Set cargo ccn key to error border cargo field
β Consolidated Acceptance Criteria
- The cargo has US cargo hold status:
- US cargo hold PCS status
- US cargo pre-hold PCS status
- US cargo hold border status
- US cargo pre-hold border status
- US cargo hold FDA 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_SetBorderHoldIndexviaMCTableLookup(["Start Step"])
E_SetBorderHoldIndexviaMCTableLookup(["End Step"])
N_SetBorderHoldIndexviaMCTableLookup_Node0{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold FDA status"}:::decision N_SetBorderHoldIndexviaMCTableLookup_Node0_action["Perform MC table lookup using cargo
location ID name AND if lookup
returns success flag 0 , set MC
station number from table segment to
held border index field AND set
cargo CCN key to held border cargo
field"]:::main N_SetBorderHoldIndexviaMCTableLookup_Node0 -- Yes --> N_SetBorderHoldIndexviaMCTableLookup_Node0_action N_SetBorderHoldIndexviaMCTableLookup_Node0_action --> E_SetBorderHoldIndexviaMCTableLookup S_SetBorderHoldIndexviaMCTableLookup --> N_SetBorderHoldIndexviaMCTableLookup_Node0 N_SetBorderHoldIndexviaMCTableLookup_Node0 -- No --> E_SetBorderHoldIndexviaMCTableLookup
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold FDA status"}:::decision N_SetBorderHoldIndexviaMCTableLookup_Node0_action["Perform MC table lookup using cargo
location ID name AND if lookup
returns success flag 0 , set MC
station number from table segment to
held border index field AND set
cargo CCN key to held border cargo
field"]:::main N_SetBorderHoldIndexviaMCTableLookup_Node0 -- Yes --> N_SetBorderHoldIndexviaMCTableLookup_Node0_action N_SetBorderHoldIndexviaMCTableLookup_Node0_action --> E_SetBorderHoldIndexviaMCTableLookup S_SetBorderHoldIndexviaMCTableLookup --> N_SetBorderHoldIndexviaMCTableLookup_Node0 N_SetBorderHoldIndexviaMCTableLookup_Node0 -- No --> E_SetBorderHoldIndexviaMCTableLookup
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status conditions
WHEN:
The cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold border status OR US cargo pre-hold border status OR US cargo hold FDA status
THEN:
- Perform mc table lookup using cargo location id name
- If lookup returns success flag '0', set mc station number from table segment to held border index field
- Set cargo ccn key to held border cargo field
β Consolidated Acceptance Criteria
- Error or hold index fields have been populated → set cargo CCN key to GCSB1RT key cargo field AND insert new GCSB1RT record with populated index 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_InsertNewGCSB1RTRecord(["Start Step"])
E_InsertNewGCSB1RTRecord(["End Step"])
N_InsertNewGCSB1RTRecord_Node0{"Error or hold index fields have
been populated"}:::decision N_InsertNewGCSB1RTRecord_Node0_action["Set cargo CCN key to GCSB1RT key
cargo field AND insert new GCSB1RT
record with populated index fields"]:::exclusion N_InsertNewGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_InsertNewGCSB1RTRecord_Node0_action N_InsertNewGCSB1RTRecord_Node0_action --> E_InsertNewGCSB1RTRecord S_InsertNewGCSB1RTRecord --> N_InsertNewGCSB1RTRecord_Node0 N_InsertNewGCSB1RTRecord_Node0 -- No --> E_InsertNewGCSB1RTRecord
been populated"}:::decision N_InsertNewGCSB1RTRecord_Node0_action["Set cargo CCN key to GCSB1RT key
cargo field AND insert new GCSB1RT
record with populated index fields"]:::exclusion N_InsertNewGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_InsertNewGCSB1RTRecord_Node0_action N_InsertNewGCSB1RTRecord_Node0_action --> E_InsertNewGCSB1RTRecord S_InsertNewGCSB1RTRecord --> N_InsertNewGCSB1RTRecord_Node0 N_InsertNewGCSB1RTRecord_Node0 -- No --> E_InsertNewGCSB1RTRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record has error or hold conditions AND no existing GCSB1RT record is found
WHEN:
Error or hold index fields have been populated
THEN:
- Set cargo ccn key to gcsb1rt key cargo field
- Insert new gcsb1rt record with populated index fields
β Consolidated Acceptance Criteria
- Error or hold index fields have been populated or cleared → replace the existing GCSB1RT record with the updated field 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_ReplaceExistingGCSB1RTRecord(["Start Step"])
E_ReplaceExistingGCSB1RTRecord(["End Step"])
N_ReplaceExistingGCSB1RTRecord_Node0{"Error or hold index fields have
been populated or cleared"}:::decision N_ReplaceExistingGCSB1RTRecord_Node0_action["Replace the existing GCSB1RT record
with the updated field values"]:::exclusion N_ReplaceExistingGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_ReplaceExistingGCSB1RTRecord_Node0_action N_ReplaceExistingGCSB1RTRecord_Node0_action --> E_ReplaceExistingGCSB1RTRecord S_ReplaceExistingGCSB1RTRecord --> N_ReplaceExistingGCSB1RTRecord_Node0 N_ReplaceExistingGCSB1RTRecord_Node0 -- No --> E_ReplaceExistingGCSB1RTRecord
been populated or cleared"}:::decision N_ReplaceExistingGCSB1RTRecord_Node0_action["Replace the existing GCSB1RT record
with the updated field values"]:::exclusion N_ReplaceExistingGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_ReplaceExistingGCSB1RTRecord_Node0_action N_ReplaceExistingGCSB1RTRecord_Node0_action --> E_ReplaceExistingGCSB1RTRecord S_ReplaceExistingGCSB1RTRecord --> N_ReplaceExistingGCSB1RTRecord_Node0 N_ReplaceExistingGCSB1RTRecord_Node0 -- No --> E_ReplaceExistingGCSB1RTRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record has error or hold conditions AND an existing GCSB1RT record is found
WHEN:
Error or hold index fields have been populated or cleared
THEN:
Replace the existing GCSB1RT record with the updated field values
β Consolidated Acceptance Criteria
- GCSB1RT record retrieval is attempted using cargo CCN key → if record is found, set found indicator to true AND if record is not found, set found indicator 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_RetrieveExistingGCSB1RTRecord(["Start Step"])
E_RetrieveExistingGCSB1RTRecord(["End Step"])
N_RetrieveExistingGCSB1RTRecord_Node0{"GCSB1RT record retrieval is
attempted using cargo CCN key"}:::decision N_RetrieveExistingGCSB1RTRecord_Node0_action["If record is found, set found
indicator to true AND if record is
not found, set found indicator to
false"]:::main N_RetrieveExistingGCSB1RTRecord_Node0 -- Yes --> N_RetrieveExistingGCSB1RTRecord_Node0_action N_RetrieveExistingGCSB1RTRecord_Node0_action --> E_RetrieveExistingGCSB1RTRecord S_RetrieveExistingGCSB1RTRecord --> N_RetrieveExistingGCSB1RTRecord_Node0 N_RetrieveExistingGCSB1RTRecord_Node0 -- No --> E_RetrieveExistingGCSB1RTRecord
attempted using cargo CCN key"}:::decision N_RetrieveExistingGCSB1RTRecord_Node0_action["If record is found, set found
indicator to true AND if record is
not found, set found indicator to
false"]:::main N_RetrieveExistingGCSB1RTRecord_Node0 -- Yes --> N_RetrieveExistingGCSB1RTRecord_Node0_action N_RetrieveExistingGCSB1RTRecord_Node0_action --> E_RetrieveExistingGCSB1RTRecord S_RetrieveExistingGCSB1RTRecord --> N_RetrieveExistingGCSB1RTRecord_Node0 N_RetrieveExistingGCSB1RTRecord_Node0 -- No --> E_RetrieveExistingGCSB1RTRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record requires GCSB1RT index management
WHEN:
GCSB1RT record retrieval is attempted using cargo CCN key
THEN:
- If record is found, set found indicator to true
- If record is not found, set found indicator to false
β Consolidated Acceptance Criteria
- The system begins the retrieval process → the GCSB1RT work 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_ClearGCSB1RTWorkArea(["Start Step"])
E_ClearGCSB1RTWorkArea(["End Step"])
N_ClearGCSB1RTWorkArea_Node0{"The system begins the retrieval
process"}:::decision N_ClearGCSB1RTWorkArea_Node0_action["The GCSB1RT work area is cleared to
spaces"]:::main N_ClearGCSB1RTWorkArea_Node0 -- Yes --> N_ClearGCSB1RTWorkArea_Node0_action N_ClearGCSB1RTWorkArea_Node0_action --> E_ClearGCSB1RTWorkArea S_ClearGCSB1RTWorkArea --> N_ClearGCSB1RTWorkArea_Node0 N_ClearGCSB1RTWorkArea_Node0 -- No --> E_ClearGCSB1RTWorkArea
process"}:::decision N_ClearGCSB1RTWorkArea_Node0_action["The GCSB1RT work area is cleared to
spaces"]:::main N_ClearGCSB1RTWorkArea_Node0 -- Yes --> N_ClearGCSB1RTWorkArea_Node0_action N_ClearGCSB1RTWorkArea_Node0_action --> E_ClearGCSB1RTWorkArea S_ClearGCSB1RTWorkArea --> N_ClearGCSB1RTWorkArea_Node0 N_ClearGCSB1RTWorkArea_Node0 -- No --> E_ClearGCSB1RTWorkArea
File: GCCUSIO.cbl
GIVEN:
A request to retrieve an existing GCSB1RT index record
WHEN:
The system begins the retrieval process
THEN:
The GCSB1RT work area is cleared to spaces
β Consolidated Acceptance Criteria
- The system needs to search for the corresponding GCSB1RT index record → the US CCN key from the primary record is set as the key value for GCSB1RT search
- The delete GCSB1RT index record process needs to identify the target record → the system sets the cargo key value from the primary record's CCN key
- The system needs to search for the corresponding GCSB1RT index record → the US-CCN-KEY from the primary cargo record is copied to the GCSB1RT key field (GCB1-KEY-VALUE) to establish the search criteria
- The system needs to create a new GCSB1RT index record → the cargo key field in the index record must be populated with the US-CCN-KEY from the primary cargo record
- The system needs to search for hold index records → the cargo CCN key from the primary record must be copied to the hold index 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_SetCargoKeyfromPrimaryRecord(["Start Step"])
E_SetCargoKeyfromPrimaryRecord(["End Step"])
N_SetCargoKeyfromPrimaryRecord_Node0{"The system needs to search for the
corresponding GCSB1RT index record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node0_action["The US CCN key from the primary
record is set as the key value for
GCSB1RT search"]:::main N_SetCargoKeyfromPrimaryRecord_Node0 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node0_action N_SetCargoKeyfromPrimaryRecord_Node0_action --> E_SetCargoKeyfromPrimaryRecord S_SetCargoKeyfromPrimaryRecord --> N_SetCargoKeyfromPrimaryRecord_Node0 N_SetCargoKeyfromPrimaryRecord_Node1{"The delete GCSB1RT index record
process needs to identify the target
record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node1_action["The system sets the cargo key value
from the primary record s CCN key"]:::main N_SetCargoKeyfromPrimaryRecord_Node1 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node1_action N_SetCargoKeyfromPrimaryRecord_Node1_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node0 -- No --> N_SetCargoKeyfromPrimaryRecord_Node1 N_SetCargoKeyfromPrimaryRecord_Node2{"The system needs to search for the
corresponding GCSB1RT index record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node2_action["The US-CCN-KEY from the primary
cargo record is copied to the
GCSB1RT key field GCB1-KEY-VALUE to
establish the search criteria"]:::main N_SetCargoKeyfromPrimaryRecord_Node2 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node2_action N_SetCargoKeyfromPrimaryRecord_Node2_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node1 -- No --> N_SetCargoKeyfromPrimaryRecord_Node2 N_SetCargoKeyfromPrimaryRecord_Node3{"The system needs to create a new
GCSB1RT index record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node3_action["The cargo key field in the index
record must be populated with the
US-CCN-KEY from the primary cargo
record"]:::main N_SetCargoKeyfromPrimaryRecord_Node3 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node3_action N_SetCargoKeyfromPrimaryRecord_Node3_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node2 -- No --> N_SetCargoKeyfromPrimaryRecord_Node3 N_SetCargoKeyfromPrimaryRecord_Node4{"The system needs to search for hold
index records"}:::decision N_SetCargoKeyfromPrimaryRecord_Node4_action["The cargo CCN key from the primary
record must be copied to the hold
index search key"]:::main N_SetCargoKeyfromPrimaryRecord_Node4 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node4_action N_SetCargoKeyfromPrimaryRecord_Node4_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node3 -- No --> N_SetCargoKeyfromPrimaryRecord_Node4 N_SetCargoKeyfromPrimaryRecord_Node4 -- No --> E_SetCargoKeyfromPrimaryRecord
corresponding GCSB1RT index record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node0_action["The US CCN key from the primary
record is set as the key value for
GCSB1RT search"]:::main N_SetCargoKeyfromPrimaryRecord_Node0 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node0_action N_SetCargoKeyfromPrimaryRecord_Node0_action --> E_SetCargoKeyfromPrimaryRecord S_SetCargoKeyfromPrimaryRecord --> N_SetCargoKeyfromPrimaryRecord_Node0 N_SetCargoKeyfromPrimaryRecord_Node1{"The delete GCSB1RT index record
process needs to identify the target
record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node1_action["The system sets the cargo key value
from the primary record s CCN key"]:::main N_SetCargoKeyfromPrimaryRecord_Node1 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node1_action N_SetCargoKeyfromPrimaryRecord_Node1_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node0 -- No --> N_SetCargoKeyfromPrimaryRecord_Node1 N_SetCargoKeyfromPrimaryRecord_Node2{"The system needs to search for the
corresponding GCSB1RT index record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node2_action["The US-CCN-KEY from the primary
cargo record is copied to the
GCSB1RT key field GCB1-KEY-VALUE to
establish the search criteria"]:::main N_SetCargoKeyfromPrimaryRecord_Node2 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node2_action N_SetCargoKeyfromPrimaryRecord_Node2_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node1 -- No --> N_SetCargoKeyfromPrimaryRecord_Node2 N_SetCargoKeyfromPrimaryRecord_Node3{"The system needs to create a new
GCSB1RT index record"}:::decision N_SetCargoKeyfromPrimaryRecord_Node3_action["The cargo key field in the index
record must be populated with the
US-CCN-KEY from the primary cargo
record"]:::main N_SetCargoKeyfromPrimaryRecord_Node3 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node3_action N_SetCargoKeyfromPrimaryRecord_Node3_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node2 -- No --> N_SetCargoKeyfromPrimaryRecord_Node3 N_SetCargoKeyfromPrimaryRecord_Node4{"The system needs to search for hold
index records"}:::decision N_SetCargoKeyfromPrimaryRecord_Node4_action["The cargo CCN key from the primary
record must be copied to the hold
index search key"]:::main N_SetCargoKeyfromPrimaryRecord_Node4 -- Yes --> N_SetCargoKeyfromPrimaryRecord_Node4_action N_SetCargoKeyfromPrimaryRecord_Node4_action --> E_SetCargoKeyfromPrimaryRecord N_SetCargoKeyfromPrimaryRecord_Node3 -- No --> N_SetCargoKeyfromPrimaryRecord_Node4 N_SetCargoKeyfromPrimaryRecord_Node4 -- No --> E_SetCargoKeyfromPrimaryRecord
File: GCCUSIO.cbl
GIVEN:
A primary cargo record with a US CCN key
WHEN:
The system needs to search for the corresponding GCSB1RT index record
THEN:
The US CCN key from the primary record is set as the key value for GCSB1RT search
File: GCCUSIO.cbl
GIVEN:
A primary cargo record with a CCN key exists
WHEN:
The delete GCSB1RT index record process needs to identify the target record
THEN:
The system sets the cargo key value from the primary record's CCN key
File: GCCUSIO.cbl
GIVEN:
A primary cargo record (GCUSRT) exists with a US-CCN-KEY
WHEN:
The system needs to search for the corresponding GCSB1RT index record
THEN:
The US-CCN-KEY from the primary cargo record is copied to the GCSB1RT key field (GCB1-KEY-VALUE) to establish the search criteria
File: GCCUSIO.cbl
GIVEN:
A primary cargo record exists with a valid US-CCN-KEY
WHEN:
The system needs to create a new GCSB1RT index record
THEN:
The cargo key field in the index record must be populated with the US-CCN-KEY from the primary cargo record
File: GCCUSIO.cbl
GIVEN:
A primary cargo record exists with a CCN key
WHEN:
The system needs to search for hold index records
THEN:
The cargo CCN key from the primary record must be copied to the hold index search key
β Consolidated Acceptance Criteria
- The system prepares for database access → the database accept status is set to 'GE' to handle record not found conditions
- The database call is about to be executed → the database acceptance status is set to 'GE' to allow the system to handle the case where the record is not found without treating it as an 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_SetDatabaseStatustoAcceptGE(["Start Step"])
E_SetDatabaseStatustoAcceptGE(["End Step"])
N_SetDatabaseStatustoAcceptGE_Node0{"The system prepares for database
access"}:::decision N_SetDatabaseStatustoAcceptGE_Node0_action["The database accept status is set
to GE to handle record not found
conditions"]:::main N_SetDatabaseStatustoAcceptGE_Node0 -- Yes --> N_SetDatabaseStatustoAcceptGE_Node0_action N_SetDatabaseStatustoAcceptGE_Node0_action --> E_SetDatabaseStatustoAcceptGE S_SetDatabaseStatustoAcceptGE --> N_SetDatabaseStatustoAcceptGE_Node0 N_SetDatabaseStatustoAcceptGE_Node1{"The database call is about to be
executed"}:::decision N_SetDatabaseStatustoAcceptGE_Node1_action["The database acceptance status is
set to GE to allow the system to
handle the case where the record is
not found without treating it as an
error"]:::main N_SetDatabaseStatustoAcceptGE_Node1 -- Yes --> N_SetDatabaseStatustoAcceptGE_Node1_action N_SetDatabaseStatustoAcceptGE_Node1_action --> E_SetDatabaseStatustoAcceptGE N_SetDatabaseStatustoAcceptGE_Node0 -- No --> N_SetDatabaseStatustoAcceptGE_Node1 N_SetDatabaseStatustoAcceptGE_Node1 -- No --> E_SetDatabaseStatustoAcceptGE
access"}:::decision N_SetDatabaseStatustoAcceptGE_Node0_action["The database accept status is set
to GE to handle record not found
conditions"]:::main N_SetDatabaseStatustoAcceptGE_Node0 -- Yes --> N_SetDatabaseStatustoAcceptGE_Node0_action N_SetDatabaseStatustoAcceptGE_Node0_action --> E_SetDatabaseStatustoAcceptGE S_SetDatabaseStatustoAcceptGE --> N_SetDatabaseStatustoAcceptGE_Node0 N_SetDatabaseStatustoAcceptGE_Node1{"The database call is about to be
executed"}:::decision N_SetDatabaseStatustoAcceptGE_Node1_action["The database acceptance status is
set to GE to allow the system to
handle the case where the record is
not found without treating it as an
error"]:::main N_SetDatabaseStatustoAcceptGE_Node1 -- Yes --> N_SetDatabaseStatustoAcceptGE_Node1_action N_SetDatabaseStatustoAcceptGE_Node1_action --> E_SetDatabaseStatustoAcceptGE N_SetDatabaseStatustoAcceptGE_Node0 -- No --> N_SetDatabaseStatustoAcceptGE_Node1 N_SetDatabaseStatustoAcceptGE_Node1 -- No --> E_SetDatabaseStatustoAcceptGE
File: GCCUSIO.cbl
GIVEN:
A request to retrieve a GCSB1RT record from the database
WHEN:
The system prepares for database access
THEN:
The database accept status is set to 'GE' to handle record not found conditions
File: GCCUSIO.cbl
GIVEN:
The system is preparing to retrieve a GCSB1RT index record
WHEN:
The database call is about to be executed
THEN:
The database acceptance status is set to 'GE' to allow the system to handle the case where the record is not found without treating it as an error
β Consolidated Acceptance Criteria
- The system sets up the database function code → the function code is set to 'GHU' to obtain exclusive access to the record
- The database function code is being set for the retrieval operation → the function code is set to 'GHU' (Get Hold Unique) to retrieve the record with exclusive access for potential updates
- The system prepares the database function code → the function code must be set to 'GHU' for Get Hold 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_SetFunctionCodetoGHU(["Start Step"])
E_SetFunctionCodetoGHU(["End Step"])
N_SetFunctionCodetoGHU_Node0{"The system sets up the database
function code"}:::decision N_SetFunctionCodetoGHU_Node0_action["The function code is set to GHU to
obtain exclusive access to the
record"]:::main N_SetFunctionCodetoGHU_Node0 -- Yes --> N_SetFunctionCodetoGHU_Node0_action N_SetFunctionCodetoGHU_Node0_action --> E_SetFunctionCodetoGHU S_SetFunctionCodetoGHU --> N_SetFunctionCodetoGHU_Node0 N_SetFunctionCodetoGHU_Node1{"The database function code is being
set for the retrieval operation"}:::decision N_SetFunctionCodetoGHU_Node1_action["The function code is set to GHU Get
Hold Unique to retrieve the record
with exclusive access for potential
updates"]:::main N_SetFunctionCodetoGHU_Node1 -- Yes --> N_SetFunctionCodetoGHU_Node1_action N_SetFunctionCodetoGHU_Node1_action --> E_SetFunctionCodetoGHU N_SetFunctionCodetoGHU_Node0 -- No --> N_SetFunctionCodetoGHU_Node1 N_SetFunctionCodetoGHU_Node2{"The system prepares the database
function code"}:::decision N_SetFunctionCodetoGHU_Node2_action["The function code must be set to
GHU for Get Hold Unique operation"]:::main N_SetFunctionCodetoGHU_Node2 -- Yes --> N_SetFunctionCodetoGHU_Node2_action N_SetFunctionCodetoGHU_Node2_action --> E_SetFunctionCodetoGHU N_SetFunctionCodetoGHU_Node1 -- No --> N_SetFunctionCodetoGHU_Node2 N_SetFunctionCodetoGHU_Node2 -- No --> E_SetFunctionCodetoGHU
function code"}:::decision N_SetFunctionCodetoGHU_Node0_action["The function code is set to GHU to
obtain exclusive access to the
record"]:::main N_SetFunctionCodetoGHU_Node0 -- Yes --> N_SetFunctionCodetoGHU_Node0_action N_SetFunctionCodetoGHU_Node0_action --> E_SetFunctionCodetoGHU S_SetFunctionCodetoGHU --> N_SetFunctionCodetoGHU_Node0 N_SetFunctionCodetoGHU_Node1{"The database function code is being
set for the retrieval operation"}:::decision N_SetFunctionCodetoGHU_Node1_action["The function code is set to GHU Get
Hold Unique to retrieve the record
with exclusive access for potential
updates"]:::main N_SetFunctionCodetoGHU_Node1 -- Yes --> N_SetFunctionCodetoGHU_Node1_action N_SetFunctionCodetoGHU_Node1_action --> E_SetFunctionCodetoGHU N_SetFunctionCodetoGHU_Node0 -- No --> N_SetFunctionCodetoGHU_Node1 N_SetFunctionCodetoGHU_Node2{"The system prepares the database
function code"}:::decision N_SetFunctionCodetoGHU_Node2_action["The function code must be set to
GHU for Get Hold Unique operation"]:::main N_SetFunctionCodetoGHU_Node2 -- Yes --> N_SetFunctionCodetoGHU_Node2_action N_SetFunctionCodetoGHU_Node2_action --> E_SetFunctionCodetoGHU N_SetFunctionCodetoGHU_Node1 -- No --> N_SetFunctionCodetoGHU_Node2 N_SetFunctionCodetoGHU_Node2 -- No --> E_SetFunctionCodetoGHU
File: GCCUSIO.cbl
GIVEN:
A need to retrieve a GCSB1RT record that may be updated
WHEN:
The system sets up the database function code
THEN:
The function code is set to 'GHU' to obtain exclusive access to the record
File: GCCUSIO.cbl
GIVEN:
The system needs to retrieve and potentially update a GCSB1RT index record
WHEN:
The database function code is being set for the retrieval operation
THEN:
The function code is set to 'GHU' (Get Hold Unique) to retrieve the record with exclusive access for potential updates
File: GCCUSIO.cbl
GIVEN:
A hold index record needs to be retrieved for processing
WHEN:
The system prepares the database function code
THEN:
The function code must be set to 'GHU' for Get Hold Unique operation
β Consolidated Acceptance Criteria
- The system executes the database call → the database is accessed using CIMS with the specified parameters and qualified search criteria
- The system executes the database retrieval operation → the database is called using the CIMS interface with the function code, PCB, GCSB1RT record area, and qualified SSA to retrieve the specific index record
- The system executes the database search → a qualified search must be performed against the GCSB1RT database using the prepared 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_CallDatabasewithQualifiedSearch(["Start Step"])
E_CallDatabasewithQualifiedSearch(["End Step"])
N_CallDatabasewithQualifiedSearch_Node0{"The system executes the database
call"}:::decision N_CallDatabasewithQualifiedSearch_Node0_action["The database is accessed using CIMS
with the specified parameters and
qualified search criteria"]:::main N_CallDatabasewithQualifiedSearch_Node0 -- Yes --> N_CallDatabasewithQualifiedSearch_Node0_action N_CallDatabasewithQualifiedSearch_Node0_action --> E_CallDatabasewithQualifiedSearch S_CallDatabasewithQualifiedSearch --> N_CallDatabasewithQualifiedSearch_Node0 N_CallDatabasewithQualifiedSearch_Node1{"The system executes the database
retrieval operation"}:::decision N_CallDatabasewithQualifiedSearch_Node1_action["The database is called using the
CIMS interface with the function
code, PCB, GCSB1RT record area, and
qualified SSA to retrieve the
specific index record"]:::main N_CallDatabasewithQualifiedSearch_Node1 -- Yes --> N_CallDatabasewithQualifiedSearch_Node1_action N_CallDatabasewithQualifiedSearch_Node1_action --> E_CallDatabasewithQualifiedSearch N_CallDatabasewithQualifiedSearch_Node0 -- No --> N_CallDatabasewithQualifiedSearch_Node1 N_CallDatabasewithQualifiedSearch_Node2{"The system executes the database
search"}:::decision N_CallDatabasewithQualifiedSearch_Node2_action["A qualified search must be
performed against the GCSB1RT
database using the prepared
parameters"]:::main N_CallDatabasewithQualifiedSearch_Node2 -- Yes --> N_CallDatabasewithQualifiedSearch_Node2_action N_CallDatabasewithQualifiedSearch_Node2_action --> E_CallDatabasewithQualifiedSearch N_CallDatabasewithQualifiedSearch_Node1 -- No --> N_CallDatabasewithQualifiedSearch_Node2 N_CallDatabasewithQualifiedSearch_Node2 -- No --> E_CallDatabasewithQualifiedSearch
call"}:::decision N_CallDatabasewithQualifiedSearch_Node0_action["The database is accessed using CIMS
with the specified parameters and
qualified search criteria"]:::main N_CallDatabasewithQualifiedSearch_Node0 -- Yes --> N_CallDatabasewithQualifiedSearch_Node0_action N_CallDatabasewithQualifiedSearch_Node0_action --> E_CallDatabasewithQualifiedSearch S_CallDatabasewithQualifiedSearch --> N_CallDatabasewithQualifiedSearch_Node0 N_CallDatabasewithQualifiedSearch_Node1{"The system executes the database
retrieval operation"}:::decision N_CallDatabasewithQualifiedSearch_Node1_action["The database is called using the
CIMS interface with the function
code, PCB, GCSB1RT record area, and
qualified SSA to retrieve the
specific index record"]:::main N_CallDatabasewithQualifiedSearch_Node1 -- Yes --> N_CallDatabasewithQualifiedSearch_Node1_action N_CallDatabasewithQualifiedSearch_Node1_action --> E_CallDatabasewithQualifiedSearch N_CallDatabasewithQualifiedSearch_Node0 -- No --> N_CallDatabasewithQualifiedSearch_Node1 N_CallDatabasewithQualifiedSearch_Node2{"The system executes the database
search"}:::decision N_CallDatabasewithQualifiedSearch_Node2_action["A qualified search must be
performed against the GCSB1RT
database using the prepared
parameters"]:::main N_CallDatabasewithQualifiedSearch_Node2 -- Yes --> N_CallDatabasewithQualifiedSearch_Node2_action N_CallDatabasewithQualifiedSearch_Node2_action --> E_CallDatabasewithQualifiedSearch N_CallDatabasewithQualifiedSearch_Node1 -- No --> N_CallDatabasewithQualifiedSearch_Node2 N_CallDatabasewithQualifiedSearch_Node2 -- No --> E_CallDatabasewithQualifiedSearch
File: GCCUSIO.cbl
GIVEN:
A configured database request with cargo key, function code, and qualified search criteria
WHEN:
The system executes the database call
THEN:
- The database is accessed using cims with the specified parameters
- Qualified search criteria
File: GCCUSIO.cbl
GIVEN:
The search key, function code, and database status are properly configured
WHEN:
The system executes the database retrieval operation
THEN:
The database is called using the CIMS interface with the function code, PCB, GCSB1RT record area, and qualified SSA to retrieve the specific index record
File: GCCUSIO.cbl
GIVEN:
The search parameters are set with cargo key, function code, and accept status
WHEN:
The system executes the database search
THEN:
A qualified search must be performed against the GCSB1RT database using the prepared parameters
β Consolidated Acceptance Criteria
- The system processes the successful retrieval response → the GCSB1RT 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_SetFoundFlag(["Start Step"])
E_SetFoundFlag(["End Step"])
N_SetFoundFlag_Node0{"The system processes the successful
retrieval response"}:::decision N_SetFoundFlag_Node0_action["The GCSB1RT found flag is set to
true"]:::main N_SetFoundFlag_Node0 -- Yes --> N_SetFoundFlag_Node0_action N_SetFoundFlag_Node0_action --> E_SetFoundFlag S_SetFoundFlag --> N_SetFoundFlag_Node0 N_SetFoundFlag_Node0 -- No --> E_SetFoundFlag
retrieval response"}:::decision N_SetFoundFlag_Node0_action["The GCSB1RT found flag is set to
true"]:::main N_SetFoundFlag_Node0 -- Yes --> N_SetFoundFlag_Node0_action N_SetFoundFlag_Node0_action --> E_SetFoundFlag S_SetFoundFlag --> N_SetFoundFlag_Node0 N_SetFoundFlag_Node0 -- No --> E_SetFoundFlag
File: GCCUSIO.cbl
GIVEN:
A successful database retrieval with status code equal to spaces
WHEN:
The system processes the successful retrieval response
THEN:
The GCSB1RT found flag is set to true
β Consolidated Acceptance Criteria
- The system processes the unsuccessful retrieval response → the GCSB1RT not 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_SetNotFoundFlag(["Start Step"])
E_SetNotFoundFlag(["End Step"])
N_SetNotFoundFlag_Node0{"The system processes the
unsuccessful retrieval response"}:::decision N_SetNotFoundFlag_Node0_action["The GCSB1RT not found flag is set
to true"]:::main N_SetNotFoundFlag_Node0 -- Yes --> N_SetNotFoundFlag_Node0_action N_SetNotFoundFlag_Node0_action --> E_SetNotFoundFlag S_SetNotFoundFlag --> N_SetNotFoundFlag_Node0 N_SetNotFoundFlag_Node0 -- No --> E_SetNotFoundFlag
unsuccessful retrieval response"}:::decision N_SetNotFoundFlag_Node0_action["The GCSB1RT not found flag is set
to true"]:::main N_SetNotFoundFlag_Node0 -- Yes --> N_SetNotFoundFlag_Node0_action N_SetNotFoundFlag_Node0_action --> E_SetNotFoundFlag S_SetNotFoundFlag --> N_SetNotFoundFlag_Node0 N_SetNotFoundFlag_Node0 -- No --> E_SetNotFoundFlag
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A database retrieval with status code not equal to spaces
WHEN:
The system processes the unsuccessful retrieval response
THEN:
The GCSB1RT not found flag is set to true
β Consolidated Acceptance Criteria
- The system processes origin error information → the origin error code is set to 'E' to indicate an error 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_SetOriginErrorCodetoE(["Start Step"])
E_SetOriginErrorCodetoE(["End Step"])
N_SetOriginErrorCodetoE_Node0{"The system processes origin error
information"}:::decision N_SetOriginErrorCodetoE_Node0_action["The origin error code is set to E
to indicate an error classification"]:::exclusion N_SetOriginErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetOriginErrorCodetoE_Node0_action N_SetOriginErrorCodetoE_Node0_action --> E_SetOriginErrorCodetoE S_SetOriginErrorCodetoE --> N_SetOriginErrorCodetoE_Node0 N_SetOriginErrorCodetoE_Node0 -- No --> E_SetOriginErrorCodetoE
information"}:::decision N_SetOriginErrorCodetoE_Node0_action["The origin error code is set to E
to indicate an error classification"]:::exclusion N_SetOriginErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetOriginErrorCodetoE_Node0_action N_SetOriginErrorCodetoE_Node0_action --> E_SetOriginErrorCodetoE S_SetOriginErrorCodetoE --> N_SetOriginErrorCodetoE_Node0 N_SetOriginErrorCodetoE_Node0 -- No --> E_SetOriginErrorCodetoE
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index field population
WHEN:
The system processes origin error information
THEN:
The origin error code is set to 'E' to indicate an error classification
β Consolidated Acceptance Criteria
- The system populates error index fields → the origin station number is extracted from the cargo record field RT28-ORIG-STN-NUM and used for error index population
- The system populates error index fields for origin station → the origin station number is extracted from field RT28-ORIG-STN-NUM and assigned to the error origin 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_ExtractOriginStationNumberfromCargoRecord(["Start Step"])
E_ExtractOriginStationNumberfromCargoRecord(["End Step"])
N_ExtractOriginStationNumberfromCargoRecord_Node0{"The system populates error index
fields"}:::decision N_ExtractOriginStationNumberfromCargoRecord_Node0_action["The origin station number is
extracted from the cargo record
field RT28-ORIG-STN-NUM and used for
error index population"]:::exclusion N_ExtractOriginStationNumberfromCargoRecord_Node0 -- Yes -->|Alternative| N_ExtractOriginStationNumberfromCargoRecord_Node0_action N_ExtractOriginStationNumberfromCargoRecord_Node0_action --> E_ExtractOriginStationNumberfromCargoRecord S_ExtractOriginStationNumberfromCargoRecord --> N_ExtractOriginStationNumberfromCargoRecord_Node0 N_ExtractOriginStationNumberfromCargoRecord_Node1{"The system populates error index
fields for origin station"}:::decision N_ExtractOriginStationNumberfromCargoRecord_Node1_action["The origin station number is
extracted from field
RT28-ORIG-STN-NUM and assigned to
the error origin key"]:::exclusion N_ExtractOriginStationNumberfromCargoRecord_Node1 -- Yes -->|Alternative| N_ExtractOriginStationNumberfromCargoRecord_Node1_action N_ExtractOriginStationNumberfromCargoRecord_Node1_action --> E_ExtractOriginStationNumberfromCargoRecord N_ExtractOriginStationNumberfromCargoRecord_Node0 -- No --> N_ExtractOriginStationNumberfromCargoRecord_Node1 N_ExtractOriginStationNumberfromCargoRecord_Node1 -- No --> E_ExtractOriginStationNumberfromCargoRecord
fields"}:::decision N_ExtractOriginStationNumberfromCargoRecord_Node0_action["The origin station number is
extracted from the cargo record
field RT28-ORIG-STN-NUM and used for
error index population"]:::exclusion N_ExtractOriginStationNumberfromCargoRecord_Node0 -- Yes -->|Alternative| N_ExtractOriginStationNumberfromCargoRecord_Node0_action N_ExtractOriginStationNumberfromCargoRecord_Node0_action --> E_ExtractOriginStationNumberfromCargoRecord S_ExtractOriginStationNumberfromCargoRecord --> N_ExtractOriginStationNumberfromCargoRecord_Node0 N_ExtractOriginStationNumberfromCargoRecord_Node1{"The system populates error index
fields for origin station"}:::decision N_ExtractOriginStationNumberfromCargoRecord_Node1_action["The origin station number is
extracted from field
RT28-ORIG-STN-NUM and assigned to
the error origin key"]:::exclusion N_ExtractOriginStationNumberfromCargoRecord_Node1 -- Yes -->|Alternative| N_ExtractOriginStationNumberfromCargoRecord_Node1_action N_ExtractOriginStationNumberfromCargoRecord_Node1_action --> E_ExtractOriginStationNumberfromCargoRecord N_ExtractOriginStationNumberfromCargoRecord_Node0 -- No --> N_ExtractOriginStationNumberfromCargoRecord_Node1 N_ExtractOriginStationNumberfromCargoRecord_Node1 -- No --> E_ExtractOriginStationNumberfromCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record contains origin station information
WHEN:
The system populates error index fields
THEN:
- The origin station number is extracted from the cargo record field rt28-orig-stn-num
- Used for error index population
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with origin station information
WHEN:
The system populates error index fields for origin station
THEN:
- The origin station number is extracted from field rt28-orig-stn-num
- Assigned to the error origin key
β Consolidated Acceptance Criteria
- The system creates the origin error index entry → the cargo's CCN key is assigned to the origin error cargo field to link the error to the specific 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_SetOriginErrorIndexwithCCNKey(["Start Step"])
E_SetOriginErrorIndexwithCCNKey(["End Step"])
N_SetOriginErrorIndexwithCCNKey_Node0{"The system creates the origin error
index entry"}:::decision N_SetOriginErrorIndexwithCCNKey_Node0_action["The cargo s CCN key is assigned to
the origin error cargo field to link
the error to the specific cargo
record"]:::exclusion N_SetOriginErrorIndexwithCCNKey_Node0 -- Yes -->|Alternative| N_SetOriginErrorIndexwithCCNKey_Node0_action N_SetOriginErrorIndexwithCCNKey_Node0_action --> E_SetOriginErrorIndexwithCCNKey S_SetOriginErrorIndexwithCCNKey --> N_SetOriginErrorIndexwithCCNKey_Node0 N_SetOriginErrorIndexwithCCNKey_Node0 -- No --> E_SetOriginErrorIndexwithCCNKey
index entry"}:::decision N_SetOriginErrorIndexwithCCNKey_Node0_action["The cargo s CCN key is assigned to
the origin error cargo field to link
the error to the specific cargo
record"]:::exclusion N_SetOriginErrorIndexwithCCNKey_Node0 -- Yes -->|Alternative| N_SetOriginErrorIndexwithCCNKey_Node0_action N_SetOriginErrorIndexwithCCNKey_Node0_action --> E_SetOriginErrorIndexwithCCNKey S_SetOriginErrorIndexwithCCNKey --> N_SetOriginErrorIndexwithCCNKey_Node0 N_SetOriginErrorIndexwithCCNKey_Node0 -- No --> E_SetOriginErrorIndexwithCCNKey
File: GCCUSIO.cbl
GIVEN:
Origin error code and station number are established
WHEN:
The system creates the origin error index entry
THEN:
The cargo's CCN key is assigned to the origin error cargo field to link the error to the specific cargo record
β Consolidated Acceptance Criteria
- The system processes border error information → the border error code is set to 'E' to indicate an error 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_SetBorderErrorCodetoE(["Start Step"])
E_SetBorderErrorCodetoE(["End Step"])
N_SetBorderErrorCodetoE_Node0{"The system processes border error
information"}:::decision N_SetBorderErrorCodetoE_Node0_action["The border error code is set to E
to indicate an error classification"]:::exclusion N_SetBorderErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetBorderErrorCodetoE_Node0_action N_SetBorderErrorCodetoE_Node0_action --> E_SetBorderErrorCodetoE S_SetBorderErrorCodetoE --> N_SetBorderErrorCodetoE_Node0 N_SetBorderErrorCodetoE_Node0 -- No --> E_SetBorderErrorCodetoE
information"}:::decision N_SetBorderErrorCodetoE_Node0_action["The border error code is set to E
to indicate an error classification"]:::exclusion N_SetBorderErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetBorderErrorCodetoE_Node0_action N_SetBorderErrorCodetoE_Node0_action --> E_SetBorderErrorCodetoE S_SetBorderErrorCodetoE --> N_SetBorderErrorCodetoE_Node0 N_SetBorderErrorCodetoE_Node0 -- No --> E_SetBorderErrorCodetoE
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index field population
WHEN:
The system processes border error information
THEN:
The border error code is set to 'E' to indicate an error classification
β Consolidated Acceptance Criteria
- The system processes the table lookup results → the border station number is extracted from the MC segment station number field for error index population
- The system processes the table lookup response → the border station number is extracted from the MC-STATION-NUM field in the table segment and assigned to the error border 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_ExtractBorderStationNumberfromTable(["Start Step"])
E_ExtractBorderStationNumberfromTable(["End Step"])
N_ExtractBorderStationNumberfromTable_Node0{"The system processes the table
lookup results"}:::decision N_ExtractBorderStationNumberfromTable_Node0_action["The border station number is
extracted from the MC segment
station number field for error index
population"]:::main N_ExtractBorderStationNumberfromTable_Node0 -- Yes --> N_ExtractBorderStationNumberfromTable_Node0_action N_ExtractBorderStationNumberfromTable_Node0_action --> E_ExtractBorderStationNumberfromTable S_ExtractBorderStationNumberfromTable --> N_ExtractBorderStationNumberfromTable_Node0 N_ExtractBorderStationNumberfromTable_Node1{"The system processes the table
lookup response"}:::decision N_ExtractBorderStationNumberfromTable_Node1_action["The border station number is
extracted from the MC-STATION-NUM
field in the table segment and
assigned to the error border key"]:::main N_ExtractBorderStationNumberfromTable_Node1 -- Yes --> N_ExtractBorderStationNumberfromTable_Node1_action N_ExtractBorderStationNumberfromTable_Node1_action --> E_ExtractBorderStationNumberfromTable N_ExtractBorderStationNumberfromTable_Node0 -- No --> N_ExtractBorderStationNumberfromTable_Node1 N_ExtractBorderStationNumberfromTable_Node1 -- No --> E_ExtractBorderStationNumberfromTable
lookup results"}:::decision N_ExtractBorderStationNumberfromTable_Node0_action["The border station number is
extracted from the MC segment
station number field for error index
population"]:::main N_ExtractBorderStationNumberfromTable_Node0 -- Yes --> N_ExtractBorderStationNumberfromTable_Node0_action N_ExtractBorderStationNumberfromTable_Node0_action --> E_ExtractBorderStationNumberfromTable S_ExtractBorderStationNumberfromTable --> N_ExtractBorderStationNumberfromTable_Node0 N_ExtractBorderStationNumberfromTable_Node1{"The system processes the table
lookup response"}:::decision N_ExtractBorderStationNumberfromTable_Node1_action["The border station number is
extracted from the MC-STATION-NUM
field in the table segment and
assigned to the error border key"]:::main N_ExtractBorderStationNumberfromTable_Node1 -- Yes --> N_ExtractBorderStationNumberfromTable_Node1_action N_ExtractBorderStationNumberfromTable_Node1_action --> E_ExtractBorderStationNumberfromTable N_ExtractBorderStationNumberfromTable_Node0 -- No --> N_ExtractBorderStationNumberfromTable_Node1 N_ExtractBorderStationNumberfromTable_Node1 -- No --> E_ExtractBorderStationNumberfromTable
File: GCCUSIO.cbl
GIVEN:
The MC table lookup returns successful results with return flag '0'
WHEN:
The system processes the table lookup results
THEN:
The border station number is extracted from the MC segment station number field for error index population
File: GCCUSIO.cbl
GIVEN:
The MC table lookup returns a successful result with station information
WHEN:
The system processes the table lookup response
THEN:
- The border station number is extracted from the mc-station-num field in the table segment
- Assigned to the error border key
β Consolidated Acceptance Criteria
- The system creates the border error index entry → the cargo's CCN key is assigned to the border error cargo field to link the error to the specific 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_SetBorderErrorIndexwithCCNKey(["Start Step"])
E_SetBorderErrorIndexwithCCNKey(["End Step"])
N_SetBorderErrorIndexwithCCNKey_Node0{"The system creates the border error
index entry"}:::decision N_SetBorderErrorIndexwithCCNKey_Node0_action["The cargo s CCN key is assigned to
the border error cargo field to link
the error to the specific cargo
record"]:::exclusion N_SetBorderErrorIndexwithCCNKey_Node0 -- Yes -->|Alternative| N_SetBorderErrorIndexwithCCNKey_Node0_action N_SetBorderErrorIndexwithCCNKey_Node0_action --> E_SetBorderErrorIndexwithCCNKey S_SetBorderErrorIndexwithCCNKey --> N_SetBorderErrorIndexwithCCNKey_Node0 N_SetBorderErrorIndexwithCCNKey_Node0 -- No --> E_SetBorderErrorIndexwithCCNKey
index entry"}:::decision N_SetBorderErrorIndexwithCCNKey_Node0_action["The cargo s CCN key is assigned to
the border error cargo field to link
the error to the specific cargo
record"]:::exclusion N_SetBorderErrorIndexwithCCNKey_Node0 -- Yes -->|Alternative| N_SetBorderErrorIndexwithCCNKey_Node0_action N_SetBorderErrorIndexwithCCNKey_Node0_action --> E_SetBorderErrorIndexwithCCNKey S_SetBorderErrorIndexwithCCNKey --> N_SetBorderErrorIndexwithCCNKey_Node0 N_SetBorderErrorIndexwithCCNKey_Node0 -- No --> E_SetBorderErrorIndexwithCCNKey
File: GCCUSIO.cbl
GIVEN:
Border error code and station information are established
WHEN:
The system creates the border error index entry
THEN:
The cargo's CCN key is assigned to the border error cargo field to link the error to the specific cargo record
β Consolidated Acceptance Criteria
- The system processes destination error information → the destination error code is set to 'E' to indicate an error 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_SetDestinationErrorCodetoE(["Start Step"])
E_SetDestinationErrorCodetoE(["End Step"])
N_SetDestinationErrorCodetoE_Node0{"The system processes destination
error information"}:::decision N_SetDestinationErrorCodetoE_Node0_action["The destination error code is set
to E to indicate an error
classification"]:::exclusion N_SetDestinationErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetDestinationErrorCodetoE_Node0_action N_SetDestinationErrorCodetoE_Node0_action --> E_SetDestinationErrorCodetoE S_SetDestinationErrorCodetoE --> N_SetDestinationErrorCodetoE_Node0 N_SetDestinationErrorCodetoE_Node0 -- No --> E_SetDestinationErrorCodetoE
error information"}:::decision N_SetDestinationErrorCodetoE_Node0_action["The destination error code is set
to E to indicate an error
classification"]:::exclusion N_SetDestinationErrorCodetoE_Node0 -- Yes -->|Alternative| N_SetDestinationErrorCodetoE_Node0_action N_SetDestinationErrorCodetoE_Node0_action --> E_SetDestinationErrorCodetoE S_SetDestinationErrorCodetoE --> N_SetDestinationErrorCodetoE_Node0 N_SetDestinationErrorCodetoE_Node0 -- No --> E_SetDestinationErrorCodetoE
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index field population
WHEN:
The system processes destination error information
THEN:
The destination error code is set to 'E' to indicate an error classification
β Consolidated Acceptance Criteria
- The system populates error index fields → the destination station number is extracted from the cargo record field RT29-DEST-STN-NUM and used for error index population
- The system populates error index fields for destination station → the destination station number is extracted from field RT29-DEST-STN-NUM and assigned to the error destination 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_ExtractDestinationStationNumberfromCargoRecord(["Start Step"])
E_ExtractDestinationStationNumberfromCargoRecord(["End Step"])
N_ExtractDestinationStationNumberfromCargoRecord_Node0{"The system populates error index
fields"}:::decision N_ExtractDestinationStationNumberfromCargoRecord_Node0_action["The destination station number is
extracted from the cargo record
field RT29-DEST-STN-NUM and used for
error index population"]:::exclusion N_ExtractDestinationStationNumberfromCargoRecord_Node0 -- Yes -->|Alternative| N_ExtractDestinationStationNumberfromCargoRecord_Node0_action N_ExtractDestinationStationNumberfromCargoRecord_Node0_action --> E_ExtractDestinationStationNumberfromCargoRecord S_ExtractDestinationStationNumberfromCargoRecord --> N_ExtractDestinationStationNumberfromCargoRecord_Node0 N_ExtractDestinationStationNumberfromCargoRecord_Node1{"The system populates error index
fields for destination station"}:::decision N_ExtractDestinationStationNumberfromCargoRecord_Node1_action["The destination station number is
extracted from field
RT29-DEST-STN-NUM and assigned to
the error destination key"]:::exclusion N_ExtractDestinationStationNumberfromCargoRecord_Node1 -- Yes -->|Alternative| N_ExtractDestinationStationNumberfromCargoRecord_Node1_action N_ExtractDestinationStationNumberfromCargoRecord_Node1_action --> E_ExtractDestinationStationNumberfromCargoRecord N_ExtractDestinationStationNumberfromCargoRecord_Node0 -- No --> N_ExtractDestinationStationNumberfromCargoRecord_Node1 N_ExtractDestinationStationNumberfromCargoRecord_Node1 -- No --> E_ExtractDestinationStationNumberfromCargoRecord
fields"}:::decision N_ExtractDestinationStationNumberfromCargoRecord_Node0_action["The destination station number is
extracted from the cargo record
field RT29-DEST-STN-NUM and used for
error index population"]:::exclusion N_ExtractDestinationStationNumberfromCargoRecord_Node0 -- Yes -->|Alternative| N_ExtractDestinationStationNumberfromCargoRecord_Node0_action N_ExtractDestinationStationNumberfromCargoRecord_Node0_action --> E_ExtractDestinationStationNumberfromCargoRecord S_ExtractDestinationStationNumberfromCargoRecord --> N_ExtractDestinationStationNumberfromCargoRecord_Node0 N_ExtractDestinationStationNumberfromCargoRecord_Node1{"The system populates error index
fields for destination station"}:::decision N_ExtractDestinationStationNumberfromCargoRecord_Node1_action["The destination station number is
extracted from field
RT29-DEST-STN-NUM and assigned to
the error destination key"]:::exclusion N_ExtractDestinationStationNumberfromCargoRecord_Node1 -- Yes -->|Alternative| N_ExtractDestinationStationNumberfromCargoRecord_Node1_action N_ExtractDestinationStationNumberfromCargoRecord_Node1_action --> E_ExtractDestinationStationNumberfromCargoRecord N_ExtractDestinationStationNumberfromCargoRecord_Node0 -- No --> N_ExtractDestinationStationNumberfromCargoRecord_Node1 N_ExtractDestinationStationNumberfromCargoRecord_Node1 -- No --> E_ExtractDestinationStationNumberfromCargoRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record contains destination station information
WHEN:
The system populates error index fields
THEN:
- The destination station number is extracted from the cargo record field rt29-dest-stn-num
- Used for error index population
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with destination station information
WHEN:
The system populates error index fields for destination station
THEN:
- The destination station number is extracted from field rt29-dest-stn-num
- Assigned to the error destination key
β Consolidated Acceptance Criteria
- The system creates the destination error index entry → the cargo's CCN key is assigned to the destination error cargo field to link the error to the specific 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_SetDestinationErrorIndexwithCCNKey(["Start Step"])
E_SetDestinationErrorIndexwithCCNKey(["End Step"])
N_SetDestinationErrorIndexwithCCNKey_Node0{"The system creates the destination
error index entry"}:::decision N_SetDestinationErrorIndexwithCCNKey_Node0_action["The cargo s CCN key is assigned to
the destination error cargo field to
link the error to the specific cargo
record"]:::exclusion N_SetDestinationErrorIndexwithCCNKey_Node0 -- Yes -->|Alternative| N_SetDestinationErrorIndexwithCCNKey_Node0_action N_SetDestinationErrorIndexwithCCNKey_Node0_action --> E_SetDestinationErrorIndexwithCCNKey S_SetDestinationErrorIndexwithCCNKey --> N_SetDestinationErrorIndexwithCCNKey_Node0 N_SetDestinationErrorIndexwithCCNKey_Node0 -- No --> E_SetDestinationErrorIndexwithCCNKey
error index entry"}:::decision N_SetDestinationErrorIndexwithCCNKey_Node0_action["The cargo s CCN key is assigned to
the destination error cargo field to
link the error to the specific cargo
record"]:::exclusion N_SetDestinationErrorIndexwithCCNKey_Node0 -- Yes -->|Alternative| N_SetDestinationErrorIndexwithCCNKey_Node0_action N_SetDestinationErrorIndexwithCCNKey_Node0_action --> E_SetDestinationErrorIndexwithCCNKey S_SetDestinationErrorIndexwithCCNKey --> N_SetDestinationErrorIndexwithCCNKey_Node0 N_SetDestinationErrorIndexwithCCNKey_Node0 -- No --> E_SetDestinationErrorIndexwithCCNKey
File: GCCUSIO.cbl
GIVEN:
Destination error code and station number are established
WHEN:
The system creates the destination error index entry
THEN:
The cargo's CCN key is assigned to the destination error cargo field to link the error to the specific cargo record
β Consolidated Acceptance Criteria
- The system prepares to lookup border station information → all table lookup parameters are cleared to spaces and flags are reset to ensure clean initialization
- The system prepares to call the table lookup service → all table lookup parameters are cleared to spaces and flags are reset to ensure clean 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_InitializeTableLookupParameters(["Start Step"])
E_InitializeTableLookupParameters(["End Step"])
N_InitializeTableLookupParameters_Node0{"The system prepares to lookup
border station information"}:::decision N_InitializeTableLookupParameters_Node0_action["All table lookup parameters are
cleared to spaces and flags are
reset to ensure clean initialization"]:::main N_InitializeTableLookupParameters_Node0 -- Yes --> N_InitializeTableLookupParameters_Node0_action N_InitializeTableLookupParameters_Node0_action --> E_InitializeTableLookupParameters S_InitializeTableLookupParameters --> N_InitializeTableLookupParameters_Node0 N_InitializeTableLookupParameters_Node1{"The system prepares to call the
table lookup service"}:::decision N_InitializeTableLookupParameters_Node1_action["All table lookup parameters are
cleared to spaces and flags are
reset to ensure clean initialization"]:::main N_InitializeTableLookupParameters_Node1 -- Yes --> N_InitializeTableLookupParameters_Node1_action N_InitializeTableLookupParameters_Node1_action --> E_InitializeTableLookupParameters N_InitializeTableLookupParameters_Node0 -- No --> N_InitializeTableLookupParameters_Node1 N_InitializeTableLookupParameters_Node1 -- No --> E_InitializeTableLookupParameters
border station information"}:::decision N_InitializeTableLookupParameters_Node0_action["All table lookup parameters are
cleared to spaces and flags are
reset to ensure clean initialization"]:::main N_InitializeTableLookupParameters_Node0 -- Yes --> N_InitializeTableLookupParameters_Node0_action N_InitializeTableLookupParameters_Node0_action --> E_InitializeTableLookupParameters S_InitializeTableLookupParameters --> N_InitializeTableLookupParameters_Node0 N_InitializeTableLookupParameters_Node1{"The system prepares to call the
table lookup service"}:::decision N_InitializeTableLookupParameters_Node1_action["All table lookup parameters are
cleared to spaces and flags are
reset to ensure clean initialization"]:::main N_InitializeTableLookupParameters_Node1 -- Yes --> N_InitializeTableLookupParameters_Node1_action N_InitializeTableLookupParameters_Node1_action --> E_InitializeTableLookupParameters N_InitializeTableLookupParameters_Node0 -- No --> N_InitializeTableLookupParameters_Node1 N_InitializeTableLookupParameters_Node1 -- No --> E_InitializeTableLookupParameters
File: GCCUSIO.cbl
GIVEN:
A border station lookup is required for error index population
WHEN:
The system prepares to lookup border station information
THEN:
- All table lookup parameters are cleared to spaces
- Flags are reset to ensure clean initialization
File: GCCUSIO.cbl
GIVEN:
A table lookup operation is requested
WHEN:
The system prepares to call the table lookup service
THEN:
- All table lookup parameters are cleared to spaces
- Flags are reset to ensure clean initialization
β Consolidated Acceptance Criteria
- The system checks the lookup result → if return flag equals '0' then lookup is successful, otherwise lookup 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_LookupSuccessful(["Start Step"])
E_LookupSuccessful(["End Step"])
N_LookupSuccessful_Node0{"The system checks the lookup result"}:::decision
N_LookupSuccessful_Node0_action["If return flag equals 0 then lookup
is successful, otherwise lookup
failed"]:::main N_LookupSuccessful_Node0 -- Yes --> N_LookupSuccessful_Node0_action N_LookupSuccessful_Node0_action --> E_LookupSuccessful S_LookupSuccessful --> N_LookupSuccessful_Node0 N_LookupSuccessful_Node0 -- No --> E_LookupSuccessful
is successful, otherwise lookup
failed"]:::main N_LookupSuccessful_Node0 -- Yes --> N_LookupSuccessful_Node0_action N_LookupSuccessful_Node0_action --> E_LookupSuccessful S_LookupSuccessful --> N_LookupSuccessful_Node0 N_LookupSuccessful_Node0 -- No --> E_LookupSuccessful
File: GCCUSIO.cbl
GIVEN:
Border station table lookup service has been executed
WHEN:
The system checks the lookup result
THEN:
If return flag equals '0' then lookup is successful, otherwise lookup failed
β Consolidated Acceptance Criteria
- The system needs to retrieve border station information for error processing → the system sets up MC table lookup parameters with table ID 'MC' and sequence ID from the location field, calls GCCTBIO service, and if successful extracts the station number for border error indexing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMCTableParametersTableIDMCSequenceIDfromLocation(["Start Step"])
E_SetMCTableParametersTableIDMCSequenceIDfromLocation(["End Step"])
N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0{"The system needs to retrieve border
station information for error
processing"}:::decision N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0_action["The system sets up MC table lookup
parameters with table ID MC and
sequence ID from the location field,
calls GCCTBIO service, and if
successful extracts the station
number for border error indexing"]:::exclusion N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0 -- Yes -->|Alternative| N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0_action N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0_action --> E_SetMCTableParametersTableIDMCSequenceIDfromLocation S_SetMCTableParametersTableIDMCSequenceIDfromLocation --> N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0 N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0 -- No --> E_SetMCTableParametersTableIDMCSequenceIDfromLocation
station information for error
processing"}:::decision N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0_action["The system sets up MC table lookup
parameters with table ID MC and
sequence ID from the location field,
calls GCCTBIO service, and if
successful extracts the station
number for border error indexing"]:::exclusion N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0 -- Yes -->|Alternative| N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0_action N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0_action --> E_SetMCTableParametersTableIDMCSequenceIDfromLocation S_SetMCTableParametersTableIDMCSequenceIDfromLocation --> N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0 N_SetMCTableParametersTableIDMCSequenceIDfromLocation_Node0 -- No --> E_SetMCTableParametersTableIDMCSequenceIDfromLocation
File: GCCUSIO.cbl
GIVEN:
A cargo record contains a location ID in RT04-LOCATION-ID-NAME field
WHEN:
The system needs to retrieve border station information for error processing
THEN:
The system sets up MC table lookup parameters with table ID 'MC' and sequence ID from the location field, calls GCCTBIO service, and if successful extracts the station number for border error indexing
β Consolidated Acceptance Criteria
- The system processes IH notification in Z2000-PROCESS-IH-NOTIFICATION → the system sets up IH table lookup parameters with table ID 'IH' and sequence ID from the waybill station, calls GCCTBIO service, and if found processes the notification through GCCIH
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetIHTableParametersTableIDIHSequenceIDfromStation(["Start Step"])
E_SetIHTableParametersTableIDIHSequenceIDfromStation(["End Step"])
N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0{"The system processes IH
notification in
Z2000-PROCESS-IH-NOTIFICATION"}:::decision N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0_action["The system sets up IH table lookup
parameters with table ID IH and
sequence ID from the waybill
station, calls GCCTBIO service, and
if found processes the notification
through GCCIH"]:::main N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0 -- Yes --> N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0_action N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0_action --> E_SetIHTableParametersTableIDIHSequenceIDfromStation S_SetIHTableParametersTableIDIHSequenceIDfromStation --> N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0 N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0 -- No --> E_SetIHTableParametersTableIDIHSequenceIDfromStation
notification in
Z2000-PROCESS-IH-NOTIFICATION"}:::decision N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0_action["The system sets up IH table lookup
parameters with table ID IH and
sequence ID from the waybill
station, calls GCCTBIO service, and
if found processes the notification
through GCCIH"]:::main N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0 -- Yes --> N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0_action N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0_action --> E_SetIHTableParametersTableIDIHSequenceIDfromStation S_SetIHTableParametersTableIDIHSequenceIDfromStation --> N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0 N_SetIHTableParametersTableIDIHSequenceIDfromStation_Node0 -- No --> E_SetIHTableParametersTableIDIHSequenceIDfromStation
File: GCCUSIO.cbl
GIVEN:
A cargo record has a status change that requires external notification and contains waybill station information
WHEN:
The system processes IH notification in Z2000-PROCESS-IH-NOTIFICATION
THEN:
The system sets up IH table lookup parameters with table ID 'IH' and sequence ID from the waybill station, calls GCCTBIO service, and if found processes the notification through GCCIH
β Consolidated Acceptance Criteria
- The system initiates a table lookup through Z1900-GET-TABLE-SEGMENT → the system sets function code to 'GU' (Get Unique), clears all return flags and secondary PCB flags, and prepares standard calling parameters for the GCCTBIO 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_SetGenericTableParametersFunctionCodeGUClearReturnFlags(["Start Step"])
E_SetGenericTableParametersFunctionCodeGUClearReturnFlags(["End Step"])
N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0{"The system initiates a table lookup
through Z1900-GET-TABLE-SEGMENT"}:::decision N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0_action["The system sets function code to GU
Get Unique, clears all return flags
and secondary PCB flags, and
prepares standard calling parameters
for the GCCTBIO service"]:::main N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0 -- Yes --> N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0_action N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0_action --> E_SetGenericTableParametersFunctionCodeGUClearReturnFlags S_SetGenericTableParametersFunctionCodeGUClearReturnFlags --> N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0 N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0 -- No --> E_SetGenericTableParametersFunctionCodeGUClearReturnFlags
through Z1900-GET-TABLE-SEGMENT"}:::decision N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0_action["The system sets function code to GU
Get Unique, clears all return flags
and secondary PCB flags, and
prepares standard calling parameters
for the GCCTBIO service"]:::main N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0 -- Yes --> N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0_action N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0_action --> E_SetGenericTableParametersFunctionCodeGUClearReturnFlags S_SetGenericTableParametersFunctionCodeGUClearReturnFlags --> N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0 N_SetGenericTableParametersFunctionCodeGUClearReturnFlags_Node0 -- No --> E_SetGenericTableParametersFunctionCodeGUClearReturnFlags
File: GCCUSIO.cbl
GIVEN:
Any table lookup operation is required regardless of table type
WHEN:
The system initiates a table lookup through Z1900-GET-TABLE-SEGMENT
THEN:
- The system sets function code to 'gu' (get unique), clears all return flags
- Secondary pcb flags, and prepares standard calling parameters for the gcctbio service
β Consolidated Acceptance Criteria
- The system processes the returned table segment data → the system extracts the relevant business data from WS-TABLE-SEGMENT into the appropriate fields such as station numbers for MC tables or notification settings for IH 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_ExtractStationInformationStationNumberBorderStationData(["Start Step"])
E_ExtractStationInformationStationNumberBorderStationData(["End Step"])
N_ExtractStationInformationStationNumberBorderStationData_Node0{"The system processes the returned
table segment data"}:::decision N_ExtractStationInformationStationNumberBorderStationData_Node0_action["The system extracts the relevant
business data from WS-TABLE-SEGMENT
into the appropriate fields such as
station numbers for MC tables or
notification settings for IH tables"]:::main N_ExtractStationInformationStationNumberBorderStationData_Node0 -- Yes --> N_ExtractStationInformationStationNumberBorderStationData_Node0_action N_ExtractStationInformationStationNumberBorderStationData_Node0_action --> E_ExtractStationInformationStationNumberBorderStationData S_ExtractStationInformationStationNumberBorderStationData --> N_ExtractStationInformationStationNumberBorderStationData_Node0 N_ExtractStationInformationStationNumberBorderStationData_Node0 -- No --> E_ExtractStationInformationStationNumberBorderStationData
table segment data"}:::decision N_ExtractStationInformationStationNumberBorderStationData_Node0_action["The system extracts the relevant
business data from WS-TABLE-SEGMENT
into the appropriate fields such as
station numbers for MC tables or
notification settings for IH tables"]:::main N_ExtractStationInformationStationNumberBorderStationData_Node0 -- Yes --> N_ExtractStationInformationStationNumberBorderStationData_Node0_action N_ExtractStationInformationStationNumberBorderStationData_Node0_action --> E_ExtractStationInformationStationNumberBorderStationData S_ExtractStationInformationStationNumberBorderStationData --> N_ExtractStationInformationStationNumberBorderStationData_Node0 N_ExtractStationInformationStationNumberBorderStationData_Node0 -- No --> E_ExtractStationInformationStationNumberBorderStationData
File: GCCUSIO.cbl
GIVEN:
A table lookup operation has been performed and GCCTBIO returns success flag '0'
WHEN:
The system processes the returned table segment data
THEN:
The system extracts the relevant business data from WS-TABLE-SEGMENT into the appropriate fields such as station numbers for MC tables or notification settings for IH tables
β Consolidated Acceptance Criteria
- The table lookup returns a non-zero return flag indicating the table entry was not found → the system continues processing without the table data and does not perform operations that depend on the missing table 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_SetReturnFlagtoNotFound(["Start Step"])
E_SetReturnFlagtoNotFound(["End Step"])
N_SetReturnFlagtoNotFound_Node0{"The table lookup returns a non-zero
return flag indicating the table
entry was not found"}:::decision N_SetReturnFlagtoNotFound_Node0_action["The system continues processing
without the table data and does not
perform operations that depend on
the missing table information"]:::main N_SetReturnFlagtoNotFound_Node0 -- Yes --> N_SetReturnFlagtoNotFound_Node0_action N_SetReturnFlagtoNotFound_Node0_action --> E_SetReturnFlagtoNotFound S_SetReturnFlagtoNotFound --> N_SetReturnFlagtoNotFound_Node0 N_SetReturnFlagtoNotFound_Node0 -- No --> E_SetReturnFlagtoNotFound
return flag indicating the table
entry was not found"}:::decision N_SetReturnFlagtoNotFound_Node0_action["The system continues processing
without the table data and does not
perform operations that depend on
the missing table information"]:::main N_SetReturnFlagtoNotFound_Node0 -- Yes --> N_SetReturnFlagtoNotFound_Node0_action N_SetReturnFlagtoNotFound_Node0_action --> E_SetReturnFlagtoNotFound S_SetReturnFlagtoNotFound --> N_SetReturnFlagtoNotFound_Node0 N_SetReturnFlagtoNotFound_Node0 -- No --> E_SetReturnFlagtoNotFound
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A table lookup operation is performed through GCCTBIO service
WHEN:
The table lookup returns a non-zero return flag indicating the table entry was not found
THEN:
- The system continues processing without the table data
- Does not perform operations that depend on the missing table information
β Consolidated Acceptance Criteria
- The system needs to determine the border station number → the system queries the MC table using the cargo location ID and retrieves the station number if 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_LookupBorderStationInformation(["Start Step"])
E_LookupBorderStationInformation(["End Step"])
N_LookupBorderStationInformation_Node0{"The system needs to determine the
border station number"}:::decision N_LookupBorderStationInformation_Node0_action["The system queries the MC table
using the cargo location ID and
retrieves the station number if
found"]:::main N_LookupBorderStationInformation_Node0 -- Yes --> N_LookupBorderStationInformation_Node0_action N_LookupBorderStationInformation_Node0_action --> E_LookupBorderStationInformation S_LookupBorderStationInformation --> N_LookupBorderStationInformation_Node0 N_LookupBorderStationInformation_Node0 -- No --> E_LookupBorderStationInformation
border station number"}:::decision N_LookupBorderStationInformation_Node0_action["The system queries the MC table
using the cargo location ID and
retrieves the station number if
found"]:::main N_LookupBorderStationInformation_Node0 -- Yes --> N_LookupBorderStationInformation_Node0_action N_LookupBorderStationInformation_Node0_action --> E_LookupBorderStationInformation S_LookupBorderStationInformation --> N_LookupBorderStationInformation_Node0 N_LookupBorderStationInformation_Node0 -- No --> E_LookupBorderStationInformation
File: GCCUSIO.cbl
GIVEN:
A cargo record requires border hold index population
WHEN:
The system needs to determine the border station number
THEN:
- The system queries the mc table using the cargo location id
- Retrieves the station number if found
β Consolidated Acceptance Criteria
- The table lookup returns a successful result with return flag '0' → the system assigns the retrieved station number to the border hold index, otherwise no border station assignment occurs
- If the lookup result → if return flag equals '0' then station information was found successfully, otherwise station was 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_StationFound(["Start Step"])
E_StationFound(["End Step"])
N_StationFound_Node0{"The table lookup returns a
successful result with return flag 0"}:::decision N_StationFound_Node0_action["The system assigns the retrieved
station number to the border hold
index, otherwise no border station
assignment occurs"]:::main N_StationFound_Node0 -- Yes --> N_StationFound_Node0_action N_StationFound_Node0_action --> E_StationFound S_StationFound --> N_StationFound_Node0 N_StationFound_Node1{"The system evaluates the lookup
result"}:::decision N_StationFound_Node1_action["If return flag equals 0 then
station information was found
successfully, otherwise station was
not found"]:::main N_StationFound_Node1 -- Yes --> N_StationFound_Node1_action N_StationFound_Node1_action --> E_StationFound N_StationFound_Node0 -- No --> N_StationFound_Node1 N_StationFound_Node1 -- No --> E_StationFound
successful result with return flag 0"}:::decision N_StationFound_Node0_action["The system assigns the retrieved
station number to the border hold
index, otherwise no border station
assignment occurs"]:::main N_StationFound_Node0 -- Yes --> N_StationFound_Node0_action N_StationFound_Node0_action --> E_StationFound S_StationFound --> N_StationFound_Node0 N_StationFound_Node1{"The system evaluates the lookup
result"}:::decision N_StationFound_Node1_action["If return flag equals 0 then
station information was found
successfully, otherwise station was
not found"]:::main N_StationFound_Node1 -- Yes --> N_StationFound_Node1_action N_StationFound_Node1_action --> E_StationFound N_StationFound_Node0 -- No --> N_StationFound_Node1 N_StationFound_Node1 -- No --> E_StationFound
File: GCCUSIO.cbl
GIVEN:
The system has performed an MC table lookup for border station information
WHEN:
The table lookup returns a successful result with return flag '0'
THEN:
The system assigns the retrieved station number to the border hold index, otherwise no border station assignment occurs
File: GCCUSIO.cbl
GIVEN:
Table lookup service has been executed
WHEN:
The system evaluates the lookup result
THEN:
If return flag equals '0' then station information was found successfully, otherwise station was not found
β Consolidated Acceptance Criteria
- Both US cargo short description and CP cargo status description are empty or spaces → skip the Iron Highway notification process entirely
- The US cargo short description equals 'RELEASE' → skip the Iron Highway notification process
- The current cargo status matches the previously saved status AND the status is not DELETED or RELEASE → skip the Iron Highway 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_StatusChangeRequired(["Start Step"])
E_StatusChangeRequired(["End Step"])
N_StatusChangeRequired_Node0{"Both US cargo short description and
CP cargo status description are
empty or spaces"}:::decision N_StatusChangeRequired_Node0_action["Skip the Iron Highway notification
process entirely"]:::main N_StatusChangeRequired_Node0 -- Yes --> N_StatusChangeRequired_Node0_action N_StatusChangeRequired_Node0_action --> E_StatusChangeRequired S_StatusChangeRequired --> N_StatusChangeRequired_Node0 N_StatusChangeRequired_Node1{"The US cargo short description
equals RELEASE"}:::decision N_StatusChangeRequired_Node1_action["Skip the Iron Highway notification
process"]:::main N_StatusChangeRequired_Node1 -- Yes --> N_StatusChangeRequired_Node1_action N_StatusChangeRequired_Node1_action --> E_StatusChangeRequired N_StatusChangeRequired_Node0 -- No --> N_StatusChangeRequired_Node1 N_StatusChangeRequired_Node2{"The current cargo status matches
the previously saved status AND the
status is not DELETED or RELEASE"}:::decision N_StatusChangeRequired_Node2_action["Skip the Iron Highway notification
process"]:::main N_StatusChangeRequired_Node2 -- Yes --> N_StatusChangeRequired_Node2_action N_StatusChangeRequired_Node2_action --> E_StatusChangeRequired N_StatusChangeRequired_Node1 -- No --> N_StatusChangeRequired_Node2 N_StatusChangeRequired_Node2 -- No --> E_StatusChangeRequired
CP cargo status description are
empty or spaces"}:::decision N_StatusChangeRequired_Node0_action["Skip the Iron Highway notification
process entirely"]:::main N_StatusChangeRequired_Node0 -- Yes --> N_StatusChangeRequired_Node0_action N_StatusChangeRequired_Node0_action --> E_StatusChangeRequired S_StatusChangeRequired --> N_StatusChangeRequired_Node0 N_StatusChangeRequired_Node1{"The US cargo short description
equals RELEASE"}:::decision N_StatusChangeRequired_Node1_action["Skip the Iron Highway notification
process"]:::main N_StatusChangeRequired_Node1 -- Yes --> N_StatusChangeRequired_Node1_action N_StatusChangeRequired_Node1_action --> E_StatusChangeRequired N_StatusChangeRequired_Node0 -- No --> N_StatusChangeRequired_Node1 N_StatusChangeRequired_Node2{"The current cargo status matches
the previously saved status AND the
status is not DELETED or RELEASE"}:::decision N_StatusChangeRequired_Node2_action["Skip the Iron Highway notification
process"]:::main N_StatusChangeRequired_Node2 -- Yes --> N_StatusChangeRequired_Node2_action N_StatusChangeRequired_Node2_action --> E_StatusChangeRequired N_StatusChangeRequired_Node1 -- No --> N_StatusChangeRequired_Node2 N_StatusChangeRequired_Node2 -- No --> E_StatusChangeRequired
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
- Both us cargo short description
- Cp cargo status description are empty or spaces
THEN:
Skip the Iron Highway notification process entirely
File: GCCUSIO.cbl
GIVEN:
A cargo record has a US cargo short description status
WHEN:
The US cargo short description equals 'RELEASE'
THEN:
Skip the Iron Highway notification process
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed and has a saved previous status
WHEN:
- The current cargo status matches the previously saved status
- The status is not deleted or release
THEN:
Skip the Iron Highway notification process
β Consolidated Acceptance Criteria
- The system needs to check Iron Highway configuration → retrieve table segment 'IH' using the waybill station number as the sequence 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_RetrieveIronHighwayStationConfiguration(["Start Step"])
E_RetrieveIronHighwayStationConfiguration(["End Step"])
N_RetrieveIronHighwayStationConfiguration_Node0{"The system needs to check Iron
Highway configuration"}:::decision N_RetrieveIronHighwayStationConfiguration_Node0_action["Retrieve table segment IH using the
waybill station number as the
sequence ID"]:::main N_RetrieveIronHighwayStationConfiguration_Node0 -- Yes --> N_RetrieveIronHighwayStationConfiguration_Node0_action N_RetrieveIronHighwayStationConfiguration_Node0_action --> E_RetrieveIronHighwayStationConfiguration S_RetrieveIronHighwayStationConfiguration --> N_RetrieveIronHighwayStationConfiguration_Node0 N_RetrieveIronHighwayStationConfiguration_Node0 -- No --> E_RetrieveIronHighwayStationConfiguration
Highway configuration"}:::decision N_RetrieveIronHighwayStationConfiguration_Node0_action["Retrieve table segment IH using the
waybill station number as the
sequence ID"]:::main N_RetrieveIronHighwayStationConfiguration_Node0 -- Yes --> N_RetrieveIronHighwayStationConfiguration_Node0_action N_RetrieveIronHighwayStationConfiguration_Node0_action --> E_RetrieveIronHighwayStationConfiguration S_RetrieveIronHighwayStationConfiguration --> N_RetrieveIronHighwayStationConfiguration_Node0 N_RetrieveIronHighwayStationConfiguration_Node0 -- No --> E_RetrieveIronHighwayStationConfiguration
File: GCCUSIO.cbl
GIVEN:
A cargo record requires Iron Highway notification processing
WHEN:
The system needs to check Iron Highway configuration
THEN:
Retrieve table segment 'IH' using the waybill station number as the sequence ID
β Consolidated Acceptance Criteria
- The Iron Highway station configuration table lookup returns no matching record → skip the Iron Highway 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_StationConfigurationFound(["Start Step"])
E_StationConfigurationFound(["End Step"])
N_StationConfigurationFound_Node0{"The Iron Highway station
configuration table lookup returns
no matching record"}:::decision N_StationConfigurationFound_Node0_action["Skip the Iron Highway notification
process"]:::main N_StationConfigurationFound_Node0 -- Yes --> N_StationConfigurationFound_Node0_action N_StationConfigurationFound_Node0_action --> E_StationConfigurationFound S_StationConfigurationFound --> N_StationConfigurationFound_Node0 N_StationConfigurationFound_Node0 -- No --> E_StationConfigurationFound
configuration table lookup returns
no matching record"}:::decision N_StationConfigurationFound_Node0_action["Skip the Iron Highway notification
process"]:::main N_StationConfigurationFound_Node0 -- Yes --> N_StationConfigurationFound_Node0_action N_StationConfigurationFound_Node0_action --> E_StationConfigurationFound S_StationConfigurationFound --> N_StationConfigurationFound_Node0 N_StationConfigurationFound_Node0 -- No --> E_StationConfigurationFound
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The Iron Highway station configuration table lookup returns no matching record
THEN:
Skip the Iron Highway notification process
β Consolidated Acceptance Criteria
- The system processes N9 reference number segments for the cargo → search through up to 20 N9 reference number qualifiers and extract the reference number where qualifier equals 'CN' as the shipment ID
- Processing N9 reference data for the cargo CCN key → extract shipment ID from N9 reference qualifier 'CN' and store in Iron Highway message
- The system processes the cargo record for notification → the system retrieves N9 reference information and extracts the shipment ID from CN reference qualifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractN9ReferenceNumbers(["Start Step"])
E_ExtractN9ReferenceNumbers(["End Step"])
N_ExtractN9ReferenceNumbers_Node0{"The system processes N9 reference
number segments for the cargo"}:::decision N_ExtractN9ReferenceNumbers_Node0_action["Search through up to 20 N9
reference number qualifiers and
extract the reference number where
qualifier equals CN as the shipment
ID"]:::main N_ExtractN9ReferenceNumbers_Node0 -- Yes --> N_ExtractN9ReferenceNumbers_Node0_action N_ExtractN9ReferenceNumbers_Node0_action --> E_ExtractN9ReferenceNumbers S_ExtractN9ReferenceNumbers --> N_ExtractN9ReferenceNumbers_Node0 N_ExtractN9ReferenceNumbers_Node1{"Processing N9 reference data for
the cargo CCN key"}:::decision N_ExtractN9ReferenceNumbers_Node1_action["Extract shipment ID from N9
reference qualifier CN and store in
Iron Highway message"]:::main N_ExtractN9ReferenceNumbers_Node1 -- Yes --> N_ExtractN9ReferenceNumbers_Node1_action N_ExtractN9ReferenceNumbers_Node1_action --> E_ExtractN9ReferenceNumbers N_ExtractN9ReferenceNumbers_Node0 -- No --> N_ExtractN9ReferenceNumbers_Node1 N_ExtractN9ReferenceNumbers_Node2{"The system processes the cargo
record for notification"}:::decision N_ExtractN9ReferenceNumbers_Node2_action["The system retrieves N9 reference
information and extracts the
shipment ID from CN reference
qualifier"]:::main N_ExtractN9ReferenceNumbers_Node2 -- Yes --> N_ExtractN9ReferenceNumbers_Node2_action N_ExtractN9ReferenceNumbers_Node2_action --> E_ExtractN9ReferenceNumbers N_ExtractN9ReferenceNumbers_Node1 -- No --> N_ExtractN9ReferenceNumbers_Node2 N_ExtractN9ReferenceNumbers_Node2 -- No --> E_ExtractN9ReferenceNumbers
number segments for the cargo"}:::decision N_ExtractN9ReferenceNumbers_Node0_action["Search through up to 20 N9
reference number qualifiers and
extract the reference number where
qualifier equals CN as the shipment
ID"]:::main N_ExtractN9ReferenceNumbers_Node0 -- Yes --> N_ExtractN9ReferenceNumbers_Node0_action N_ExtractN9ReferenceNumbers_Node0_action --> E_ExtractN9ReferenceNumbers S_ExtractN9ReferenceNumbers --> N_ExtractN9ReferenceNumbers_Node0 N_ExtractN9ReferenceNumbers_Node1{"Processing N9 reference data for
the cargo CCN key"}:::decision N_ExtractN9ReferenceNumbers_Node1_action["Extract shipment ID from N9
reference qualifier CN and store in
Iron Highway message"]:::main N_ExtractN9ReferenceNumbers_Node1 -- Yes --> N_ExtractN9ReferenceNumbers_Node1_action N_ExtractN9ReferenceNumbers_Node1_action --> E_ExtractN9ReferenceNumbers N_ExtractN9ReferenceNumbers_Node0 -- No --> N_ExtractN9ReferenceNumbers_Node1 N_ExtractN9ReferenceNumbers_Node2{"The system processes the cargo
record for notification"}:::decision N_ExtractN9ReferenceNumbers_Node2_action["The system retrieves N9 reference
information and extracts the
shipment ID from CN reference
qualifier"]:::main N_ExtractN9ReferenceNumbers_Node2 -- Yes --> N_ExtractN9ReferenceNumbers_Node2_action N_ExtractN9ReferenceNumbers_Node2_action --> E_ExtractN9ReferenceNumbers N_ExtractN9ReferenceNumbers_Node1 -- No --> N_ExtractN9ReferenceNumbers_Node2 N_ExtractN9ReferenceNumbers_Node2 -- No --> E_ExtractN9ReferenceNumbers
File: GCCUSIO.cbl
GIVEN:
Iron Highway station configuration is found and notification should proceed
WHEN:
The system processes N9 reference number segments for the cargo
THEN:
- Search through up to 20 n9 reference number qualifiers
- Extract the reference number where qualifier equals 'cn' as the shipment id
File: GCCUSIO.cbl
GIVEN:
Iron Highway station configuration is found for the cargo
WHEN:
Processing N9 reference data for the cargo CCN key
THEN:
Extract shipment ID from N9 reference qualifier 'CN' and store in Iron Highway message
File: GCCUSIO.cbl
GIVEN:
The waybill station is configured for Iron Highway notifications
WHEN:
The system processes the cargo record for notification
THEN:
- The system retrieves n9 reference information
- Extracts the shipment id from cn reference qualifier
β Consolidated Acceptance Criteria
- The CP cargo status description equals 'DELETED' → set the Iron Highway notification status to 'DELETED'
- The CP cargo status description equals 'RELEASE' → set the Iron Highway notification status to 'RELEASE'
- The US cargo short description is empty or spaces AND the CP cargo status description equals 'SENT ' → set the Iron Highway notification status to 'SENT'
- The cargo status is not DELETED, RELEASE, or the special SENT case → set the Iron Highway notification status to the US cargo short description 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_DetermineNotificationStatus(["Start Step"])
E_DetermineNotificationStatus(["End Step"])
N_DetermineNotificationStatus_Node0{"The CP cargo status description
equals DELETED"}:::decision N_DetermineNotificationStatus_Node0_action["Set the Iron Highway notification
status to DELETED"]:::main N_DetermineNotificationStatus_Node0 -- Yes --> N_DetermineNotificationStatus_Node0_action N_DetermineNotificationStatus_Node0_action --> E_DetermineNotificationStatus S_DetermineNotificationStatus --> N_DetermineNotificationStatus_Node0 N_DetermineNotificationStatus_Node1{"The CP cargo status description
equals RELEASE"}:::decision N_DetermineNotificationStatus_Node1_action["Set the Iron Highway notification
status to RELEASE"]:::main N_DetermineNotificationStatus_Node1 -- Yes --> N_DetermineNotificationStatus_Node1_action N_DetermineNotificationStatus_Node1_action --> E_DetermineNotificationStatus N_DetermineNotificationStatus_Node0 -- No --> N_DetermineNotificationStatus_Node1 N_DetermineNotificationStatus_Node2{"The US cargo short description is
empty or spaces AND the CP cargo
status description equals SENT"}:::decision N_DetermineNotificationStatus_Node2_action["Set the Iron Highway notification
status to SENT"]:::main N_DetermineNotificationStatus_Node2 -- Yes --> N_DetermineNotificationStatus_Node2_action N_DetermineNotificationStatus_Node2_action --> E_DetermineNotificationStatus N_DetermineNotificationStatus_Node1 -- No --> N_DetermineNotificationStatus_Node2 N_DetermineNotificationStatus_Node3{"The cargo status is not DELETED,
RELEASE, or the special SENT case"}:::decision N_DetermineNotificationStatus_Node3_action["Set the Iron Highway notification
status to the US cargo short
description value"]:::main N_DetermineNotificationStatus_Node3 -- Yes --> N_DetermineNotificationStatus_Node3_action N_DetermineNotificationStatus_Node3_action --> E_DetermineNotificationStatus N_DetermineNotificationStatus_Node2 -- No --> N_DetermineNotificationStatus_Node3 N_DetermineNotificationStatus_Node3 -- No --> E_DetermineNotificationStatus
equals DELETED"}:::decision N_DetermineNotificationStatus_Node0_action["Set the Iron Highway notification
status to DELETED"]:::main N_DetermineNotificationStatus_Node0 -- Yes --> N_DetermineNotificationStatus_Node0_action N_DetermineNotificationStatus_Node0_action --> E_DetermineNotificationStatus S_DetermineNotificationStatus --> N_DetermineNotificationStatus_Node0 N_DetermineNotificationStatus_Node1{"The CP cargo status description
equals RELEASE"}:::decision N_DetermineNotificationStatus_Node1_action["Set the Iron Highway notification
status to RELEASE"]:::main N_DetermineNotificationStatus_Node1 -- Yes --> N_DetermineNotificationStatus_Node1_action N_DetermineNotificationStatus_Node1_action --> E_DetermineNotificationStatus N_DetermineNotificationStatus_Node0 -- No --> N_DetermineNotificationStatus_Node1 N_DetermineNotificationStatus_Node2{"The US cargo short description is
empty or spaces AND the CP cargo
status description equals SENT"}:::decision N_DetermineNotificationStatus_Node2_action["Set the Iron Highway notification
status to SENT"]:::main N_DetermineNotificationStatus_Node2 -- Yes --> N_DetermineNotificationStatus_Node2_action N_DetermineNotificationStatus_Node2_action --> E_DetermineNotificationStatus N_DetermineNotificationStatus_Node1 -- No --> N_DetermineNotificationStatus_Node2 N_DetermineNotificationStatus_Node3{"The cargo status is not DELETED,
RELEASE, or the special SENT case"}:::decision N_DetermineNotificationStatus_Node3_action["Set the Iron Highway notification
status to the US cargo short
description value"]:::main N_DetermineNotificationStatus_Node3 -- Yes --> N_DetermineNotificationStatus_Node3_action N_DetermineNotificationStatus_Node3_action --> E_DetermineNotificationStatus N_DetermineNotificationStatus_Node2 -- No --> N_DetermineNotificationStatus_Node3 N_DetermineNotificationStatus_Node3 -- No --> E_DetermineNotificationStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The CP cargo status description equals 'DELETED'
THEN:
Set the Iron Highway notification status to 'DELETED'
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The CP cargo status description equals 'RELEASE'
THEN:
Set the Iron Highway notification status to 'RELEASE'
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
- The us cargo short description is empty or spaces
- The cp cargo status description equals 'sent '
THEN:
Set the Iron Highway notification status to 'SENT'
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The cargo status is not DELETED, RELEASE, or the special SENT case
THEN:
Set the Iron Highway notification status to the US cargo short description value
β Consolidated Acceptance Criteria
- All required notification data is available including car ID, waybill number, CCN, and status → send notification to Iron Highway system using record type 'UC' with car identification, waybill number, cargo control number, shipment ID, and determined 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_SendNotificationtoIronHighwaySystem(["Start Step"])
E_SendNotificationtoIronHighwaySystem(["End Step"])
N_SendNotificationtoIronHighwaySystem_Node0{"All required notification data is
available including car ID, waybill
number, CCN, and status"}:::decision N_SendNotificationtoIronHighwaySystem_Node0_action["Send notification to Iron Highway
system using record type UC with car
identification, waybill number,
cargo control number, shipment ID,
and determined status"]:::main N_SendNotificationtoIronHighwaySystem_Node0 -- Yes --> N_SendNotificationtoIronHighwaySystem_Node0_action N_SendNotificationtoIronHighwaySystem_Node0_action --> E_SendNotificationtoIronHighwaySystem S_SendNotificationtoIronHighwaySystem --> N_SendNotificationtoIronHighwaySystem_Node0 N_SendNotificationtoIronHighwaySystem_Node0 -- No --> E_SendNotificationtoIronHighwaySystem
available including car ID, waybill
number, CCN, and status"}:::decision N_SendNotificationtoIronHighwaySystem_Node0_action["Send notification to Iron Highway
system using record type UC with car
identification, waybill number,
cargo control number, shipment ID,
and determined status"]:::main N_SendNotificationtoIronHighwaySystem_Node0 -- Yes --> N_SendNotificationtoIronHighwaySystem_Node0_action N_SendNotificationtoIronHighwaySystem_Node0_action --> E_SendNotificationtoIronHighwaySystem S_SendNotificationtoIronHighwaySystem --> N_SendNotificationtoIronHighwaySystem_Node0 N_SendNotificationtoIronHighwaySystem_Node0 -- No --> E_SendNotificationtoIronHighwaySystem
File: GCCUSIO.cbl
GIVEN:
Iron Highway notification status has been determined and message prepared
WHEN:
All required notification data is available including car ID, waybill number, CCN, and status
THEN:
Send notification to Iron Highway system using record type 'UC' with car identification, waybill number, cargo control number, shipment ID, and determined status
β Consolidated Acceptance Criteria
- If if IH notification processing is needed → iH processing is required if both status fields are not empty OR if CP status is 'SENT' when US status is empty OR if status is not 'RELEASE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IHStatusProcessingRequired(["Start Step"])
E_IHStatusProcessingRequired(["End Step"])
N_IHStatusProcessingRequired_Node0{"The system evaluates if IH
notification processing is needed"}:::decision N_IHStatusProcessingRequired_Node0_action["IH processing is required if both
status fields are not empty OR if CP
status is SENT when US status is
empty OR if status is not RELEASE"]:::main N_IHStatusProcessingRequired_Node0 -- Yes --> N_IHStatusProcessingRequired_Node0_action N_IHStatusProcessingRequired_Node0_action --> E_IHStatusProcessingRequired S_IHStatusProcessingRequired --> N_IHStatusProcessingRequired_Node0 N_IHStatusProcessingRequired_Node0 -- No --> E_IHStatusProcessingRequired
notification processing is needed"}:::decision N_IHStatusProcessingRequired_Node0_action["IH processing is required if both
status fields are not empty OR if CP
status is SENT when US status is
empty OR if status is not RELEASE"]:::main N_IHStatusProcessingRequired_Node0 -- Yes --> N_IHStatusProcessingRequired_Node0_action N_IHStatusProcessingRequired_Node0_action --> E_IHStatusProcessingRequired S_IHStatusProcessingRequired --> N_IHStatusProcessingRequired_Node0 N_IHStatusProcessingRequired_Node0 -- No --> E_IHStatusProcessingRequired
File: GCCUSIO.cbl
GIVEN:
A cargo record with US cargo status and CP cargo status fields
WHEN:
The system evaluates if IH notification processing is needed
THEN:
IH processing is required if both status fields are not empty OR if CP status is 'SENT' when US status is empty OR if status is not 'RELEASE'
β Consolidated Acceptance Criteria
- The system prepares for table lookup → all lookup parameter fields are cleared and function code is set to 'GU' (Get Unique)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTableLookupParameters(["Start Step"])
E_SetTableLookupParameters(["End Step"])
N_SetTableLookupParameters_Node0{"The system prepares for table
lookup"}:::decision N_SetTableLookupParameters_Node0_action["All lookup parameter fields are
cleared and function code is set to
GU Get Unique"]:::main N_SetTableLookupParameters_Node0 -- Yes --> N_SetTableLookupParameters_Node0_action N_SetTableLookupParameters_Node0_action --> E_SetTableLookupParameters S_SetTableLookupParameters --> N_SetTableLookupParameters_Node0 N_SetTableLookupParameters_Node0 -- No --> E_SetTableLookupParameters
lookup"}:::decision N_SetTableLookupParameters_Node0_action["All lookup parameter fields are
cleared and function code is set to
GU Get Unique"]:::main N_SetTableLookupParameters_Node0 -- Yes --> N_SetTableLookupParameters_Node0_action N_SetTableLookupParameters_Node0_action --> E_SetTableLookupParameters S_SetTableLookupParameters --> N_SetTableLookupParameters_Node0 N_SetTableLookupParameters_Node0 -- No --> E_SetTableLookupParameters
File: GCCUSIO.cbl
GIVEN:
A table lookup operation is required
WHEN:
The system prepares for table lookup
THEN:
- All lookup parameter fields are cleared
- Function code is set to 'gu' (get unique)
β Consolidated Acceptance Criteria
- The system sets the table identifier → the table ID is set to 'IH' to identify the Iron Highway configuration table
- Table lookup parameters are being set → the table ID should be set to 'IH' to identify the Iron Highway configuration 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_SetTableIDtoIH(["Start Step"])
E_SetTableIDtoIH(["End Step"])
N_SetTableIDtoIH_Node0{"The system sets the table
identifier"}:::decision N_SetTableIDtoIH_Node0_action["The table ID is set to IH to
identify the Iron Highway
configuration table"]:::main N_SetTableIDtoIH_Node0 -- Yes --> N_SetTableIDtoIH_Node0_action N_SetTableIDtoIH_Node0_action --> E_SetTableIDtoIH S_SetTableIDtoIH --> N_SetTableIDtoIH_Node0 N_SetTableIDtoIH_Node1{"Table lookup parameters are being
set"}:::decision N_SetTableIDtoIH_Node1_action["The table ID should be set to IH to
identify the Iron Highway
configuration table"]:::main N_SetTableIDtoIH_Node1 -- Yes --> N_SetTableIDtoIH_Node1_action N_SetTableIDtoIH_Node1_action --> E_SetTableIDtoIH N_SetTableIDtoIH_Node0 -- No --> N_SetTableIDtoIH_Node1 N_SetTableIDtoIH_Node1 -- No --> E_SetTableIDtoIH
identifier"}:::decision N_SetTableIDtoIH_Node0_action["The table ID is set to IH to
identify the Iron Highway
configuration table"]:::main N_SetTableIDtoIH_Node0 -- Yes --> N_SetTableIDtoIH_Node0_action N_SetTableIDtoIH_Node0_action --> E_SetTableIDtoIH S_SetTableIDtoIH --> N_SetTableIDtoIH_Node0 N_SetTableIDtoIH_Node1{"Table lookup parameters are being
set"}:::decision N_SetTableIDtoIH_Node1_action["The table ID should be set to IH to
identify the Iron Highway
configuration table"]:::main N_SetTableIDtoIH_Node1 -- Yes --> N_SetTableIDtoIH_Node1_action N_SetTableIDtoIH_Node1_action --> E_SetTableIDtoIH N_SetTableIDtoIH_Node0 -- No --> N_SetTableIDtoIH_Node1 N_SetTableIDtoIH_Node1 -- No --> E_SetTableIDtoIH
File: GCCUSIO.cbl
GIVEN:
A table lookup operation for IH configuration
WHEN:
The system sets the table identifier
THEN:
The table ID is set to 'IH' to identify the Iron Highway configuration table
File: GCCUSIO.cbl
GIVEN:
The system needs to access Iron Highway configuration data
WHEN:
Table lookup parameters are being set
THEN:
The table ID should be set to 'IH' to identify the Iron Highway configuration table
β Consolidated Acceptance Criteria
- The system sets the search key for IH table lookup → the waybill station code is assigned as the sequence ID search key
- Iron Highway table lookup parameters are being finalized → the extracted station code should be assigned as the table search sequence 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_SetStationCodeasSearchKey(["Start Step"])
E_SetStationCodeasSearchKey(["End Step"])
N_SetStationCodeasSearchKey_Node0{"The system sets the search key for
IH table lookup"}:::decision N_SetStationCodeasSearchKey_Node0_action["The waybill station code is
assigned as the sequence ID search
key"]:::main N_SetStationCodeasSearchKey_Node0 -- Yes --> N_SetStationCodeasSearchKey_Node0_action N_SetStationCodeasSearchKey_Node0_action --> E_SetStationCodeasSearchKey S_SetStationCodeasSearchKey --> N_SetStationCodeasSearchKey_Node0 N_SetStationCodeasSearchKey_Node1{"Iron Highway table lookup
parameters are being finalized"}:::decision N_SetStationCodeasSearchKey_Node1_action["The extracted station code should
be assigned as the table search
sequence ID"]:::main N_SetStationCodeasSearchKey_Node1 -- Yes --> N_SetStationCodeasSearchKey_Node1_action N_SetStationCodeasSearchKey_Node1_action --> E_SetStationCodeasSearchKey N_SetStationCodeasSearchKey_Node0 -- No --> N_SetStationCodeasSearchKey_Node1 N_SetStationCodeasSearchKey_Node1 -- No --> E_SetStationCodeasSearchKey
IH table lookup"}:::decision N_SetStationCodeasSearchKey_Node0_action["The waybill station code is
assigned as the sequence ID search
key"]:::main N_SetStationCodeasSearchKey_Node0 -- Yes --> N_SetStationCodeasSearchKey_Node0_action N_SetStationCodeasSearchKey_Node0_action --> E_SetStationCodeasSearchKey S_SetStationCodeasSearchKey --> N_SetStationCodeasSearchKey_Node0 N_SetStationCodeasSearchKey_Node1{"Iron Highway table lookup
parameters are being finalized"}:::decision N_SetStationCodeasSearchKey_Node1_action["The extracted station code should
be assigned as the table search
sequence ID"]:::main N_SetStationCodeasSearchKey_Node1 -- Yes --> N_SetStationCodeasSearchKey_Node1_action N_SetStationCodeasSearchKey_Node1_action --> E_SetStationCodeasSearchKey N_SetStationCodeasSearchKey_Node0 -- No --> N_SetStationCodeasSearchKey_Node1 N_SetStationCodeasSearchKey_Node1 -- No --> E_SetStationCodeasSearchKey
File: GCCUSIO.cbl
GIVEN:
A saved waybill station code from cargo processing
WHEN:
The system sets the search key for IH table lookup
THEN:
The waybill station code is assigned as the sequence ID search key
File: GCCUSIO.cbl
GIVEN:
A station code has been extracted from waybill information
WHEN:
Iron Highway table lookup parameters are being finalized
THEN:
The extracted station code should be assigned as the table search sequence ID
β Consolidated Acceptance Criteria
- The system checks the lookup result → configuration is found if the return flag equals '0', otherwise no configuration 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_IHConfigurationFound(["Start Step"])
E_IHConfigurationFound(["End Step"])
N_IHConfigurationFound_Node0{"The system checks the lookup result"}:::decision
N_IHConfigurationFound_Node0_action["Configuration is found if the
return flag equals 0 , otherwise no
configuration is available"]:::main N_IHConfigurationFound_Node0 -- Yes --> N_IHConfigurationFound_Node0_action N_IHConfigurationFound_Node0_action --> E_IHConfigurationFound S_IHConfigurationFound --> N_IHConfigurationFound_Node0 N_IHConfigurationFound_Node0 -- No --> E_IHConfigurationFound
return flag equals 0 , otherwise no
configuration is available"]:::main N_IHConfigurationFound_Node0 -- Yes --> N_IHConfigurationFound_Node0_action N_IHConfigurationFound_Node0_action --> E_IHConfigurationFound S_IHConfigurationFound --> N_IHConfigurationFound_Node0 N_IHConfigurationFound_Node0 -- No --> E_IHConfigurationFound
File: GCCUSIO.cbl
GIVEN:
A table lookup service call has been executed
WHEN:
The system checks the lookup result
THEN:
Configuration is found if the return flag equals '0', otherwise no configuration is available
β Consolidated Acceptance Criteria
- The system processes the retrieved table segment → iH station settings are extracted and made available for notification 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_RetrieveIHStationSettings(["Start Step"])
E_RetrieveIHStationSettings(["End Step"])
N_RetrieveIHStationSettings_Node0{"The system processes the retrieved
table segment"}:::decision N_RetrieveIHStationSettings_Node0_action["IH station settings are extracted
and made available for notification
processing"]:::main N_RetrieveIHStationSettings_Node0 -- Yes --> N_RetrieveIHStationSettings_Node0_action N_RetrieveIHStationSettings_Node0_action --> E_RetrieveIHStationSettings S_RetrieveIHStationSettings --> N_RetrieveIHStationSettings_Node0 N_RetrieveIHStationSettings_Node0 -- No --> E_RetrieveIHStationSettings
table segment"}:::decision N_RetrieveIHStationSettings_Node0_action["IH station settings are extracted
and made available for notification
processing"]:::main N_RetrieveIHStationSettings_Node0 -- Yes --> N_RetrieveIHStationSettings_Node0_action N_RetrieveIHStationSettings_Node0_action --> E_RetrieveIHStationSettings S_RetrieveIHStationSettings --> N_RetrieveIHStationSettings_Node0 N_RetrieveIHStationSettings_Node0 -- No --> E_RetrieveIHStationSettings
File: GCCUSIO.cbl
GIVEN:
IH configuration table lookup was successful
WHEN:
The system processes the retrieved table segment
THEN:
- Ih station settings are extracted
- Made available for notification processing
β Consolidated Acceptance Criteria
- Table lookup parameters are being configured → the accept status should be set to 'GE' to handle table not found conditions gracefully
- The system prepares the database call parameters → the accept status must be set to 'GE' to handle both found and not found scenarios
- The system prepares to update the GCSB1RT record → the accept status must be set to 'GE' before executing the 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_SetAcceptStatustoGE(["Start Step"])
E_SetAcceptStatustoGE(["End Step"])
N_SetAcceptStatustoGE_Node0{"Table lookup parameters are being
configured"}:::decision N_SetAcceptStatustoGE_Node0_action["The accept status should be set to
GE to handle table not found
conditions gracefully"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node1{"The system prepares the database
call parameters"}:::decision N_SetAcceptStatustoGE_Node1_action["The accept status must be set to GE
to handle both found and not found
scenarios"]:::main N_SetAcceptStatustoGE_Node1 -- Yes --> N_SetAcceptStatustoGE_Node1_action N_SetAcceptStatustoGE_Node1_action --> E_SetAcceptStatustoGE N_SetAcceptStatustoGE_Node0 -- No --> N_SetAcceptStatustoGE_Node1 N_SetAcceptStatustoGE_Node2{"The system prepares to update the
GCSB1RT record"}:::decision N_SetAcceptStatustoGE_Node2_action["The accept status must be set to GE
before executing the database call"]:::main N_SetAcceptStatustoGE_Node2 -- Yes --> N_SetAcceptStatustoGE_Node2_action N_SetAcceptStatustoGE_Node2_action --> E_SetAcceptStatustoGE N_SetAcceptStatustoGE_Node1 -- No --> N_SetAcceptStatustoGE_Node2 N_SetAcceptStatustoGE_Node2 -- No --> E_SetAcceptStatustoGE
configured"}:::decision N_SetAcceptStatustoGE_Node0_action["The accept status should be set to
GE to handle table not found
conditions gracefully"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node1{"The system prepares the database
call parameters"}:::decision N_SetAcceptStatustoGE_Node1_action["The accept status must be set to GE
to handle both found and not found
scenarios"]:::main N_SetAcceptStatustoGE_Node1 -- Yes --> N_SetAcceptStatustoGE_Node1_action N_SetAcceptStatustoGE_Node1_action --> E_SetAcceptStatustoGE N_SetAcceptStatustoGE_Node0 -- No --> N_SetAcceptStatustoGE_Node1 N_SetAcceptStatustoGE_Node2{"The system prepares to update the
GCSB1RT record"}:::decision N_SetAcceptStatustoGE_Node2_action["The accept status must be set to GE
before executing the database call"]:::main N_SetAcceptStatustoGE_Node2 -- Yes --> N_SetAcceptStatustoGE_Node2_action N_SetAcceptStatustoGE_Node2_action --> E_SetAcceptStatustoGE N_SetAcceptStatustoGE_Node1 -- No --> N_SetAcceptStatustoGE_Node2 N_SetAcceptStatustoGE_Node2 -- No --> E_SetAcceptStatustoGE
File: GCCUSIO.cbl
GIVEN:
The system is preparing to lookup Iron Highway table data
WHEN:
Table lookup parameters are being configured
THEN:
The accept status should be set to 'GE' to handle table not found conditions gracefully
File: GCCUSIO.cbl
GIVEN:
A hold index record search is being performed
WHEN:
The system prepares the database call parameters
THEN:
- The accept status must be set to 'ge' to handle both found
- Not found scenarios
File: GCCUSIO.cbl
GIVEN:
A hold index record update operation is being processed
WHEN:
The system prepares to update the GCSB1RT record
THEN:
The accept status must be set to 'GE' before executing the database call
β Consolidated Acceptance Criteria
- Table key fields need to be initialized → all table key fields including table key value, detail key value, second PCB flag, and unqualified SSA flag should be 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_ClearTableKeyFields(["Start Step"])
E_ClearTableKeyFields(["End Step"])
N_ClearTableKeyFields_Node0{"Table key fields need to be
initialized"}:::decision N_ClearTableKeyFields_Node0_action["All table key fields including
table key value, detail key value,
second PCB flag, and unqualified SSA
flag should be cleared to spaces"]:::main N_ClearTableKeyFields_Node0 -- Yes --> N_ClearTableKeyFields_Node0_action N_ClearTableKeyFields_Node0_action --> E_ClearTableKeyFields S_ClearTableKeyFields --> N_ClearTableKeyFields_Node0 N_ClearTableKeyFields_Node0 -- No --> E_ClearTableKeyFields
initialized"}:::decision N_ClearTableKeyFields_Node0_action["All table key fields including
table key value, detail key value,
second PCB flag, and unqualified SSA
flag should be cleared to spaces"]:::main N_ClearTableKeyFields_Node0 -- Yes --> N_ClearTableKeyFields_Node0_action N_ClearTableKeyFields_Node0_action --> E_ClearTableKeyFields S_ClearTableKeyFields --> N_ClearTableKeyFields_Node0 N_ClearTableKeyFields_Node0 -- No --> E_ClearTableKeyFields
File: GCCUSIO.cbl
GIVEN:
The system is preparing Iron Highway table lookup parameters
WHEN:
Table key fields need to be initialized
THEN:
All table key fields including table key value, detail key value, second PCB flag, and unqualified SSA flag should be cleared to spaces
β Consolidated Acceptance Criteria
- Iron Highway table lookup requires a station-based search key → the station code should be extracted from the saved waybill station data and used as the search sequence 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_ExtractStationCodefromWaybill(["Start Step"])
E_ExtractStationCodefromWaybill(["End Step"])
N_ExtractStationCodefromWaybill_Node0{"Iron Highway table lookup requires
a station-based search key"}:::decision N_ExtractStationCodefromWaybill_Node0_action["The station code should be
extracted from the saved waybill
station data and used as the search
sequence ID"]:::main N_ExtractStationCodefromWaybill_Node0 -- Yes --> N_ExtractStationCodefromWaybill_Node0_action N_ExtractStationCodefromWaybill_Node0_action --> E_ExtractStationCodefromWaybill S_ExtractStationCodefromWaybill --> N_ExtractStationCodefromWaybill_Node0 N_ExtractStationCodefromWaybill_Node0 -- No --> E_ExtractStationCodefromWaybill
a station-based search key"}:::decision N_ExtractStationCodefromWaybill_Node0_action["The station code should be
extracted from the saved waybill
station data and used as the search
sequence ID"]:::main N_ExtractStationCodefromWaybill_Node0 -- Yes --> N_ExtractStationCodefromWaybill_Node0_action N_ExtractStationCodefromWaybill_Node0_action --> E_ExtractStationCodefromWaybill S_ExtractStationCodefromWaybill --> N_ExtractStationCodefromWaybill_Node0 N_ExtractStationCodefromWaybill_Node0 -- No --> E_ExtractStationCodefromWaybill
File: GCCUSIO.cbl
GIVEN:
The system has saved waybill station information
WHEN:
Iron Highway table lookup requires a station-based search key
THEN:
- The station code should be extracted from the saved waybill station data
- Used as the search sequence id
β Consolidated Acceptance Criteria
- Return flag needs to be initialized → the return flag should be cleared to spaces to ensure accurate result detection
- The system prepares the return status indicator → the return flag is cleared to spaces to enable proper success/failure detection
- The system initializes control flags → the return flag is cleared to spaces for proper status 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_ClearReturnFlag(["Start Step"])
E_ClearReturnFlag(["End Step"])
N_ClearReturnFlag_Node0{"Return flag needs to be initialized"}:::decision
N_ClearReturnFlag_Node0_action["The return flag should be cleared
to spaces to ensure accurate result
detection"]:::main N_ClearReturnFlag_Node0 -- Yes --> N_ClearReturnFlag_Node0_action N_ClearReturnFlag_Node0_action --> E_ClearReturnFlag S_ClearReturnFlag --> N_ClearReturnFlag_Node0 N_ClearReturnFlag_Node1{"The system prepares the return
status indicator"}:::decision N_ClearReturnFlag_Node1_action["The return flag is cleared to
spaces to enable proper
successfailure detection"]:::main N_ClearReturnFlag_Node1 -- Yes --> N_ClearReturnFlag_Node1_action N_ClearReturnFlag_Node1_action --> E_ClearReturnFlag N_ClearReturnFlag_Node0 -- No --> N_ClearReturnFlag_Node1 N_ClearReturnFlag_Node2{"The system initializes control
flags"}:::decision N_ClearReturnFlag_Node2_action["The return flag is cleared to
spaces for proper status detection"]:::main N_ClearReturnFlag_Node2 -- Yes --> N_ClearReturnFlag_Node2_action N_ClearReturnFlag_Node2_action --> E_ClearReturnFlag N_ClearReturnFlag_Node1 -- No --> N_ClearReturnFlag_Node2 N_ClearReturnFlag_Node2 -- No --> E_ClearReturnFlag
to spaces to ensure accurate result
detection"]:::main N_ClearReturnFlag_Node0 -- Yes --> N_ClearReturnFlag_Node0_action N_ClearReturnFlag_Node0_action --> E_ClearReturnFlag S_ClearReturnFlag --> N_ClearReturnFlag_Node0 N_ClearReturnFlag_Node1{"The system prepares the return
status indicator"}:::decision N_ClearReturnFlag_Node1_action["The return flag is cleared to
spaces to enable proper
successfailure detection"]:::main N_ClearReturnFlag_Node1 -- Yes --> N_ClearReturnFlag_Node1_action N_ClearReturnFlag_Node1_action --> E_ClearReturnFlag N_ClearReturnFlag_Node0 -- No --> N_ClearReturnFlag_Node1 N_ClearReturnFlag_Node2{"The system initializes control
flags"}:::decision N_ClearReturnFlag_Node2_action["The return flag is cleared to
spaces for proper status detection"]:::main N_ClearReturnFlag_Node2 -- Yes --> N_ClearReturnFlag_Node2_action N_ClearReturnFlag_Node2_action --> E_ClearReturnFlag N_ClearReturnFlag_Node1 -- No --> N_ClearReturnFlag_Node2 N_ClearReturnFlag_Node2 -- No --> E_ClearReturnFlag
File: GCCUSIO.cbl
GIVEN:
The system is preparing to call Iron Highway table lookup service
WHEN:
Return flag needs to be initialized
THEN:
The return flag should be cleared to spaces to ensure accurate result detection
File: GCCUSIO.cbl
GIVEN:
A table lookup operation is about to be executed
WHEN:
The system prepares the return status indicator
THEN:
The return flag is cleared to spaces to enable proper success/failure detection
File: GCCUSIO.cbl
GIVEN:
Table lookup parameters are being prepared
WHEN:
The system initializes control flags
THEN:
The return flag is cleared to spaces for proper status detection
β Consolidated Acceptance Criteria
- The system needs to determine if the table data was found → if the return flag equals '0' then the table was found successfully, otherwise the table was 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_TableFound(["Start Step"])
E_TableFound(["End Step"])
N_TableFound_Node0{"The system needs to determine if
the table data was found"}:::decision N_TableFound_Node0_action["If the return flag equals 0 then
the table was found successfully,
otherwise the table was not found"]:::main N_TableFound_Node0 -- Yes --> N_TableFound_Node0_action N_TableFound_Node0_action --> E_TableFound S_TableFound --> N_TableFound_Node0 N_TableFound_Node0 -- No --> E_TableFound
the table data was found"}:::decision N_TableFound_Node0_action["If the return flag equals 0 then
the table was found successfully,
otherwise the table was not found"]:::main N_TableFound_Node0 -- Yes --> N_TableFound_Node0_action N_TableFound_Node0_action --> E_TableFound S_TableFound --> N_TableFound_Node0 N_TableFound_Node0 -- No --> E_TableFound
File: GCCUSIO.cbl
GIVEN:
Iron Highway table lookup service has been called
WHEN:
The system needs to determine if the table data was found
THEN:
If the return flag equals '0' then the table was found successfully, otherwise the table was not found
β Consolidated Acceptance Criteria
- The system prepares to lookup station information → the location ID from the cargo record is used as the sequence key for table 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_SetSequenceIDfromLocation(["Start Step"])
E_SetSequenceIDfromLocation(["End Step"])
N_SetSequenceIDfromLocation_Node0{"The system prepares to lookup
station information"}:::decision N_SetSequenceIDfromLocation_Node0_action["The location ID from the cargo
record is used as the sequence key
for table search"]:::main N_SetSequenceIDfromLocation_Node0 -- Yes --> N_SetSequenceIDfromLocation_Node0_action N_SetSequenceIDfromLocation_Node0_action --> E_SetSequenceIDfromLocation S_SetSequenceIDfromLocation --> N_SetSequenceIDfromLocation_Node0 N_SetSequenceIDfromLocation_Node0 -- No --> E_SetSequenceIDfromLocation
station information"}:::decision N_SetSequenceIDfromLocation_Node0_action["The location ID from the cargo
record is used as the sequence key
for table search"]:::main N_SetSequenceIDfromLocation_Node0 -- Yes --> N_SetSequenceIDfromLocation_Node0_action N_SetSequenceIDfromLocation_Node0_action --> E_SetSequenceIDfromLocation S_SetSequenceIDfromLocation --> N_SetSequenceIDfromLocation_Node0 N_SetSequenceIDfromLocation_Node0 -- No --> E_SetSequenceIDfromLocation
File: GCCUSIO.cbl
GIVEN:
A cargo record contains a location ID
WHEN:
The system prepares to lookup station information
THEN:
The location ID from the cargo record is used as the sequence key for table search
β Consolidated Acceptance Criteria
- The system executes the table lookup operation → the GCCTBIO service is called with the function code, table identifiers, and search keys to retrieve the requested 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_CallGCCTBIOTableService(["Start Step"])
E_CallGCCTBIOTableService(["End Step"])
N_CallGCCTBIOTableService_Node0{"The system executes the table
lookup operation"}:::decision N_CallGCCTBIOTableService_Node0_action["The GCCTBIO service is called with
the function code, table
identifiers, and search keys to
retrieve the requested data"]:::main N_CallGCCTBIOTableService_Node0 -- Yes --> N_CallGCCTBIOTableService_Node0_action N_CallGCCTBIOTableService_Node0_action --> E_CallGCCTBIOTableService S_CallGCCTBIOTableService --> N_CallGCCTBIOTableService_Node0 N_CallGCCTBIOTableService_Node0 -- No --> E_CallGCCTBIOTableService
lookup operation"}:::decision N_CallGCCTBIOTableService_Node0_action["The GCCTBIO service is called with
the function code, table
identifiers, and search keys to
retrieve the requested data"]:::main N_CallGCCTBIOTableService_Node0 -- Yes --> N_CallGCCTBIOTableService_Node0_action N_CallGCCTBIOTableService_Node0_action --> E_CallGCCTBIOTableService S_CallGCCTBIOTableService --> N_CallGCCTBIOTableService_Node0 N_CallGCCTBIOTableService_Node0 -- No --> E_CallGCCTBIOTableService
File: GCCUSIO.cbl
GIVEN:
All table lookup parameters are properly configured
WHEN:
The system executes the table lookup operation
THEN:
The GCCTBIO service is called with the function code, table identifiers, and search keys to retrieve the requested data
β Consolidated Acceptance Criteria
- If the operation result → if the return flag equals '0', the lookup is considered successful, otherwise it indicates the record was 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_ReturnFlag0(["Start Step"])
E_ReturnFlag0(["End Step"])
N_ReturnFlag0_Node0{"The system evaluates the operation
result"}:::decision N_ReturnFlag0_Node0_action["If the return flag equals 0 , the
lookup is considered successful,
otherwise it indicates the record
was not found"]:::main N_ReturnFlag0_Node0 -- Yes --> N_ReturnFlag0_Node0_action N_ReturnFlag0_Node0_action --> E_ReturnFlag0 S_ReturnFlag0 --> N_ReturnFlag0_Node0 N_ReturnFlag0_Node0 -- No --> E_ReturnFlag0
result"}:::decision N_ReturnFlag0_Node0_action["If the return flag equals 0 , the
lookup is considered successful,
otherwise it indicates the record
was not found"]:::main N_ReturnFlag0_Node0 -- Yes --> N_ReturnFlag0_Node0_action N_ReturnFlag0_Node0_action --> E_ReturnFlag0 S_ReturnFlag0 --> N_ReturnFlag0_Node0 N_ReturnFlag0_Node0 -- No --> E_ReturnFlag0
File: GCCUSIO.cbl
GIVEN:
A table lookup operation has been executed
WHEN:
The system evaluates the operation result
THEN:
If the return flag equals '0', the lookup is considered successful, otherwise it indicates the record was not found
β Consolidated Acceptance Criteria
- The system processes the retrieved table data → station information is extracted from the table segment for use in 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_ExtractStationInformation(["Start Step"])
E_ExtractStationInformation(["End Step"])
N_ExtractStationInformation_Node0{"The system processes the retrieved
table data"}:::decision N_ExtractStationInformation_Node0_action["Station information is extracted
from the table segment for use in
subsequent processing"]:::main N_ExtractStationInformation_Node0 -- Yes --> N_ExtractStationInformation_Node0_action N_ExtractStationInformation_Node0_action --> E_ExtractStationInformation S_ExtractStationInformation --> N_ExtractStationInformation_Node0 N_ExtractStationInformation_Node0 -- No --> E_ExtractStationInformation
table data"}:::decision N_ExtractStationInformation_Node0_action["Station information is extracted
from the table segment for use in
subsequent processing"]:::main N_ExtractStationInformation_Node0 -- Yes --> N_ExtractStationInformation_Node0_action N_ExtractStationInformation_Node0_action --> E_ExtractStationInformation S_ExtractStationInformation --> N_ExtractStationInformation_Node0 N_ExtractStationInformation_Node0 -- No --> E_ExtractStationInformation
File: GCCUSIO.cbl
GIVEN:
A table lookup operation returned successfully with return flag '0'
WHEN:
The system processes the retrieved table data
THEN:
Station information is extracted from the table segment for use in subsequent processing
β Consolidated Acceptance Criteria
- The system prepares to process the station data → the table segment is moved to the MC segment working storage area 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_MoveTableSegmenttoWorkingStorage(["Start Step"])
E_MoveTableSegmenttoWorkingStorage(["End Step"])
N_MoveTableSegmenttoWorkingStorage_Node0{"The system prepares to process the
station data"}:::decision N_MoveTableSegmenttoWorkingStorage_Node0_action["The table segment is moved to the
MC segment working storage area for
further processing"]:::main N_MoveTableSegmenttoWorkingStorage_Node0 -- Yes --> N_MoveTableSegmenttoWorkingStorage_Node0_action N_MoveTableSegmenttoWorkingStorage_Node0_action --> E_MoveTableSegmenttoWorkingStorage S_MoveTableSegmenttoWorkingStorage --> N_MoveTableSegmenttoWorkingStorage_Node0 N_MoveTableSegmenttoWorkingStorage_Node0 -- No --> E_MoveTableSegmenttoWorkingStorage
station data"}:::decision N_MoveTableSegmenttoWorkingStorage_Node0_action["The table segment is moved to the
MC segment working storage area for
further processing"]:::main N_MoveTableSegmenttoWorkingStorage_Node0 -- Yes --> N_MoveTableSegmenttoWorkingStorage_Node0_action N_MoveTableSegmenttoWorkingStorage_Node0_action --> E_MoveTableSegmenttoWorkingStorage S_MoveTableSegmenttoWorkingStorage --> N_MoveTableSegmenttoWorkingStorage_Node0 N_MoveTableSegmenttoWorkingStorage_Node0 -- No --> E_MoveTableSegmenttoWorkingStorage
File: GCCUSIO.cbl
GIVEN:
Table data has been successfully retrieved and station information extracted
WHEN:
The system prepares to process the station data
THEN:
The table segment is moved to the MC segment working storage area for further processing
β Consolidated Acceptance Criteria
- The system prepares to search for station information → the location ID is used as the sequence ID search key for the MC table 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_SetStationSequenceIDfromLocation(["Start Step"])
E_SetStationSequenceIDfromLocation(["End Step"])
N_SetStationSequenceIDfromLocation_Node0{"The system prepares to search for
station information"}:::decision N_SetStationSequenceIDfromLocation_Node0_action["The location ID is used as the
sequence ID search key for the MC
table lookup"]:::main N_SetStationSequenceIDfromLocation_Node0 -- Yes --> N_SetStationSequenceIDfromLocation_Node0_action N_SetStationSequenceIDfromLocation_Node0_action --> E_SetStationSequenceIDfromLocation S_SetStationSequenceIDfromLocation --> N_SetStationSequenceIDfromLocation_Node0 N_SetStationSequenceIDfromLocation_Node0 -- No --> E_SetStationSequenceIDfromLocation
station information"}:::decision N_SetStationSequenceIDfromLocation_Node0_action["The location ID is used as the
sequence ID search key for the MC
table lookup"]:::main N_SetStationSequenceIDfromLocation_Node0 -- Yes --> N_SetStationSequenceIDfromLocation_Node0_action N_SetStationSequenceIDfromLocation_Node0_action --> E_SetStationSequenceIDfromLocation S_SetStationSequenceIDfromLocation --> N_SetStationSequenceIDfromLocation_Node0 N_SetStationSequenceIDfromLocation_Node0 -- No --> E_SetStationSequenceIDfromLocation
File: GCCUSIO.cbl
GIVEN:
Cargo location ID is available from the cargo record
WHEN:
The system prepares to search for station information
THEN:
The location ID is used as the sequence ID search key for the MC table lookup
β Consolidated Acceptance Criteria
- The system processes the retrieved station data → the station number is extracted from the MC segment for use in border location 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_ExtractStationNumberfromMCSegment(["Start Step"])
E_ExtractStationNumberfromMCSegment(["End Step"])
N_ExtractStationNumberfromMCSegment_Node0{"The system processes the retrieved
station data"}:::decision N_ExtractStationNumberfromMCSegment_Node0_action["The station number is extracted
from the MC segment for use in
border location processing"]:::main N_ExtractStationNumberfromMCSegment_Node0 -- Yes --> N_ExtractStationNumberfromMCSegment_Node0_action N_ExtractStationNumberfromMCSegment_Node0_action --> E_ExtractStationNumberfromMCSegment S_ExtractStationNumberfromMCSegment --> N_ExtractStationNumberfromMCSegment_Node0 N_ExtractStationNumberfromMCSegment_Node0 -- No --> E_ExtractStationNumberfromMCSegment
station data"}:::decision N_ExtractStationNumberfromMCSegment_Node0_action["The station number is extracted
from the MC segment for use in
border location processing"]:::main N_ExtractStationNumberfromMCSegment_Node0 -- Yes --> N_ExtractStationNumberfromMCSegment_Node0_action N_ExtractStationNumberfromMCSegment_Node0_action --> E_ExtractStationNumberfromMCSegment S_ExtractStationNumberfromMCSegment --> N_ExtractStationNumberfromMCSegment_Node0 N_ExtractStationNumberfromMCSegment_Node0 -- No --> E_ExtractStationNumberfromMCSegment
File: GCCUSIO.cbl
GIVEN:
Station information was successfully found in MC table
WHEN:
The system processes the retrieved station data
THEN:
The station number is extracted from the MC segment for use in border location processing
β Consolidated Acceptance Criteria
- The system needs to extract N9 reference numbers for notification processing → the system builds a secondary record key using the CCN, record type '02', and sequence '0001'
- The system needs to retrieve N9 reference segments from secondary cargo data → the system builds a composite key using the CCN, record type '02', and sequence '0001'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildSecondaryKeywithCCNRecordType02Sequence0001(["Start Step"])
E_BuildSecondaryKeywithCCNRecordType02Sequence0001(["End Step"])
N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0{"The system needs to extract N9
reference numbers for notification
processing"}:::decision N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0_action["The system builds a secondary
record key using the CCN, record
type 02 , and sequence 0001"]:::main N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0 -- Yes --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0_action N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0_action --> E_BuildSecondaryKeywithCCNRecordType02Sequence0001 S_BuildSecondaryKeywithCCNRecordType02Sequence0001 --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0 N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1{"The system needs to retrieve N9
reference segments from secondary
cargo data"}:::decision N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1_action["The system builds a composite key
using the CCN, record type 02 , and
sequence 0001"]:::main N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1 -- Yes --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1_action N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1_action --> E_BuildSecondaryKeywithCCNRecordType02Sequence0001 N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0 -- No --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1 N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1 -- No --> E_BuildSecondaryKeywithCCNRecordType02Sequence0001
reference numbers for notification
processing"}:::decision N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0_action["The system builds a secondary
record key using the CCN, record
type 02 , and sequence 0001"]:::main N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0 -- Yes --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0_action N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0_action --> E_BuildSecondaryKeywithCCNRecordType02Sequence0001 S_BuildSecondaryKeywithCCNRecordType02Sequence0001 --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0 N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1{"The system needs to retrieve N9
reference segments from secondary
cargo data"}:::decision N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1_action["The system builds a composite key
using the CCN, record type 02 , and
sequence 0001"]:::main N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1 -- Yes --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1_action N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1_action --> E_BuildSecondaryKeywithCCNRecordType02Sequence0001 N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node0 -- No --> N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1 N_BuildSecondaryKeywithCCNRecordType02Sequence0001_Node1 -- No --> E_BuildSecondaryKeywithCCNRecordType02Sequence0001
File: GCCUSIO.cbl
GIVEN:
A cargo control number (CCN) exists in the primary cargo record
WHEN:
The system needs to extract N9 reference numbers for notification processing
THEN:
The system builds a secondary record key using the CCN, record type '02', and sequence '0001'
File: GCCUSIO.cbl
GIVEN:
A cargo control number (CCN) exists in the primary cargo record
WHEN:
The system needs to retrieve N9 reference segments from secondary cargo data
THEN:
The system builds a composite key using the CCN, record type '02', and sequence '0001'
β Consolidated Acceptance Criteria
- The system executes a database retrieval operation for the secondary cargo record → the system retrieves the GCSUSS02 record if it exists in the database
- The system executes the retrieval operation for N9 reference data → the system attempts to read the GCSUSS02 secondary cargo record using the qualified 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_RetrieveSecondaryCargoRecordGCSUSS02(["Start Step"])
E_RetrieveSecondaryCargoRecordGCSUSS02(["End Step"])
N_RetrieveSecondaryCargoRecordGCSUSS02_Node0{"The system executes a database
retrieval operation for the
secondary cargo record"}:::decision N_RetrieveSecondaryCargoRecordGCSUSS02_Node0_action["The system retrieves the GCSUSS02
record if it exists in the database"]:::main N_RetrieveSecondaryCargoRecordGCSUSS02_Node0 -- Yes --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node0_action N_RetrieveSecondaryCargoRecordGCSUSS02_Node0_action --> E_RetrieveSecondaryCargoRecordGCSUSS02 S_RetrieveSecondaryCargoRecordGCSUSS02 --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node0 N_RetrieveSecondaryCargoRecordGCSUSS02_Node1{"The system executes the retrieval
operation for N9 reference data"}:::decision N_RetrieveSecondaryCargoRecordGCSUSS02_Node1_action["The system attempts to read the
GCSUSS02 secondary cargo record
using the qualified key"]:::main N_RetrieveSecondaryCargoRecordGCSUSS02_Node1 -- Yes --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node1_action N_RetrieveSecondaryCargoRecordGCSUSS02_Node1_action --> E_RetrieveSecondaryCargoRecordGCSUSS02 N_RetrieveSecondaryCargoRecordGCSUSS02_Node0 -- No --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node1 N_RetrieveSecondaryCargoRecordGCSUSS02_Node1 -- No --> E_RetrieveSecondaryCargoRecordGCSUSS02
retrieval operation for the
secondary cargo record"}:::decision N_RetrieveSecondaryCargoRecordGCSUSS02_Node0_action["The system retrieves the GCSUSS02
record if it exists in the database"]:::main N_RetrieveSecondaryCargoRecordGCSUSS02_Node0 -- Yes --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node0_action N_RetrieveSecondaryCargoRecordGCSUSS02_Node0_action --> E_RetrieveSecondaryCargoRecordGCSUSS02 S_RetrieveSecondaryCargoRecordGCSUSS02 --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node0 N_RetrieveSecondaryCargoRecordGCSUSS02_Node1{"The system executes the retrieval
operation for N9 reference data"}:::decision N_RetrieveSecondaryCargoRecordGCSUSS02_Node1_action["The system attempts to read the
GCSUSS02 secondary cargo record
using the qualified key"]:::main N_RetrieveSecondaryCargoRecordGCSUSS02_Node1 -- Yes --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node1_action N_RetrieveSecondaryCargoRecordGCSUSS02_Node1_action --> E_RetrieveSecondaryCargoRecordGCSUSS02 N_RetrieveSecondaryCargoRecordGCSUSS02_Node0 -- No --> N_RetrieveSecondaryCargoRecordGCSUSS02_Node1 N_RetrieveSecondaryCargoRecordGCSUSS02_Node1 -- No --> E_RetrieveSecondaryCargoRecordGCSUSS02
File: GCCUSIO.cbl
GIVEN:
A secondary record key has been constructed with CCN, record type '02', and sequence '0001'
WHEN:
The system executes a database retrieval operation for the secondary cargo record
THEN:
The system retrieves the GCSUSS02 record if it exists in the database
File: GCCUSIO.cbl
GIVEN:
A complete secondary cargo key has been built with CCN, record type '02', and sequence '0001'
WHEN:
The system executes the retrieval operation for N9 reference data
THEN:
The system attempts to read the GCSUSS02 secondary cargo record using the qualified key
β Consolidated Acceptance Criteria
- The system begins processing reference number fields → the system initializes the reference counter to zero to start 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_InitializeReferenceCountertoZero(["Start Step"])
E_InitializeReferenceCountertoZero(["End Step"])
N_InitializeReferenceCountertoZero_Node0{"The system begins processing
reference number fields"}:::decision N_InitializeReferenceCountertoZero_Node0_action["The system initializes the
reference counter to zero to start
sequential processing"]:::main N_InitializeReferenceCountertoZero_Node0 -- Yes --> N_InitializeReferenceCountertoZero_Node0_action N_InitializeReferenceCountertoZero_Node0_action --> E_InitializeReferenceCountertoZero S_InitializeReferenceCountertoZero --> N_InitializeReferenceCountertoZero_Node0 N_InitializeReferenceCountertoZero_Node0 -- No --> E_InitializeReferenceCountertoZero
reference number fields"}:::decision N_InitializeReferenceCountertoZero_Node0_action["The system initializes the
reference counter to zero to start
sequential processing"]:::main N_InitializeReferenceCountertoZero_Node0 -- Yes --> N_InitializeReferenceCountertoZero_Node0_action N_InitializeReferenceCountertoZero_Node0_action --> E_InitializeReferenceCountertoZero S_InitializeReferenceCountertoZero --> N_InitializeReferenceCountertoZero_Node0 N_InitializeReferenceCountertoZero_Node0 -- No --> E_InitializeReferenceCountertoZero
File: GCCUSIO.cbl
GIVEN:
A secondary cargo record with N9 reference data has been successfully retrieved
WHEN:
The system begins processing reference number fields
THEN:
The system initializes the reference counter to zero to start sequential processing
β Consolidated Acceptance Criteria
- The system processes reference number positions sequentially → the system examines each of the 20 possible reference number positions for qualifying 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_LoopThrough20ReferenceNumberPositions(["Start Step"])
E_LoopThrough20ReferenceNumberPositions(["End Step"])
N_LoopThrough20ReferenceNumberPositions_Node0{"The system processes reference
number positions sequentially"}:::decision N_LoopThrough20ReferenceNumberPositions_Node0_action["The system examines each of the 20
possible reference number positions
for qualifying data"]:::main N_LoopThrough20ReferenceNumberPositions_Node0 -- Yes --> N_LoopThrough20ReferenceNumberPositions_Node0_action N_LoopThrough20ReferenceNumberPositions_Node0_action --> E_LoopThrough20ReferenceNumberPositions S_LoopThrough20ReferenceNumberPositions --> N_LoopThrough20ReferenceNumberPositions_Node0 N_LoopThrough20ReferenceNumberPositions_Node0 -- No --> E_LoopThrough20ReferenceNumberPositions
number positions sequentially"}:::decision N_LoopThrough20ReferenceNumberPositions_Node0_action["The system examines each of the 20
possible reference number positions
for qualifying data"]:::main N_LoopThrough20ReferenceNumberPositions_Node0 -- Yes --> N_LoopThrough20ReferenceNumberPositions_Node0_action N_LoopThrough20ReferenceNumberPositions_Node0_action --> E_LoopThrough20ReferenceNumberPositions S_LoopThrough20ReferenceNumberPositions --> N_LoopThrough20ReferenceNumberPositions_Node0 N_LoopThrough20ReferenceNumberPositions_Node0 -- No --> E_LoopThrough20ReferenceNumberPositions
File: GCCUSIO.cbl
GIVEN:
N9 reference data exists in the secondary cargo record and counter is initialized
WHEN:
The system processes reference number positions sequentially
THEN:
The system examines each of the 20 possible reference number positions for qualifying data
β Consolidated Acceptance Criteria
- The reference qualifier field is evaluated → the system identifies positions where the qualifier equals 'CN' for shipment ID extraction
- Examining the reference number qualifier in the current segment → the system checks if the qualifier equals 'CN' to identify shipment ID data
- A reference entry has qualifier 'CN' → the system extracts the corresponding reference number and stores it as the shipment ID for Iron Highway 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_ReferenceQualifierCN(["Start Step"])
E_ReferenceQualifierCN(["End Step"])
N_ReferenceQualifierCN_Node0{"The reference qualifier field is
evaluated"}:::decision N_ReferenceQualifierCN_Node0_action["The system identifies positions
where the qualifier equals CN for
shipment ID extraction"]:::main N_ReferenceQualifierCN_Node0 -- Yes --> N_ReferenceQualifierCN_Node0_action N_ReferenceQualifierCN_Node0_action --> E_ReferenceQualifierCN S_ReferenceQualifierCN --> N_ReferenceQualifierCN_Node0 N_ReferenceQualifierCN_Node1{"Examining the reference number
qualifier in the current segment"}:::decision N_ReferenceQualifierCN_Node1_action["The system checks if the qualifier
equals CN to identify shipment ID
data"]:::main N_ReferenceQualifierCN_Node1 -- Yes --> N_ReferenceQualifierCN_Node1_action N_ReferenceQualifierCN_Node1_action --> E_ReferenceQualifierCN N_ReferenceQualifierCN_Node0 -- No --> N_ReferenceQualifierCN_Node1 N_ReferenceQualifierCN_Node2{"A reference entry has qualifier CN"}:::decision N_ReferenceQualifierCN_Node2_action["The system extracts the
corresponding reference number and
stores it as the shipment ID for
Iron Highway notification"]:::main N_ReferenceQualifierCN_Node2 -- Yes --> N_ReferenceQualifierCN_Node2_action N_ReferenceQualifierCN_Node2_action --> E_ReferenceQualifierCN N_ReferenceQualifierCN_Node1 -- No --> N_ReferenceQualifierCN_Node2 N_ReferenceQualifierCN_Node2 -- No --> E_ReferenceQualifierCN
evaluated"}:::decision N_ReferenceQualifierCN_Node0_action["The system identifies positions
where the qualifier equals CN for
shipment ID extraction"]:::main N_ReferenceQualifierCN_Node0 -- Yes --> N_ReferenceQualifierCN_Node0_action N_ReferenceQualifierCN_Node0_action --> E_ReferenceQualifierCN S_ReferenceQualifierCN --> N_ReferenceQualifierCN_Node0 N_ReferenceQualifierCN_Node1{"Examining the reference number
qualifier in the current segment"}:::decision N_ReferenceQualifierCN_Node1_action["The system checks if the qualifier
equals CN to identify shipment ID
data"]:::main N_ReferenceQualifierCN_Node1 -- Yes --> N_ReferenceQualifierCN_Node1_action N_ReferenceQualifierCN_Node1_action --> E_ReferenceQualifierCN N_ReferenceQualifierCN_Node0 -- No --> N_ReferenceQualifierCN_Node1 N_ReferenceQualifierCN_Node2{"A reference entry has qualifier CN"}:::decision N_ReferenceQualifierCN_Node2_action["The system extracts the
corresponding reference number and
stores it as the shipment ID for
Iron Highway notification"]:::main N_ReferenceQualifierCN_Node2 -- Yes --> N_ReferenceQualifierCN_Node2_action N_ReferenceQualifierCN_Node2_action --> E_ReferenceQualifierCN N_ReferenceQualifierCN_Node1 -- No --> N_ReferenceQualifierCN_Node2 N_ReferenceQualifierCN_Node2 -- No --> E_ReferenceQualifierCN
File: GCCUSIO.cbl
GIVEN:
The system is examining a specific reference number position in the N9 data
WHEN:
The reference qualifier field is evaluated
THEN:
The system identifies positions where the qualifier equals 'CN' for shipment ID extraction
File: GCCUSIO.cbl
GIVEN:
The system is processing an N9 reference segment
WHEN:
Examining the reference number qualifier in the current segment
THEN:
The system checks if the qualifier equals 'CN' to identify shipment ID data
File: GCCUSIO.cbl
GIVEN:
N9 reference number entries are being processed
WHEN:
A reference entry has qualifier 'CN'
THEN:
- The system extracts the corresponding reference number
- Stores it as the shipment id for iron highway notification
β Consolidated Acceptance Criteria
- The system processes this qualified reference position → the system extracts the corresponding reference number value and assigns it as the shipment ID
- The system processes this qualified reference entry → the system moves the N9 reference number value to the shipment ID field for notification 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_ExtractReferenceNumberasShipmentID(["Start Step"])
E_ExtractReferenceNumberasShipmentID(["End Step"])
N_ExtractReferenceNumberasShipmentID_Node0{"The system processes this qualified
reference position"}:::decision N_ExtractReferenceNumberasShipmentID_Node0_action["The system extracts the
corresponding reference number value
and assigns it as the shipment ID"]:::main N_ExtractReferenceNumberasShipmentID_Node0 -- Yes --> N_ExtractReferenceNumberasShipmentID_Node0_action N_ExtractReferenceNumberasShipmentID_Node0_action --> E_ExtractReferenceNumberasShipmentID S_ExtractReferenceNumberasShipmentID --> N_ExtractReferenceNumberasShipmentID_Node0 N_ExtractReferenceNumberasShipmentID_Node1{"The system processes this qualified
reference entry"}:::decision N_ExtractReferenceNumberasShipmentID_Node1_action["The system moves the N9 reference
number value to the shipment ID
field for notification purposes"]:::main N_ExtractReferenceNumberasShipmentID_Node1 -- Yes --> N_ExtractReferenceNumberasShipmentID_Node1_action N_ExtractReferenceNumberasShipmentID_Node1_action --> E_ExtractReferenceNumberasShipmentID N_ExtractReferenceNumberasShipmentID_Node0 -- No --> N_ExtractReferenceNumberasShipmentID_Node1 N_ExtractReferenceNumberasShipmentID_Node1 -- No --> E_ExtractReferenceNumberasShipmentID
reference position"}:::decision N_ExtractReferenceNumberasShipmentID_Node0_action["The system extracts the
corresponding reference number value
and assigns it as the shipment ID"]:::main N_ExtractReferenceNumberasShipmentID_Node0 -- Yes --> N_ExtractReferenceNumberasShipmentID_Node0_action N_ExtractReferenceNumberasShipmentID_Node0_action --> E_ExtractReferenceNumberasShipmentID S_ExtractReferenceNumberasShipmentID --> N_ExtractReferenceNumberasShipmentID_Node0 N_ExtractReferenceNumberasShipmentID_Node1{"The system processes this qualified
reference entry"}:::decision N_ExtractReferenceNumberasShipmentID_Node1_action["The system moves the N9 reference
number value to the shipment ID
field for notification purposes"]:::main N_ExtractReferenceNumberasShipmentID_Node1 -- Yes --> N_ExtractReferenceNumberasShipmentID_Node1_action N_ExtractReferenceNumberasShipmentID_Node1_action --> E_ExtractReferenceNumberasShipmentID N_ExtractReferenceNumberasShipmentID_Node0 -- No --> N_ExtractReferenceNumberasShipmentID_Node1 N_ExtractReferenceNumberasShipmentID_Node1 -- No --> E_ExtractReferenceNumberasShipmentID
File: GCCUSIO.cbl
GIVEN:
A reference number position contains the qualifier 'CN'
WHEN:
The system processes this qualified reference position
THEN:
- The system extracts the corresponding reference number value
- Assigns it as the shipment id
File: GCCUSIO.cbl
GIVEN:
An N9 reference entry has qualifier 'CN' indicating shipment ID
WHEN:
The system processes this qualified reference entry
THEN:
The system moves the N9 reference number value to the shipment ID field for notification purposes
β Consolidated Acceptance Criteria
- If the current position count against the total available positions → the system continues processing if more positions exist, otherwise completes the N9 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_MorePositionstoCheck(["Start Step"])
E_MorePositionstoCheck(["End Step"])
N_MorePositionstoCheck_Node0{"The system evaluates the current
position count against the total
available positions"}:::decision N_MorePositionstoCheck_Node0_action["The system continues processing if
more positions exist, otherwise
completes the N9 extraction"]:::main N_MorePositionstoCheck_Node0 -- Yes --> N_MorePositionstoCheck_Node0_action N_MorePositionstoCheck_Node0_action --> E_MorePositionstoCheck S_MorePositionstoCheck --> N_MorePositionstoCheck_Node0 N_MorePositionstoCheck_Node0 -- No --> E_MorePositionstoCheck
position count against the total
available positions"}:::decision N_MorePositionstoCheck_Node0_action["The system continues processing if
more positions exist, otherwise
completes the N9 extraction"]:::main N_MorePositionstoCheck_Node0 -- Yes --> N_MorePositionstoCheck_Node0_action N_MorePositionstoCheck_Node0_action --> E_MorePositionstoCheck S_MorePositionstoCheck --> N_MorePositionstoCheck_Node0 N_MorePositionstoCheck_Node0 -- No --> E_MorePositionstoCheck
File: GCCUSIO.cbl
GIVEN:
The system has processed a reference number position
WHEN:
The system evaluates the current position count against the total available positions
THEN:
The system continues processing if more positions exist, otherwise completes the N9 extraction
β Consolidated Acceptance Criteria
- The system advances the processing sequence → the system increments the position counter and moves to examine the next reference number 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_MovetoNextReferencePosition(["Start Step"])
E_MovetoNextReferencePosition(["End Step"])
N_MovetoNextReferencePosition_Node0{"The system advances the processing
sequence"}:::decision N_MovetoNextReferencePosition_Node0_action["The system increments the position
counter and moves to examine the
next reference number field"]:::main N_MovetoNextReferencePosition_Node0 -- Yes --> N_MovetoNextReferencePosition_Node0_action N_MovetoNextReferencePosition_Node0_action --> E_MovetoNextReferencePosition S_MovetoNextReferencePosition --> N_MovetoNextReferencePosition_Node0 N_MovetoNextReferencePosition_Node0 -- No --> E_MovetoNextReferencePosition
sequence"}:::decision N_MovetoNextReferencePosition_Node0_action["The system increments the position
counter and moves to examine the
next reference number field"]:::main N_MovetoNextReferencePosition_Node0 -- Yes --> N_MovetoNextReferencePosition_Node0_action N_MovetoNextReferencePosition_Node0_action --> E_MovetoNextReferencePosition S_MovetoNextReferencePosition --> N_MovetoNextReferencePosition_Node0 N_MovetoNextReferencePosition_Node0 -- No --> E_MovetoNextReferencePosition
File: GCCUSIO.cbl
GIVEN:
Additional reference number positions remain to be processed
WHEN:
The system advances the processing sequence
THEN:
- The system increments the position counter
- Moves to examine the next reference number field
β Consolidated Acceptance Criteria
- The system needs to retrieve N9 reference data for shipment identification → the system builds a secondary key using the CCN key, record type '02', and sequence '0001'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCompleteSecondaryKey(["Start Step"])
E_BuildCompleteSecondaryKey(["End Step"])
N_BuildCompleteSecondaryKey_Node0{"The system needs to retrieve N9
reference data for shipment
identification"}:::decision N_BuildCompleteSecondaryKey_Node0_action["The system builds a secondary key
using the CCN key, record type 02 ,
and sequence 0001"]:::main N_BuildCompleteSecondaryKey_Node0 -- Yes --> N_BuildCompleteSecondaryKey_Node0_action N_BuildCompleteSecondaryKey_Node0_action --> E_BuildCompleteSecondaryKey S_BuildCompleteSecondaryKey --> N_BuildCompleteSecondaryKey_Node0 N_BuildCompleteSecondaryKey_Node0 -- No --> E_BuildCompleteSecondaryKey
reference data for shipment
identification"}:::decision N_BuildCompleteSecondaryKey_Node0_action["The system builds a secondary key
using the CCN key, record type 02 ,
and sequence 0001"]:::main N_BuildCompleteSecondaryKey_Node0 -- Yes --> N_BuildCompleteSecondaryKey_Node0_action N_BuildCompleteSecondaryKey_Node0_action --> E_BuildCompleteSecondaryKey S_BuildCompleteSecondaryKey --> N_BuildCompleteSecondaryKey_Node0 N_BuildCompleteSecondaryKey_Node0 -- No --> E_BuildCompleteSecondaryKey
File: GCCUSIO.cbl
GIVEN:
A cargo record with a valid CCN key exists
WHEN:
The system needs to retrieve N9 reference data for shipment identification
THEN:
The system builds a secondary key using the CCN key, record type '02', and sequence '0001'
β Consolidated Acceptance Criteria
- The system executes a database call to retrieve N9 reference data → the system retrieves the N9 reference data from the GCSA2RT secondary cargo 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_RetrieveN9ReferenceData(["Start Step"])
E_RetrieveN9ReferenceData(["End Step"])
N_RetrieveN9ReferenceData_Node0{"The system executes a database call
to retrieve N9 reference data"}:::decision N_RetrieveN9ReferenceData_Node0_action["The system retrieves the N9
reference data from the GCSA2RT
secondary cargo segment"]:::main N_RetrieveN9ReferenceData_Node0 -- Yes --> N_RetrieveN9ReferenceData_Node0_action N_RetrieveN9ReferenceData_Node0_action --> E_RetrieveN9ReferenceData S_RetrieveN9ReferenceData --> N_RetrieveN9ReferenceData_Node0 N_RetrieveN9ReferenceData_Node0 -- No --> E_RetrieveN9ReferenceData
to retrieve N9 reference data"}:::decision N_RetrieveN9ReferenceData_Node0_action["The system retrieves the N9
reference data from the GCSA2RT
secondary cargo segment"]:::main N_RetrieveN9ReferenceData_Node0 -- Yes --> N_RetrieveN9ReferenceData_Node0_action N_RetrieveN9ReferenceData_Node0_action --> E_RetrieveN9ReferenceData S_RetrieveN9ReferenceData --> N_RetrieveN9ReferenceData_Node0 N_RetrieveN9ReferenceData_Node0 -- No --> E_RetrieveN9ReferenceData
File: GCCUSIO.cbl
GIVEN:
A complete secondary key has been built with CCN, record type '02', and sequence '0001'
WHEN:
The system executes a database call to retrieve N9 reference data
THEN:
The system retrieves the N9 reference data from the GCSA2RT secondary cargo segment
β Consolidated Acceptance Criteria
- The system processes the N9 reference numbers → the system initializes a counter to zero and loops through up to 20 N9 reference number 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_LoopThrough20N9Records(["Start Step"])
E_LoopThrough20N9Records(["End Step"])
N_LoopThrough20N9Records_Node0{"The system processes the N9
reference numbers"}:::decision N_LoopThrough20N9Records_Node0_action["The system initializes a counter to
zero and loops through up to 20 N9
reference number records"]:::main N_LoopThrough20N9Records_Node0 -- Yes --> N_LoopThrough20N9Records_Node0_action N_LoopThrough20N9Records_Node0_action --> E_LoopThrough20N9Records S_LoopThrough20N9Records --> N_LoopThrough20N9Records_Node0 N_LoopThrough20N9Records_Node0 -- No --> E_LoopThrough20N9Records
reference numbers"}:::decision N_LoopThrough20N9Records_Node0_action["The system initializes a counter to
zero and loops through up to 20 N9
reference number records"]:::main N_LoopThrough20N9Records_Node0 -- Yes --> N_LoopThrough20N9Records_Node0_action N_LoopThrough20N9Records_Node0_action --> E_LoopThrough20N9Records S_LoopThrough20N9Records --> N_LoopThrough20N9Records_Node0 N_LoopThrough20N9Records_Node0 -- No --> E_LoopThrough20N9Records
File: GCCUSIO.cbl
GIVEN:
N9 reference data has been successfully retrieved from the database
WHEN:
The system processes the N9 reference numbers
THEN:
- The system initializes a counter to zero
- Loops through up to 20 n9 reference number records
β Consolidated Acceptance Criteria
- A reference number qualifier equals 'CN' → the system extracts the corresponding reference number as the shipment ID
- Processing the reference number field of the segment → the system extracts the reference number value as the shipment ID
- The system processes the reference number field → the system extracts the reference number value as the shipment identification 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_ExtractShipmentIDfromReferenceNumber(["Start Step"])
E_ExtractShipmentIDfromReferenceNumber(["End Step"])
N_ExtractShipmentIDfromReferenceNumber_Node0{"A reference number qualifier equals
CN"}:::decision N_ExtractShipmentIDfromReferenceNumber_Node0_action["The system extracts the
corresponding reference number as
the shipment ID"]:::main N_ExtractShipmentIDfromReferenceNumber_Node0 -- Yes --> N_ExtractShipmentIDfromReferenceNumber_Node0_action N_ExtractShipmentIDfromReferenceNumber_Node0_action --> E_ExtractShipmentIDfromReferenceNumber S_ExtractShipmentIDfromReferenceNumber --> N_ExtractShipmentIDfromReferenceNumber_Node0 N_ExtractShipmentIDfromReferenceNumber_Node1{"Processing the reference number
field of the segment"}:::decision N_ExtractShipmentIDfromReferenceNumber_Node1_action["The system extracts the reference
number value as the shipment ID"]:::main N_ExtractShipmentIDfromReferenceNumber_Node1 -- Yes --> N_ExtractShipmentIDfromReferenceNumber_Node1_action N_ExtractShipmentIDfromReferenceNumber_Node1_action --> E_ExtractShipmentIDfromReferenceNumber N_ExtractShipmentIDfromReferenceNumber_Node0 -- No --> N_ExtractShipmentIDfromReferenceNumber_Node1 N_ExtractShipmentIDfromReferenceNumber_Node2{"The system processes the reference
number field"}:::decision N_ExtractShipmentIDfromReferenceNumber_Node2_action["The system extracts the reference
number value as the shipment
identification number"]:::main N_ExtractShipmentIDfromReferenceNumber_Node2 -- Yes --> N_ExtractShipmentIDfromReferenceNumber_Node2_action N_ExtractShipmentIDfromReferenceNumber_Node2_action --> E_ExtractShipmentIDfromReferenceNumber N_ExtractShipmentIDfromReferenceNumber_Node1 -- No --> N_ExtractShipmentIDfromReferenceNumber_Node2 N_ExtractShipmentIDfromReferenceNumber_Node2 -- No --> E_ExtractShipmentIDfromReferenceNumber
CN"}:::decision N_ExtractShipmentIDfromReferenceNumber_Node0_action["The system extracts the
corresponding reference number as
the shipment ID"]:::main N_ExtractShipmentIDfromReferenceNumber_Node0 -- Yes --> N_ExtractShipmentIDfromReferenceNumber_Node0_action N_ExtractShipmentIDfromReferenceNumber_Node0_action --> E_ExtractShipmentIDfromReferenceNumber S_ExtractShipmentIDfromReferenceNumber --> N_ExtractShipmentIDfromReferenceNumber_Node0 N_ExtractShipmentIDfromReferenceNumber_Node1{"Processing the reference number
field of the segment"}:::decision N_ExtractShipmentIDfromReferenceNumber_Node1_action["The system extracts the reference
number value as the shipment ID"]:::main N_ExtractShipmentIDfromReferenceNumber_Node1 -- Yes --> N_ExtractShipmentIDfromReferenceNumber_Node1_action N_ExtractShipmentIDfromReferenceNumber_Node1_action --> E_ExtractShipmentIDfromReferenceNumber N_ExtractShipmentIDfromReferenceNumber_Node0 -- No --> N_ExtractShipmentIDfromReferenceNumber_Node1 N_ExtractShipmentIDfromReferenceNumber_Node2{"The system processes the reference
number field"}:::decision N_ExtractShipmentIDfromReferenceNumber_Node2_action["The system extracts the reference
number value as the shipment
identification number"]:::main N_ExtractShipmentIDfromReferenceNumber_Node2 -- Yes --> N_ExtractShipmentIDfromReferenceNumber_Node2_action N_ExtractShipmentIDfromReferenceNumber_Node2_action --> E_ExtractShipmentIDfromReferenceNumber N_ExtractShipmentIDfromReferenceNumber_Node1 -- No --> N_ExtractShipmentIDfromReferenceNumber_Node2 N_ExtractShipmentIDfromReferenceNumber_Node2 -- No --> E_ExtractShipmentIDfromReferenceNumber
File: GCCUSIO.cbl
GIVEN:
The system is processing N9 reference number records
WHEN:
A reference number qualifier equals 'CN'
THEN:
The system extracts the corresponding reference number as the shipment ID
File: GCCUSIO.cbl
GIVEN:
An N9 reference segment has qualifier 'CN' indicating shipment ID data
WHEN:
Processing the reference number field of the segment
THEN:
The system extracts the reference number value as the shipment ID
File: GCCUSIO.cbl
GIVEN:
An N9 reference entry has qualifier 'CN'
WHEN:
The system processes the reference number field
THEN:
The system extracts the reference number value as the shipment identification number
β Consolidated Acceptance Criteria
- No N9 reference data is found in the database → the system continues processing without shipment ID 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_NoN9DataAvailable(["Start Step"])
E_NoN9DataAvailable(["End Step"])
N_NoN9DataAvailable_Node0{"No N9 reference data is found in
the database"}:::decision N_NoN9DataAvailable_Node0_action["The system continues processing
without shipment ID information"]:::main N_NoN9DataAvailable_Node0 -- Yes --> N_NoN9DataAvailable_Node0_action N_NoN9DataAvailable_Node0_action --> E_NoN9DataAvailable S_NoN9DataAvailable --> N_NoN9DataAvailable_Node0 N_NoN9DataAvailable_Node0 -- No --> E_NoN9DataAvailable
the database"}:::decision N_NoN9DataAvailable_Node0_action["The system continues processing
without shipment ID information"]:::main N_NoN9DataAvailable_Node0 -- Yes --> N_NoN9DataAvailable_Node0_action N_NoN9DataAvailable_Node0_action --> E_NoN9DataAvailable S_NoN9DataAvailable --> N_NoN9DataAvailable_Node0 N_NoN9DataAvailable_Node0 -- No --> E_NoN9DataAvailable
File: GCCUSIO.cbl
GIVEN:
The system attempts to retrieve N9 reference data using the secondary key
WHEN:
No N9 reference data is found in the database
THEN:
The system continues processing without shipment ID information
β Consolidated Acceptance Criteria
- The system needs to retrieve N9 reference data for Iron Highway notification → the system builds a secondary cargo key using the CCN from the primary 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_BuildSecondaryCargoKeywithCCN(["Start Step"])
E_BuildSecondaryCargoKeywithCCN(["End Step"])
N_BuildSecondaryCargoKeywithCCN_Node0{"The system needs to retrieve N9
reference data for Iron Highway
notification"}:::decision N_BuildSecondaryCargoKeywithCCN_Node0_action["The system builds a secondary cargo
key using the CCN from the primary
record"]:::main N_BuildSecondaryCargoKeywithCCN_Node0 -- Yes --> N_BuildSecondaryCargoKeywithCCN_Node0_action N_BuildSecondaryCargoKeywithCCN_Node0_action --> E_BuildSecondaryCargoKeywithCCN S_BuildSecondaryCargoKeywithCCN --> N_BuildSecondaryCargoKeywithCCN_Node0 N_BuildSecondaryCargoKeywithCCN_Node0 -- No --> E_BuildSecondaryCargoKeywithCCN
reference data for Iron Highway
notification"}:::decision N_BuildSecondaryCargoKeywithCCN_Node0_action["The system builds a secondary cargo
key using the CCN from the primary
record"]:::main N_BuildSecondaryCargoKeywithCCN_Node0 -- Yes --> N_BuildSecondaryCargoKeywithCCN_Node0_action N_BuildSecondaryCargoKeywithCCN_Node0_action --> E_BuildSecondaryCargoKeywithCCN S_BuildSecondaryCargoKeywithCCN --> N_BuildSecondaryCargoKeywithCCN_Node0 N_BuildSecondaryCargoKeywithCCN_Node0 -- No --> E_BuildSecondaryCargoKeywithCCN
File: GCCUSIO.cbl
GIVEN:
A cargo control number (CCN) exists in the primary cargo record
WHEN:
The system needs to retrieve N9 reference data for Iron Highway notification
THEN:
The system builds a secondary cargo key using the CCN from the primary record
β Consolidated Acceptance Criteria
- Building the access key for secondary cargo data → the system sets the record type to '02' to identify N9 reference data 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_SetRecordTypeto02(["Start Step"])
E_SetRecordTypeto02(["End Step"])
N_SetRecordTypeto02_Node0{"Building the access key for
secondary cargo data"}:::decision N_SetRecordTypeto02_Node0_action["The system sets the record type to
02 to identify N9 reference data
segments"]:::main N_SetRecordTypeto02_Node0 -- Yes --> N_SetRecordTypeto02_Node0_action N_SetRecordTypeto02_Node0_action --> E_SetRecordTypeto02 S_SetRecordTypeto02 --> N_SetRecordTypeto02_Node0 N_SetRecordTypeto02_Node0 -- No --> E_SetRecordTypeto02
secondary cargo data"}:::decision N_SetRecordTypeto02_Node0_action["The system sets the record type to
02 to identify N9 reference data
segments"]:::main N_SetRecordTypeto02_Node0 -- Yes --> N_SetRecordTypeto02_Node0_action N_SetRecordTypeto02_Node0_action --> E_SetRecordTypeto02 S_SetRecordTypeto02 --> N_SetRecordTypeto02_Node0 N_SetRecordTypeto02_Node0 -- No --> E_SetRecordTypeto02
File: GCCUSIO.cbl
GIVEN:
The system is preparing to retrieve N9 reference data from secondary cargo records
WHEN:
Building the access key for secondary cargo data
THEN:
The system sets the record type to '02' to identify N9 reference data segments
β Consolidated Acceptance Criteria
- Accessing N9 reference segments in secondary cargo data → the system sets the sequence number to '0001' to retrieve the first N9 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_SetSequenceNumberto0001(["Start Step"])
E_SetSequenceNumberto0001(["End Step"])
N_SetSequenceNumberto0001_Node0{"Accessing N9 reference segments in
secondary cargo data"}:::decision N_SetSequenceNumberto0001_Node0_action["The system sets the sequence number
to 0001 to retrieve the first N9
segment"]:::main N_SetSequenceNumberto0001_Node0 -- Yes --> N_SetSequenceNumberto0001_Node0_action N_SetSequenceNumberto0001_Node0_action --> E_SetSequenceNumberto0001 S_SetSequenceNumberto0001 --> N_SetSequenceNumberto0001_Node0 N_SetSequenceNumberto0001_Node0 -- No --> E_SetSequenceNumberto0001
secondary cargo data"}:::decision N_SetSequenceNumberto0001_Node0_action["The system sets the sequence number
to 0001 to retrieve the first N9
segment"]:::main N_SetSequenceNumberto0001_Node0 -- Yes --> N_SetSequenceNumberto0001_Node0_action N_SetSequenceNumberto0001_Node0_action --> E_SetSequenceNumberto0001 S_SetSequenceNumberto0001 --> N_SetSequenceNumberto0001_Node0 N_SetSequenceNumberto0001_Node0 -- No --> E_SetSequenceNumberto0001
File: GCCUSIO.cbl
GIVEN:
The system has identified the record type as '02' for N9 reference data
WHEN:
Accessing N9 reference segments in secondary cargo data
THEN:
The system sets the sequence number to '0001' to retrieve the first N9 segment
β Consolidated Acceptance Criteria
- The system begins processing N9 reference segments → the system initializes the N9 counter to zero to start processing from the first segment
- The system begins processing individual N9 reference entries → the system initializes a counter to zero to track the current N9 entry position
- The system prepares to process N9 reference entries → the system sets the N9 counter to zero to begin iteration 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_InitializeN9CountertoZero(["Start Step"])
E_InitializeN9CountertoZero(["End Step"])
N_InitializeN9CountertoZero_Node0{"The system begins processing N9
reference segments"}:::decision N_InitializeN9CountertoZero_Node0_action["The system initializes the N9
counter to zero to start processing
from the first segment"]:::main N_InitializeN9CountertoZero_Node0 -- Yes --> N_InitializeN9CountertoZero_Node0_action N_InitializeN9CountertoZero_Node0_action --> E_InitializeN9CountertoZero S_InitializeN9CountertoZero --> N_InitializeN9CountertoZero_Node0 N_InitializeN9CountertoZero_Node1{"The system begins processing
individual N9 reference entries"}:::decision N_InitializeN9CountertoZero_Node1_action["The system initializes a counter to
zero to track the current N9 entry
position"]:::main N_InitializeN9CountertoZero_Node1 -- Yes --> N_InitializeN9CountertoZero_Node1_action N_InitializeN9CountertoZero_Node1_action --> E_InitializeN9CountertoZero N_InitializeN9CountertoZero_Node0 -- No --> N_InitializeN9CountertoZero_Node1 N_InitializeN9CountertoZero_Node2{"The system prepares to process N9
reference entries"}:::decision N_InitializeN9CountertoZero_Node2_action["The system sets the N9 counter to
zero to begin iteration from the
first entry"]:::main N_InitializeN9CountertoZero_Node2 -- Yes --> N_InitializeN9CountertoZero_Node2_action N_InitializeN9CountertoZero_Node2_action --> E_InitializeN9CountertoZero N_InitializeN9CountertoZero_Node1 -- No --> N_InitializeN9CountertoZero_Node2 N_InitializeN9CountertoZero_Node2 -- No --> E_InitializeN9CountertoZero
reference segments"}:::decision N_InitializeN9CountertoZero_Node0_action["The system initializes the N9
counter to zero to start processing
from the first segment"]:::main N_InitializeN9CountertoZero_Node0 -- Yes --> N_InitializeN9CountertoZero_Node0_action N_InitializeN9CountertoZero_Node0_action --> E_InitializeN9CountertoZero S_InitializeN9CountertoZero --> N_InitializeN9CountertoZero_Node0 N_InitializeN9CountertoZero_Node1{"The system begins processing
individual N9 reference entries"}:::decision N_InitializeN9CountertoZero_Node1_action["The system initializes a counter to
zero to track the current N9 entry
position"]:::main N_InitializeN9CountertoZero_Node1 -- Yes --> N_InitializeN9CountertoZero_Node1_action N_InitializeN9CountertoZero_Node1_action --> E_InitializeN9CountertoZero N_InitializeN9CountertoZero_Node0 -- No --> N_InitializeN9CountertoZero_Node1 N_InitializeN9CountertoZero_Node2{"The system prepares to process N9
reference entries"}:::decision N_InitializeN9CountertoZero_Node2_action["The system sets the N9 counter to
zero to begin iteration from the
first entry"]:::main N_InitializeN9CountertoZero_Node2 -- Yes --> N_InitializeN9CountertoZero_Node2_action N_InitializeN9CountertoZero_Node2_action --> E_InitializeN9CountertoZero N_InitializeN9CountertoZero_Node1 -- No --> N_InitializeN9CountertoZero_Node2 N_InitializeN9CountertoZero_Node2 -- No --> E_InitializeN9CountertoZero
File: GCCUSIO.cbl
GIVEN:
N9 reference data record has been successfully retrieved
WHEN:
The system begins processing N9 reference segments
THEN:
The system initializes the N9 counter to zero to start processing from the first segment
File: GCCUSIO.cbl
GIVEN:
N9 reference segments have been successfully retrieved
WHEN:
The system begins processing individual N9 reference entries
THEN:
The system initializes a counter to zero to track the current N9 entry position
File: GCCUSIO.cbl
GIVEN:
Secondary cargo data has been successfully retrieved
WHEN:
The system prepares to process N9 reference entries
THEN:
The system sets the N9 counter to zero to begin iteration from the first entry
β Consolidated Acceptance Criteria
- Processing N9 reference segments for shipment identification → the system loops through exactly 20 N9 reference segments to examine each 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_LoopThrough20N9ReferenceSegments(["Start Step"])
E_LoopThrough20N9ReferenceSegments(["End Step"])
N_LoopThrough20N9ReferenceSegments_Node0{"Processing N9 reference segments
for shipment identification"}:::decision N_LoopThrough20N9ReferenceSegments_Node0_action["The system loops through exactly 20
N9 reference segments to examine
each one"]:::main N_LoopThrough20N9ReferenceSegments_Node0 -- Yes --> N_LoopThrough20N9ReferenceSegments_Node0_action N_LoopThrough20N9ReferenceSegments_Node0_action --> E_LoopThrough20N9ReferenceSegments S_LoopThrough20N9ReferenceSegments --> N_LoopThrough20N9ReferenceSegments_Node0 N_LoopThrough20N9ReferenceSegments_Node0 -- No --> E_LoopThrough20N9ReferenceSegments
for shipment identification"}:::decision N_LoopThrough20N9ReferenceSegments_Node0_action["The system loops through exactly 20
N9 reference segments to examine
each one"]:::main N_LoopThrough20N9ReferenceSegments_Node0 -- Yes --> N_LoopThrough20N9ReferenceSegments_Node0_action N_LoopThrough20N9ReferenceSegments_Node0_action --> E_LoopThrough20N9ReferenceSegments S_LoopThrough20N9ReferenceSegments --> N_LoopThrough20N9ReferenceSegments_Node0 N_LoopThrough20N9ReferenceSegments_Node0 -- No --> E_LoopThrough20N9ReferenceSegments
File: GCCUSIO.cbl
GIVEN:
N9 reference data is available and the counter is initialized
WHEN:
Processing N9 reference segments for shipment identification
THEN:
The system loops through exactly 20 N9 reference segments to examine each one
β Consolidated Acceptance Criteria
- Preparing data for Iron Highway notification → the system stores the shipment ID in the Iron Highway notification data 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_StoreShipmentIDforIronHighway(["Start Step"])
E_StoreShipmentIDforIronHighway(["End Step"])
N_StoreShipmentIDforIronHighway_Node0{"Preparing data for Iron Highway
notification"}:::decision N_StoreShipmentIDforIronHighway_Node0_action["The system stores the shipment ID
in the Iron Highway notification
data structure"]:::main N_StoreShipmentIDforIronHighway_Node0 -- Yes --> N_StoreShipmentIDforIronHighway_Node0_action N_StoreShipmentIDforIronHighway_Node0_action --> E_StoreShipmentIDforIronHighway S_StoreShipmentIDforIronHighway --> N_StoreShipmentIDforIronHighway_Node0 N_StoreShipmentIDforIronHighway_Node0 -- No --> E_StoreShipmentIDforIronHighway
notification"}:::decision N_StoreShipmentIDforIronHighway_Node0_action["The system stores the shipment ID
in the Iron Highway notification
data structure"]:::main N_StoreShipmentIDforIronHighway_Node0 -- Yes --> N_StoreShipmentIDforIronHighway_Node0_action N_StoreShipmentIDforIronHighway_Node0_action --> E_StoreShipmentIDforIronHighway S_StoreShipmentIDforIronHighway --> N_StoreShipmentIDforIronHighway_Node0 N_StoreShipmentIDforIronHighway_Node0 -- No --> E_StoreShipmentIDforIronHighway
File: GCCUSIO.cbl
GIVEN:
A shipment ID has been extracted from an N9 reference segment with qualifier 'CN'
WHEN:
Preparing data for Iron Highway notification
THEN:
The system stores the shipment ID in the Iron Highway notification data structure
β Consolidated Acceptance Criteria
- The system executes a database retrieval operation against secondary cargo data → the system retrieves the first N9 reference segment 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_RetrieveFirstN9SegmentfromGCSA2RT(["Start Step"])
E_RetrieveFirstN9SegmentfromGCSA2RT(["End Step"])
N_RetrieveFirstN9SegmentfromGCSA2RT_Node0{"The system executes a database
retrieval operation against
secondary cargo data"}:::decision N_RetrieveFirstN9SegmentfromGCSA2RT_Node0_action["The system retrieves the first N9
reference segment if it exists"]:::main N_RetrieveFirstN9SegmentfromGCSA2RT_Node0 -- Yes --> N_RetrieveFirstN9SegmentfromGCSA2RT_Node0_action N_RetrieveFirstN9SegmentfromGCSA2RT_Node0_action --> E_RetrieveFirstN9SegmentfromGCSA2RT S_RetrieveFirstN9SegmentfromGCSA2RT --> N_RetrieveFirstN9SegmentfromGCSA2RT_Node0 N_RetrieveFirstN9SegmentfromGCSA2RT_Node0 -- No --> E_RetrieveFirstN9SegmentfromGCSA2RT
retrieval operation against
secondary cargo data"}:::decision N_RetrieveFirstN9SegmentfromGCSA2RT_Node0_action["The system retrieves the first N9
reference segment if it exists"]:::main N_RetrieveFirstN9SegmentfromGCSA2RT_Node0 -- Yes --> N_RetrieveFirstN9SegmentfromGCSA2RT_Node0_action N_RetrieveFirstN9SegmentfromGCSA2RT_Node0_action --> E_RetrieveFirstN9SegmentfromGCSA2RT S_RetrieveFirstN9SegmentfromGCSA2RT --> N_RetrieveFirstN9SegmentfromGCSA2RT_Node0 N_RetrieveFirstN9SegmentfromGCSA2RT_Node0 -- No --> E_RetrieveFirstN9SegmentfromGCSA2RT
File: GCCUSIO.cbl
GIVEN:
A composite key has been built for N9 reference segment lookup
WHEN:
The system executes a database retrieval operation against secondary cargo data
THEN:
The system retrieves the first N9 reference segment if it exists
β Consolidated Acceptance Criteria
- The system checks the operation result status → if segments are found, continue with N9 processing, otherwise skip N9 processing entirely
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_N9SegmentFound(["Start Step"])
E_N9SegmentFound(["End Step"])
N_N9SegmentFound_Node0{"The system checks the operation
result status"}:::decision N_N9SegmentFound_Node0_action["If segments are found, continue
with N9 processing, otherwise skip
N9 processing entirely"]:::main N_N9SegmentFound_Node0 -- Yes --> N_N9SegmentFound_Node0_action N_N9SegmentFound_Node0_action --> E_N9SegmentFound S_N9SegmentFound --> N_N9SegmentFound_Node0 N_N9SegmentFound_Node0 -- No --> E_N9SegmentFound
result status"}:::decision N_N9SegmentFound_Node0_action["If segments are found, continue
with N9 processing, otherwise skip
N9 processing entirely"]:::main N_N9SegmentFound_Node0 -- Yes --> N_N9SegmentFound_Node0_action N_N9SegmentFound_Node0_action --> E_N9SegmentFound S_N9SegmentFound --> N_N9SegmentFound_Node0 N_N9SegmentFound_Node0 -- No --> E_N9SegmentFound
File: GCCUSIO.cbl
GIVEN:
A database retrieval operation has been executed for N9 reference segments
WHEN:
The system checks the operation result status
THEN:
If segments are found, continue with N9 processing, otherwise skip N9 processing entirely
β Consolidated Acceptance Criteria
- The system moves to examine the next N9 reference entry → the system increments the N9 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_IncrementN9Counter(["Start Step"])
E_IncrementN9Counter(["End Step"])
N_IncrementN9Counter_Node0{"The system moves to examine the
next N9 reference entry"}:::decision N_IncrementN9Counter_Node0_action["The system increments the N9
counter by one"]:::main N_IncrementN9Counter_Node0 -- Yes --> N_IncrementN9Counter_Node0_action N_IncrementN9Counter_Node0_action --> E_IncrementN9Counter S_IncrementN9Counter --> N_IncrementN9Counter_Node0 N_IncrementN9Counter_Node0 -- No --> E_IncrementN9Counter
next N9 reference entry"}:::decision N_IncrementN9Counter_Node0_action["The system increments the N9
counter by one"]:::main N_IncrementN9Counter_Node0 -- Yes --> N_IncrementN9Counter_Node0_action N_IncrementN9Counter_Node0_action --> E_IncrementN9Counter S_IncrementN9Counter --> N_IncrementN9Counter_Node0 N_IncrementN9Counter_Node0 -- No --> E_IncrementN9Counter
File: GCCUSIO.cbl
GIVEN:
N9 reference processing is in progress
WHEN:
The system moves to examine the next N9 reference entry
THEN:
The system increments the N9 counter by one
β Consolidated Acceptance Criteria
- The system checks the current counter value → if counter is 20 or less, continue processing, otherwise terminate N9 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_Counter20(["Start Step"])
E_Counter20(["End Step"])
N_Counter20_Node0{"The system checks the current
counter value"}:::decision N_Counter20_Node0_action["If counter is 20 or less, continue
processing, otherwise terminate N9
processing"]:::exclusion N_Counter20_Node0 -- Yes -->|Alternative| N_Counter20_Node0_action N_Counter20_Node0_action --> E_Counter20 S_Counter20 --> N_Counter20_Node0 N_Counter20_Node0 -- No --> E_Counter20
counter value"}:::decision N_Counter20_Node0_action["If counter is 20 or less, continue
processing, otherwise terminate N9
processing"]:::exclusion N_Counter20_Node0 -- Yes -->|Alternative| N_Counter20_Node0_action N_Counter20_Node0_action --> E_Counter20 S_Counter20 --> N_Counter20_Node0 N_Counter20_Node0 -- No --> E_Counter20
File: GCCUSIO.cbl
GIVEN:
N9 reference entries are being processed sequentially
WHEN:
The system checks the current counter value
THEN:
If counter is 20 or less, continue processing, otherwise terminate N9 processing
β Consolidated Acceptance Criteria
- The system examines the reference number qualifier field → the system reads the qualifier value to determine reference 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_CheckReferenceNumberQualifier(["Start Step"])
E_CheckReferenceNumberQualifier(["End Step"])
N_CheckReferenceNumberQualifier_Node0{"The system examines the reference
number qualifier field"}:::decision N_CheckReferenceNumberQualifier_Node0_action["The system reads the qualifier
value to determine reference type"]:::main N_CheckReferenceNumberQualifier_Node0 -- Yes --> N_CheckReferenceNumberQualifier_Node0_action N_CheckReferenceNumberQualifier_Node0_action --> E_CheckReferenceNumberQualifier S_CheckReferenceNumberQualifier --> N_CheckReferenceNumberQualifier_Node0 N_CheckReferenceNumberQualifier_Node0 -- No --> E_CheckReferenceNumberQualifier
number qualifier field"}:::decision N_CheckReferenceNumberQualifier_Node0_action["The system reads the qualifier
value to determine reference type"]:::main N_CheckReferenceNumberQualifier_Node0 -- Yes --> N_CheckReferenceNumberQualifier_Node0_action N_CheckReferenceNumberQualifier_Node0_action --> E_CheckReferenceNumberQualifier S_CheckReferenceNumberQualifier --> N_CheckReferenceNumberQualifier_Node0 N_CheckReferenceNumberQualifier_Node0 -- No --> E_CheckReferenceNumberQualifier
File: GCCUSIO.cbl
GIVEN:
An N9 reference entry is being processed
WHEN:
The system examines the reference number qualifier field
THEN:
The system reads the qualifier value to determine reference type
β Consolidated Acceptance Criteria
- The system compares the qualifier value to 'CN' → if qualifier equals 'CN', process as customer number reference, otherwise continue to 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_QualifierCN(["Start Step"])
E_QualifierCN(["End Step"])
N_QualifierCN_Node0{"The system compares the qualifier
value to CN"}:::decision N_QualifierCN_Node0_action["If qualifier equals CN , process as
customer number reference, otherwise
continue to next entry"]:::main N_QualifierCN_Node0 -- Yes --> N_QualifierCN_Node0_action N_QualifierCN_Node0_action --> E_QualifierCN S_QualifierCN --> N_QualifierCN_Node0 N_QualifierCN_Node0 -- No --> E_QualifierCN
value to CN"}:::decision N_QualifierCN_Node0_action["If qualifier equals CN , process as
customer number reference, otherwise
continue to next entry"]:::main N_QualifierCN_Node0 -- Yes --> N_QualifierCN_Node0_action N_QualifierCN_Node0_action --> E_QualifierCN S_QualifierCN --> N_QualifierCN_Node0 N_QualifierCN_Node0 -- No --> E_QualifierCN
File: GCCUSIO.cbl
GIVEN:
An N9 reference entry qualifier has been examined
WHEN:
The system compares the qualifier value to 'CN'
THEN:
If qualifier equals 'CN', process as customer number reference, otherwise continue to next entry
β Consolidated Acceptance Criteria
- The system needs to prepare data for Iron Highway notification → the system stores the shipment ID in the notification data 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_StoreShipmentIDforIronHighwayNotification(["Start Step"])
E_StoreShipmentIDforIronHighwayNotification(["End Step"])
N_StoreShipmentIDforIronHighwayNotification_Node0{"The system needs to prepare data
for Iron Highway notification"}:::decision N_StoreShipmentIDforIronHighwayNotification_Node0_action["The system stores the shipment ID
in the notification data structure"]:::main N_StoreShipmentIDforIronHighwayNotification_Node0 -- Yes --> N_StoreShipmentIDforIronHighwayNotification_Node0_action N_StoreShipmentIDforIronHighwayNotification_Node0_action --> E_StoreShipmentIDforIronHighwayNotification S_StoreShipmentIDforIronHighwayNotification --> N_StoreShipmentIDforIronHighwayNotification_Node0 N_StoreShipmentIDforIronHighwayNotification_Node0 -- No --> E_StoreShipmentIDforIronHighwayNotification
for Iron Highway notification"}:::decision N_StoreShipmentIDforIronHighwayNotification_Node0_action["The system stores the shipment ID
in the notification data structure"]:::main N_StoreShipmentIDforIronHighwayNotification_Node0 -- Yes --> N_StoreShipmentIDforIronHighwayNotification_Node0_action N_StoreShipmentIDforIronHighwayNotification_Node0_action --> E_StoreShipmentIDforIronHighwayNotification S_StoreShipmentIDforIronHighwayNotification --> N_StoreShipmentIDforIronHighwayNotification_Node0 N_StoreShipmentIDforIronHighwayNotification_Node0 -- No --> E_StoreShipmentIDforIronHighwayNotification
File: GCCUSIO.cbl
GIVEN:
A shipment identification number has been extracted from an N9 reference entry
WHEN:
The system needs to prepare data for Iron Highway notification
THEN:
The system stores the shipment ID in the notification data structure
β Consolidated Acceptance Criteria
- If notification status determination → the system should set the notification status to SENT
- The system determines final notification status → the system should set notification status to SENT
- RT21 US cargo short description is spaces AND RT10B CP cargo status description equals 'SENT ' → set Iron Highway CCN status to 'SENT'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatustoSENT(["Start Step"])
E_SetStatustoSENT(["End Step"])
N_SetStatustoSENT_Node0{"The system evaluates notification
status determination"}:::decision N_SetStatustoSENT_Node0_action["The system should set the
notification status to SENT"]:::main N_SetStatustoSENT_Node0 -- Yes --> N_SetStatustoSENT_Node0_action N_SetStatustoSENT_Node0_action --> E_SetStatustoSENT S_SetStatustoSENT --> N_SetStatustoSENT_Node0 N_SetStatustoSENT_Node1{"The system determines final
notification status"}:::decision N_SetStatustoSENT_Node1_action["The system should set notification
status to SENT"]:::main N_SetStatustoSENT_Node1 -- Yes --> N_SetStatustoSENT_Node1_action N_SetStatustoSENT_Node1_action --> E_SetStatustoSENT N_SetStatustoSENT_Node0 -- No --> N_SetStatustoSENT_Node1 N_SetStatustoSENT_Node2{"RT21 US cargo short description is
spaces AND RT10B CP cargo status
description equals SENT"}:::decision N_SetStatustoSENT_Node2_action["Set Iron Highway CCN status to SENT"]:::main N_SetStatustoSENT_Node2 -- Yes --> N_SetStatustoSENT_Node2_action N_SetStatustoSENT_Node2_action --> E_SetStatustoSENT N_SetStatustoSENT_Node1 -- No --> N_SetStatustoSENT_Node2 N_SetStatustoSENT_Node2 -- No --> E_SetStatustoSENT
status determination"}:::decision N_SetStatustoSENT_Node0_action["The system should set the
notification status to SENT"]:::main N_SetStatustoSENT_Node0 -- Yes --> N_SetStatustoSENT_Node0_action N_SetStatustoSENT_Node0_action --> E_SetStatustoSENT S_SetStatustoSENT --> N_SetStatustoSENT_Node0 N_SetStatustoSENT_Node1{"The system determines final
notification status"}:::decision N_SetStatustoSENT_Node1_action["The system should set notification
status to SENT"]:::main N_SetStatustoSENT_Node1 -- Yes --> N_SetStatustoSENT_Node1_action N_SetStatustoSENT_Node1_action --> E_SetStatustoSENT N_SetStatustoSENT_Node0 -- No --> N_SetStatustoSENT_Node1 N_SetStatustoSENT_Node2{"RT21 US cargo short description is
spaces AND RT10B CP cargo status
description equals SENT"}:::decision N_SetStatustoSENT_Node2_action["Set Iron Highway CCN status to SENT"]:::main N_SetStatustoSENT_Node2 -- Yes --> N_SetStatustoSENT_Node2_action N_SetStatustoSENT_Node2_action --> E_SetStatustoSENT N_SetStatustoSENT_Node1 -- No --> N_SetStatustoSENT_Node2 N_SetStatustoSENT_Node2 -- No --> E_SetStatustoSENT
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with empty cargo status description and CP cargo status equals SENT
WHEN:
The system evaluates notification status determination
THEN:
The system should set the notification status to SENT
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with empty cargo status description and CP cargo status description equal to SENT
WHEN:
The system determines final notification status
THEN:
The system should set notification status to SENT
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires Iron Highway notification AND station configuration exists AND status is not DELETED or RELEASE
WHEN:
- Rt21 us cargo short description is spaces
- Rt10b cp cargo status description equals 'sent '
THEN:
Set Iron Highway CCN status to 'SENT'
β Consolidated Acceptance Criteria
- If notification requirements → the system should exit without sending any 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_ExitNoNotificationNeeded(["Start Step"])
E_ExitNoNotificationNeeded(["End Step"])
N_ExitNoNotificationNeeded_Node0{"The system evaluates notification
requirements"}:::decision N_ExitNoNotificationNeeded_Node0_action["The system should exit without
sending any notification"]:::main N_ExitNoNotificationNeeded_Node0 -- Yes --> N_ExitNoNotificationNeeded_Node0_action N_ExitNoNotificationNeeded_Node0_action --> E_ExitNoNotificationNeeded S_ExitNoNotificationNeeded --> N_ExitNoNotificationNeeded_Node0 N_ExitNoNotificationNeeded_Node0 -- No --> E_ExitNoNotificationNeeded
requirements"}:::decision N_ExitNoNotificationNeeded_Node0_action["The system should exit without
sending any notification"]:::main N_ExitNoNotificationNeeded_Node0 -- Yes --> N_ExitNoNotificationNeeded_Node0_action N_ExitNoNotificationNeeded_Node0_action --> E_ExitNoNotificationNeeded S_ExitNoNotificationNeeded --> N_ExitNoNotificationNeeded_Node0 N_ExitNoNotificationNeeded_Node0 -- No --> E_ExitNoNotificationNeeded
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with both cargo status description and CP cargo status description being empty or spaces
WHEN:
The system evaluates notification requirements
THEN:
The system should exit without sending any notification
β Consolidated Acceptance Criteria
- If notification processing requirements → the system should continue with notification processing
- The CP cargo status description equals 'DELETED' OR equals 'RELEASE' → the system continues with the notification 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 evaluates notification
processing requirements"}:::decision N_ContinueProcessing_Node0_action["The system should continue with
notification processing"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"The CP cargo status description
equals DELETED OR equals RELEASE"}:::decision N_ContinueProcessing_Node1_action["The system continues with the
notification processing workflow"]:::main N_ContinueProcessing_Node1 -- Yes --> N_ContinueProcessing_Node1_action N_ContinueProcessing_Node1_action --> E_ContinueProcessing N_ContinueProcessing_Node0 -- No --> N_ContinueProcessing_Node1 N_ContinueProcessing_Node1 -- No --> E_ContinueProcessing
processing requirements"}:::decision N_ContinueProcessing_Node0_action["The system should continue with
notification processing"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"The CP cargo status description
equals DELETED OR equals RELEASE"}:::decision N_ContinueProcessing_Node1_action["The system continues with the
notification processing workflow"]:::main N_ContinueProcessing_Node1 -- Yes --> N_ContinueProcessing_Node1_action N_ContinueProcessing_Node1_action --> E_ContinueProcessing N_ContinueProcessing_Node0 -- No --> N_ContinueProcessing_Node1 N_ContinueProcessing_Node1 -- No --> E_ContinueProcessing
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status description equal to DELETED or RELEASE
WHEN:
The system evaluates notification processing requirements
THEN:
The system should continue with notification processing
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The CP cargo status description equals 'DELETED' OR equals 'RELEASE'
THEN:
The system continues with the notification processing workflow
β Consolidated Acceptance Criteria
- The system compares current status with previous notification status → the system should exit without sending 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_ExitNoStatusChange(["Start Step"])
E_ExitNoStatusChange(["End Step"])
N_ExitNoStatusChange_Node0{"The system compares current status
with previous notification status"}:::decision N_ExitNoStatusChange_Node0_action["The system should exit without
sending notification"]:::main N_ExitNoStatusChange_Node0 -- Yes --> N_ExitNoStatusChange_Node0_action N_ExitNoStatusChange_Node0_action --> E_ExitNoStatusChange S_ExitNoStatusChange --> N_ExitNoStatusChange_Node0 N_ExitNoStatusChange_Node0 -- No --> E_ExitNoStatusChange
with previous notification status"}:::decision N_ExitNoStatusChange_Node0_action["The system should exit without
sending notification"]:::main N_ExitNoStatusChange_Node0 -- Yes --> N_ExitNoStatusChange_Node0_action N_ExitNoStatusChange_Node0_action --> E_ExitNoStatusChange S_ExitNoStatusChange --> N_ExitNoStatusChange_Node0 N_ExitNoStatusChange_Node0 -- No --> E_ExitNoStatusChange
File: GCCUSIO.cbl
GIVEN:
A cargo record exists where the saved notification status equals the current cargo status description
WHEN:
The system compares current status with previous notification status
THEN:
The system should exit without sending notification
β Consolidated Acceptance Criteria
- If notification requirements → the system should exit without sending any notification
- The US cargo status description equals 'RELEASE' → the system exits the notification process without sending a 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_ExitReleaseStatus(["Start Step"])
E_ExitReleaseStatus(["End Step"])
N_ExitReleaseStatus_Node0{"The system evaluates notification
requirements"}:::decision N_ExitReleaseStatus_Node0_action["The system should exit without
sending any notification"]:::main N_ExitReleaseStatus_Node0 -- Yes --> N_ExitReleaseStatus_Node0_action N_ExitReleaseStatus_Node0_action --> E_ExitReleaseStatus S_ExitReleaseStatus --> N_ExitReleaseStatus_Node0 N_ExitReleaseStatus_Node1{"The US cargo status description
equals RELEASE"}:::decision N_ExitReleaseStatus_Node1_action["The system exits the notification
process without sending a message"]:::main N_ExitReleaseStatus_Node1 -- Yes --> N_ExitReleaseStatus_Node1_action N_ExitReleaseStatus_Node1_action --> E_ExitReleaseStatus N_ExitReleaseStatus_Node0 -- No --> N_ExitReleaseStatus_Node1 N_ExitReleaseStatus_Node1 -- No --> E_ExitReleaseStatus
requirements"}:::decision N_ExitReleaseStatus_Node0_action["The system should exit without
sending any notification"]:::main N_ExitReleaseStatus_Node0 -- Yes --> N_ExitReleaseStatus_Node0_action N_ExitReleaseStatus_Node0_action --> E_ExitReleaseStatus S_ExitReleaseStatus --> N_ExitReleaseStatus_Node0 N_ExitReleaseStatus_Node1{"The US cargo status description
equals RELEASE"}:::decision N_ExitReleaseStatus_Node1_action["The system exits the notification
process without sending a message"]:::main N_ExitReleaseStatus_Node1 -- Yes --> N_ExitReleaseStatus_Node1_action N_ExitReleaseStatus_Node1_action --> E_ExitReleaseStatus N_ExitReleaseStatus_Node0 -- No --> N_ExitReleaseStatus_Node1 N_ExitReleaseStatus_Node1 -- No --> E_ExitReleaseStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with cargo status description equal to RELEASE
WHEN:
The system evaluates notification requirements
THEN:
The system should exit without sending any notification
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The US cargo status description equals 'RELEASE'
THEN:
The system exits the notification process without sending a message
β Consolidated Acceptance Criteria
- The system determines final notification status → the system should set notification status to DELETED and saved status to DELETED
- RT10B CP cargo status description equals 'DELETED' → set saved status to 'DELETED' AND set Iron Highway CCN status to 'DELETED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatustoDELETED(["Start Step"])
E_SetStatustoDELETED(["End Step"])
N_SetStatustoDELETED_Node0{"The system determines final
notification status"}:::decision N_SetStatustoDELETED_Node0_action["The system should set notification
status to DELETED and saved status
to DELETED"]:::main N_SetStatustoDELETED_Node0 -- Yes --> N_SetStatustoDELETED_Node0_action N_SetStatustoDELETED_Node0_action --> E_SetStatustoDELETED S_SetStatustoDELETED --> N_SetStatustoDELETED_Node0 N_SetStatustoDELETED_Node1{"RT10B CP cargo status description
equals DELETED"}:::decision N_SetStatustoDELETED_Node1_action["Set saved status to DELETED AND set
Iron Highway CCN status to DELETED"]:::main N_SetStatustoDELETED_Node1 -- Yes --> N_SetStatustoDELETED_Node1_action N_SetStatustoDELETED_Node1_action --> E_SetStatustoDELETED N_SetStatustoDELETED_Node0 -- No --> N_SetStatustoDELETED_Node1 N_SetStatustoDELETED_Node1 -- No --> E_SetStatustoDELETED
notification status"}:::decision N_SetStatustoDELETED_Node0_action["The system should set notification
status to DELETED and saved status
to DELETED"]:::main N_SetStatustoDELETED_Node0 -- Yes --> N_SetStatustoDELETED_Node0_action N_SetStatustoDELETED_Node0_action --> E_SetStatustoDELETED S_SetStatustoDELETED --> N_SetStatustoDELETED_Node0 N_SetStatustoDELETED_Node1{"RT10B CP cargo status description
equals DELETED"}:::decision N_SetStatustoDELETED_Node1_action["Set saved status to DELETED AND set
Iron Highway CCN status to DELETED"]:::main N_SetStatustoDELETED_Node1 -- Yes --> N_SetStatustoDELETED_Node1_action N_SetStatustoDELETED_Node1_action --> E_SetStatustoDELETED N_SetStatustoDELETED_Node0 -- No --> N_SetStatustoDELETED_Node1 N_SetStatustoDELETED_Node1 -- No --> E_SetStatustoDELETED
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status description equal to DELETED
WHEN:
The system determines final notification status
THEN:
- The system should set notification status to deleted
- Saved status to deleted
File: GCCUSIO.cbl
GIVEN:
A cargo record requires Iron Highway notification AND station configuration exists
WHEN:
RT10B CP cargo status description equals 'DELETED'
THEN:
Set saved status to 'DELETED' AND set Iron Highway CCN status to 'DELETED'
β Consolidated Acceptance Criteria
- The system determines final notification status → the system should set notification status to RELEASE and saved status to RELEASE
- RT10B CP cargo status description equals 'RELEASE' → set saved status to 'RELEASE' AND set Iron Highway CCN status to 'RELEASE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatustoRELEASE(["Start Step"])
E_SetStatustoRELEASE(["End Step"])
N_SetStatustoRELEASE_Node0{"The system determines final
notification status"}:::decision N_SetStatustoRELEASE_Node0_action["The system should set notification
status to RELEASE and saved status
to RELEASE"]:::main N_SetStatustoRELEASE_Node0 -- Yes --> N_SetStatustoRELEASE_Node0_action N_SetStatustoRELEASE_Node0_action --> E_SetStatustoRELEASE S_SetStatustoRELEASE --> N_SetStatustoRELEASE_Node0 N_SetStatustoRELEASE_Node1{"RT10B CP cargo status description
equals RELEASE"}:::decision N_SetStatustoRELEASE_Node1_action["Set saved status to RELEASE AND set
Iron Highway CCN status to RELEASE"]:::main N_SetStatustoRELEASE_Node1 -- Yes --> N_SetStatustoRELEASE_Node1_action N_SetStatustoRELEASE_Node1_action --> E_SetStatustoRELEASE N_SetStatustoRELEASE_Node0 -- No --> N_SetStatustoRELEASE_Node1 N_SetStatustoRELEASE_Node1 -- No --> E_SetStatustoRELEASE
notification status"}:::decision N_SetStatustoRELEASE_Node0_action["The system should set notification
status to RELEASE and saved status
to RELEASE"]:::main N_SetStatustoRELEASE_Node0 -- Yes --> N_SetStatustoRELEASE_Node0_action N_SetStatustoRELEASE_Node0_action --> E_SetStatustoRELEASE S_SetStatustoRELEASE --> N_SetStatustoRELEASE_Node0 N_SetStatustoRELEASE_Node1{"RT10B CP cargo status description
equals RELEASE"}:::decision N_SetStatustoRELEASE_Node1_action["Set saved status to RELEASE AND set
Iron Highway CCN status to RELEASE"]:::main N_SetStatustoRELEASE_Node1 -- Yes --> N_SetStatustoRELEASE_Node1_action N_SetStatustoRELEASE_Node1_action --> E_SetStatustoRELEASE N_SetStatustoRELEASE_Node0 -- No --> N_SetStatustoRELEASE_Node1 N_SetStatustoRELEASE_Node1 -- No --> E_SetStatustoRELEASE
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status description equal to RELEASE
WHEN:
The system determines final notification status
THEN:
- The system should set notification status to release
- Saved status to release
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires Iron Highway notification AND station configuration exists AND status is not DELETED
WHEN:
RT10B CP cargo status description equals 'RELEASE'
THEN:
Set saved status to 'RELEASE' AND set Iron Highway CCN status to 'RELEASE'
β Consolidated Acceptance Criteria
- The system determines final notification status → the system should use the US cargo status description as the notification status and save the US cargo status as the saved 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_UseUSCargoStatus(["Start Step"])
E_UseUSCargoStatus(["End Step"])
N_UseUSCargoStatus_Node0{"The system determines final
notification status"}:::decision N_UseUSCargoStatus_Node0_action["The system should use the US cargo
status description as the
notification status and save the US
cargo status as the saved status"]:::main N_UseUSCargoStatus_Node0 -- Yes --> N_UseUSCargoStatus_Node0_action N_UseUSCargoStatus_Node0_action --> E_UseUSCargoStatus S_UseUSCargoStatus --> N_UseUSCargoStatus_Node0 N_UseUSCargoStatus_Node0 -- No --> E_UseUSCargoStatus
notification status"}:::decision N_UseUSCargoStatus_Node0_action["The system should use the US cargo
status description as the
notification status and save the US
cargo status as the saved status"]:::main N_UseUSCargoStatus_Node0 -- Yes --> N_UseUSCargoStatus_Node0_action N_UseUSCargoStatus_Node0_action --> E_UseUSCargoStatus S_UseUSCargoStatus --> N_UseUSCargoStatus_Node0 N_UseUSCargoStatus_Node0 -- No --> E_UseUSCargoStatus
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists where CP status is not DELETED, not RELEASE, and either US status is not empty or CP status is not SENT
WHEN:
The system determines final notification status
THEN:
- The system should use the us cargo status description as the notification status
- Save the us cargo status as the saved status
β Consolidated Acceptance Criteria
- The system prepares to send notification → the system should call Iron Highway notification service with record type UC, car ID, waybill number, CCN, shipment ID, and 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_SendNotificationtoIronHighway(["Start Step"])
E_SendNotificationtoIronHighway(["End Step"])
N_SendNotificationtoIronHighway_Node0{"The system prepares to send
notification"}:::decision N_SendNotificationtoIronHighway_Node0_action["The system should call Iron Highway
notification service with record
type UC, car ID, waybill number,
CCN, shipment ID, and status"]:::main N_SendNotificationtoIronHighway_Node0 -- Yes --> N_SendNotificationtoIronHighway_Node0_action N_SendNotificationtoIronHighway_Node0_action --> E_SendNotificationtoIronHighway S_SendNotificationtoIronHighway --> N_SendNotificationtoIronHighway_Node0 N_SendNotificationtoIronHighway_Node0 -- No --> E_SendNotificationtoIronHighway
notification"}:::decision N_SendNotificationtoIronHighway_Node0_action["The system should call Iron Highway
notification service with record
type UC, car ID, waybill number,
CCN, shipment ID, and status"]:::main N_SendNotificationtoIronHighway_Node0 -- Yes --> N_SendNotificationtoIronHighway_Node0_action N_SendNotificationtoIronHighway_Node0_action --> E_SendNotificationtoIronHighway S_SendNotificationtoIronHighway --> N_SendNotificationtoIronHighway_Node0 N_SendNotificationtoIronHighway_Node0 -- No --> E_SendNotificationtoIronHighway
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with determined notification status and Iron Highway table configuration is found
WHEN:
The system prepares to send notification
THEN:
The system should call Iron Highway notification service with record type UC, car ID, waybill number, CCN, shipment ID, and status
β Consolidated Acceptance Criteria
- The US cargo short description is empty (spaces) AND the CP cargo status description is not equal to 'SENT' → the system should proceed to check if both current and CP status are 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_CurrentUSCargoStatusEmpty(["Start Step"])
E_CurrentUSCargoStatusEmpty(["End Step"])
N_CurrentUSCargoStatusEmpty_Node0{"The US cargo short description is
empty spaces AND the CP cargo status
description is not equal to SENT"}:::decision N_CurrentUSCargoStatusEmpty_Node0_action["The system should proceed to check
if both current and CP status are
empty"]:::main N_CurrentUSCargoStatusEmpty_Node0 -- Yes --> N_CurrentUSCargoStatusEmpty_Node0_action N_CurrentUSCargoStatusEmpty_Node0_action --> E_CurrentUSCargoStatusEmpty S_CurrentUSCargoStatusEmpty --> N_CurrentUSCargoStatusEmpty_Node0 N_CurrentUSCargoStatusEmpty_Node0 -- No --> E_CurrentUSCargoStatusEmpty
empty spaces AND the CP cargo status
description is not equal to SENT"}:::decision N_CurrentUSCargoStatusEmpty_Node0_action["The system should proceed to check
if both current and CP status are
empty"]:::main N_CurrentUSCargoStatusEmpty_Node0 -- Yes --> N_CurrentUSCargoStatusEmpty_Node0_action N_CurrentUSCargoStatusEmpty_Node0_action --> E_CurrentUSCargoStatusEmpty S_CurrentUSCargoStatusEmpty --> N_CurrentUSCargoStatusEmpty_Node0 N_CurrentUSCargoStatusEmpty_Node0 -- No --> E_CurrentUSCargoStatusEmpty
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The US cargo short description is empty (spaces) AND the CP cargo status description is not equal to 'SENT'
THEN:
- The system should proceed to check if both current
- Cp status are empty
β Consolidated Acceptance Criteria
- The system is determining the current status for Iron Highway notification → the system should use the CP cargo status description as the current 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_CPCargoStatusSENT(["Start Step"])
E_CPCargoStatusSENT(["End Step"])
N_CPCargoStatusSENT_Node0{"The system is determining the
current status for Iron Highway
notification"}:::decision N_CPCargoStatusSENT_Node0_action["The system should use the CP cargo
status description as the current
status"]:::main N_CPCargoStatusSENT_Node0 -- Yes --> N_CPCargoStatusSENT_Node0_action N_CPCargoStatusSENT_Node0_action --> E_CPCargoStatusSENT S_CPCargoStatusSENT --> N_CPCargoStatusSENT_Node0 N_CPCargoStatusSENT_Node0 -- No --> E_CPCargoStatusSENT
current status for Iron Highway
notification"}:::decision N_CPCargoStatusSENT_Node0_action["The system should use the CP cargo
status description as the current
status"]:::main N_CPCargoStatusSENT_Node0 -- Yes --> N_CPCargoStatusSENT_Node0_action N_CPCargoStatusSENT_Node0_action --> E_CPCargoStatusSENT S_CPCargoStatusSENT --> N_CPCargoStatusSENT_Node0 N_CPCargoStatusSENT_Node0 -- No --> E_CPCargoStatusSENT
File: GCCUSIO.cbl
GIVEN:
A cargo record has empty US cargo short description AND CP cargo status description equals 'SENT'
WHEN:
The system is determining the current status for Iron Highway notification
THEN:
The system should use the CP cargo status description as the current status
β Consolidated Acceptance Criteria
- Both the US cargo short description is empty (spaces) AND the CP cargo status description is empty (spaces) → the system should exit the notification process without sending any 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_BothCurrentandCPStatusEmpty(["Start Step"])
E_BothCurrentandCPStatusEmpty(["End Step"])
N_BothCurrentandCPStatusEmpty_Node0{"Both the US cargo short description
is empty spaces AND the CP cargo
status description is empty spaces"}:::decision N_BothCurrentandCPStatusEmpty_Node0_action["The system should exit the
notification process without sending
any notification"]:::main N_BothCurrentandCPStatusEmpty_Node0 -- Yes --> N_BothCurrentandCPStatusEmpty_Node0_action N_BothCurrentandCPStatusEmpty_Node0_action --> E_BothCurrentandCPStatusEmpty S_BothCurrentandCPStatusEmpty --> N_BothCurrentandCPStatusEmpty_Node0 N_BothCurrentandCPStatusEmpty_Node0 -- No --> E_BothCurrentandCPStatusEmpty
is empty spaces AND the CP cargo
status description is empty spaces"}:::decision N_BothCurrentandCPStatusEmpty_Node0_action["The system should exit the
notification process without sending
any notification"]:::main N_BothCurrentandCPStatusEmpty_Node0 -- Yes --> N_BothCurrentandCPStatusEmpty_Node0_action N_BothCurrentandCPStatusEmpty_Node0_action --> E_BothCurrentandCPStatusEmpty S_BothCurrentandCPStatusEmpty --> N_BothCurrentandCPStatusEmpty_Node0 N_BothCurrentandCPStatusEmpty_Node0 -- No --> E_BothCurrentandCPStatusEmpty
File: GCCUSIO.cbl
GIVEN:
A cargo record is being evaluated for Iron Highway notification
WHEN:
Both the US cargo short description is empty (spaces) AND the CP cargo status description is empty (spaces)
THEN:
The system should exit the notification process without sending any notification
β Consolidated Acceptance Criteria
- The CP cargo status description equals 'DELETED' OR equals 'RELEASE' → the system should continue with the notification process without checking for status 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_CPStatusDELETEDorRELEASE(["Start Step"])
E_CPStatusDELETEDorRELEASE(["End Step"])
N_CPStatusDELETEDorRELEASE_Node0{"The CP cargo status description
equals DELETED OR equals RELEASE"}:::decision N_CPStatusDELETEDorRELEASE_Node0_action["The system should continue with the
notification process without
checking for status changes"]:::main N_CPStatusDELETEDorRELEASE_Node0 -- Yes --> N_CPStatusDELETEDorRELEASE_Node0_action N_CPStatusDELETEDorRELEASE_Node0_action --> E_CPStatusDELETEDorRELEASE S_CPStatusDELETEDorRELEASE --> N_CPStatusDELETEDorRELEASE_Node0 N_CPStatusDELETEDorRELEASE_Node0 -- No --> E_CPStatusDELETEDorRELEASE
equals DELETED OR equals RELEASE"}:::decision N_CPStatusDELETEDorRELEASE_Node0_action["The system should continue with the
notification process without
checking for status changes"]:::main N_CPStatusDELETEDorRELEASE_Node0 -- Yes --> N_CPStatusDELETEDorRELEASE_Node0_action N_CPStatusDELETEDorRELEASE_Node0_action --> E_CPStatusDELETEDorRELEASE S_CPStatusDELETEDorRELEASE --> N_CPStatusDELETEDorRELEASE_Node0 N_CPStatusDELETEDorRELEASE_Node0 -- No --> E_CPStatusDELETEDorRELEASE
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
The CP cargo status description equals 'DELETED' OR equals 'RELEASE'
THEN:
The system should continue with the notification process without checking for status changes
β Consolidated Acceptance Criteria
- The saved Iron Highway status equals the current US cargo short description → the system should exit the notification process as no status change has 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_SavedStatusCurrentStatus(["Start Step"])
E_SavedStatusCurrentStatus(["End Step"])
N_SavedStatusCurrentStatus_Node0{"The saved Iron Highway status
equals the current US cargo short
description"}:::decision N_SavedStatusCurrentStatus_Node0_action["The system should exit the
notification process as no status
change has occurred"]:::main N_SavedStatusCurrentStatus_Node0 -- Yes --> N_SavedStatusCurrentStatus_Node0_action N_SavedStatusCurrentStatus_Node0_action --> E_SavedStatusCurrentStatus S_SavedStatusCurrentStatus --> N_SavedStatusCurrentStatus_Node0 N_SavedStatusCurrentStatus_Node0 -- No --> E_SavedStatusCurrentStatus
equals the current US cargo short
description"}:::decision N_SavedStatusCurrentStatus_Node0_action["The system should exit the
notification process as no status
change has occurred"]:::main N_SavedStatusCurrentStatus_Node0 -- Yes --> N_SavedStatusCurrentStatus_Node0_action N_SavedStatusCurrentStatus_Node0_action --> E_SavedStatusCurrentStatus S_SavedStatusCurrentStatus --> N_SavedStatusCurrentStatus_Node0 N_SavedStatusCurrentStatus_Node0 -- No --> E_SavedStatusCurrentStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record has a previously saved status for comparison
WHEN:
The saved Iron Highway status equals the current US cargo short description
THEN:
The system should exit the notification process as no status change has occurred
β Consolidated Acceptance Criteria
- The US cargo short description equals 'RELEASE' → the system should exit the notification process without sending 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_CurrentStatusRELEASE(["Start Step"])
E_CurrentStatusRELEASE(["End Step"])
N_CurrentStatusRELEASE_Node0{"The US cargo short description
equals RELEASE"}:::decision N_CurrentStatusRELEASE_Node0_action["The system should exit the
notification process without sending
notification"]:::main N_CurrentStatusRELEASE_Node0 -- Yes --> N_CurrentStatusRELEASE_Node0_action N_CurrentStatusRELEASE_Node0_action --> E_CurrentStatusRELEASE S_CurrentStatusRELEASE --> N_CurrentStatusRELEASE_Node0 N_CurrentStatusRELEASE_Node0 -- No --> E_CurrentStatusRELEASE
equals RELEASE"}:::decision N_CurrentStatusRELEASE_Node0_action["The system should exit the
notification process without sending
notification"]:::main N_CurrentStatusRELEASE_Node0 -- Yes --> N_CurrentStatusRELEASE_Node0_action N_CurrentStatusRELEASE_Node0_action --> E_CurrentStatusRELEASE S_CurrentStatusRELEASE --> N_CurrentStatusRELEASE_Node0 N_CurrentStatusRELEASE_Node0 -- No --> E_CurrentStatusRELEASE
File: GCCUSIO.cbl
GIVEN:
A cargo record is being evaluated for Iron Highway notification
WHEN:
The US cargo short description equals 'RELEASE'
THEN:
The system should exit the notification process without sending notification
β Consolidated Acceptance Criteria
- The current status is different from the saved status AND the current status is not 'RELEASE' AND not both statuses are empty → the system should proceed with generating and sending the Iron Highway 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_StatusChangeDetected(["Start Step"])
E_StatusChangeDetected(["End Step"])
N_StatusChangeDetected_Node0{"The current status is different
from the saved status AND the
current status is not RELEASE AND
not both statuses are empty"}:::decision N_StatusChangeDetected_Node0_action["The system should proceed with
generating and sending the Iron
Highway notification"]:::main N_StatusChangeDetected_Node0 -- Yes --> N_StatusChangeDetected_Node0_action N_StatusChangeDetected_Node0_action --> E_StatusChangeDetected S_StatusChangeDetected --> N_StatusChangeDetected_Node0 N_StatusChangeDetected_Node0 -- No --> E_StatusChangeDetected
from the saved status AND the
current status is not RELEASE AND
not both statuses are empty"}:::decision N_StatusChangeDetected_Node0_action["The system should proceed with
generating and sending the Iron
Highway notification"]:::main N_StatusChangeDetected_Node0 -- Yes --> N_StatusChangeDetected_Node0_action N_StatusChangeDetected_Node0_action --> E_StatusChangeDetected S_StatusChangeDetected --> N_StatusChangeDetected_Node0 N_StatusChangeDetected_Node0 -- No --> E_StatusChangeDetected
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has passed all status comparison checks
WHEN:
- The current status is different from the saved status
- The current status is not 'release' and not both statuses are empty
THEN:
- The system should proceed with generating
- Sending the iron highway notification
β Consolidated Acceptance Criteria
- Both RT21 US cargo short description is spaces AND RT10B CP cargo status description is spaces → skip Iron Highway notification 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_CheckifBothDescriptionsEmpty(["Start Step"])
E_CheckifBothDescriptionsEmpty(["End Step"])
N_CheckifBothDescriptionsEmpty_Node0{"Both RT21 US cargo short
description is spaces AND RT10B CP
cargo status description is spaces"}:::decision N_CheckifBothDescriptionsEmpty_Node0_action["Skip Iron Highway notification
processing and exit"]:::main N_CheckifBothDescriptionsEmpty_Node0 -- Yes --> N_CheckifBothDescriptionsEmpty_Node0_action N_CheckifBothDescriptionsEmpty_Node0_action --> E_CheckifBothDescriptionsEmpty S_CheckifBothDescriptionsEmpty --> N_CheckifBothDescriptionsEmpty_Node0 N_CheckifBothDescriptionsEmpty_Node0 -- No --> E_CheckifBothDescriptionsEmpty
description is spaces AND RT10B CP
cargo status description is spaces"}:::decision N_CheckifBothDescriptionsEmpty_Node0_action["Skip Iron Highway notification
processing and exit"]:::main N_CheckifBothDescriptionsEmpty_Node0 -- Yes --> N_CheckifBothDescriptionsEmpty_Node0_action N_CheckifBothDescriptionsEmpty_Node0_action --> E_CheckifBothDescriptionsEmpty S_CheckifBothDescriptionsEmpty --> N_CheckifBothDescriptionsEmpty_Node0 N_CheckifBothDescriptionsEmpty_Node0 -- No --> E_CheckifBothDescriptionsEmpty
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
- Both rt21 us cargo short description is spaces
- Rt10b cp cargo status description is spaces
THEN:
- Skip iron highway notification processing
- Exit
β Consolidated Acceptance Criteria
- RT21 US cargo short description is spaces AND RT10B CP cargo status description equals 'SENT ' → set the saved status to RT10B CP cargo status description for 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_CheckifSENTStatuswithEmptyDescription(["Start Step"])
E_CheckifSENTStatuswithEmptyDescription(["End Step"])
N_CheckifSENTStatuswithEmptyDescription_Node0{"RT21 US cargo short description is
spaces AND RT10B CP cargo status
description equals SENT"}:::decision N_CheckifSENTStatuswithEmptyDescription_Node0_action["Set the saved status to RT10B CP
cargo status description for
notification"]:::main N_CheckifSENTStatuswithEmptyDescription_Node0 -- Yes --> N_CheckifSENTStatuswithEmptyDescription_Node0_action N_CheckifSENTStatuswithEmptyDescription_Node0_action --> E_CheckifSENTStatuswithEmptyDescription S_CheckifSENTStatuswithEmptyDescription --> N_CheckifSENTStatuswithEmptyDescription_Node0 N_CheckifSENTStatuswithEmptyDescription_Node0 -- No --> E_CheckifSENTStatuswithEmptyDescription
spaces AND RT10B CP cargo status
description equals SENT"}:::decision N_CheckifSENTStatuswithEmptyDescription_Node0_action["Set the saved status to RT10B CP
cargo status description for
notification"]:::main N_CheckifSENTStatuswithEmptyDescription_Node0 -- Yes --> N_CheckifSENTStatuswithEmptyDescription_Node0_action N_CheckifSENTStatuswithEmptyDescription_Node0_action --> E_CheckifSENTStatuswithEmptyDescription S_CheckifSENTStatuswithEmptyDescription --> N_CheckifSENTStatuswithEmptyDescription_Node0 N_CheckifSENTStatuswithEmptyDescription_Node0 -- No --> E_CheckifSENTStatuswithEmptyDescription
File: GCCUSIO.cbl
GIVEN:
A cargo record has empty US cargo short description
WHEN:
- Rt21 us cargo short description is spaces
- Rt10b cp cargo status description equals 'sent '
THEN:
Set the saved status to RT10B CP cargo status description for notification
β Consolidated Acceptance Criteria
- The saved status equals the current RT21 US cargo short description → skip Iron Highway notification 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_CompareCurrentvsPreviousStatus(["Start Step"])
E_CompareCurrentvsPreviousStatus(["End Step"])
N_CompareCurrentvsPreviousStatus_Node0{"The saved status equals the current
RT21 US cargo short description"}:::decision N_CompareCurrentvsPreviousStatus_Node0_action["Skip Iron Highway notification
processing and exit"]:::main N_CompareCurrentvsPreviousStatus_Node0 -- Yes --> N_CompareCurrentvsPreviousStatus_Node0_action N_CompareCurrentvsPreviousStatus_Node0_action --> E_CompareCurrentvsPreviousStatus S_CompareCurrentvsPreviousStatus --> N_CompareCurrentvsPreviousStatus_Node0 N_CompareCurrentvsPreviousStatus_Node0 -- No --> E_CompareCurrentvsPreviousStatus
RT21 US cargo short description"}:::decision N_CompareCurrentvsPreviousStatus_Node0_action["Skip Iron Highway notification
processing and exit"]:::main N_CompareCurrentvsPreviousStatus_Node0 -- Yes --> N_CompareCurrentvsPreviousStatus_Node0_action N_CompareCurrentvsPreviousStatus_Node0_action --> E_CompareCurrentvsPreviousStatus S_CompareCurrentvsPreviousStatus --> N_CompareCurrentvsPreviousStatus_Node0 N_CompareCurrentvsPreviousStatus_Node0 -- No --> E_CompareCurrentvsPreviousStatus
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for status notification AND the status is not DELETED or RELEASE
WHEN:
The saved status equals the current RT21 US cargo short description
THEN:
- Skip iron highway notification processing
- Exit
β Consolidated Acceptance Criteria
- RT21 US cargo short description equals 'RELEASE' → skip Iron Highway notification 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_CheckifStatusisRELEASE(["Start Step"])
E_CheckifStatusisRELEASE(["End Step"])
N_CheckifStatusisRELEASE_Node0{"RT21 US cargo short description
equals RELEASE"}:::decision N_CheckifStatusisRELEASE_Node0_action["Skip Iron Highway notification
processing and exit"]:::main N_CheckifStatusisRELEASE_Node0 -- Yes --> N_CheckifStatusisRELEASE_Node0_action N_CheckifStatusisRELEASE_Node0_action --> E_CheckifStatusisRELEASE S_CheckifStatusisRELEASE --> N_CheckifStatusisRELEASE_Node0 N_CheckifStatusisRELEASE_Node0 -- No --> E_CheckifStatusisRELEASE
equals RELEASE"}:::decision N_CheckifStatusisRELEASE_Node0_action["Skip Iron Highway notification
processing and exit"]:::main N_CheckifStatusisRELEASE_Node0 -- Yes --> N_CheckifStatusisRELEASE_Node0_action N_CheckifStatusisRELEASE_Node0_action --> E_CheckifStatusisRELEASE S_CheckifStatusisRELEASE --> N_CheckifStatusisRELEASE_Node0 N_CheckifStatusisRELEASE_Node0 -- No --> E_CheckifStatusisRELEASE
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
RT21 US cargo short description equals 'RELEASE'
THEN:
- Skip iron highway notification processing
- Exit
β Consolidated Acceptance Criteria
- Processing Iron Highway notification for a cargo record → lookup table 'IH' using saved waybill station as sequence ID to get station configuration
- The system needs to determine if the station supports Iron Highway notifications → the system looks up the IH table using the saved waybill station as the sequence 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_LookupIronHighwayStationTable(["Start Step"])
E_LookupIronHighwayStationTable(["End Step"])
N_LookupIronHighwayStationTable_Node0{"Processing Iron Highway
notification for a cargo record"}:::decision N_LookupIronHighwayStationTable_Node0_action["Lookup table IH using saved waybill
station as sequence ID to get
station configuration"]:::main N_LookupIronHighwayStationTable_Node0 -- Yes --> N_LookupIronHighwayStationTable_Node0_action N_LookupIronHighwayStationTable_Node0_action --> E_LookupIronHighwayStationTable S_LookupIronHighwayStationTable --> N_LookupIronHighwayStationTable_Node0 N_LookupIronHighwayStationTable_Node1{"The system needs to determine if
the station supports Iron Highway
notifications"}:::decision N_LookupIronHighwayStationTable_Node1_action["The system looks up the IH table
using the saved waybill station as
the sequence ID"]:::main N_LookupIronHighwayStationTable_Node1 -- Yes --> N_LookupIronHighwayStationTable_Node1_action N_LookupIronHighwayStationTable_Node1_action --> E_LookupIronHighwayStationTable N_LookupIronHighwayStationTable_Node0 -- No --> N_LookupIronHighwayStationTable_Node1 N_LookupIronHighwayStationTable_Node1 -- No --> E_LookupIronHighwayStationTable
notification for a cargo record"}:::decision N_LookupIronHighwayStationTable_Node0_action["Lookup table IH using saved waybill
station as sequence ID to get
station configuration"]:::main N_LookupIronHighwayStationTable_Node0 -- Yes --> N_LookupIronHighwayStationTable_Node0_action N_LookupIronHighwayStationTable_Node0_action --> E_LookupIronHighwayStationTable S_LookupIronHighwayStationTable --> N_LookupIronHighwayStationTable_Node0 N_LookupIronHighwayStationTable_Node1{"The system needs to determine if
the station supports Iron Highway
notifications"}:::decision N_LookupIronHighwayStationTable_Node1_action["The system looks up the IH table
using the saved waybill station as
the sequence ID"]:::main N_LookupIronHighwayStationTable_Node1 -- Yes --> N_LookupIronHighwayStationTable_Node1_action N_LookupIronHighwayStationTable_Node1_action --> E_LookupIronHighwayStationTable N_LookupIronHighwayStationTable_Node0 -- No --> N_LookupIronHighwayStationTable_Node1 N_LookupIronHighwayStationTable_Node1 -- No --> E_LookupIronHighwayStationTable
File: GCCUSIO.cbl
GIVEN:
A cargo record requires Iron Highway notification
WHEN:
Processing Iron Highway notification for a cargo record
THEN:
Lookup table 'IH' using saved waybill station as sequence ID to get station configuration
File: GCCUSIO.cbl
GIVEN:
A cargo record has passed initial status validation for Iron Highway notification
WHEN:
The system needs to determine if the station supports Iron Highway notifications
THEN:
The system looks up the IH table using the saved waybill station as the sequence ID
β Consolidated Acceptance Criteria
- Iron Highway station table lookup returns error flag not equal to '0' → skip Iron Highway notification 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_StationTableFound(["Start Step"])
E_StationTableFound(["End Step"])
N_StationTableFound_Node0{"Iron Highway station table lookup
returns error flag not equal to 0"}:::decision N_StationTableFound_Node0_action["Skip Iron Highway notification
processing and exit"]:::exclusion N_StationTableFound_Node0 -- Yes -->|Alternative| N_StationTableFound_Node0_action N_StationTableFound_Node0_action --> E_StationTableFound S_StationTableFound --> N_StationTableFound_Node0 N_StationTableFound_Node0 -- No --> E_StationTableFound
returns error flag not equal to 0"}:::decision N_StationTableFound_Node0_action["Skip Iron Highway notification
processing and exit"]:::exclusion N_StationTableFound_Node0 -- Yes -->|Alternative| N_StationTableFound_Node0_action N_StationTableFound_Node0_action --> E_StationTableFound S_StationTableFound --> N_StationTableFound_Node0 N_StationTableFound_Node0 -- No --> E_StationTableFound
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
Iron Highway station table lookup returns error flag not equal to '0'
THEN:
- Skip iron highway notification processing
- Exit
β Consolidated Acceptance Criteria
- Processing status determination for Iron Highway notification → set saved status to RT11 US cargo status AND set Iron Highway CCN status to RT21 US cargo short 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_SetStatusfromUSCargoDescription(["Start Step"])
E_SetStatusfromUSCargoDescription(["End Step"])
N_SetStatusfromUSCargoDescription_Node0{"Processing status determination for
Iron Highway notification"}:::decision N_SetStatusfromUSCargoDescription_Node0_action["Set saved status to RT11 US cargo
status AND set Iron Highway CCN
status to RT21 US cargo short
description"]:::main N_SetStatusfromUSCargoDescription_Node0 -- Yes --> N_SetStatusfromUSCargoDescription_Node0_action N_SetStatusfromUSCargoDescription_Node0_action --> E_SetStatusfromUSCargoDescription S_SetStatusfromUSCargoDescription --> N_SetStatusfromUSCargoDescription_Node0 N_SetStatusfromUSCargoDescription_Node0 -- No --> E_SetStatusfromUSCargoDescription
Iron Highway notification"}:::decision N_SetStatusfromUSCargoDescription_Node0_action["Set saved status to RT11 US cargo
status AND set Iron Highway CCN
status to RT21 US cargo short
description"]:::main N_SetStatusfromUSCargoDescription_Node0 -- Yes --> N_SetStatusfromUSCargoDescription_Node0_action N_SetStatusfromUSCargoDescription_Node0_action --> E_SetStatusfromUSCargoDescription S_SetStatusfromUSCargoDescription --> N_SetStatusfromUSCargoDescription_Node0 N_SetStatusfromUSCargoDescription_Node0 -- No --> E_SetStatusfromUSCargoDescription
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires Iron Highway notification AND station configuration exists AND status is not DELETED or RELEASE AND condition for SENT status is not met
WHEN:
Processing status determination for Iron Highway notification
THEN:
- Set saved status to rt11 us cargo status
- Set iron highway ccn status to rt21 us cargo short description
β Consolidated Acceptance Criteria
- Preparing the Iron Highway notification message → set record type to 'UC' AND set car ID from saved car number AND set waybill from saved waybill number 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_PrepareIronHighwayMessage(["Start Step"])
E_PrepareIronHighwayMessage(["End Step"])
N_PrepareIronHighwayMessage_Node0{"Preparing the Iron Highway
notification message"}:::decision N_PrepareIronHighwayMessage_Node0_action["Set record type to UC AND set car
ID from saved car number AND set
waybill from saved waybill number
AND set CCN from cargo CCN key"]:::main N_PrepareIronHighwayMessage_Node0 -- Yes --> N_PrepareIronHighwayMessage_Node0_action N_PrepareIronHighwayMessage_Node0_action --> E_PrepareIronHighwayMessage S_PrepareIronHighwayMessage --> N_PrepareIronHighwayMessage_Node0 N_PrepareIronHighwayMessage_Node0 -- No --> E_PrepareIronHighwayMessage
notification message"}:::decision N_PrepareIronHighwayMessage_Node0_action["Set record type to UC AND set car
ID from saved car number AND set
waybill from saved waybill number
AND set CCN from cargo CCN key"]:::main N_PrepareIronHighwayMessage_Node0 -- Yes --> N_PrepareIronHighwayMessage_Node0_action N_PrepareIronHighwayMessage_Node0_action --> E_PrepareIronHighwayMessage S_PrepareIronHighwayMessage --> N_PrepareIronHighwayMessage_Node0 N_PrepareIronHighwayMessage_Node0 -- No --> E_PrepareIronHighwayMessage
File: GCCUSIO.cbl
GIVEN:
A cargo record has been determined to require Iron Highway notification with valid status
WHEN:
Preparing the Iron Highway notification message
THEN:
- Set record type to 'uc' and set car id from saved car number
- Set waybill from saved waybill number
- Set ccn from cargo ccn key
β Consolidated Acceptance Criteria
- Sending the notification to Iron Highway system → call external program 'GCCIH' with common control block and Iron Highway message 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_CallIronHighwayInterfaceGCCIH(["Start Step"])
E_CallIronHighwayInterfaceGCCIH(["End Step"])
N_CallIronHighwayInterfaceGCCIH_Node0{"Sending the notification to Iron
Highway system"}:::decision N_CallIronHighwayInterfaceGCCIH_Node0_action["Call external program GCCIH with
common control block and Iron
Highway message structure"]:::main N_CallIronHighwayInterfaceGCCIH_Node0 -- Yes --> N_CallIronHighwayInterfaceGCCIH_Node0_action N_CallIronHighwayInterfaceGCCIH_Node0_action --> E_CallIronHighwayInterfaceGCCIH S_CallIronHighwayInterfaceGCCIH --> N_CallIronHighwayInterfaceGCCIH_Node0 N_CallIronHighwayInterfaceGCCIH_Node0 -- No --> E_CallIronHighwayInterfaceGCCIH
Highway system"}:::decision N_CallIronHighwayInterfaceGCCIH_Node0_action["Call external program GCCIH with
common control block and Iron
Highway message structure"]:::main N_CallIronHighwayInterfaceGCCIH_Node0 -- Yes --> N_CallIronHighwayInterfaceGCCIH_Node0_action N_CallIronHighwayInterfaceGCCIH_Node0_action --> E_CallIronHighwayInterfaceGCCIH S_CallIronHighwayInterfaceGCCIH --> N_CallIronHighwayInterfaceGCCIH_Node0 N_CallIronHighwayInterfaceGCCIH_Node0 -- No --> E_CallIronHighwayInterfaceGCCIH
File: GCCUSIO.cbl
GIVEN:
Iron Highway notification message is prepared with all required cargo information
WHEN:
Sending the notification to Iron Highway system
THEN:
- Call external program 'gccih' with common control block
- Iron highway message structure
β Consolidated Acceptance Criteria
- The system needs to determine the final status for notification processing → the system should set the final status to DELETED if cargo status is DELETED, or RELEASE if cargo status is RELEASE, or SENT if US cargo description is empty and CP status is SENT, or use the US cargo short description as the final 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_DetermineFinalStatus(["Start Step"])
E_DetermineFinalStatus(["End Step"])
N_DetermineFinalStatus_Node0{"The system needs to determine the
final status for notification
processing"}:::decision N_DetermineFinalStatus_Node0_action["The system should set the final
status to DELETED if cargo status is
DELETED, or RELEASE if cargo status
is RELEASE, or SENT if US cargo
description is empty and CP status
is SENT, or use the US cargo short
description as the final status"]:::main N_DetermineFinalStatus_Node0 -- Yes --> N_DetermineFinalStatus_Node0_action N_DetermineFinalStatus_Node0_action --> E_DetermineFinalStatus S_DetermineFinalStatus --> N_DetermineFinalStatus_Node0 N_DetermineFinalStatus_Node0 -- No --> E_DetermineFinalStatus
final status for notification
processing"}:::decision N_DetermineFinalStatus_Node0_action["The system should set the final
status to DELETED if cargo status is
DELETED, or RELEASE if cargo status
is RELEASE, or SENT if US cargo
description is empty and CP status
is SENT, or use the US cargo short
description as the final status"]:::main N_DetermineFinalStatus_Node0 -- Yes --> N_DetermineFinalStatus_Node0_action N_DetermineFinalStatus_Node0_action --> E_DetermineFinalStatus S_DetermineFinalStatus --> N_DetermineFinalStatus_Node0 N_DetermineFinalStatus_Node0 -- No --> E_DetermineFinalStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with CP cargo status description and US cargo status description
WHEN:
The system needs to determine the final status for notification processing
THEN:
- The system should set the final status to deleted if cargo status is deleted, or release if cargo status is release, or sent if us cargo description is empty
- Cp status is sent, or use the us cargo short description as the final status
β Consolidated Acceptance Criteria
- The current US cargo status matches the saved status from previous notification → the system should skip sending the notification to avoid duplicate status 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_DoesUSCargoDescriptionMatchSavedStatus(["Start Step"])
E_DoesUSCargoDescriptionMatchSavedStatus(["End Step"])
N_DoesUSCargoDescriptionMatchSavedStatus_Node0{"The current US cargo status matches
the saved status from previous
notification"}:::decision N_DoesUSCargoDescriptionMatchSavedStatus_Node0_action["The system should skip sending the
notification to avoid duplicate
status updates"]:::main N_DoesUSCargoDescriptionMatchSavedStatus_Node0 -- Yes --> N_DoesUSCargoDescriptionMatchSavedStatus_Node0_action N_DoesUSCargoDescriptionMatchSavedStatus_Node0_action --> E_DoesUSCargoDescriptionMatchSavedStatus S_DoesUSCargoDescriptionMatchSavedStatus --> N_DoesUSCargoDescriptionMatchSavedStatus_Node0 N_DoesUSCargoDescriptionMatchSavedStatus_Node0 -- No --> E_DoesUSCargoDescriptionMatchSavedStatus
the saved status from previous
notification"}:::decision N_DoesUSCargoDescriptionMatchSavedStatus_Node0_action["The system should skip sending the
notification to avoid duplicate
status updates"]:::main N_DoesUSCargoDescriptionMatchSavedStatus_Node0 -- Yes --> N_DoesUSCargoDescriptionMatchSavedStatus_Node0_action N_DoesUSCargoDescriptionMatchSavedStatus_Node0_action --> E_DoesUSCargoDescriptionMatchSavedStatus S_DoesUSCargoDescriptionMatchSavedStatus --> N_DoesUSCargoDescriptionMatchSavedStatus_Node0 N_DoesUSCargoDescriptionMatchSavedStatus_Node0 -- No --> E_DoesUSCargoDescriptionMatchSavedStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record has a current US cargo status and a previously saved status from prior notification
WHEN:
The current US cargo status matches the saved status from previous notification
THEN:
The system should skip sending the notification to avoid duplicate status updates
β Consolidated Acceptance Criteria
- The system determines the final status for notification → the system should use SENT as the final status for the 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_IsUSCargoDescriptionEmptyANDCPStatusisSENT(["Start Step"])
E_IsUSCargoDescriptionEmptyANDCPStatusisSENT(["End Step"])
N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0{"The system determines the final
status for notification"}:::decision N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0_action["The system should use SENT as the
final status for the notification"]:::main N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0 -- Yes --> N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0_action N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0_action --> E_IsUSCargoDescriptionEmptyANDCPStatusisSENT S_IsUSCargoDescriptionEmptyANDCPStatusisSENT --> N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0 N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0 -- No --> E_IsUSCargoDescriptionEmptyANDCPStatusisSENT
status for notification"}:::decision N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0_action["The system should use SENT as the
final status for the notification"]:::main N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0 -- Yes --> N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0_action N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0_action --> E_IsUSCargoDescriptionEmptyANDCPStatusisSENT S_IsUSCargoDescriptionEmptyANDCPStatusisSENT --> N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0 N_IsUSCargoDescriptionEmptyANDCPStatusisSENT_Node0 -- No --> E_IsUSCargoDescriptionEmptyANDCPStatusisSENT
File: GCCUSIO.cbl
GIVEN:
A cargo record has empty US cargo short description and CP cargo status description is SENT
WHEN:
The system determines the final status for notification
THEN:
The system should use SENT as the final status for the notification
β Consolidated Acceptance Criteria
- The system determines the final status for notification → the system should set the final status to DELETED and use this for the notification regardless of other status 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_IsCargoStatusDELETED(["Start Step"])
E_IsCargoStatusDELETED(["End Step"])
N_IsCargoStatusDELETED_Node0{"The system determines the final
status for notification"}:::decision N_IsCargoStatusDELETED_Node0_action["The system should set the final
status to DELETED and use this for
the notification regardless of other
status values"]:::main N_IsCargoStatusDELETED_Node0 -- Yes --> N_IsCargoStatusDELETED_Node0_action N_IsCargoStatusDELETED_Node0_action --> E_IsCargoStatusDELETED S_IsCargoStatusDELETED --> N_IsCargoStatusDELETED_Node0 N_IsCargoStatusDELETED_Node0 -- No --> E_IsCargoStatusDELETED
status for notification"}:::decision N_IsCargoStatusDELETED_Node0_action["The system should set the final
status to DELETED and use this for
the notification regardless of other
status values"]:::main N_IsCargoStatusDELETED_Node0 -- Yes --> N_IsCargoStatusDELETED_Node0_action N_IsCargoStatusDELETED_Node0_action --> E_IsCargoStatusDELETED S_IsCargoStatusDELETED --> N_IsCargoStatusDELETED_Node0 N_IsCargoStatusDELETED_Node0 -- No --> E_IsCargoStatusDELETED
File: GCCUSIO.cbl
GIVEN:
A cargo record has CP cargo status description set to DELETED
WHEN:
The system determines the final status for notification
THEN:
- The system should set the final status to deleted
- Use this for the notification regardless of other status values
β Consolidated Acceptance Criteria
- The system determines the final status for notification → the system should set the final status to RELEASE and use this for the 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_IsCargoStatusRELEASE(["Start Step"])
E_IsCargoStatusRELEASE(["End Step"])
N_IsCargoStatusRELEASE_Node0{"The system determines the final
status for notification"}:::decision N_IsCargoStatusRELEASE_Node0_action["The system should set the final
status to RELEASE and use this for
the notification"]:::main N_IsCargoStatusRELEASE_Node0 -- Yes --> N_IsCargoStatusRELEASE_Node0_action N_IsCargoStatusRELEASE_Node0_action --> E_IsCargoStatusRELEASE S_IsCargoStatusRELEASE --> N_IsCargoStatusRELEASE_Node0 N_IsCargoStatusRELEASE_Node0 -- No --> E_IsCargoStatusRELEASE
status for notification"}:::decision N_IsCargoStatusRELEASE_Node0_action["The system should set the final
status to RELEASE and use this for
the notification"]:::main N_IsCargoStatusRELEASE_Node0 -- Yes --> N_IsCargoStatusRELEASE_Node0_action N_IsCargoStatusRELEASE_Node0_action --> E_IsCargoStatusRELEASE S_IsCargoStatusRELEASE --> N_IsCargoStatusRELEASE_Node0 N_IsCargoStatusRELEASE_Node0 -- No --> E_IsCargoStatusRELEASE
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has CP cargo status description set to RELEASE and is not DELETED
WHEN:
The system determines the final status for notification
THEN:
- The system should set the final status to release
- Use this for the notification
β Consolidated Acceptance Criteria
- The US cargo status description is empty AND the CP cargo status description equals 'SENT ' → the system sets the saved IH status to the CP cargo status description 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_SetStatustoSENT(["Start Step"])
E_SetStatustoSENT(["End Step"])
N_SetStatustoSENT_Node0{"The US cargo status description is
empty AND the CP cargo status
description equals SENT"}:::decision N_SetStatustoSENT_Node0_action["The system sets the saved IH status
to the CP cargo status description
value"]:::main N_SetStatustoSENT_Node0 -- Yes --> N_SetStatustoSENT_Node0_action N_SetStatustoSENT_Node0_action --> E_SetStatustoSENT S_SetStatustoSENT --> N_SetStatustoSENT_Node0 N_SetStatustoSENT_Node0 -- No --> E_SetStatustoSENT
empty AND the CP cargo status
description equals SENT"}:::decision N_SetStatustoSENT_Node0_action["The system sets the saved IH status
to the CP cargo status description
value"]:::main N_SetStatustoSENT_Node0 -- Yes --> N_SetStatustoSENT_Node0_action N_SetStatustoSENT_Node0_action --> E_SetStatustoSENT S_SetStatustoSENT --> N_SetStatustoSENT_Node0 N_SetStatustoSENT_Node0 -- No --> E_SetStatustoSENT
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
- The us cargo status description is empty
- The cp cargo status description equals 'sent '
THEN:
The system sets the saved IH status to the CP cargo status description value
β Consolidated Acceptance Criteria
- Both US cargo status description is empty AND CP cargo status description is empty → the system exits the notification process without sending a 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_ExitNoMessageNeeded(["Start Step"])
E_ExitNoMessageNeeded(["End Step"])
N_ExitNoMessageNeeded_Node0{"Both US cargo status description is
empty AND CP cargo status
description is empty"}:::decision N_ExitNoMessageNeeded_Node0_action["The system exits the notification
process without sending a message"]:::main N_ExitNoMessageNeeded_Node0 -- Yes --> N_ExitNoMessageNeeded_Node0_action N_ExitNoMessageNeeded_Node0_action --> E_ExitNoMessageNeeded S_ExitNoMessageNeeded --> N_ExitNoMessageNeeded_Node0 N_ExitNoMessageNeeded_Node0 -- No --> E_ExitNoMessageNeeded
empty AND CP cargo status
description is empty"}:::decision N_ExitNoMessageNeeded_Node0_action["The system exits the notification
process without sending a message"]:::main N_ExitNoMessageNeeded_Node0 -- Yes --> N_ExitNoMessageNeeded_Node0_action N_ExitNoMessageNeeded_Node0_action --> E_ExitNoMessageNeeded S_ExitNoMessageNeeded --> N_ExitNoMessageNeeded_Node0 N_ExitNoMessageNeeded_Node0 -- No --> E_ExitNoMessageNeeded
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for Iron Highway notification
WHEN:
- Both us cargo status description is empty
- Cp cargo status description is empty
THEN:
The system exits the notification process without sending a message
β Consolidated Acceptance Criteria
- The saved IH status equals the current US cargo status description → the system exits the notification process without sending a 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_ExitNoChange(["Start Step"])
E_ExitNoChange(["End Step"])
N_ExitNoChange_Node0{"The saved IH status equals the
current US cargo status description"}:::decision N_ExitNoChange_Node0_action["The system exits the notification
process without sending a message"]:::main N_ExitNoChange_Node0 -- Yes --> N_ExitNoChange_Node0_action N_ExitNoChange_Node0_action --> E_ExitNoChange S_ExitNoChange --> N_ExitNoChange_Node0 N_ExitNoChange_Node0 -- No --> E_ExitNoChange
current US cargo status description"}:::decision N_ExitNoChange_Node0_action["The system exits the notification
process without sending a message"]:::main N_ExitNoChange_Node0 -- Yes --> N_ExitNoChange_Node0_action N_ExitNoChange_Node0_action --> E_ExitNoChange S_ExitNoChange --> N_ExitNoChange_Node0 N_ExitNoChange_Node0 -- No --> E_ExitNoChange
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for Iron Highway notification AND the status is not DELETED or RELEASE
WHEN:
The saved IH status equals the current US cargo status description
THEN:
The system exits the notification process without sending a message
β Consolidated Acceptance Criteria
- The table lookup returns a non-zero return flag indicating the station is not found → the system exits the notification process without sending a 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_ExitStationNotConfigured(["Start Step"])
E_ExitStationNotConfigured(["End Step"])
N_ExitStationNotConfigured_Node0{"The table lookup returns a non-zero
return flag indicating the station
is not found"}:::decision N_ExitStationNotConfigured_Node0_action["The system exits the notification
process without sending a message"]:::main N_ExitStationNotConfigured_Node0 -- Yes --> N_ExitStationNotConfigured_Node0_action N_ExitStationNotConfigured_Node0_action --> E_ExitStationNotConfigured S_ExitStationNotConfigured --> N_ExitStationNotConfigured_Node0 N_ExitStationNotConfigured_Node0 -- No --> E_ExitStationNotConfigured
return flag indicating the station
is not found"}:::decision N_ExitStationNotConfigured_Node0_action["The system exits the notification
process without sending a message"]:::main N_ExitStationNotConfigured_Node0 -- Yes --> N_ExitStationNotConfigured_Node0_action N_ExitStationNotConfigured_Node0_action --> E_ExitStationNotConfigured S_ExitStationNotConfigured --> N_ExitStationNotConfigured_Node0 N_ExitStationNotConfigured_Node0 -- No --> E_ExitStationNotConfigured
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
The system has looked up the Iron Highway station configuration table
WHEN:
The table lookup returns a non-zero return flag indicating the station is not found
THEN:
The system exits the notification process without sending a message
β Consolidated Acceptance Criteria
- The CP cargo status description equals 'DELETED' → the system sets the Iron Highway message status to 'DELETED' and the saved IH status to 'DELETED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageStatustoDELETED(["Start Step"])
E_SetMessageStatustoDELETED(["End Step"])
N_SetMessageStatustoDELETED_Node0{"The CP cargo status description
equals DELETED"}:::decision N_SetMessageStatustoDELETED_Node0_action["The system sets the Iron Highway
message status to DELETED and the
saved IH status to DELETED"]:::main N_SetMessageStatustoDELETED_Node0 -- Yes --> N_SetMessageStatustoDELETED_Node0_action N_SetMessageStatustoDELETED_Node0_action --> E_SetMessageStatustoDELETED S_SetMessageStatustoDELETED --> N_SetMessageStatustoDELETED_Node0 N_SetMessageStatustoDELETED_Node0 -- No --> E_SetMessageStatustoDELETED
equals DELETED"}:::decision N_SetMessageStatustoDELETED_Node0_action["The system sets the Iron Highway
message status to DELETED and the
saved IH status to DELETED"]:::main N_SetMessageStatustoDELETED_Node0 -- Yes --> N_SetMessageStatustoDELETED_Node0_action N_SetMessageStatustoDELETED_Node0_action --> E_SetMessageStatustoDELETED S_SetMessageStatustoDELETED --> N_SetMessageStatustoDELETED_Node0 N_SetMessageStatustoDELETED_Node0 -- No --> E_SetMessageStatustoDELETED
File: GCCUSIO.cbl
GIVEN:
A cargo record is being prepared for Iron Highway notification
WHEN:
The CP cargo status description equals 'DELETED'
THEN:
The system sets the Iron Highway message status to 'DELETED' and the saved IH status to 'DELETED'
β Consolidated Acceptance Criteria
- The CP cargo status description equals 'RELEASE' → the system sets the Iron Highway message status to 'RELEASE' and the saved IH status to 'RELEASE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageStatustoRELEASE(["Start Step"])
E_SetMessageStatustoRELEASE(["End Step"])
N_SetMessageStatustoRELEASE_Node0{"The CP cargo status description
equals RELEASE"}:::decision N_SetMessageStatustoRELEASE_Node0_action["The system sets the Iron Highway
message status to RELEASE and the
saved IH status to RELEASE"]:::main N_SetMessageStatustoRELEASE_Node0 -- Yes --> N_SetMessageStatustoRELEASE_Node0_action N_SetMessageStatustoRELEASE_Node0_action --> E_SetMessageStatustoRELEASE S_SetMessageStatustoRELEASE --> N_SetMessageStatustoRELEASE_Node0 N_SetMessageStatustoRELEASE_Node0 -- No --> E_SetMessageStatustoRELEASE
equals RELEASE"}:::decision N_SetMessageStatustoRELEASE_Node0_action["The system sets the Iron Highway
message status to RELEASE and the
saved IH status to RELEASE"]:::main N_SetMessageStatustoRELEASE_Node0 -- Yes --> N_SetMessageStatustoRELEASE_Node0_action N_SetMessageStatustoRELEASE_Node0_action --> E_SetMessageStatustoRELEASE S_SetMessageStatustoRELEASE --> N_SetMessageStatustoRELEASE_Node0 N_SetMessageStatustoRELEASE_Node0 -- No --> E_SetMessageStatustoRELEASE
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being prepared for Iron Highway notification AND the status is not DELETED
WHEN:
The CP cargo status description equals 'RELEASE'
THEN:
The system sets the Iron Highway message status to 'RELEASE' and the saved IH status to 'RELEASE'
β Consolidated Acceptance Criteria
- The US cargo status description is empty AND the CP cargo status description equals 'SENT ' → the system sets the Iron Highway message status to 'SENT'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageStatustoSENT(["Start Step"])
E_SetMessageStatustoSENT(["End Step"])
N_SetMessageStatustoSENT_Node0{"The US cargo status description is
empty AND the CP cargo status
description equals SENT"}:::decision N_SetMessageStatustoSENT_Node0_action["The system sets the Iron Highway
message status to SENT"]:::main N_SetMessageStatustoSENT_Node0 -- Yes --> N_SetMessageStatustoSENT_Node0_action N_SetMessageStatustoSENT_Node0_action --> E_SetMessageStatustoSENT S_SetMessageStatustoSENT --> N_SetMessageStatustoSENT_Node0 N_SetMessageStatustoSENT_Node0 -- No --> E_SetMessageStatustoSENT
empty AND the CP cargo status
description equals SENT"}:::decision N_SetMessageStatustoSENT_Node0_action["The system sets the Iron Highway
message status to SENT"]:::main N_SetMessageStatustoSENT_Node0 -- Yes --> N_SetMessageStatustoSENT_Node0_action N_SetMessageStatustoSENT_Node0_action --> E_SetMessageStatustoSENT S_SetMessageStatustoSENT --> N_SetMessageStatustoSENT_Node0 N_SetMessageStatustoSENT_Node0 -- No --> E_SetMessageStatustoSENT
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being prepared for Iron Highway notification AND the status is not DELETED or RELEASE
WHEN:
- The us cargo status description is empty
- The cp cargo status description equals 'sent '
THEN:
The system sets the Iron Highway message status to 'SENT'
β Consolidated Acceptance Criteria
- The US cargo status description is not empty OR the CP cargo status description is not 'SENT ' → the system sets the Iron Highway message status to the US cargo status description and updates the saved IH status to the US 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_SetMessageStatusfromUSCargoDescription(["Start Step"])
E_SetMessageStatusfromUSCargoDescription(["End Step"])
N_SetMessageStatusfromUSCargoDescription_Node0{"The US cargo status description is
not empty OR the CP cargo status
description is not SENT"}:::decision N_SetMessageStatusfromUSCargoDescription_Node0_action["The system sets the Iron Highway
message status to the US cargo
status description and updates the
saved IH status to the US cargo
status"]:::main N_SetMessageStatusfromUSCargoDescription_Node0 -- Yes --> N_SetMessageStatusfromUSCargoDescription_Node0_action N_SetMessageStatusfromUSCargoDescription_Node0_action --> E_SetMessageStatusfromUSCargoDescription S_SetMessageStatusfromUSCargoDescription --> N_SetMessageStatusfromUSCargoDescription_Node0 N_SetMessageStatusfromUSCargoDescription_Node0 -- No --> E_SetMessageStatusfromUSCargoDescription
not empty OR the CP cargo status
description is not SENT"}:::decision N_SetMessageStatusfromUSCargoDescription_Node0_action["The system sets the Iron Highway
message status to the US cargo
status description and updates the
saved IH status to the US cargo
status"]:::main N_SetMessageStatusfromUSCargoDescription_Node0 -- Yes --> N_SetMessageStatusfromUSCargoDescription_Node0_action N_SetMessageStatusfromUSCargoDescription_Node0_action --> E_SetMessageStatusfromUSCargoDescription S_SetMessageStatusfromUSCargoDescription --> N_SetMessageStatusfromUSCargoDescription_Node0 N_SetMessageStatusfromUSCargoDescription_Node0 -- No --> E_SetMessageStatusfromUSCargoDescription
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being prepared for Iron Highway notification AND the status is not DELETED or RELEASE
WHEN:
The US cargo status description is not empty OR the CP cargo status description is not 'SENT '
THEN:
- The system sets the iron highway message status to the us cargo status description
- Updates the saved ih status to the us cargo status
β Consolidated Acceptance Criteria
- The system prepares the notification message content → the system sets record type to 'UC', car ID from saved car number, waybill from saved waybill number, and CCN from cargo 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_SetMessageRecordTypetoUC(["Start Step"])
E_SetMessageRecordTypetoUC(["End Step"])
N_SetMessageRecordTypetoUC_Node0{"The system prepares the
notification message content"}:::decision N_SetMessageRecordTypetoUC_Node0_action["The system sets record type to UC ,
car ID from saved car number,
waybill from saved waybill number,
and CCN from cargo key"]:::main N_SetMessageRecordTypetoUC_Node0 -- Yes --> N_SetMessageRecordTypetoUC_Node0_action N_SetMessageRecordTypetoUC_Node0_action --> E_SetMessageRecordTypetoUC S_SetMessageRecordTypetoUC --> N_SetMessageRecordTypetoUC_Node0 N_SetMessageRecordTypetoUC_Node0 -- No --> E_SetMessageRecordTypetoUC
notification message content"}:::decision N_SetMessageRecordTypetoUC_Node0_action["The system sets record type to UC ,
car ID from saved car number,
waybill from saved waybill number,
and CCN from cargo key"]:::main N_SetMessageRecordTypetoUC_Node0 -- Yes --> N_SetMessageRecordTypetoUC_Node0_action N_SetMessageRecordTypetoUC_Node0_action --> E_SetMessageRecordTypetoUC S_SetMessageRecordTypetoUC --> N_SetMessageRecordTypetoUC_Node0 N_SetMessageRecordTypetoUC_Node0 -- No --> E_SetMessageRecordTypetoUC
File: GCCUSIO.cbl
GIVEN:
A cargo record has been validated and status determined for Iron Highway notification
WHEN:
The system prepares the notification message content
THEN:
The system sets record type to 'UC', car ID from saved car number, waybill from saved waybill number, and CCN from cargo key
β Consolidated Acceptance Criteria
- The system is ready to send the notification → the system calls the GCCIH program with the common control block and Iron Highway message 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_CallIronHighwayInterface(["Start Step"])
E_CallIronHighwayInterface(["End Step"])
N_CallIronHighwayInterface_Node0{"The system is ready to send the
notification"}:::decision N_CallIronHighwayInterface_Node0_action["The system calls the GCCIH program
with the common control block and
Iron Highway message structure"]:::main N_CallIronHighwayInterface_Node0 -- Yes --> N_CallIronHighwayInterface_Node0_action N_CallIronHighwayInterface_Node0_action --> E_CallIronHighwayInterface S_CallIronHighwayInterface --> N_CallIronHighwayInterface_Node0 N_CallIronHighwayInterface_Node0 -- No --> E_CallIronHighwayInterface
notification"}:::decision N_CallIronHighwayInterface_Node0_action["The system calls the GCCIH program
with the common control block and
Iron Highway message structure"]:::main N_CallIronHighwayInterface_Node0 -- Yes --> N_CallIronHighwayInterface_Node0_action N_CallIronHighwayInterface_Node0_action --> E_CallIronHighwayInterface S_CallIronHighwayInterface --> N_CallIronHighwayInterface_Node0 N_CallIronHighwayInterface_Node0 -- No --> E_CallIronHighwayInterface
File: GCCUSIO.cbl
GIVEN:
The Iron Highway notification message has been formatted with all required information
WHEN:
The system is ready to send the notification
THEN:
- The system calls the gccih program with the common control block
- Iron highway message structure
β Consolidated Acceptance Criteria
- The system needs to retrieve N9 reference data for the cargo → the system builds a secondary data key using the cargo's US CCN key, sets record type to '02', and sets sequence number to '0001'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001(["Start Step"])
E_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001(["End Step"])
N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0{"The system needs to retrieve N9
reference data for the cargo"}:::decision N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0_action["The system builds a secondary data
key using the cargo s US CCN key,
sets record type to 02 , and sets
sequence number to 0001"]:::main N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0 -- Yes --> N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0_action N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0_action --> E_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001 S_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001 --> N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0 N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0 -- No --> E_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001
reference data for the cargo"}:::decision N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0_action["The system builds a secondary data
key using the cargo s US CCN key,
sets record type to 02 , and sets
sequence number to 0001"]:::main N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0 -- Yes --> N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0_action N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0_action --> E_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001 S_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001 --> N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0 N_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001_Node0 -- No --> E_BuildSecondaryDataKeyUseCargoControlNumberSetRecordType02SetSequence0001
File: GCCUSIO.cbl
GIVEN:
A cargo record with a valid US CCN key exists
WHEN:
The system needs to retrieve N9 reference data for the cargo
THEN:
The system builds a secondary data key using the cargo's US CCN key, sets record type to '02', and sets sequence number to '0001'
β Consolidated Acceptance Criteria
- The system executes a retrieval operation for secondary cargo data → the system calls the database interface to retrieve the GCSUSS02 segment using the qualified 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_RetrieveSecondaryCargoDataGCSUSS02Segment(["Start Step"])
E_RetrieveSecondaryCargoDataGCSUSS02Segment(["End Step"])
N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0{"The system executes a retrieval
operation for secondary cargo data"}:::decision N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0_action["The system calls the database
interface to retrieve the GCSUSS02
segment using the qualified key"]:::main N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0 -- Yes --> N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0_action N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0_action --> E_RetrieveSecondaryCargoDataGCSUSS02Segment S_RetrieveSecondaryCargoDataGCSUSS02Segment --> N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0 N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0 -- No --> E_RetrieveSecondaryCargoDataGCSUSS02Segment
operation for secondary cargo data"}:::decision N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0_action["The system calls the database
interface to retrieve the GCSUSS02
segment using the qualified key"]:::main N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0 -- Yes --> N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0_action N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0_action --> E_RetrieveSecondaryCargoDataGCSUSS02Segment S_RetrieveSecondaryCargoDataGCSUSS02Segment --> N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0 N_RetrieveSecondaryCargoDataGCSUSS02Segment_Node0 -- No --> E_RetrieveSecondaryCargoDataGCSUSS02Segment
File: GCCUSIO.cbl
GIVEN:
A secondary data key has been constructed with cargo control number, record type '02', and sequence '0001'
WHEN:
The system executes a retrieval operation for secondary cargo data
THEN:
The system calls the database interface to retrieve the GCSUSS02 segment using the qualified key
β Consolidated Acceptance Criteria
- The system checks the operation result status → if the status code is spaces (successful), secondary data is available for N9 processing, otherwise no secondary data 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_SecondaryDataFound(["Start Step"])
E_SecondaryDataFound(["End Step"])
N_SecondaryDataFound_Node0{"The system checks the operation
result status"}:::decision N_SecondaryDataFound_Node0_action["If the status code is spaces
successful, secondary data is
available for N9 processing,
otherwise no secondary data is
available"]:::main N_SecondaryDataFound_Node0 -- Yes --> N_SecondaryDataFound_Node0_action N_SecondaryDataFound_Node0_action --> E_SecondaryDataFound S_SecondaryDataFound --> N_SecondaryDataFound_Node0 N_SecondaryDataFound_Node0 -- No --> E_SecondaryDataFound
result status"}:::decision N_SecondaryDataFound_Node0_action["If the status code is spaces
successful, secondary data is
available for N9 processing,
otherwise no secondary data is
available"]:::main N_SecondaryDataFound_Node0 -- Yes --> N_SecondaryDataFound_Node0_action N_SecondaryDataFound_Node0_action --> E_SecondaryDataFound S_SecondaryDataFound --> N_SecondaryDataFound_Node0 N_SecondaryDataFound_Node0 -- No --> E_SecondaryDataFound
File: GCCUSIO.cbl
GIVEN:
A retrieval operation for secondary cargo data has been executed
WHEN:
The system checks the operation result status
THEN:
If the status code is spaces (successful), secondary data is available for N9 processing, otherwise no secondary data is available
β Consolidated Acceptance Criteria
- The system processes N9 reference entries → the system performs 20 iterations, incrementing the N9 counter by 1 each time to access each reference entry
- The system processes the N9 reference numbers → the system loops through 20 reference entries, checks each reference qualifier, and extracts the reference number as shipment ID when the qualifier equals 'CN'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoopThrough20N9ReferenceEntries(["Start Step"])
E_LoopThrough20N9ReferenceEntries(["End Step"])
N_LoopThrough20N9ReferenceEntries_Node0{"The system processes N9 reference
entries"}:::decision N_LoopThrough20N9ReferenceEntries_Node0_action["The system performs 20 iterations,
incrementing the N9 counter by 1
each time to access each reference
entry"]:::main N_LoopThrough20N9ReferenceEntries_Node0 -- Yes --> N_LoopThrough20N9ReferenceEntries_Node0_action N_LoopThrough20N9ReferenceEntries_Node0_action --> E_LoopThrough20N9ReferenceEntries S_LoopThrough20N9ReferenceEntries --> N_LoopThrough20N9ReferenceEntries_Node0 N_LoopThrough20N9ReferenceEntries_Node1{"The system processes the N9
reference numbers"}:::decision N_LoopThrough20N9ReferenceEntries_Node1_action["The system loops through 20
reference entries, checks each
reference qualifier, and extracts
the reference number as shipment ID
when the qualifier equals CN"]:::main N_LoopThrough20N9ReferenceEntries_Node1 -- Yes --> N_LoopThrough20N9ReferenceEntries_Node1_action N_LoopThrough20N9ReferenceEntries_Node1_action --> E_LoopThrough20N9ReferenceEntries N_LoopThrough20N9ReferenceEntries_Node0 -- No --> N_LoopThrough20N9ReferenceEntries_Node1 N_LoopThrough20N9ReferenceEntries_Node1 -- No --> E_LoopThrough20N9ReferenceEntries
entries"}:::decision N_LoopThrough20N9ReferenceEntries_Node0_action["The system performs 20 iterations,
incrementing the N9 counter by 1
each time to access each reference
entry"]:::main N_LoopThrough20N9ReferenceEntries_Node0 -- Yes --> N_LoopThrough20N9ReferenceEntries_Node0_action N_LoopThrough20N9ReferenceEntries_Node0_action --> E_LoopThrough20N9ReferenceEntries S_LoopThrough20N9ReferenceEntries --> N_LoopThrough20N9ReferenceEntries_Node0 N_LoopThrough20N9ReferenceEntries_Node1{"The system processes the N9
reference numbers"}:::decision N_LoopThrough20N9ReferenceEntries_Node1_action["The system loops through 20
reference entries, checks each
reference qualifier, and extracts
the reference number as shipment ID
when the qualifier equals CN"]:::main N_LoopThrough20N9ReferenceEntries_Node1 -- Yes --> N_LoopThrough20N9ReferenceEntries_Node1_action N_LoopThrough20N9ReferenceEntries_Node1_action --> E_LoopThrough20N9ReferenceEntries N_LoopThrough20N9ReferenceEntries_Node0 -- No --> N_LoopThrough20N9ReferenceEntries_Node1 N_LoopThrough20N9ReferenceEntries_Node1 -- No --> E_LoopThrough20N9ReferenceEntries
File: GCCUSIO.cbl
GIVEN:
The N9 counter has been initialized and secondary data is available
WHEN:
The system processes N9 reference entries
THEN:
The system performs 20 iterations, incrementing the N9 counter by 1 each time to access each reference entry
File: GCCUSIO.cbl
GIVEN:
A secondary cargo record exists with N9 reference number data
WHEN:
The system processes the N9 reference numbers
THEN:
The system loops through 20 reference entries, checks each reference qualifier, and extracts the reference number as shipment ID when the qualifier equals 'CN'
β Consolidated Acceptance Criteria
- The system examines the N9 reference number qualifier for the current entry → if the qualifier equals 'CN', the entry contains shipment ID information, otherwise it contains other 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_N9QualifierCNShipmentID(["Start Step"])
E_N9QualifierCNShipmentID(["End Step"])
N_N9QualifierCNShipmentID_Node0{"The system examines the N9
reference number qualifier for the
current entry"}:::decision N_N9QualifierCNShipmentID_Node0_action["If the qualifier equals CN , the
entry contains shipment ID
information, otherwise it contains
other reference data"]:::main N_N9QualifierCNShipmentID_Node0 -- Yes --> N_N9QualifierCNShipmentID_Node0_action N_N9QualifierCNShipmentID_Node0_action --> E_N9QualifierCNShipmentID S_N9QualifierCNShipmentID --> N_N9QualifierCNShipmentID_Node0 N_N9QualifierCNShipmentID_Node0 -- No --> E_N9QualifierCNShipmentID
reference number qualifier for the
current entry"}:::decision N_N9QualifierCNShipmentID_Node0_action["If the qualifier equals CN , the
entry contains shipment ID
information, otherwise it contains
other reference data"]:::main N_N9QualifierCNShipmentID_Node0 -- Yes --> N_N9QualifierCNShipmentID_Node0_action N_N9QualifierCNShipmentID_Node0_action --> E_N9QualifierCNShipmentID S_N9QualifierCNShipmentID --> N_N9QualifierCNShipmentID_Node0 N_N9QualifierCNShipmentID_Node0 -- No --> E_N9QualifierCNShipmentID
File: GCCUSIO.cbl
GIVEN:
An N9 reference entry is being processed during the iteration
WHEN:
The system examines the N9 reference number qualifier for the current entry
THEN:
If the qualifier equals 'CN', the entry contains shipment ID information, otherwise it contains other reference data
β Consolidated Acceptance Criteria
- The system needs to process N9 reference numbers for shipment identification → the system retrieves the secondary cargo record with record type '02' and sequence '0001' using the 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_RetrieveSecondaryCargoRecordType02(["Start Step"])
E_RetrieveSecondaryCargoRecordType02(["End Step"])
N_RetrieveSecondaryCargoRecordType02_Node0{"The system needs to process N9
reference numbers for shipment
identification"}:::decision N_RetrieveSecondaryCargoRecordType02_Node0_action["The system retrieves the secondary
cargo record with record type 02 and
sequence 0001 using the cargo CCN
key"]:::main N_RetrieveSecondaryCargoRecordType02_Node0 -- Yes --> N_RetrieveSecondaryCargoRecordType02_Node0_action N_RetrieveSecondaryCargoRecordType02_Node0_action --> E_RetrieveSecondaryCargoRecordType02 S_RetrieveSecondaryCargoRecordType02 --> N_RetrieveSecondaryCargoRecordType02_Node0 N_RetrieveSecondaryCargoRecordType02_Node0 -- No --> E_RetrieveSecondaryCargoRecordType02
reference numbers for shipment
identification"}:::decision N_RetrieveSecondaryCargoRecordType02_Node0_action["The system retrieves the secondary
cargo record with record type 02 and
sequence 0001 using the cargo CCN
key"]:::main N_RetrieveSecondaryCargoRecordType02_Node0 -- Yes --> N_RetrieveSecondaryCargoRecordType02_Node0_action N_RetrieveSecondaryCargoRecordType02_Node0_action --> E_RetrieveSecondaryCargoRecordType02 S_RetrieveSecondaryCargoRecordType02 --> N_RetrieveSecondaryCargoRecordType02_Node0 N_RetrieveSecondaryCargoRecordType02_Node0 -- No --> E_RetrieveSecondaryCargoRecordType02
File: GCCUSIO.cbl
GIVEN:
A cargo CCN key exists in the system
WHEN:
The system needs to process N9 reference numbers for shipment identification
THEN:
The system retrieves the secondary cargo record with record type '02' and sequence '0001' using the cargo CCN key
β Consolidated Acceptance Criteria
- The system processes the record creation → the system sets creation century from machine century, creation date from machine date, creation time from machine time hours and minutes, creation terminal from originating terminal, creation user ID from ACF2 user ID, and copies all creation information to last modification 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_SetCreationAuditFields(["Start Step"])
E_SetCreationAuditFields(["End Step"])
N_SetCreationAuditFields_Node0{"The system processes the record
creation"}:::decision N_SetCreationAuditFields_Node0_action["The system sets creation century
from machine century, creation date
from machine date, creation time
from machine time hours and minutes,
creation terminal from originating
terminal, creation user ID from ACF2
user ID, and copies all creation
information to last modification
fields"]:::main N_SetCreationAuditFields_Node0 -- Yes --> N_SetCreationAuditFields_Node0_action N_SetCreationAuditFields_Node0_action --> E_SetCreationAuditFields S_SetCreationAuditFields --> N_SetCreationAuditFields_Node0 N_SetCreationAuditFields_Node0 -- No --> E_SetCreationAuditFields
creation"}:::decision N_SetCreationAuditFields_Node0_action["The system sets creation century
from machine century, creation date
from machine date, creation time
from machine time hours and minutes,
creation terminal from originating
terminal, creation user ID from ACF2
user ID, and copies all creation
information to last modification
fields"]:::main N_SetCreationAuditFields_Node0 -- Yes --> N_SetCreationAuditFields_Node0_action N_SetCreationAuditFields_Node0_action --> E_SetCreationAuditFields S_SetCreationAuditFields --> N_SetCreationAuditFields_Node0 N_SetCreationAuditFields_Node0 -- No --> E_SetCreationAuditFields
File: GCCUSIO.cbl
GIVEN:
A cargo record is being inserted and the creation timestamp field is empty (spaces)
WHEN:
The system processes the record creation
THEN:
- The system sets creation century from machine century, creation date from machine date, creation time from machine time hours
- Minutes, creation terminal from originating terminal, creation user id from acf2 user id, and copies all creation information to last modification fields
β Consolidated Acceptance Criteria
- The system processes the record modification → the system updates last modification century from machine century, last modification date from machine date, last modification time from machine time hours and minutes, last modification terminal from originating terminal, and last modification user ID from ACF2 user ID while preserving existing creation audit 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_SetLastModificationAuditFields(["Start Step"])
E_SetLastModificationAuditFields(["End Step"])
N_SetLastModificationAuditFields_Node0{"The system processes the record
modification"}:::decision N_SetLastModificationAuditFields_Node0_action["The system updates last
modification century from machine
century, last modification date from
machine date, last modification time
from machine time hours and minutes,
last modification terminal from
originating terminal, and last
modification user ID from ACF2 user
ID while preserving existing
creation audit information"]:::main N_SetLastModificationAuditFields_Node0 -- Yes --> N_SetLastModificationAuditFields_Node0_action N_SetLastModificationAuditFields_Node0_action --> E_SetLastModificationAuditFields S_SetLastModificationAuditFields --> N_SetLastModificationAuditFields_Node0 N_SetLastModificationAuditFields_Node0 -- No --> E_SetLastModificationAuditFields
modification"}:::decision N_SetLastModificationAuditFields_Node0_action["The system updates last
modification century from machine
century, last modification date from
machine date, last modification time
from machine time hours and minutes,
last modification terminal from
originating terminal, and last
modification user ID from ACF2 user
ID while preserving existing
creation audit information"]:::main N_SetLastModificationAuditFields_Node0 -- Yes --> N_SetLastModificationAuditFields_Node0_action N_SetLastModificationAuditFields_Node0_action --> E_SetLastModificationAuditFields S_SetLastModificationAuditFields --> N_SetLastModificationAuditFields_Node0 N_SetLastModificationAuditFields_Node0 -- No --> E_SetLastModificationAuditFields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being updated and the creation timestamp field is not empty
WHEN:
The system processes the record modification
THEN:
- The system updates last modification century from machine century, last modification date from machine date, last modification time from machine time hours
- Minutes, last modification terminal from originating terminal, and last modification user id from acf2 user id while preserving existing creation audit information
β Consolidated Acceptance Criteria
- Both control number fields are empty → the bond number index field (GCUSRT-RT074-BOND-NUM-INDEX) 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_EntryNumberNotPresent(["Start Step"])
E_EntryNumberNotPresent(["End Step"])
N_EntryNumberNotPresent_Node0{"Both control number fields are
empty"}:::decision N_EntryNumberNotPresent_Node0_action["The bond number index field
GCUSRT-RT074-BOND-NUM-INDEX is set
to spaces"]:::main N_EntryNumberNotPresent_Node0 -- Yes --> N_EntryNumberNotPresent_Node0_action N_EntryNumberNotPresent_Node0_action --> E_EntryNumberNotPresent S_EntryNumberNotPresent --> N_EntryNumberNotPresent_Node0 N_EntryNumberNotPresent_Node0 -- No --> E_EntryNumberNotPresent
empty"}:::decision N_EntryNumberNotPresent_Node0_action["The bond number index field
GCUSRT-RT074-BOND-NUM-INDEX is set
to spaces"]:::main N_EntryNumberNotPresent_Node0 -- Yes --> N_EntryNumberNotPresent_Node0_action N_EntryNumberNotPresent_Node0_action --> E_EntryNumberNotPresent S_EntryNumberNotPresent --> N_EntryNumberNotPresent_Node0 N_EntryNumberNotPresent_Node0 -- No --> E_EntryNumberNotPresent
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record requires bond number index population, cargo is not deleted, in-bond control number is not available (spaces), and entry number is not available (spaces)
WHEN:
Both control number fields are empty
THEN:
The bond number index field (GCUSRT-RT074-BOND-NUM-INDEX) is set to spaces
β Consolidated Acceptance Criteria
- The system processes error field population → the origin station number from the cargo record is extracted and assigned to the error origin index field with error code '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_ExtractOriginStationCode(["Start Step"])
E_ExtractOriginStationCode(["End Step"])
N_ExtractOriginStationCode_Node0{"The system processes error field
population"}:::decision N_ExtractOriginStationCode_Node0_action["The origin station number from the
cargo record is extracted and
assigned to the error origin index
field with error code E"]:::exclusion N_ExtractOriginStationCode_Node0 -- Yes -->|Alternative| N_ExtractOriginStationCode_Node0_action N_ExtractOriginStationCode_Node0_action --> E_ExtractOriginStationCode S_ExtractOriginStationCode --> N_ExtractOriginStationCode_Node0 N_ExtractOriginStationCode_Node0 -- No --> E_ExtractOriginStationCode
population"}:::decision N_ExtractOriginStationCode_Node0_action["The origin station number from the
cargo record is extracted and
assigned to the error origin index
field with error code E"]:::exclusion N_ExtractOriginStationCode_Node0 -- Yes -->|Alternative| N_ExtractOriginStationCode_Node0_action N_ExtractOriginStationCode_Node0_action --> E_ExtractOriginStationCode S_ExtractOriginStationCode --> N_ExtractOriginStationCode_Node0 N_ExtractOriginStationCode_Node0 -- No --> E_ExtractOriginStationCode
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with origin station information and error conditions are being processed
WHEN:
The system processes error field population
THEN:
- The origin station number from the cargo record is extracted
- Assigned to the error origin index field with error code 'e'
β Consolidated Acceptance Criteria
- The system processes error field population → the destination station number from the cargo record is extracted and assigned to the error destination index field with error code '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_ExtractDestinationStationCode(["Start Step"])
E_ExtractDestinationStationCode(["End Step"])
N_ExtractDestinationStationCode_Node0{"The system processes error field
population"}:::decision N_ExtractDestinationStationCode_Node0_action["The destination station number from
the cargo record is extracted and
assigned to the error destination
index field with error code E"]:::exclusion N_ExtractDestinationStationCode_Node0 -- Yes -->|Alternative| N_ExtractDestinationStationCode_Node0_action N_ExtractDestinationStationCode_Node0_action --> E_ExtractDestinationStationCode S_ExtractDestinationStationCode --> N_ExtractDestinationStationCode_Node0 N_ExtractDestinationStationCode_Node0 -- No --> E_ExtractDestinationStationCode
population"}:::decision N_ExtractDestinationStationCode_Node0_action["The destination station number from
the cargo record is extracted and
assigned to the error destination
index field with error code E"]:::exclusion N_ExtractDestinationStationCode_Node0 -- Yes -->|Alternative| N_ExtractDestinationStationCode_Node0_action N_ExtractDestinationStationCode_Node0_action --> E_ExtractDestinationStationCode S_ExtractDestinationStationCode --> N_ExtractDestinationStationCode_Node0 N_ExtractDestinationStationCode_Node0 -- No --> E_ExtractDestinationStationCode
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with destination station information and error conditions are being processed
WHEN:
The system processes error field population
THEN:
- The destination station number from the cargo record is extracted
- Assigned to the error destination index field with error code 'e'
β Consolidated Acceptance Criteria
- The system needs to determine the border station for error processing → the system performs a table lookup using 'MC' table ID and the cargo's location ID as the sequence ID to retrieve the border station 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_DetermineBorderStationCode(["Start Step"])
E_DetermineBorderStationCode(["End Step"])
N_DetermineBorderStationCode_Node0{"The system needs to determine the
border station for error processing"}:::decision N_DetermineBorderStationCode_Node0_action["The system performs a table lookup
using MC table ID and the cargo s
location ID as the sequence ID to
retrieve the border station
information"]:::exclusion N_DetermineBorderStationCode_Node0 -- Yes -->|Alternative| N_DetermineBorderStationCode_Node0_action N_DetermineBorderStationCode_Node0_action --> E_DetermineBorderStationCode S_DetermineBorderStationCode --> N_DetermineBorderStationCode_Node0 N_DetermineBorderStationCode_Node0 -- No --> E_DetermineBorderStationCode
border station for error processing"}:::decision N_DetermineBorderStationCode_Node0_action["The system performs a table lookup
using MC table ID and the cargo s
location ID as the sequence ID to
retrieve the border station
information"]:::exclusion N_DetermineBorderStationCode_Node0 -- Yes -->|Alternative| N_DetermineBorderStationCode_Node0_action N_DetermineBorderStationCode_Node0_action --> E_DetermineBorderStationCode S_DetermineBorderStationCode --> N_DetermineBorderStationCode_Node0 N_DetermineBorderStationCode_Node0 -- No --> E_DetermineBorderStationCode
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with location ID information and error conditions are being processed
WHEN:
The system needs to determine the border station for error processing
THEN:
- The system performs a table lookup using 'mc' table id
- The cargo's location id as the sequence id to retrieve the border station information
β Consolidated Acceptance Criteria
- The system processes the table lookup results for border station determination → the station number is extracted from the MC table segment and assigned to the error border index field with error code '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_SetBorderStationfromTable(["Start Step"])
E_SetBorderStationfromTable(["End Step"])
N_SetBorderStationfromTable_Node0{"The system processes the table
lookup results for border station
determination"}:::decision N_SetBorderStationfromTable_Node0_action["The station number is extracted
from the MC table segment and
assigned to the error border index
field with error code E"]:::main N_SetBorderStationfromTable_Node0 -- Yes --> N_SetBorderStationfromTable_Node0_action N_SetBorderStationfromTable_Node0_action --> E_SetBorderStationfromTable S_SetBorderStationfromTable --> N_SetBorderStationfromTable_Node0 N_SetBorderStationfromTable_Node0 -- No --> E_SetBorderStationfromTable
lookup results for border station
determination"}:::decision N_SetBorderStationfromTable_Node0_action["The station number is extracted
from the MC table segment and
assigned to the error border index
field with error code E"]:::main N_SetBorderStationfromTable_Node0 -- Yes --> N_SetBorderStationfromTable_Node0_action N_SetBorderStationfromTable_Node0_action --> E_SetBorderStationfromTable S_SetBorderStationfromTable --> N_SetBorderStationfromTable_Node0 N_SetBorderStationfromTable_Node0 -- No --> E_SetBorderStationfromTable
File: GCCUSIO.cbl
GIVEN:
An MC table lookup has been performed and returned successfully with return flag '0'
WHEN:
The system processes the table lookup results for border station determination
THEN:
- The station number is extracted from the mc table segment
- Assigned to the error border index field with error code 'e'
β Consolidated Acceptance Criteria
- The system processes hold field population for destination-related holds → the destination station number from the cargo record is assigned to the held destination index field and the cargo CCN key is assigned to the held destination cargo index field
- The system processes hold field population for border-related holds → the system performs MC table lookup using the cargo's location ID, and if successful (return flag '0'), extracts the station number from the MC table segment and assigns it to the held border index field, and assigns the cargo CCN key to the held border cargo index field
- The cargo has US cargo hold status:
- US cargo hold PCS status
- US cargo pre-hold PCS status
- US cargo hold destination status
- US cargo pre-hold destination status
- US cargo hold FDA status
- The cargo has US cargo hold status:
- US cargo hold PCS status
- US cargo pre-hold PCS status
- US cargo hold border status
- US cargo pre-hold border status
- US cargo hold FDA status
- The system processes the hold status for destination fields → the system sets held destination to destination station number AND sets held destination cargo to CCN key
- The system processes the hold status for border fields → the system retrieves border station from MC table AND sets held border to border station number AND sets held border cargo to 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_PopulateHoldIndexFields(["Start Step"])
E_PopulateHoldIndexFields(["End Step"])
N_PopulateHoldIndexFields_Node0{"The system processes hold field
population for destination-related
holds"}:::decision N_PopulateHoldIndexFields_Node0_action["The destination station number from
the cargo record is assigned to the
held destination index field and the
cargo CCN key is assigned to the
held destination cargo index field"]:::main N_PopulateHoldIndexFields_Node0 -- Yes --> N_PopulateHoldIndexFields_Node0_action N_PopulateHoldIndexFields_Node0_action --> E_PopulateHoldIndexFields S_PopulateHoldIndexFields --> N_PopulateHoldIndexFields_Node0 N_PopulateHoldIndexFields_Node1{"The system processes hold field
population for border-related holds"}:::decision N_PopulateHoldIndexFields_Node1_action["The system performs MC table lookup
using the cargo s location ID, and
if successful return flag 0 ,
extracts the station number from the
MC table segment and assigns it to
the held border index field, and
assigns the cargo CCN key to the
held border cargo index field"]:::main N_PopulateHoldIndexFields_Node1 -- Yes --> N_PopulateHoldIndexFields_Node1_action N_PopulateHoldIndexFields_Node1_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node0 -- No --> N_PopulateHoldIndexFields_Node1 N_PopulateHoldIndexFields_Node2{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold destination status OR US
cargo pre-hold destination status OR
US cargo hold FDA status"}:::decision N_PopulateHoldIndexFields_Node2_action["The held destination index should
be set to destination station number
and held destination cargo should be
set to cargo CCN key"]:::main N_PopulateHoldIndexFields_Node2 -- Yes --> N_PopulateHoldIndexFields_Node2_action N_PopulateHoldIndexFields_Node2_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node1 -- No --> N_PopulateHoldIndexFields_Node2 N_PopulateHoldIndexFields_Node3{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold FDA status"}:::decision N_PopulateHoldIndexFields_Node3_action["The held border index should be set
to border station number from MC
table lookup and held border cargo
should be set to cargo CCN key"]:::main N_PopulateHoldIndexFields_Node3 -- Yes --> N_PopulateHoldIndexFields_Node3_action N_PopulateHoldIndexFields_Node3_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node2 -- No --> N_PopulateHoldIndexFields_Node3 N_PopulateHoldIndexFields_Node4{"The system processes the hold
status for destination fields"}:::decision N_PopulateHoldIndexFields_Node4_action["The system sets held destination to
destination station number AND sets
held destination cargo to CCN key"]:::main N_PopulateHoldIndexFields_Node4 -- Yes --> N_PopulateHoldIndexFields_Node4_action N_PopulateHoldIndexFields_Node4_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node3 -- No --> N_PopulateHoldIndexFields_Node4 N_PopulateHoldIndexFields_Node5{"The system processes the hold
status for border fields"}:::decision N_PopulateHoldIndexFields_Node5_action["The system retrieves border station
from MC table AND sets held border
to border station number AND sets
held border cargo to CCN key"]:::main N_PopulateHoldIndexFields_Node5 -- Yes --> N_PopulateHoldIndexFields_Node5_action N_PopulateHoldIndexFields_Node5_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node4 -- No --> N_PopulateHoldIndexFields_Node5 N_PopulateHoldIndexFields_Node5 -- No --> E_PopulateHoldIndexFields
population for destination-related
holds"}:::decision N_PopulateHoldIndexFields_Node0_action["The destination station number from
the cargo record is assigned to the
held destination index field and the
cargo CCN key is assigned to the
held destination cargo index field"]:::main N_PopulateHoldIndexFields_Node0 -- Yes --> N_PopulateHoldIndexFields_Node0_action N_PopulateHoldIndexFields_Node0_action --> E_PopulateHoldIndexFields S_PopulateHoldIndexFields --> N_PopulateHoldIndexFields_Node0 N_PopulateHoldIndexFields_Node1{"The system processes hold field
population for border-related holds"}:::decision N_PopulateHoldIndexFields_Node1_action["The system performs MC table lookup
using the cargo s location ID, and
if successful return flag 0 ,
extracts the station number from the
MC table segment and assigns it to
the held border index field, and
assigns the cargo CCN key to the
held border cargo index field"]:::main N_PopulateHoldIndexFields_Node1 -- Yes --> N_PopulateHoldIndexFields_Node1_action N_PopulateHoldIndexFields_Node1_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node0 -- No --> N_PopulateHoldIndexFields_Node1 N_PopulateHoldIndexFields_Node2{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold destination status OR US
cargo pre-hold destination status OR
US cargo hold FDA status"}:::decision N_PopulateHoldIndexFields_Node2_action["The held destination index should
be set to destination station number
and held destination cargo should be
set to cargo CCN key"]:::main N_PopulateHoldIndexFields_Node2 -- Yes --> N_PopulateHoldIndexFields_Node2_action N_PopulateHoldIndexFields_Node2_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node1 -- No --> N_PopulateHoldIndexFields_Node2 N_PopulateHoldIndexFields_Node3{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold FDA status"}:::decision N_PopulateHoldIndexFields_Node3_action["The held border index should be set
to border station number from MC
table lookup and held border cargo
should be set to cargo CCN key"]:::main N_PopulateHoldIndexFields_Node3 -- Yes --> N_PopulateHoldIndexFields_Node3_action N_PopulateHoldIndexFields_Node3_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node2 -- No --> N_PopulateHoldIndexFields_Node3 N_PopulateHoldIndexFields_Node4{"The system processes the hold
status for destination fields"}:::decision N_PopulateHoldIndexFields_Node4_action["The system sets held destination to
destination station number AND sets
held destination cargo to CCN key"]:::main N_PopulateHoldIndexFields_Node4 -- Yes --> N_PopulateHoldIndexFields_Node4_action N_PopulateHoldIndexFields_Node4_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node3 -- No --> N_PopulateHoldIndexFields_Node4 N_PopulateHoldIndexFields_Node5{"The system processes the hold
status for border fields"}:::decision N_PopulateHoldIndexFields_Node5_action["The system retrieves border station
from MC table AND sets held border
to border station number AND sets
held border cargo to CCN key"]:::main N_PopulateHoldIndexFields_Node5 -- Yes --> N_PopulateHoldIndexFields_Node5_action N_PopulateHoldIndexFields_Node5_action --> E_PopulateHoldIndexFields N_PopulateHoldIndexFields_Node4 -- No --> N_PopulateHoldIndexFields_Node5 N_PopulateHoldIndexFields_Node5 -- No --> E_PopulateHoldIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold conditions including USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-D, USCARGO-PR-H-DE, or USCARGO-HOLDFDA
WHEN:
The system processes hold field population for destination-related holds
THEN:
- The destination station number from the cargo record is assigned to the held destination index field
- The cargo ccn key is assigned to the held destination cargo index field
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold conditions including USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, or USCARGO-HOLDFDA
WHEN:
The system processes hold field population for border-related holds
THEN:
- The system performs mc table lookup using the cargo's location id, and if successful (return flag '0'), extracts the station number from the mc table segment
- Assigns it to the held border index field, and assigns the cargo ccn key to the held border cargo index field
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status conditions
WHEN:
The cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold destination status OR US cargo pre-hold destination status OR US cargo hold FDA status
THEN:
- The held destination index should be set to destination station number
- Held destination cargo should be set to cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record has border hold status conditions
WHEN:
The cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold border status OR US cargo pre-hold border status OR US cargo hold FDA status
THEN:
- The held border index should be set to border station number from mc table lookup
- Held border cargo should be set to cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record has USCARGO-HOLD status OR USCARGO-HOLDPCS status OR USCARGO-PR-HPCS status OR USCARGO-HOLD-D status OR USCARGO-PR-H-DE status OR USCARGO-HOLDFDA status
WHEN:
The system processes the hold status for destination fields
THEN:
- The system sets held destination to destination station number
- Sets held destination cargo to ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record has USCARGO-HOLD status OR USCARGO-HOLDPCS status OR USCARGO-PR-HPCS status OR USCARGO-HOLD-B status OR USCARGO-PR-H-BO status OR USCARGO-HOLDFDA status
WHEN:
The system processes the hold status for border fields
THEN:
- The system retrieves border station from mc table
- Sets held border to border station number
- Sets held border cargo to ccn key
β Consolidated Acceptance Criteria
- The system prepares to perform MC table lookup → all lookup parameters are cleared and initialized to spaces, and function code is set to 'GU' for 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_InitializeMCTableLookupParameters(["Start Step"])
E_InitializeMCTableLookupParameters(["End Step"])
N_InitializeMCTableLookupParameters_Node0{"The system prepares to perform MC
table lookup"}:::decision N_InitializeMCTableLookupParameters_Node0_action["All lookup parameters are cleared
and initialized to spaces, and
function code is set to GU for
retrieval"]:::main N_InitializeMCTableLookupParameters_Node0 -- Yes --> N_InitializeMCTableLookupParameters_Node0_action N_InitializeMCTableLookupParameters_Node0_action --> E_InitializeMCTableLookupParameters S_InitializeMCTableLookupParameters --> N_InitializeMCTableLookupParameters_Node0 N_InitializeMCTableLookupParameters_Node0 -- No --> E_InitializeMCTableLookupParameters
table lookup"}:::decision N_InitializeMCTableLookupParameters_Node0_action["All lookup parameters are cleared
and initialized to spaces, and
function code is set to GU for
retrieval"]:::main N_InitializeMCTableLookupParameters_Node0 -- Yes --> N_InitializeMCTableLookupParameters_Node0_action N_InitializeMCTableLookupParameters_Node0_action --> E_InitializeMCTableLookupParameters S_InitializeMCTableLookupParameters --> N_InitializeMCTableLookupParameters_Node0 N_InitializeMCTableLookupParameters_Node0 -- No --> E_InitializeMCTableLookupParameters
File: GCCUSIO.cbl
GIVEN:
A need to lookup border station code from MC table
WHEN:
The system prepares to perform MC table lookup
THEN:
- All lookup parameters are cleared
- Initialized to spaces, and function code is set to 'gu' for retrieval
β Consolidated Acceptance Criteria
- The system prepares MC table lookup → the cargo location ID is set as the sequence ID search key for MC table 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_SetSearchKeytoLocationID(["Start Step"])
E_SetSearchKeytoLocationID(["End Step"])
N_SetSearchKeytoLocationID_Node0{"The system prepares MC table lookup"}:::decision
N_SetSearchKeytoLocationID_Node0_action["The cargo location ID is set as the
sequence ID search key for MC table
lookup"]:::main N_SetSearchKeytoLocationID_Node0 -- Yes --> N_SetSearchKeytoLocationID_Node0_action N_SetSearchKeytoLocationID_Node0_action --> E_SetSearchKeytoLocationID S_SetSearchKeytoLocationID --> N_SetSearchKeytoLocationID_Node0 N_SetSearchKeytoLocationID_Node0 -- No --> E_SetSearchKeytoLocationID
sequence ID search key for MC table
lookup"]:::main N_SetSearchKeytoLocationID_Node0 -- Yes --> N_SetSearchKeytoLocationID_Node0_action N_SetSearchKeytoLocationID_Node0_action --> E_SetSearchKeytoLocationID S_SetSearchKeytoLocationID --> N_SetSearchKeytoLocationID_Node0 N_SetSearchKeytoLocationID_Node0 -- No --> E_SetSearchKeytoLocationID
File: GCCUSIO.cbl
GIVEN:
A cargo record with location ID information
WHEN:
The system prepares MC table lookup
THEN:
The cargo location ID is set as the sequence ID search key for MC table lookup
β Consolidated Acceptance Criteria
- The system needs to retrieve station master data → external routine GCCTBIO is called with function code, table parameters, and search keys to perform the 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_CallTableLookupRoutineGCCTBIO(["Start Step"])
E_CallTableLookupRoutineGCCTBIO(["End Step"])
N_CallTableLookupRoutineGCCTBIO_Node0{"The system needs to retrieve
station master data"}:::decision N_CallTableLookupRoutineGCCTBIO_Node0_action["External routine GCCTBIO is called
with function code, table
parameters, and search keys to
perform the lookup"]:::main N_CallTableLookupRoutineGCCTBIO_Node0 -- Yes --> N_CallTableLookupRoutineGCCTBIO_Node0_action N_CallTableLookupRoutineGCCTBIO_Node0_action --> E_CallTableLookupRoutineGCCTBIO S_CallTableLookupRoutineGCCTBIO --> N_CallTableLookupRoutineGCCTBIO_Node0 N_CallTableLookupRoutineGCCTBIO_Node0 -- No --> E_CallTableLookupRoutineGCCTBIO
station master data"}:::decision N_CallTableLookupRoutineGCCTBIO_Node0_action["External routine GCCTBIO is called
with function code, table
parameters, and search keys to
perform the lookup"]:::main N_CallTableLookupRoutineGCCTBIO_Node0 -- Yes --> N_CallTableLookupRoutineGCCTBIO_Node0_action N_CallTableLookupRoutineGCCTBIO_Node0_action --> E_CallTableLookupRoutineGCCTBIO S_CallTableLookupRoutineGCCTBIO --> N_CallTableLookupRoutineGCCTBIO_Node0 N_CallTableLookupRoutineGCCTBIO_Node0 -- No --> E_CallTableLookupRoutineGCCTBIO
File: GCCUSIO.cbl
GIVEN:
All MC table lookup parameters are properly initialized
WHEN:
The system needs to retrieve station master data
THEN:
External routine GCCTBIO is called with function code, table parameters, and search keys to perform the lookup
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system clears error origin index, error destination index, and error border index fields 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_RemoveErrorIndexEntries(["Start Step"])
E_RemoveErrorIndexEntries(["End Step"])
N_RemoveErrorIndexEntries_Node0{"The cargo status is being updated"}:::decision
N_RemoveErrorIndexEntries_Node0_action["The system clears error origin
index, error destination index, and
error border index fields to spaces"]:::main N_RemoveErrorIndexEntries_Node0 -- Yes --> N_RemoveErrorIndexEntries_Node0_action N_RemoveErrorIndexEntries_Node0_action --> E_RemoveErrorIndexEntries S_RemoveErrorIndexEntries --> N_RemoveErrorIndexEntries_Node0 N_RemoveErrorIndexEntries_Node0 -- No --> E_RemoveErrorIndexEntries
index, error destination index, and
error border index fields to spaces"]:::main N_RemoveErrorIndexEntries_Node0 -- Yes --> N_RemoveErrorIndexEntries_Node0_action N_RemoveErrorIndexEntries_Node0_action --> E_RemoveErrorIndexEntries S_RemoveErrorIndexEntries --> N_RemoveErrorIndexEntries_Node0 N_RemoveErrorIndexEntries_Node0 -- No --> E_RemoveErrorIndexEntries
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with hold conditions but no error conditions (not CPCARGO-ERROR, not CPCARGO-PENDING, not USCARGO-ERROR)
WHEN:
The cargo status is being updated
THEN:
The system clears error origin index, error destination index, and error border index fields to spaces
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system clears held destination index and held border index fields 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_RemoveHoldIndexEntries(["Start Step"])
E_RemoveHoldIndexEntries(["End Step"])
N_RemoveHoldIndexEntries_Node0{"The cargo status is being updated"}:::decision
N_RemoveHoldIndexEntries_Node0_action["The system clears held destination
index and held border index fields
to spaces"]:::main N_RemoveHoldIndexEntries_Node0 -- Yes --> N_RemoveHoldIndexEntries_Node0_action N_RemoveHoldIndexEntries_Node0_action --> E_RemoveHoldIndexEntries S_RemoveHoldIndexEntries --> N_RemoveHoldIndexEntries_Node0 N_RemoveHoldIndexEntries_Node0 -- No --> E_RemoveHoldIndexEntries
index and held border index fields
to spaces"]:::main N_RemoveHoldIndexEntries_Node0 -- Yes --> N_RemoveHoldIndexEntries_Node0_action N_RemoveHoldIndexEntries_Node0_action --> E_RemoveHoldIndexEntries S_RemoveHoldIndexEntries --> N_RemoveHoldIndexEntries_Node0 N_RemoveHoldIndexEntries_Node0 -- No --> E_RemoveHoldIndexEntries
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with error conditions but no hold conditions (not USCARGO-HOLD, not USCARGO-HOLDPCS, not USCARGO-PR-HPCS, not USCARGO-HOLD-B, not USCARGO-PR-H-BO, not USCARGO-HOLD-D, not USCARGO-PR-H-DE, not USCARGO-HOLDFDA)
WHEN:
The cargo status is being updated
THEN:
- The system clears held destination index
- Held border index fields to spaces
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system sets error code to 'E', populates error origin with origin station number, error border with border station number from MC table lookup, error destination with destination station number, and associates all error indexes with the 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_CreateErrorIndexEntries(["Start Step"])
E_CreateErrorIndexEntries(["End Step"])
N_CreateErrorIndexEntries_Node0{"The cargo status is being updated"}:::decision
N_CreateErrorIndexEntries_Node0_action["The system sets error code to E ,
populates error origin with origin
station number, error border with
border station number from MC table
lookup, error destination with
destination station number, and
associates all error indexes with
the cargo CCN key"]:::main N_CreateErrorIndexEntries_Node0 -- Yes --> N_CreateErrorIndexEntries_Node0_action N_CreateErrorIndexEntries_Node0_action --> E_CreateErrorIndexEntries S_CreateErrorIndexEntries --> N_CreateErrorIndexEntries_Node0 N_CreateErrorIndexEntries_Node0 -- No --> E_CreateErrorIndexEntries
populates error origin with origin
station number, error border with
border station number from MC table
lookup, error destination with
destination station number, and
associates all error indexes with
the cargo CCN key"]:::main N_CreateErrorIndexEntries_Node0 -- Yes --> N_CreateErrorIndexEntries_Node0_action N_CreateErrorIndexEntries_Node0_action --> E_CreateErrorIndexEntries S_CreateErrorIndexEntries --> N_CreateErrorIndexEntries_Node0 N_CreateErrorIndexEntries_Node0 -- No --> E_CreateErrorIndexEntries
File: GCCUSIO.cbl
GIVEN:
A cargo record has error conditions (CPCARGO-ERROR or CPCARGO-PENDING or USCARGO-ERROR)
WHEN:
The cargo status is being updated
THEN:
The system sets error code to 'E', populates error origin with origin station number, error border with border station number from MC table lookup, error destination with destination station number, and associates all error indexes with the cargo CCN key
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system populates held destination index with destination station number and cargo CCN for destination holds, and populates held border index with border station number from MC table lookup and cargo CCN for border holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateHoldIndexEntries(["Start Step"])
E_CreateHoldIndexEntries(["End Step"])
N_CreateHoldIndexEntries_Node0{"The cargo status is being updated"}:::decision
N_CreateHoldIndexEntries_Node0_action["The system populates held
destination index with destination
station number and cargo CCN for
destination holds, and populates
held border index with border
station number from MC table lookup
and cargo CCN for border holds"]:::main N_CreateHoldIndexEntries_Node0 -- Yes --> N_CreateHoldIndexEntries_Node0_action N_CreateHoldIndexEntries_Node0_action --> E_CreateHoldIndexEntries S_CreateHoldIndexEntries --> N_CreateHoldIndexEntries_Node0 N_CreateHoldIndexEntries_Node0 -- No --> E_CreateHoldIndexEntries
destination index with destination
station number and cargo CCN for
destination holds, and populates
held border index with border
station number from MC table lookup
and cargo CCN for border holds"]:::main N_CreateHoldIndexEntries_Node0 -- Yes --> N_CreateHoldIndexEntries_Node0_action N_CreateHoldIndexEntries_Node0_action --> E_CreateHoldIndexEntries S_CreateHoldIndexEntries --> N_CreateHoldIndexEntries_Node0 N_CreateHoldIndexEntries_Node0 -- No --> E_CreateHoldIndexEntries
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold conditions (USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-D or USCARGO-PR-H-DE or USCARGO-HOLDFDA or USCARGO-HOLD-B or USCARGO-PR-H-BO)
WHEN:
The cargo status is being updated
THEN:
- The system populates held destination index with destination station number
- Cargo ccn for destination holds, and populates held border index with border station number from mc table lookup
- Cargo ccn for border holds
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system deletes the cargo record from the GCSB1RT status index table
- The system processes the cargo status update → the system removes the cargo record from the GCSB1RT status index table
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status AND no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → the system deletes the cargo record from the GCSB1RT status index table
- The error destination index, error origin index, and error border index are all empty → the system deletes the entire GCSB1RT index 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_DeleteGCSB1RTIndexRecord(["Start Step"])
E_DeleteGCSB1RTIndexRecord(["End Step"])
N_DeleteGCSB1RTIndexRecord_Node0{"The cargo status is being updated"}:::decision
N_DeleteGCSB1RTIndexRecord_Node0_action["The system deletes the cargo record
from the GCSB1RT status index table"]:::main N_DeleteGCSB1RTIndexRecord_Node0 -- Yes --> N_DeleteGCSB1RTIndexRecord_Node0_action N_DeleteGCSB1RTIndexRecord_Node0_action --> E_DeleteGCSB1RTIndexRecord S_DeleteGCSB1RTIndexRecord --> N_DeleteGCSB1RTIndexRecord_Node0 N_DeleteGCSB1RTIndexRecord_Node1{"The system processes the cargo
status update"}:::decision N_DeleteGCSB1RTIndexRecord_Node1_action["The system removes the cargo record
from the GCSB1RT status index table"]:::main N_DeleteGCSB1RTIndexRecord_Node1 -- Yes --> N_DeleteGCSB1RTIndexRecord_Node1_action N_DeleteGCSB1RTIndexRecord_Node1_action --> E_DeleteGCSB1RTIndexRecord N_DeleteGCSB1RTIndexRecord_Node0 -- No --> N_DeleteGCSB1RTIndexRecord_Node1 N_DeleteGCSB1RTIndexRecord_Node2{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_DeleteGCSB1RTIndexRecord_Node2_action["The system deletes the cargo record
from the GCSB1RT status index table"]:::exclusion N_DeleteGCSB1RTIndexRecord_Node2 -- Yes -->|Alternative| N_DeleteGCSB1RTIndexRecord_Node2_action N_DeleteGCSB1RTIndexRecord_Node2_action --> E_DeleteGCSB1RTIndexRecord N_DeleteGCSB1RTIndexRecord_Node1 -- No --> N_DeleteGCSB1RTIndexRecord_Node2 N_DeleteGCSB1RTIndexRecord_Node3{"The error destination index, error
origin index, and error border index
are all empty"}:::decision N_DeleteGCSB1RTIndexRecord_Node3_action["The system deletes the entire
GCSB1RT index record"]:::exclusion N_DeleteGCSB1RTIndexRecord_Node3 -- Yes -->|Alternative| N_DeleteGCSB1RTIndexRecord_Node3_action N_DeleteGCSB1RTIndexRecord_Node3_action --> E_DeleteGCSB1RTIndexRecord N_DeleteGCSB1RTIndexRecord_Node2 -- No --> N_DeleteGCSB1RTIndexRecord_Node3 N_DeleteGCSB1RTIndexRecord_Node3 -- No --> E_DeleteGCSB1RTIndexRecord
from the GCSB1RT status index table"]:::main N_DeleteGCSB1RTIndexRecord_Node0 -- Yes --> N_DeleteGCSB1RTIndexRecord_Node0_action N_DeleteGCSB1RTIndexRecord_Node0_action --> E_DeleteGCSB1RTIndexRecord S_DeleteGCSB1RTIndexRecord --> N_DeleteGCSB1RTIndexRecord_Node0 N_DeleteGCSB1RTIndexRecord_Node1{"The system processes the cargo
status update"}:::decision N_DeleteGCSB1RTIndexRecord_Node1_action["The system removes the cargo record
from the GCSB1RT status index table"]:::main N_DeleteGCSB1RTIndexRecord_Node1 -- Yes --> N_DeleteGCSB1RTIndexRecord_Node1_action N_DeleteGCSB1RTIndexRecord_Node1_action --> E_DeleteGCSB1RTIndexRecord N_DeleteGCSB1RTIndexRecord_Node0 -- No --> N_DeleteGCSB1RTIndexRecord_Node1 N_DeleteGCSB1RTIndexRecord_Node2{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_DeleteGCSB1RTIndexRecord_Node2_action["The system deletes the cargo record
from the GCSB1RT status index table"]:::exclusion N_DeleteGCSB1RTIndexRecord_Node2 -- Yes -->|Alternative| N_DeleteGCSB1RTIndexRecord_Node2_action N_DeleteGCSB1RTIndexRecord_Node2_action --> E_DeleteGCSB1RTIndexRecord N_DeleteGCSB1RTIndexRecord_Node1 -- No --> N_DeleteGCSB1RTIndexRecord_Node2 N_DeleteGCSB1RTIndexRecord_Node3{"The error destination index, error
origin index, and error border index
are all empty"}:::decision N_DeleteGCSB1RTIndexRecord_Node3_action["The system deletes the entire
GCSB1RT index record"]:::exclusion N_DeleteGCSB1RTIndexRecord_Node3 -- Yes -->|Alternative| N_DeleteGCSB1RTIndexRecord_Node3_action N_DeleteGCSB1RTIndexRecord_Node3_action --> E_DeleteGCSB1RTIndexRecord N_DeleteGCSB1RTIndexRecord_Node2 -- No --> N_DeleteGCSB1RTIndexRecord_Node3 N_DeleteGCSB1RTIndexRecord_Node3 -- No --> E_DeleteGCSB1RTIndexRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has no error conditions (not CPCARGO-ERROR, not CPCARGO-PENDING, not USCARGO-ERROR) and no hold conditions (not USCARGO-HOLD, not USCARGO-HOLDPCS, not USCARGO-PR-HPCS, not USCARGO-HOLD-B, not USCARGO-PR-H-BO, not USCARGO-HOLD-D, not USCARGO-PR-H-DE, not USCARGO-HOLDFDA)
WHEN:
The cargo status is being updated
THEN:
The system deletes the cargo record from the GCSB1RT status index table
File: GCCUSIO.cbl
GIVEN:
A cargo record with no error conditions (RT10 CPCARGO-ERROR, RT10 CPCARGO-PENDING, RT11 USCARGO-ERROR) and no hold conditions (RT11 USCARGO-HOLD, RT11 USCARGO-HOLDPCS, RT11 USCARGO-PR-HPCS, RT11 USCARGO-HOLD-B, RT11 USCARGO-PR-H-BO, RT11 USCARGO-HOLD-D, RT11 USCARGO-PR-H-DE, RT11 USCARGO-HOLDFDA)
WHEN:
The system processes the cargo status update
THEN:
The system removes the cargo record from the GCSB1RT status index table
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
- No us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
The system deletes the cargo record from the GCSB1RT status index table
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT index record with cleared hold fields
WHEN:
The error destination index, error origin index, and error border index are all empty
THEN:
The system deletes the entire GCSB1RT index record
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system updates the existing GCSB1RT record with the current index field values
- The system processes hold status → the system checks if GCSB1RT record exists and either updates existing record or inserts new record with hold index 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_UpdateGCSB1RTIndexRecord(["Start Step"])
E_UpdateGCSB1RTIndexRecord(["End Step"])
N_UpdateGCSB1RTIndexRecord_Node0{"The cargo status is being updated"}:::decision
N_UpdateGCSB1RTIndexRecord_Node0_action["The system updates the existing
GCSB1RT record with the current
index field values"]:::main N_UpdateGCSB1RTIndexRecord_Node0 -- Yes --> N_UpdateGCSB1RTIndexRecord_Node0_action N_UpdateGCSB1RTIndexRecord_Node0_action --> E_UpdateGCSB1RTIndexRecord S_UpdateGCSB1RTIndexRecord --> N_UpdateGCSB1RTIndexRecord_Node0 N_UpdateGCSB1RTIndexRecord_Node1{"The system processes hold status"}:::decision N_UpdateGCSB1RTIndexRecord_Node1_action["The system checks if GCSB1RT record
exists and either updates existing
record or inserts new record with
hold index information"]:::main N_UpdateGCSB1RTIndexRecord_Node1 -- Yes --> N_UpdateGCSB1RTIndexRecord_Node1_action N_UpdateGCSB1RTIndexRecord_Node1_action --> E_UpdateGCSB1RTIndexRecord N_UpdateGCSB1RTIndexRecord_Node0 -- No --> N_UpdateGCSB1RTIndexRecord_Node1 N_UpdateGCSB1RTIndexRecord_Node1 -- No --> E_UpdateGCSB1RTIndexRecord
GCSB1RT record with the current
index field values"]:::main N_UpdateGCSB1RTIndexRecord_Node0 -- Yes --> N_UpdateGCSB1RTIndexRecord_Node0_action N_UpdateGCSB1RTIndexRecord_Node0_action --> E_UpdateGCSB1RTIndexRecord S_UpdateGCSB1RTIndexRecord --> N_UpdateGCSB1RTIndexRecord_Node0 N_UpdateGCSB1RTIndexRecord_Node1{"The system processes hold status"}:::decision N_UpdateGCSB1RTIndexRecord_Node1_action["The system checks if GCSB1RT record
exists and either updates existing
record or inserts new record with
hold index information"]:::main N_UpdateGCSB1RTIndexRecord_Node1 -- Yes --> N_UpdateGCSB1RTIndexRecord_Node1_action N_UpdateGCSB1RTIndexRecord_Node1_action --> E_UpdateGCSB1RTIndexRecord N_UpdateGCSB1RTIndexRecord_Node0 -- No --> N_UpdateGCSB1RTIndexRecord_Node1 N_UpdateGCSB1RTIndexRecord_Node1 -- No --> E_UpdateGCSB1RTIndexRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists in the status index table and has either error conditions or hold conditions but not both cleared
WHEN:
The cargo status is being updated
THEN:
The system updates the existing GCSB1RT record with the current index field values
File: GCCUSIO.cbl
GIVEN:
A cargo record with hold status and populated hold index fields
WHEN:
The system processes hold status
THEN:
- The system checks if gcsb1rt record exists
- Either updates existing record or inserts new record with hold index information
β Consolidated Acceptance Criteria
- The cargo status is being updated → the system creates a new GCSB1RT record with the cargo CCN key and populated index fields
- The system attempts to retrieve GCSB1RT record and receives not found status → the system creates a new GCSB1RT record with cargo CCN as the key and populated hold index 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_CreateNewGCSB1RTIndexRecord(["Start Step"])
E_CreateNewGCSB1RTIndexRecord(["End Step"])
N_CreateNewGCSB1RTIndexRecord_Node0{"The cargo status is being updated"}:::decision
N_CreateNewGCSB1RTIndexRecord_Node0_action["The system creates a new GCSB1RT
record with the cargo CCN key and
populated index fields"]:::main N_CreateNewGCSB1RTIndexRecord_Node0 -- Yes --> N_CreateNewGCSB1RTIndexRecord_Node0_action N_CreateNewGCSB1RTIndexRecord_Node0_action --> E_CreateNewGCSB1RTIndexRecord S_CreateNewGCSB1RTIndexRecord --> N_CreateNewGCSB1RTIndexRecord_Node0 N_CreateNewGCSB1RTIndexRecord_Node1{"The system attempts to retrieve
GCSB1RT record and receives not
found status"}:::decision N_CreateNewGCSB1RTIndexRecord_Node1_action["The system creates a new GCSB1RT
record with cargo CCN as the key and
populated hold index fields"]:::main N_CreateNewGCSB1RTIndexRecord_Node1 -- Yes --> N_CreateNewGCSB1RTIndexRecord_Node1_action N_CreateNewGCSB1RTIndexRecord_Node1_action --> E_CreateNewGCSB1RTIndexRecord N_CreateNewGCSB1RTIndexRecord_Node0 -- No --> N_CreateNewGCSB1RTIndexRecord_Node1 N_CreateNewGCSB1RTIndexRecord_Node1 -- No --> E_CreateNewGCSB1RTIndexRecord
record with the cargo CCN key and
populated index fields"]:::main N_CreateNewGCSB1RTIndexRecord_Node0 -- Yes --> N_CreateNewGCSB1RTIndexRecord_Node0_action N_CreateNewGCSB1RTIndexRecord_Node0_action --> E_CreateNewGCSB1RTIndexRecord S_CreateNewGCSB1RTIndexRecord --> N_CreateNewGCSB1RTIndexRecord_Node0 N_CreateNewGCSB1RTIndexRecord_Node1{"The system attempts to retrieve
GCSB1RT record and receives not
found status"}:::decision N_CreateNewGCSB1RTIndexRecord_Node1_action["The system creates a new GCSB1RT
record with cargo CCN as the key and
populated hold index fields"]:::main N_CreateNewGCSB1RTIndexRecord_Node1 -- Yes --> N_CreateNewGCSB1RTIndexRecord_Node1_action N_CreateNewGCSB1RTIndexRecord_Node1_action --> E_CreateNewGCSB1RTIndexRecord N_CreateNewGCSB1RTIndexRecord_Node0 -- No --> N_CreateNewGCSB1RTIndexRecord_Node1 N_CreateNewGCSB1RTIndexRecord_Node1 -- No --> E_CreateNewGCSB1RTIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record has error conditions (CPCARGO-ERROR or CPCARGO-PENDING or USCARGO-ERROR) or hold conditions (USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-B or USCARGO-PR-H-BO or USCARGO-HOLD-D or USCARGO-PR-H-DE or USCARGO-HOLDFDA) and no existing status index record exists
WHEN:
The cargo status is being updated
THEN:
- The system creates a new gcsb1rt record with the cargo ccn key
- Populated index fields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with hold conditions and no existing GCSB1RT index record
WHEN:
- The system attempts to retrieve gcsb1rt record
- Receives not found status
THEN:
- The system creates a new gcsb1rt record with cargo ccn as the key
- Populated hold index fields
β Consolidated Acceptance Criteria
- The CP cargo status field RT10-CPCARGO-STATUS indicates an error condition (88-GCUSRT-RT10-CPCARGO-ERROR is true) → the system flags the cargo as having an error condition and proceeds to error handling 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_CPCargoErrorStatus(["Start Step"])
E_CPCargoErrorStatus(["End Step"])
N_CPCargoErrorStatus_Node0{"The CP cargo status field
RT10-CPCARGO-STATUS indicates an
error condition
88-GCUSRT-RT10-CPCARGO-ERROR is true"}:::decision N_CPCargoErrorStatus_Node0_action["The system flags the cargo as
having an error condition and
proceeds to error handling workflow"]:::exclusion N_CPCargoErrorStatus_Node0 -- Yes -->|Alternative| N_CPCargoErrorStatus_Node0_action N_CPCargoErrorStatus_Node0_action --> E_CPCargoErrorStatus S_CPCargoErrorStatus --> N_CPCargoErrorStatus_Node0 N_CPCargoErrorStatus_Node0 -- No --> E_CPCargoErrorStatus
RT10-CPCARGO-STATUS indicates an
error condition
88-GCUSRT-RT10-CPCARGO-ERROR is true"}:::decision N_CPCargoErrorStatus_Node0_action["The system flags the cargo as
having an error condition and
proceeds to error handling workflow"]:::exclusion N_CPCargoErrorStatus_Node0 -- Yes -->|Alternative| N_CPCargoErrorStatus_Node0_action N_CPCargoErrorStatus_Node0_action --> E_CPCargoErrorStatus S_CPCargoErrorStatus --> N_CPCargoErrorStatus_Node0 N_CPCargoErrorStatus_Node0 -- No --> E_CPCargoErrorStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for status evaluation
WHEN:
The CP cargo status field RT10-CPCARGO-STATUS indicates an error condition (88-GCUSRT-RT10-CPCARGO-ERROR is true)
THEN:
- The system flags the cargo as having an error condition
- Proceeds to error handling workflow
β Consolidated Acceptance Criteria
- The CP cargo status field RT10-CPCARGO-STATUS indicates a pending condition (88-GCUSRT-RT10-CPCARGO-PENDING is true) → the system flags the cargo as having a pending condition and proceeds to pending status handling 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_CPCargoPendingStatus(["Start Step"])
E_CPCargoPendingStatus(["End Step"])
N_CPCargoPendingStatus_Node0{"The CP cargo status field
RT10-CPCARGO-STATUS indicates a
pending condition
88-GCUSRT-RT10-CPCARGO-PENDING is
true"}:::decision N_CPCargoPendingStatus_Node0_action["The system flags the cargo as
having a pending condition and
proceeds to pending status handling
workflow"]:::main N_CPCargoPendingStatus_Node0 -- Yes --> N_CPCargoPendingStatus_Node0_action N_CPCargoPendingStatus_Node0_action --> E_CPCargoPendingStatus S_CPCargoPendingStatus --> N_CPCargoPendingStatus_Node0 N_CPCargoPendingStatus_Node0 -- No --> E_CPCargoPendingStatus
RT10-CPCARGO-STATUS indicates a
pending condition
88-GCUSRT-RT10-CPCARGO-PENDING is
true"}:::decision N_CPCargoPendingStatus_Node0_action["The system flags the cargo as
having a pending condition and
proceeds to pending status handling
workflow"]:::main N_CPCargoPendingStatus_Node0 -- Yes --> N_CPCargoPendingStatus_Node0_action N_CPCargoPendingStatus_Node0_action --> E_CPCargoPendingStatus S_CPCargoPendingStatus --> N_CPCargoPendingStatus_Node0 N_CPCargoPendingStatus_Node0 -- No --> E_CPCargoPendingStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and CP cargo error status is false
WHEN:
The CP cargo status field RT10-CPCARGO-STATUS indicates a pending condition (88-GCUSRT-RT10-CPCARGO-PENDING is true)
THEN:
- The system flags the cargo as having a pending condition
- Proceeds to pending status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates an error condition (88-GCUSRT-RT11-USCARGO-ERROR is true) → the system flags the cargo as having an error condition and proceeds to error handling 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_USCargoErrorStatus(["Start Step"])
E_USCargoErrorStatus(["End Step"])
N_USCargoErrorStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates an
error condition
88-GCUSRT-RT11-USCARGO-ERROR is true"}:::decision N_USCargoErrorStatus_Node0_action["The system flags the cargo as
having an error condition and
proceeds to error handling workflow"]:::exclusion N_USCargoErrorStatus_Node0 -- Yes -->|Alternative| N_USCargoErrorStatus_Node0_action N_USCargoErrorStatus_Node0_action --> E_USCargoErrorStatus S_USCargoErrorStatus --> N_USCargoErrorStatus_Node0 N_USCargoErrorStatus_Node0 -- No --> E_USCargoErrorStatus
RT11-USCARGO-STATUS indicates an
error condition
88-GCUSRT-RT11-USCARGO-ERROR is true"}:::decision N_USCargoErrorStatus_Node0_action["The system flags the cargo as
having an error condition and
proceeds to error handling workflow"]:::exclusion N_USCargoErrorStatus_Node0 -- Yes -->|Alternative| N_USCargoErrorStatus_Node0_action N_USCargoErrorStatus_Node0_action --> E_USCargoErrorStatus S_USCargoErrorStatus --> N_USCargoErrorStatus_Node0 N_USCargoErrorStatus_Node0 -- No --> E_USCargoErrorStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and both CP cargo error and pending statuses are false
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates an error condition (88-GCUSRT-RT11-USCARGO-ERROR is true)
THEN:
- The system flags the cargo as having an error condition
- Proceeds to error handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a general hold condition (88-GCUSRT-RT11-USCARGO-HOLD is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoHoldStatus(["Start Step"])
E_USCargoHoldStatus(["End Step"])
N_USCargoHoldStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a
general hold condition
88-GCUSRT-RT11-USCARGO-HOLD is true"}:::decision N_USCargoHoldStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldStatus_Node0 -- Yes --> N_USCargoHoldStatus_Node0_action N_USCargoHoldStatus_Node0_action --> E_USCargoHoldStatus S_USCargoHoldStatus --> N_USCargoHoldStatus_Node0 N_USCargoHoldStatus_Node0 -- No --> E_USCargoHoldStatus
RT11-USCARGO-STATUS indicates a
general hold condition
88-GCUSRT-RT11-USCARGO-HOLD is true"}:::decision N_USCargoHoldStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldStatus_Node0 -- Yes --> N_USCargoHoldStatus_Node0_action N_USCargoHoldStatus_Node0_action --> E_USCargoHoldStatus S_USCargoHoldStatus --> N_USCargoHoldStatus_Node0 N_USCargoHoldStatus_Node0 -- No --> E_USCargoHoldStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a general hold condition (88-GCUSRT-RT11-USCARGO-HOLD is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a PCS hold condition (88-GCUSRT-RT11-USCARGO-HOLDPCS is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoHoldPCSStatus(["Start Step"])
E_USCargoHoldPCSStatus(["End Step"])
N_USCargoHoldPCSStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a PCS
hold condition
88-GCUSRT-RT11-USCARGO-HOLDPCS is
true"}:::decision N_USCargoHoldPCSStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldPCSStatus_Node0 -- Yes --> N_USCargoHoldPCSStatus_Node0_action N_USCargoHoldPCSStatus_Node0_action --> E_USCargoHoldPCSStatus S_USCargoHoldPCSStatus --> N_USCargoHoldPCSStatus_Node0 N_USCargoHoldPCSStatus_Node0 -- No --> E_USCargoHoldPCSStatus
RT11-USCARGO-STATUS indicates a PCS
hold condition
88-GCUSRT-RT11-USCARGO-HOLDPCS is
true"}:::decision N_USCargoHoldPCSStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldPCSStatus_Node0 -- Yes --> N_USCargoHoldPCSStatus_Node0_action N_USCargoHoldPCSStatus_Node0_action --> E_USCargoHoldPCSStatus S_USCargoHoldPCSStatus --> N_USCargoHoldPCSStatus_Node0 N_USCargoHoldPCSStatus_Node0 -- No --> E_USCargoHoldPCSStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error or general hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a PCS hold condition (88-GCUSRT-RT11-USCARGO-HOLDPCS is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a pre-release PCS hold condition (88-GCUSRT-RT11-USCARGO-PR-HPCS is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoPRHPCSStatus(["Start Step"])
E_USCargoPRHPCSStatus(["End Step"])
N_USCargoPRHPCSStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a
pre-release PCS hold condition
88-GCUSRT-RT11-USCARGO-PR-HPCS is
true"}:::decision N_USCargoPRHPCSStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoPRHPCSStatus_Node0 -- Yes --> N_USCargoPRHPCSStatus_Node0_action N_USCargoPRHPCSStatus_Node0_action --> E_USCargoPRHPCSStatus S_USCargoPRHPCSStatus --> N_USCargoPRHPCSStatus_Node0 N_USCargoPRHPCSStatus_Node0 -- No --> E_USCargoPRHPCSStatus
RT11-USCARGO-STATUS indicates a
pre-release PCS hold condition
88-GCUSRT-RT11-USCARGO-PR-HPCS is
true"}:::decision N_USCargoPRHPCSStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoPRHPCSStatus_Node0 -- Yes --> N_USCargoPRHPCSStatus_Node0_action N_USCargoPRHPCSStatus_Node0_action --> E_USCargoPRHPCSStatus S_USCargoPRHPCSStatus --> N_USCargoPRHPCSStatus_Node0 N_USCargoPRHPCSStatus_Node0 -- No --> E_USCargoPRHPCSStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error, general hold, or PCS hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a pre-release PCS hold condition (88-GCUSRT-RT11-USCARGO-PR-HPCS is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a border hold condition (88-GCUSRT-RT11-USCARGO-HOLD-B is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoHoldBorderStatus(["Start Step"])
E_USCargoHoldBorderStatus(["End Step"])
N_USCargoHoldBorderStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a
border hold condition
88-GCUSRT-RT11-USCARGO-HOLD-B is
true"}:::decision N_USCargoHoldBorderStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldBorderStatus_Node0 -- Yes --> N_USCargoHoldBorderStatus_Node0_action N_USCargoHoldBorderStatus_Node0_action --> E_USCargoHoldBorderStatus S_USCargoHoldBorderStatus --> N_USCargoHoldBorderStatus_Node0 N_USCargoHoldBorderStatus_Node0 -- No --> E_USCargoHoldBorderStatus
RT11-USCARGO-STATUS indicates a
border hold condition
88-GCUSRT-RT11-USCARGO-HOLD-B is
true"}:::decision N_USCargoHoldBorderStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldBorderStatus_Node0 -- Yes --> N_USCargoHoldBorderStatus_Node0_action N_USCargoHoldBorderStatus_Node0_action --> E_USCargoHoldBorderStatus S_USCargoHoldBorderStatus --> N_USCargoHoldBorderStatus_Node0 N_USCargoHoldBorderStatus_Node0 -- No --> E_USCargoHoldBorderStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error or previous hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a border hold condition (88-GCUSRT-RT11-USCARGO-HOLD-B is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a pre-release border hold condition (88-GCUSRT-RT11-USCARGO-PR-H-BO is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoPRHBOStatus(["Start Step"])
E_USCargoPRHBOStatus(["End Step"])
N_USCargoPRHBOStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a
pre-release border hold condition
88-GCUSRT-RT11-USCARGO-PR-H-BO is
true"}:::decision N_USCargoPRHBOStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoPRHBOStatus_Node0 -- Yes --> N_USCargoPRHBOStatus_Node0_action N_USCargoPRHBOStatus_Node0_action --> E_USCargoPRHBOStatus S_USCargoPRHBOStatus --> N_USCargoPRHBOStatus_Node0 N_USCargoPRHBOStatus_Node0 -- No --> E_USCargoPRHBOStatus
RT11-USCARGO-STATUS indicates a
pre-release border hold condition
88-GCUSRT-RT11-USCARGO-PR-H-BO is
true"}:::decision N_USCargoPRHBOStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoPRHBOStatus_Node0 -- Yes --> N_USCargoPRHBOStatus_Node0_action N_USCargoPRHBOStatus_Node0_action --> E_USCargoPRHBOStatus S_USCargoPRHBOStatus --> N_USCargoPRHBOStatus_Node0 N_USCargoPRHBOStatus_Node0 -- No --> E_USCargoPRHBOStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error or previous hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a pre-release border hold condition (88-GCUSRT-RT11-USCARGO-PR-H-BO is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a destination hold condition (88-GCUSRT-RT11-USCARGO-HOLD-D is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoHoldDestStatus(["Start Step"])
E_USCargoHoldDestStatus(["End Step"])
N_USCargoHoldDestStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a
destination hold condition
88-GCUSRT-RT11-USCARGO-HOLD-D is
true"}:::decision N_USCargoHoldDestStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldDestStatus_Node0 -- Yes --> N_USCargoHoldDestStatus_Node0_action N_USCargoHoldDestStatus_Node0_action --> E_USCargoHoldDestStatus S_USCargoHoldDestStatus --> N_USCargoHoldDestStatus_Node0 N_USCargoHoldDestStatus_Node0 -- No --> E_USCargoHoldDestStatus
RT11-USCARGO-STATUS indicates a
destination hold condition
88-GCUSRT-RT11-USCARGO-HOLD-D is
true"}:::decision N_USCargoHoldDestStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldDestStatus_Node0 -- Yes --> N_USCargoHoldDestStatus_Node0_action N_USCargoHoldDestStatus_Node0_action --> E_USCargoHoldDestStatus S_USCargoHoldDestStatus --> N_USCargoHoldDestStatus_Node0 N_USCargoHoldDestStatus_Node0 -- No --> E_USCargoHoldDestStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error or previous hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a destination hold condition (88-GCUSRT-RT11-USCARGO-HOLD-D is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates a pre-release destination hold condition (88-GCUSRT-RT11-USCARGO-PR-H-DE is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoPRHDEStatus(["Start Step"])
E_USCargoPRHDEStatus(["End Step"])
N_USCargoPRHDEStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates a
pre-release destination hold
condition
88-GCUSRT-RT11-USCARGO-PR-H-DE is
true"}:::decision N_USCargoPRHDEStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoPRHDEStatus_Node0 -- Yes --> N_USCargoPRHDEStatus_Node0_action N_USCargoPRHDEStatus_Node0_action --> E_USCargoPRHDEStatus S_USCargoPRHDEStatus --> N_USCargoPRHDEStatus_Node0 N_USCargoPRHDEStatus_Node0 -- No --> E_USCargoPRHDEStatus
RT11-USCARGO-STATUS indicates a
pre-release destination hold
condition
88-GCUSRT-RT11-USCARGO-PR-H-DE is
true"}:::decision N_USCargoPRHDEStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoPRHDEStatus_Node0 -- Yes --> N_USCargoPRHDEStatus_Node0_action N_USCargoPRHDEStatus_Node0_action --> E_USCargoPRHDEStatus S_USCargoPRHDEStatus --> N_USCargoPRHDEStatus_Node0 N_USCargoPRHDEStatus_Node0 -- No --> E_USCargoPRHDEStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error or previous hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates a pre-release destination hold condition (88-GCUSRT-RT11-USCARGO-PR-H-DE is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- The US cargo status field RT11-USCARGO-STATUS indicates an FDA hold condition (88-GCUSRT-RT11-USCARGO-HOLDFDA is true) → the system flags the cargo as having a hold condition and proceeds to hold status handling 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_USCargoHoldFDAStatus(["Start Step"])
E_USCargoHoldFDAStatus(["End Step"])
N_USCargoHoldFDAStatus_Node0{"The US cargo status field
RT11-USCARGO-STATUS indicates an FDA
hold condition
88-GCUSRT-RT11-USCARGO-HOLDFDA is
true"}:::decision N_USCargoHoldFDAStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldFDAStatus_Node0 -- Yes --> N_USCargoHoldFDAStatus_Node0_action N_USCargoHoldFDAStatus_Node0_action --> E_USCargoHoldFDAStatus S_USCargoHoldFDAStatus --> N_USCargoHoldFDAStatus_Node0 N_USCargoHoldFDAStatus_Node0 -- No --> E_USCargoHoldFDAStatus
RT11-USCARGO-STATUS indicates an FDA
hold condition
88-GCUSRT-RT11-USCARGO-HOLDFDA is
true"}:::decision N_USCargoHoldFDAStatus_Node0_action["The system flags the cargo as
having a hold condition and proceeds
to hold status handling workflow"]:::main N_USCargoHoldFDAStatus_Node0 -- Yes --> N_USCargoHoldFDAStatus_Node0_action N_USCargoHoldFDAStatus_Node0_action --> E_USCargoHoldFDAStatus S_USCargoHoldFDAStatus --> N_USCargoHoldFDAStatus_Node0 N_USCargoHoldFDAStatus_Node0 -- No --> E_USCargoHoldFDAStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed and no error or previous hold conditions exist
WHEN:
The US cargo status field RT11-USCARGO-STATUS indicates an FDA hold condition (88-GCUSRT-RT11-USCARGO-HOLDFDA is true)
THEN:
- The system flags the cargo as having a hold condition
- Proceeds to hold status handling workflow
β Consolidated Acceptance Criteria
- All error and hold status checks return false (no CP cargo errors, no CP cargo pending, no US cargo errors, and no US cargo hold conditions of any type) → the system determines the cargo has clean status and proceeds to normal processing workflow without special handling 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_NoErrorHoldConditions(["Start Step"])
E_NoErrorHoldConditions(["End Step"])
N_NoErrorHoldConditions_Node0{"All error and hold status checks
return false no CP cargo errors, no
CP cargo pending, no US cargo
errors, and no US cargo hold
conditions of any type"}:::decision N_NoErrorHoldConditions_Node0_action["The system determines the cargo has
clean status and proceeds to normal
processing workflow without special
handling requirements"]:::exclusion N_NoErrorHoldConditions_Node0 -- Yes -->|Alternative| N_NoErrorHoldConditions_Node0_action N_NoErrorHoldConditions_Node0_action --> E_NoErrorHoldConditions S_NoErrorHoldConditions --> N_NoErrorHoldConditions_Node0 N_NoErrorHoldConditions_Node0 -- No --> E_NoErrorHoldConditions
return false no CP cargo errors, no
CP cargo pending, no US cargo
errors, and no US cargo hold
conditions of any type"}:::decision N_NoErrorHoldConditions_Node0_action["The system determines the cargo has
clean status and proceeds to normal
processing workflow without special
handling requirements"]:::exclusion N_NoErrorHoldConditions_Node0 -- Yes -->|Alternative| N_NoErrorHoldConditions_Node0_action N_NoErrorHoldConditions_Node0_action --> E_NoErrorHoldConditions S_NoErrorHoldConditions --> N_NoErrorHoldConditions_Node0 N_NoErrorHoldConditions_Node0 -- No --> E_NoErrorHoldConditions
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for status evaluation
WHEN:
- All error
- Hold status checks return false (no cp cargo errors, no cp cargo pending, no us cargo errors, and no us cargo hold conditions of any type)
THEN:
- The system determines the cargo has clean status
- Proceeds to normal processing workflow without special handling requirements
β Consolidated Acceptance Criteria
- The system checks the RT10 CPCARGO-ERROR status condition → the system identifies if error processing is required based on the CPCARGO-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_CheckRT10CPCARGOERRORStatus(["Start Step"])
E_CheckRT10CPCARGOERRORStatus(["End Step"])
N_CheckRT10CPCARGOERRORStatus_Node0{"The system checks the RT10
CPCARGO-ERROR status condition"}:::decision N_CheckRT10CPCARGOERRORStatus_Node0_action["The system identifies if error
processing is required based on the
CPCARGO-ERROR status"]:::exclusion N_CheckRT10CPCARGOERRORStatus_Node0 -- Yes -->|Alternative| N_CheckRT10CPCARGOERRORStatus_Node0_action N_CheckRT10CPCARGOERRORStatus_Node0_action --> E_CheckRT10CPCARGOERRORStatus S_CheckRT10CPCARGOERRORStatus --> N_CheckRT10CPCARGOERRORStatus_Node0 N_CheckRT10CPCARGOERRORStatus_Node0 -- No --> E_CheckRT10CPCARGOERRORStatus
CPCARGO-ERROR status condition"}:::decision N_CheckRT10CPCARGOERRORStatus_Node0_action["The system identifies if error
processing is required based on the
CPCARGO-ERROR status"]:::exclusion N_CheckRT10CPCARGOERRORStatus_Node0 -- Yes -->|Alternative| N_CheckRT10CPCARGOERRORStatus_Node0_action N_CheckRT10CPCARGOERRORStatus_Node0_action --> E_CheckRT10CPCARGOERRORStatus S_CheckRT10CPCARGOERRORStatus --> N_CheckRT10CPCARGOERRORStatus_Node0 N_CheckRT10CPCARGOERRORStatus_Node0 -- No --> E_CheckRT10CPCARGOERRORStatus
File: GCCUSIO.cbl
GIVEN:
A CP cargo record with RT10 status field
WHEN:
The system checks the RT10 CPCARGO-ERROR status condition
THEN:
The system identifies if error processing is required based on the CPCARGO-ERROR status
β Consolidated Acceptance Criteria
- The system checks the RT10 CPCARGO-PENDING status condition → the system identifies if error processing is required based on the CPCARGO-PENDING 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_CheckRT10CPCARGOPENDINGStatus(["Start Step"])
E_CheckRT10CPCARGOPENDINGStatus(["End Step"])
N_CheckRT10CPCARGOPENDINGStatus_Node0{"The system checks the RT10
CPCARGO-PENDING status condition"}:::decision N_CheckRT10CPCARGOPENDINGStatus_Node0_action["The system identifies if error
processing is required based on the
CPCARGO-PENDING status"]:::main N_CheckRT10CPCARGOPENDINGStatus_Node0 -- Yes --> N_CheckRT10CPCARGOPENDINGStatus_Node0_action N_CheckRT10CPCARGOPENDINGStatus_Node0_action --> E_CheckRT10CPCARGOPENDINGStatus S_CheckRT10CPCARGOPENDINGStatus --> N_CheckRT10CPCARGOPENDINGStatus_Node0 N_CheckRT10CPCARGOPENDINGStatus_Node0 -- No --> E_CheckRT10CPCARGOPENDINGStatus
CPCARGO-PENDING status condition"}:::decision N_CheckRT10CPCARGOPENDINGStatus_Node0_action["The system identifies if error
processing is required based on the
CPCARGO-PENDING status"]:::main N_CheckRT10CPCARGOPENDINGStatus_Node0 -- Yes --> N_CheckRT10CPCARGOPENDINGStatus_Node0_action N_CheckRT10CPCARGOPENDINGStatus_Node0_action --> E_CheckRT10CPCARGOPENDINGStatus S_CheckRT10CPCARGOPENDINGStatus --> N_CheckRT10CPCARGOPENDINGStatus_Node0 N_CheckRT10CPCARGOPENDINGStatus_Node0 -- No --> E_CheckRT10CPCARGOPENDINGStatus
File: GCCUSIO.cbl
GIVEN:
A CP cargo record with RT10 status field
WHEN:
The system checks the RT10 CPCARGO-PENDING status condition
THEN:
The system identifies if error processing is required based on the CPCARGO-PENDING status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-ERROR status condition → the system identifies if error processing is required based on the USCARGO-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_CheckRT11USCARGOERRORStatus(["Start Step"])
E_CheckRT11USCARGOERRORStatus(["End Step"])
N_CheckRT11USCARGOERRORStatus_Node0{"The system checks the RT11
USCARGO-ERROR status condition"}:::decision N_CheckRT11USCARGOERRORStatus_Node0_action["The system identifies if error
processing is required based on the
USCARGO-ERROR status"]:::exclusion N_CheckRT11USCARGOERRORStatus_Node0 -- Yes -->|Alternative| N_CheckRT11USCARGOERRORStatus_Node0_action N_CheckRT11USCARGOERRORStatus_Node0_action --> E_CheckRT11USCARGOERRORStatus S_CheckRT11USCARGOERRORStatus --> N_CheckRT11USCARGOERRORStatus_Node0 N_CheckRT11USCARGOERRORStatus_Node0 -- No --> E_CheckRT11USCARGOERRORStatus
USCARGO-ERROR status condition"}:::decision N_CheckRT11USCARGOERRORStatus_Node0_action["The system identifies if error
processing is required based on the
USCARGO-ERROR status"]:::exclusion N_CheckRT11USCARGOERRORStatus_Node0 -- Yes -->|Alternative| N_CheckRT11USCARGOERRORStatus_Node0_action N_CheckRT11USCARGOERRORStatus_Node0_action --> E_CheckRT11USCARGOERRORStatus S_CheckRT11USCARGOERRORStatus --> N_CheckRT11USCARGOERRORStatus_Node0 N_CheckRT11USCARGOERRORStatus_Node0 -- No --> E_CheckRT11USCARGOERRORStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-ERROR status condition
THEN:
The system identifies if error processing is required based on the USCARGO-ERROR status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-HOLD status condition → the system identifies if hold processing is required based on the USCARGO-HOLD 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_CheckRT11USCARGOHOLDStatus(["Start Step"])
E_CheckRT11USCARGOHOLDStatus(["End Step"])
N_CheckRT11USCARGOHOLDStatus_Node0{"The system checks the RT11
USCARGO-HOLD status condition"}:::decision N_CheckRT11USCARGOHOLDStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLD status"]:::main N_CheckRT11USCARGOHOLDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDStatus_Node0_action N_CheckRT11USCARGOHOLDStatus_Node0_action --> E_CheckRT11USCARGOHOLDStatus S_CheckRT11USCARGOHOLDStatus --> N_CheckRT11USCARGOHOLDStatus_Node0 N_CheckRT11USCARGOHOLDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDStatus
USCARGO-HOLD status condition"}:::decision N_CheckRT11USCARGOHOLDStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLD status"]:::main N_CheckRT11USCARGOHOLDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDStatus_Node0_action N_CheckRT11USCARGOHOLDStatus_Node0_action --> E_CheckRT11USCARGOHOLDStatus S_CheckRT11USCARGOHOLDStatus --> N_CheckRT11USCARGOHOLDStatus_Node0 N_CheckRT11USCARGOHOLDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-HOLD status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-HOLD status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-HOLDPCS status condition → the system identifies if hold processing is required based on the USCARGO-HOLDPCS 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_CheckRT11USCARGOHOLDPCSStatus(["Start Step"])
E_CheckRT11USCARGOHOLDPCSStatus(["End Step"])
N_CheckRT11USCARGOHOLDPCSStatus_Node0{"The system checks the RT11
USCARGO-HOLDPCS status condition"}:::decision N_CheckRT11USCARGOHOLDPCSStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLDPCS status"]:::main N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDPCSStatus_Node0_action N_CheckRT11USCARGOHOLDPCSStatus_Node0_action --> E_CheckRT11USCARGOHOLDPCSStatus S_CheckRT11USCARGOHOLDPCSStatus --> N_CheckRT11USCARGOHOLDPCSStatus_Node0 N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDPCSStatus
USCARGO-HOLDPCS status condition"}:::decision N_CheckRT11USCARGOHOLDPCSStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLDPCS status"]:::main N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDPCSStatus_Node0_action N_CheckRT11USCARGOHOLDPCSStatus_Node0_action --> E_CheckRT11USCARGOHOLDPCSStatus S_CheckRT11USCARGOHOLDPCSStatus --> N_CheckRT11USCARGOHOLDPCSStatus_Node0 N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDPCSStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-HOLDPCS status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-HOLDPCS status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-PR-HPCS status condition → the system identifies if hold processing is required based on the USCARGO-PR-HPCS 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_CheckRT11USCARGOPRHPCSStatus(["Start Step"])
E_CheckRT11USCARGOPRHPCSStatus(["End Step"])
N_CheckRT11USCARGOPRHPCSStatus_Node0{"The system checks the RT11
USCARGO-PR-HPCS status condition"}:::decision N_CheckRT11USCARGOPRHPCSStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-PR-HPCS status"]:::main N_CheckRT11USCARGOPRHPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHPCSStatus_Node0_action N_CheckRT11USCARGOPRHPCSStatus_Node0_action --> E_CheckRT11USCARGOPRHPCSStatus S_CheckRT11USCARGOPRHPCSStatus --> N_CheckRT11USCARGOPRHPCSStatus_Node0 N_CheckRT11USCARGOPRHPCSStatus_Node0 -- No --> E_CheckRT11USCARGOPRHPCSStatus
USCARGO-PR-HPCS status condition"}:::decision N_CheckRT11USCARGOPRHPCSStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-PR-HPCS status"]:::main N_CheckRT11USCARGOPRHPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHPCSStatus_Node0_action N_CheckRT11USCARGOPRHPCSStatus_Node0_action --> E_CheckRT11USCARGOPRHPCSStatus S_CheckRT11USCARGOPRHPCSStatus --> N_CheckRT11USCARGOPRHPCSStatus_Node0 N_CheckRT11USCARGOPRHPCSStatus_Node0 -- No --> E_CheckRT11USCARGOPRHPCSStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-PR-HPCS status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-PR-HPCS status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-HOLD-B status condition → the system identifies if hold processing is required based on the USCARGO-HOLD-B 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_CheckRT11USCARGOHOLDBStatus(["Start Step"])
E_CheckRT11USCARGOHOLDBStatus(["End Step"])
N_CheckRT11USCARGOHOLDBStatus_Node0{"The system checks the RT11
USCARGO-HOLD-B status condition"}:::decision N_CheckRT11USCARGOHOLDBStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLD-B status"]:::main N_CheckRT11USCARGOHOLDBStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDBStatus_Node0_action N_CheckRT11USCARGOHOLDBStatus_Node0_action --> E_CheckRT11USCARGOHOLDBStatus S_CheckRT11USCARGOHOLDBStatus --> N_CheckRT11USCARGOHOLDBStatus_Node0 N_CheckRT11USCARGOHOLDBStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDBStatus
USCARGO-HOLD-B status condition"}:::decision N_CheckRT11USCARGOHOLDBStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLD-B status"]:::main N_CheckRT11USCARGOHOLDBStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDBStatus_Node0_action N_CheckRT11USCARGOHOLDBStatus_Node0_action --> E_CheckRT11USCARGOHOLDBStatus S_CheckRT11USCARGOHOLDBStatus --> N_CheckRT11USCARGOHOLDBStatus_Node0 N_CheckRT11USCARGOHOLDBStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDBStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-HOLD-B status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-HOLD-B status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-PR-H-BO status condition → the system identifies if hold processing is required based on the USCARGO-PR-H-BO 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_CheckRT11USCARGOPRHBOStatus(["Start Step"])
E_CheckRT11USCARGOPRHBOStatus(["End Step"])
N_CheckRT11USCARGOPRHBOStatus_Node0{"The system checks the RT11
USCARGO-PR-H-BO status condition"}:::decision N_CheckRT11USCARGOPRHBOStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-PR-H-BO status"]:::main N_CheckRT11USCARGOPRHBOStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHBOStatus_Node0_action N_CheckRT11USCARGOPRHBOStatus_Node0_action --> E_CheckRT11USCARGOPRHBOStatus S_CheckRT11USCARGOPRHBOStatus --> N_CheckRT11USCARGOPRHBOStatus_Node0 N_CheckRT11USCARGOPRHBOStatus_Node0 -- No --> E_CheckRT11USCARGOPRHBOStatus
USCARGO-PR-H-BO status condition"}:::decision N_CheckRT11USCARGOPRHBOStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-PR-H-BO status"]:::main N_CheckRT11USCARGOPRHBOStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHBOStatus_Node0_action N_CheckRT11USCARGOPRHBOStatus_Node0_action --> E_CheckRT11USCARGOPRHBOStatus S_CheckRT11USCARGOPRHBOStatus --> N_CheckRT11USCARGOPRHBOStatus_Node0 N_CheckRT11USCARGOPRHBOStatus_Node0 -- No --> E_CheckRT11USCARGOPRHBOStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-PR-H-BO status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-PR-H-BO status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-HOLD-D status condition → the system identifies if hold processing is required based on the USCARGO-HOLD-D 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_CheckRT11USCARGOHOLDDStatus(["Start Step"])
E_CheckRT11USCARGOHOLDDStatus(["End Step"])
N_CheckRT11USCARGOHOLDDStatus_Node0{"The system checks the RT11
USCARGO-HOLD-D status condition"}:::decision N_CheckRT11USCARGOHOLDDStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLD-D status"]:::main N_CheckRT11USCARGOHOLDDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDDStatus_Node0_action N_CheckRT11USCARGOHOLDDStatus_Node0_action --> E_CheckRT11USCARGOHOLDDStatus S_CheckRT11USCARGOHOLDDStatus --> N_CheckRT11USCARGOHOLDDStatus_Node0 N_CheckRT11USCARGOHOLDDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDDStatus
USCARGO-HOLD-D status condition"}:::decision N_CheckRT11USCARGOHOLDDStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLD-D status"]:::main N_CheckRT11USCARGOHOLDDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDDStatus_Node0_action N_CheckRT11USCARGOHOLDDStatus_Node0_action --> E_CheckRT11USCARGOHOLDDStatus S_CheckRT11USCARGOHOLDDStatus --> N_CheckRT11USCARGOHOLDDStatus_Node0 N_CheckRT11USCARGOHOLDDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDDStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-HOLD-D status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-HOLD-D status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-PR-H-DE status condition → the system identifies if hold processing is required based on the USCARGO-PR-H-DE 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_CheckRT11USCARGOPRHDEStatus(["Start Step"])
E_CheckRT11USCARGOPRHDEStatus(["End Step"])
N_CheckRT11USCARGOPRHDEStatus_Node0{"The system checks the RT11
USCARGO-PR-H-DE status condition"}:::decision N_CheckRT11USCARGOPRHDEStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-PR-H-DE status"]:::main N_CheckRT11USCARGOPRHDEStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHDEStatus_Node0_action N_CheckRT11USCARGOPRHDEStatus_Node0_action --> E_CheckRT11USCARGOPRHDEStatus S_CheckRT11USCARGOPRHDEStatus --> N_CheckRT11USCARGOPRHDEStatus_Node0 N_CheckRT11USCARGOPRHDEStatus_Node0 -- No --> E_CheckRT11USCARGOPRHDEStatus
USCARGO-PR-H-DE status condition"}:::decision N_CheckRT11USCARGOPRHDEStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-PR-H-DE status"]:::main N_CheckRT11USCARGOPRHDEStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHDEStatus_Node0_action N_CheckRT11USCARGOPRHDEStatus_Node0_action --> E_CheckRT11USCARGOPRHDEStatus S_CheckRT11USCARGOPRHDEStatus --> N_CheckRT11USCARGOPRHDEStatus_Node0 N_CheckRT11USCARGOPRHDEStatus_Node0 -- No --> E_CheckRT11USCARGOPRHDEStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-PR-H-DE status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-PR-H-DE status
β Consolidated Acceptance Criteria
- The system checks the RT11 USCARGO-HOLDFDA status condition → the system identifies if hold processing is required based on the USCARGO-HOLDFDA 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_CheckRT11USCARGOHOLDFDAStatus(["Start Step"])
E_CheckRT11USCARGOHOLDFDAStatus(["End Step"])
N_CheckRT11USCARGOHOLDFDAStatus_Node0{"The system checks the RT11
USCARGO-HOLDFDA status condition"}:::decision N_CheckRT11USCARGOHOLDFDAStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLDFDA status"]:::main N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDFDAStatus_Node0_action N_CheckRT11USCARGOHOLDFDAStatus_Node0_action --> E_CheckRT11USCARGOHOLDFDAStatus S_CheckRT11USCARGOHOLDFDAStatus --> N_CheckRT11USCARGOHOLDFDAStatus_Node0 N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDFDAStatus
USCARGO-HOLDFDA status condition"}:::decision N_CheckRT11USCARGOHOLDFDAStatus_Node0_action["The system identifies if hold
processing is required based on the
USCARGO-HOLDFDA status"]:::main N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDFDAStatus_Node0_action N_CheckRT11USCARGOHOLDFDAStatus_Node0_action --> E_CheckRT11USCARGOHOLDFDAStatus S_CheckRT11USCARGOHOLDFDAStatus --> N_CheckRT11USCARGOHOLDFDAStatus_Node0 N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDFDAStatus
File: GCCUSIO.cbl
GIVEN:
A US cargo record with RT11 status field
WHEN:
The system checks the RT11 USCARGO-HOLDFDA status condition
THEN:
The system identifies if hold processing is required based on the USCARGO-HOLDFDA status
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system populates error code and location fields for origin station, border station, and destination station in the status index 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_FillErrorIndexFields(["Start Step"])
E_FillErrorIndexFields(["End Step"])
N_FillErrorIndexFields_Node0{"The system processes the cargo
status update"}:::decision N_FillErrorIndexFields_Node0_action["The system populates error code and
location fields for origin station,
border station, and destination
station in the status index record"]:::main N_FillErrorIndexFields_Node0 -- Yes --> N_FillErrorIndexFields_Node0_action N_FillErrorIndexFields_Node0_action --> E_FillErrorIndexFields S_FillErrorIndexFields --> N_FillErrorIndexFields_Node0 N_FillErrorIndexFields_Node0 -- No --> E_FillErrorIndexFields
status update"}:::decision N_FillErrorIndexFields_Node0_action["The system populates error code and
location fields for origin station,
border station, and destination
station in the status index record"]:::main N_FillErrorIndexFields_Node0 -- Yes --> N_FillErrorIndexFields_Node0_action N_FillErrorIndexFields_Node0_action --> E_FillErrorIndexFields S_FillErrorIndexFields --> N_FillErrorIndexFields_Node0 N_FillErrorIndexFields_Node0 -- No --> E_FillErrorIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record with error conditions (RT10 CPCARGO-ERROR, RT10 CPCARGO-PENDING, or RT11 USCARGO-ERROR)
WHEN:
The system processes the cargo status update
THEN:
- The system populates error code
- Location fields for origin station, border station, and destination station in the status index record
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system populates held destination and held border location fields in the status index 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_FillHoldIndexFields(["Start Step"])
E_FillHoldIndexFields(["End Step"])
N_FillHoldIndexFields_Node0{"The system processes the cargo
status update"}:::decision N_FillHoldIndexFields_Node0_action["The system populates held
destination and held border location
fields in the status index record"]:::main N_FillHoldIndexFields_Node0 -- Yes --> N_FillHoldIndexFields_Node0_action N_FillHoldIndexFields_Node0_action --> E_FillHoldIndexFields S_FillHoldIndexFields --> N_FillHoldIndexFields_Node0 N_FillHoldIndexFields_Node0 -- No --> E_FillHoldIndexFields
status update"}:::decision N_FillHoldIndexFields_Node0_action["The system populates held
destination and held border location
fields in the status index record"]:::main N_FillHoldIndexFields_Node0 -- Yes --> N_FillHoldIndexFields_Node0_action N_FillHoldIndexFields_Node0_action --> E_FillHoldIndexFields S_FillHoldIndexFields --> N_FillHoldIndexFields_Node0 N_FillHoldIndexFields_Node0 -- No --> E_FillHoldIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record with hold conditions (RT11 USCARGO-HOLD, RT11 USCARGO-HOLDPCS, RT11 USCARGO-PR-HPCS, RT11 USCARGO-HOLD-B, RT11 USCARGO-PR-H-BO, RT11 USCARGO-HOLD-D, RT11 USCARGO-PR-H-DE, or RT11 USCARGO-HOLDFDA)
WHEN:
The system processes the cargo status update
THEN:
- The system populates held destination
- Held border location fields in the status index record
β Consolidated Acceptance Criteria
- The system processes the cargo status update and the status index record exists → the system updates the existing GCSB1RT status index record with current status 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_InsertUpdateGCSB1RTRecord(["Start Step"])
E_InsertUpdateGCSB1RTRecord(["End Step"])
N_InsertUpdateGCSB1RTRecord_Node0{"The system processes the cargo
status update and the status index
record exists"}:::decision N_InsertUpdateGCSB1RTRecord_Node0_action["The system updates the existing
GCSB1RT status index record with
current status information"]:::main N_InsertUpdateGCSB1RTRecord_Node0 -- Yes --> N_InsertUpdateGCSB1RTRecord_Node0_action N_InsertUpdateGCSB1RTRecord_Node0_action --> E_InsertUpdateGCSB1RTRecord S_InsertUpdateGCSB1RTRecord --> N_InsertUpdateGCSB1RTRecord_Node0 N_InsertUpdateGCSB1RTRecord_Node0 -- No --> E_InsertUpdateGCSB1RTRecord
status update and the status index
record exists"}:::decision N_InsertUpdateGCSB1RTRecord_Node0_action["The system updates the existing
GCSB1RT status index record with
current status information"]:::main N_InsertUpdateGCSB1RTRecord_Node0 -- Yes --> N_InsertUpdateGCSB1RTRecord_Node0_action N_InsertUpdateGCSB1RTRecord_Node0_action --> E_InsertUpdateGCSB1RTRecord S_InsertUpdateGCSB1RTRecord --> N_InsertUpdateGCSB1RTRecord_Node0 N_InsertUpdateGCSB1RTRecord_Node0 -- No --> E_InsertUpdateGCSB1RTRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record with error or hold conditions requiring status tracking
WHEN:
- The system processes the cargo status update
- The status index record exists
THEN:
The system updates the existing GCSB1RT status index record with current status information
β Consolidated Acceptance Criteria
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status AND no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → the cargo status record should be deleted from GCSB1RT table
- The held destination index is spaces AND the held border index is spaces → the GCSB1RT record should be deleted
- The error destination index is spaces AND the error origin index is spaces AND the error border index is spaces → the GCSB1RT record should be deleted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteGCSB1RTRecord(["Start Step"])
E_DeleteGCSB1RTRecord(["End Step"])
N_DeleteGCSB1RTRecord_Node0{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_DeleteGCSB1RTRecord_Node0_action["The cargo status record should be
deleted from GCSB1RT table"]:::exclusion N_DeleteGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_DeleteGCSB1RTRecord_Node0_action N_DeleteGCSB1RTRecord_Node0_action --> E_DeleteGCSB1RTRecord S_DeleteGCSB1RTRecord --> N_DeleteGCSB1RTRecord_Node0 N_DeleteGCSB1RTRecord_Node1{"The held destination index is
spaces AND the held border index is
spaces"}:::decision N_DeleteGCSB1RTRecord_Node1_action["The GCSB1RT record should be
deleted"]:::main N_DeleteGCSB1RTRecord_Node1 -- Yes --> N_DeleteGCSB1RTRecord_Node1_action N_DeleteGCSB1RTRecord_Node1_action --> E_DeleteGCSB1RTRecord N_DeleteGCSB1RTRecord_Node0 -- No --> N_DeleteGCSB1RTRecord_Node1 N_DeleteGCSB1RTRecord_Node2{"The error destination index is
spaces AND the error origin index is
spaces AND the error border index is
spaces"}:::decision N_DeleteGCSB1RTRecord_Node2_action["The GCSB1RT record should be
deleted"]:::exclusion N_DeleteGCSB1RTRecord_Node2 -- Yes -->|Alternative| N_DeleteGCSB1RTRecord_Node2_action N_DeleteGCSB1RTRecord_Node2_action --> E_DeleteGCSB1RTRecord N_DeleteGCSB1RTRecord_Node1 -- No --> N_DeleteGCSB1RTRecord_Node2 N_DeleteGCSB1RTRecord_Node2 -- No --> E_DeleteGCSB1RTRecord
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_DeleteGCSB1RTRecord_Node0_action["The cargo status record should be
deleted from GCSB1RT table"]:::exclusion N_DeleteGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_DeleteGCSB1RTRecord_Node0_action N_DeleteGCSB1RTRecord_Node0_action --> E_DeleteGCSB1RTRecord S_DeleteGCSB1RTRecord --> N_DeleteGCSB1RTRecord_Node0 N_DeleteGCSB1RTRecord_Node1{"The held destination index is
spaces AND the held border index is
spaces"}:::decision N_DeleteGCSB1RTRecord_Node1_action["The GCSB1RT record should be
deleted"]:::main N_DeleteGCSB1RTRecord_Node1 -- Yes --> N_DeleteGCSB1RTRecord_Node1_action N_DeleteGCSB1RTRecord_Node1_action --> E_DeleteGCSB1RTRecord N_DeleteGCSB1RTRecord_Node0 -- No --> N_DeleteGCSB1RTRecord_Node1 N_DeleteGCSB1RTRecord_Node2{"The error destination index is
spaces AND the error origin index is
spaces AND the error border index is
spaces"}:::decision N_DeleteGCSB1RTRecord_Node2_action["The GCSB1RT record should be
deleted"]:::exclusion N_DeleteGCSB1RTRecord_Node2 -- Yes -->|Alternative| N_DeleteGCSB1RTRecord_Node2_action N_DeleteGCSB1RTRecord_Node2_action --> E_DeleteGCSB1RTRecord N_DeleteGCSB1RTRecord_Node1 -- No --> N_DeleteGCSB1RTRecord_Node2 N_DeleteGCSB1RTRecord_Node2 -- No --> E_DeleteGCSB1RTRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
- No us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
The cargo status record should be deleted from GCSB1RT table
File: GCCUSIO.cbl
GIVEN:
A cargo GCSB1RT record exists with error fields cleared
WHEN:
- The held destination index is spaces
- The held border index is spaces
THEN:
The GCSB1RT record should be deleted
File: GCCUSIO.cbl
GIVEN:
A cargo GCSB1RT record exists with hold fields cleared
WHEN:
- The error destination index is spaces
- The error origin index is spaces
- The error border index is spaces
THEN:
The GCSB1RT record should be deleted
β Consolidated Acceptance Criteria
- The held destination index is not spaces OR the held border index is not spaces → the GCSB1RT record should be updated with the current field 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_UpdateGCSB1RTRecord(["Start Step"])
E_UpdateGCSB1RTRecord(["End Step"])
N_UpdateGCSB1RTRecord_Node0{"The held destination index is not
spaces OR the held border index is
not spaces"}:::decision N_UpdateGCSB1RTRecord_Node0_action["The GCSB1RT record should be
updated with the current field
values"]:::main N_UpdateGCSB1RTRecord_Node0 -- Yes --> N_UpdateGCSB1RTRecord_Node0_action N_UpdateGCSB1RTRecord_Node0_action --> E_UpdateGCSB1RTRecord S_UpdateGCSB1RTRecord --> N_UpdateGCSB1RTRecord_Node0 N_UpdateGCSB1RTRecord_Node0 -- No --> E_UpdateGCSB1RTRecord
spaces OR the held border index is
not spaces"}:::decision N_UpdateGCSB1RTRecord_Node0_action["The GCSB1RT record should be
updated with the current field
values"]:::main N_UpdateGCSB1RTRecord_Node0 -- Yes --> N_UpdateGCSB1RTRecord_Node0_action N_UpdateGCSB1RTRecord_Node0_action --> E_UpdateGCSB1RTRecord S_UpdateGCSB1RTRecord --> N_UpdateGCSB1RTRecord_Node0 N_UpdateGCSB1RTRecord_Node0 -- No --> E_UpdateGCSB1RTRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo GCSB1RT record exists with error fields cleared
WHEN:
The held destination index is not spaces OR the held border index is not spaces
THEN:
The GCSB1RT record should be updated with the current field values
β Consolidated Acceptance Criteria
- The error destination index is not spaces:
- the error origin index is not spaces
- the error border index is not spaces
- The GCSB1RT record retrieval returns successful status → the existing GCSB1RT record should be updated with the populated error index fields
- The GCSB1RT record retrieval returns successful status → the existing GCSB1RT record should be updated with the populated hold index 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_UpdateExistingGCSB1RTRecord(["Start Step"])
E_UpdateExistingGCSB1RTRecord(["End Step"])
N_UpdateExistingGCSB1RTRecord_Node0{"The error destination index is not
spaces OR the error origin index is
not spaces OR the error border index
is not spaces"}:::decision N_UpdateExistingGCSB1RTRecord_Node0_action["The GCSB1RT record should be
updated with the current field
values"]:::exclusion N_UpdateExistingGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_UpdateExistingGCSB1RTRecord_Node0_action N_UpdateExistingGCSB1RTRecord_Node0_action --> E_UpdateExistingGCSB1RTRecord S_UpdateExistingGCSB1RTRecord --> N_UpdateExistingGCSB1RTRecord_Node0 N_UpdateExistingGCSB1RTRecord_Node1{"The GCSB1RT record retrieval
returns successful status"}:::decision N_UpdateExistingGCSB1RTRecord_Node1_action["The existing GCSB1RT record should
be updated with the populated error
index fields"]:::main N_UpdateExistingGCSB1RTRecord_Node1 -- Yes --> N_UpdateExistingGCSB1RTRecord_Node1_action N_UpdateExistingGCSB1RTRecord_Node1_action --> E_UpdateExistingGCSB1RTRecord N_UpdateExistingGCSB1RTRecord_Node0 -- No --> N_UpdateExistingGCSB1RTRecord_Node1 N_UpdateExistingGCSB1RTRecord_Node2{"The GCSB1RT record retrieval
returns successful status"}:::decision N_UpdateExistingGCSB1RTRecord_Node2_action["The existing GCSB1RT record should
be updated with the populated hold
index fields"]:::main N_UpdateExistingGCSB1RTRecord_Node2 -- Yes --> N_UpdateExistingGCSB1RTRecord_Node2_action N_UpdateExistingGCSB1RTRecord_Node2_action --> E_UpdateExistingGCSB1RTRecord N_UpdateExistingGCSB1RTRecord_Node1 -- No --> N_UpdateExistingGCSB1RTRecord_Node2 N_UpdateExistingGCSB1RTRecord_Node2 -- No --> E_UpdateExistingGCSB1RTRecord
spaces OR the error origin index is
not spaces OR the error border index
is not spaces"}:::decision N_UpdateExistingGCSB1RTRecord_Node0_action["The GCSB1RT record should be
updated with the current field
values"]:::exclusion N_UpdateExistingGCSB1RTRecord_Node0 -- Yes -->|Alternative| N_UpdateExistingGCSB1RTRecord_Node0_action N_UpdateExistingGCSB1RTRecord_Node0_action --> E_UpdateExistingGCSB1RTRecord S_UpdateExistingGCSB1RTRecord --> N_UpdateExistingGCSB1RTRecord_Node0 N_UpdateExistingGCSB1RTRecord_Node1{"The GCSB1RT record retrieval
returns successful status"}:::decision N_UpdateExistingGCSB1RTRecord_Node1_action["The existing GCSB1RT record should
be updated with the populated error
index fields"]:::main N_UpdateExistingGCSB1RTRecord_Node1 -- Yes --> N_UpdateExistingGCSB1RTRecord_Node1_action N_UpdateExistingGCSB1RTRecord_Node1_action --> E_UpdateExistingGCSB1RTRecord N_UpdateExistingGCSB1RTRecord_Node0 -- No --> N_UpdateExistingGCSB1RTRecord_Node1 N_UpdateExistingGCSB1RTRecord_Node2{"The GCSB1RT record retrieval
returns successful status"}:::decision N_UpdateExistingGCSB1RTRecord_Node2_action["The existing GCSB1RT record should
be updated with the populated hold
index fields"]:::main N_UpdateExistingGCSB1RTRecord_Node2 -- Yes --> N_UpdateExistingGCSB1RTRecord_Node2_action N_UpdateExistingGCSB1RTRecord_Node2_action --> E_UpdateExistingGCSB1RTRecord N_UpdateExistingGCSB1RTRecord_Node1 -- No --> N_UpdateExistingGCSB1RTRecord_Node2 N_UpdateExistingGCSB1RTRecord_Node2 -- No --> E_UpdateExistingGCSB1RTRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo GCSB1RT record exists with hold fields cleared
WHEN:
The error destination index is not spaces OR the error origin index is not spaces OR the error border index is not spaces
THEN:
The GCSB1RT record should be updated with the current field values
File: GCCUSIO.cbl
GIVEN:
A cargo record has error conditions and an existing GCSB1RT record is found
WHEN:
The GCSB1RT record retrieval returns successful status
THEN:
The existing GCSB1RT record should be updated with the populated error index fields
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold conditions and an existing GCSB1RT record is found
WHEN:
The GCSB1RT record retrieval returns successful status
THEN:
The existing GCSB1RT record should be updated with the populated hold index fields
β Consolidated Acceptance Criteria
- The GCSB1RT record retrieval returns not found status → a new GCSB1RT record should be inserted with the cargo CCN key and populated error index fields
- The GCSB1RT record retrieval returns not found status → a new GCSB1RT record should be inserted with the cargo CCN key and populated hold index 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_CreateNewGCSB1RTRecord(["Start Step"])
E_CreateNewGCSB1RTRecord(["End Step"])
N_CreateNewGCSB1RTRecord_Node0{"The GCSB1RT record retrieval
returns not found status"}:::decision N_CreateNewGCSB1RTRecord_Node0_action["A new GCSB1RT record should be
inserted with the cargo CCN key and
populated error index fields"]:::main N_CreateNewGCSB1RTRecord_Node0 -- Yes --> N_CreateNewGCSB1RTRecord_Node0_action N_CreateNewGCSB1RTRecord_Node0_action --> E_CreateNewGCSB1RTRecord S_CreateNewGCSB1RTRecord --> N_CreateNewGCSB1RTRecord_Node0 N_CreateNewGCSB1RTRecord_Node1{"The GCSB1RT record retrieval
returns not found status"}:::decision N_CreateNewGCSB1RTRecord_Node1_action["A new GCSB1RT record should be
inserted with the cargo CCN key and
populated hold index fields"]:::main N_CreateNewGCSB1RTRecord_Node1 -- Yes --> N_CreateNewGCSB1RTRecord_Node1_action N_CreateNewGCSB1RTRecord_Node1_action --> E_CreateNewGCSB1RTRecord N_CreateNewGCSB1RTRecord_Node0 -- No --> N_CreateNewGCSB1RTRecord_Node1 N_CreateNewGCSB1RTRecord_Node1 -- No --> E_CreateNewGCSB1RTRecord
returns not found status"}:::decision N_CreateNewGCSB1RTRecord_Node0_action["A new GCSB1RT record should be
inserted with the cargo CCN key and
populated error index fields"]:::main N_CreateNewGCSB1RTRecord_Node0 -- Yes --> N_CreateNewGCSB1RTRecord_Node0_action N_CreateNewGCSB1RTRecord_Node0_action --> E_CreateNewGCSB1RTRecord S_CreateNewGCSB1RTRecord --> N_CreateNewGCSB1RTRecord_Node0 N_CreateNewGCSB1RTRecord_Node1{"The GCSB1RT record retrieval
returns not found status"}:::decision N_CreateNewGCSB1RTRecord_Node1_action["A new GCSB1RT record should be
inserted with the cargo CCN key and
populated hold index fields"]:::main N_CreateNewGCSB1RTRecord_Node1 -- Yes --> N_CreateNewGCSB1RTRecord_Node1_action N_CreateNewGCSB1RTRecord_Node1_action --> E_CreateNewGCSB1RTRecord N_CreateNewGCSB1RTRecord_Node0 -- No --> N_CreateNewGCSB1RTRecord_Node1 N_CreateNewGCSB1RTRecord_Node1 -- No --> E_CreateNewGCSB1RTRecord
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has error conditions and no existing GCSB1RT record
WHEN:
The GCSB1RT record retrieval returns not found status
THEN:
- A new gcsb1rt record should be inserted with the cargo ccn key
- Populated error index fields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has hold conditions and no existing GCSB1RT record
WHEN:
The GCSB1RT record retrieval returns not found status
THEN:
- A new gcsb1rt record should be inserted with the cargo ccn key
- Populated hold index fields
β Consolidated Acceptance Criteria
- The cargo does not have error status (RT10-CPCARGO-ERROR, RT10-CPCARGO-PENDING, RT11-USCARGO-ERROR) AND the cargo does not have hold status (RT11-USCARGO-HOLD, RT11-USCARGO-HOLDPCS, RT11-USCARGO-PR-HPCS, RT11-USCARGO-HOLD-B, RT11-USCARGO-PR-H-BO, RT11-USCARGO-HOLD-D, RT11-USCARGO-PR-H-DE, RT11-USCARGO-HOLDFDA) → the system deletes the cargo index record from GCSB1RT 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_DeleteIndexDatabaseRecordNoIndexRequirements(["Start Step"])
E_DeleteIndexDatabaseRecordNoIndexRequirements(["End Step"])
N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0{"The cargo does not have error
status RT10-CPCARGO-ERROR,
RT10-CPCARGO-PENDING,
RT11-USCARGO-ERROR AND the cargo
does not have hold status
RT11-USCARGO-HOLD,
RT11-USCARGO-HOLDPCS,
RT11-USCARGO-PR-HPCS,
RT11-USCARGO-HOLD-B,
RT11-USCARGO-PR-H-BO,
RT11-USCARGO-HOLD-D,
RT11-USCARGO-PR-H-DE,
RT11-USCARGO-HOLDFDA"}:::decision N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0_action["The system deletes the cargo index
record from GCSB1RT database"]:::exclusion N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0 -- Yes -->|Alternative| N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0_action N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0_action --> E_DeleteIndexDatabaseRecordNoIndexRequirements S_DeleteIndexDatabaseRecordNoIndexRequirements --> N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0 N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0 -- No --> E_DeleteIndexDatabaseRecordNoIndexRequirements
status RT10-CPCARGO-ERROR,
RT10-CPCARGO-PENDING,
RT11-USCARGO-ERROR AND the cargo
does not have hold status
RT11-USCARGO-HOLD,
RT11-USCARGO-HOLDPCS,
RT11-USCARGO-PR-HPCS,
RT11-USCARGO-HOLD-B,
RT11-USCARGO-PR-H-BO,
RT11-USCARGO-HOLD-D,
RT11-USCARGO-PR-H-DE,
RT11-USCARGO-HOLDFDA"}:::decision N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0_action["The system deletes the cargo index
record from GCSB1RT database"]:::exclusion N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0 -- Yes -->|Alternative| N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0_action N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0_action --> E_DeleteIndexDatabaseRecordNoIndexRequirements S_DeleteIndexDatabaseRecordNoIndexRequirements --> N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0 N_DeleteIndexDatabaseRecordNoIndexRequirements_Node0 -- No --> E_DeleteIndexDatabaseRecordNoIndexRequirements
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists in the system
WHEN:
The cargo does not have error status (RT10-CPCARGO-ERROR, RT10-CPCARGO-PENDING, RT11-USCARGO-ERROR) AND the cargo does not have hold status (RT11-USCARGO-HOLD, RT11-USCARGO-HOLDPCS, RT11-USCARGO-PR-HPCS, RT11-USCARGO-HOLD-B, RT11-USCARGO-PR-H-BO, RT11-USCARGO-HOLD-D, RT11-USCARGO-PR-H-DE, RT11-USCARGO-HOLDFDA)
THEN:
The system deletes the cargo index record from GCSB1RT database
β Consolidated Acceptance Criteria
- The cargo does not have error status (RT10-CPCARGO-ERROR, RT10-CPCARGO-PENDING, RT11-USCARGO-ERROR) AND the cargo has hold status → the system clears error origin index, error destination index, and error border index fields to spaces while keeping hold index fields intact
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearErrorIndexFieldsKeepHoldIndexFields(["Start Step"])
E_ClearErrorIndexFieldsKeepHoldIndexFields(["End Step"])
N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0{"The cargo does not have error
status RT10-CPCARGO-ERROR,
RT10-CPCARGO-PENDING,
RT11-USCARGO-ERROR AND the cargo has
hold status"}:::decision N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0_action["The system clears error origin
index, error destination index, and
error border index fields to spaces
while keeping hold index fields
intact"]:::exclusion N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0 -- Yes -->|Alternative| N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0_action N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0_action --> E_ClearErrorIndexFieldsKeepHoldIndexFields S_ClearErrorIndexFieldsKeepHoldIndexFields --> N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0 N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0 -- No --> E_ClearErrorIndexFieldsKeepHoldIndexFields
status RT10-CPCARGO-ERROR,
RT10-CPCARGO-PENDING,
RT11-USCARGO-ERROR AND the cargo has
hold status"}:::decision N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0_action["The system clears error origin
index, error destination index, and
error border index fields to spaces
while keeping hold index fields
intact"]:::exclusion N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0 -- Yes -->|Alternative| N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0_action N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0_action --> E_ClearErrorIndexFieldsKeepHoldIndexFields S_ClearErrorIndexFieldsKeepHoldIndexFields --> N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0 N_ClearErrorIndexFieldsKeepHoldIndexFields_Node0 -- No --> E_ClearErrorIndexFieldsKeepHoldIndexFields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with an index record in GCSB1RT
WHEN:
The cargo does not have error status (RT10-CPCARGO-ERROR, RT10-CPCARGO-PENDING, RT11-USCARGO-ERROR) AND the cargo has hold status
THEN:
The system clears error origin index, error destination index, and error border index fields to spaces while keeping hold index fields intact
β Consolidated Acceptance Criteria
- Both held destination index and held border index fields are empty → the system deletes the entire cargo index record from GCSB1RT database
- Error destination index, error origin index, and error border index fields are all empty → the system deletes the entire cargo index record from GCSB1RT 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_DeleteIndexDatabaseRecord(["Start Step"])
E_DeleteIndexDatabaseRecord(["End Step"])
N_DeleteIndexDatabaseRecord_Node0{"Both held destination index and
held border index fields are empty"}:::decision N_DeleteIndexDatabaseRecord_Node0_action["The system deletes the entire cargo
index record from GCSB1RT database"]:::main N_DeleteIndexDatabaseRecord_Node0 -- Yes --> N_DeleteIndexDatabaseRecord_Node0_action N_DeleteIndexDatabaseRecord_Node0_action --> E_DeleteIndexDatabaseRecord S_DeleteIndexDatabaseRecord --> N_DeleteIndexDatabaseRecord_Node0 N_DeleteIndexDatabaseRecord_Node1{"Error destination index, error
origin index, and error border index
fields are all empty"}:::decision N_DeleteIndexDatabaseRecord_Node1_action["The system deletes the entire cargo
index record from GCSB1RT database"]:::exclusion N_DeleteIndexDatabaseRecord_Node1 -- Yes -->|Alternative| N_DeleteIndexDatabaseRecord_Node1_action N_DeleteIndexDatabaseRecord_Node1_action --> E_DeleteIndexDatabaseRecord N_DeleteIndexDatabaseRecord_Node0 -- No --> N_DeleteIndexDatabaseRecord_Node1 N_DeleteIndexDatabaseRecord_Node1 -- No --> E_DeleteIndexDatabaseRecord
held border index fields are empty"}:::decision N_DeleteIndexDatabaseRecord_Node0_action["The system deletes the entire cargo
index record from GCSB1RT database"]:::main N_DeleteIndexDatabaseRecord_Node0 -- Yes --> N_DeleteIndexDatabaseRecord_Node0_action N_DeleteIndexDatabaseRecord_Node0_action --> E_DeleteIndexDatabaseRecord S_DeleteIndexDatabaseRecord --> N_DeleteIndexDatabaseRecord_Node0 N_DeleteIndexDatabaseRecord_Node1{"Error destination index, error
origin index, and error border index
fields are all empty"}:::decision N_DeleteIndexDatabaseRecord_Node1_action["The system deletes the entire cargo
index record from GCSB1RT database"]:::exclusion N_DeleteIndexDatabaseRecord_Node1 -- Yes -->|Alternative| N_DeleteIndexDatabaseRecord_Node1_action N_DeleteIndexDatabaseRecord_Node1_action --> E_DeleteIndexDatabaseRecord N_DeleteIndexDatabaseRecord_Node0 -- No --> N_DeleteIndexDatabaseRecord_Node1 N_DeleteIndexDatabaseRecord_Node1 -- No --> E_DeleteIndexDatabaseRecord
File: GCCUSIO.cbl
GIVEN:
Error index fields have been cleared from a cargo index record
WHEN:
- Both held destination index
- Held border index fields are empty
THEN:
The system deletes the entire cargo index record from GCSB1RT database
File: GCCUSIO.cbl
GIVEN:
Hold index fields have been cleared from a cargo index record
WHEN:
Error destination index, error origin index, and error border index fields are all empty
THEN:
The system deletes the entire cargo index record from GCSB1RT database
β Consolidated Acceptance Criteria
- Either held destination index or held border index fields contain data → the system updates the existing cargo index record in GCSB1RT database with the cleared error fields
- Any of error destination index, error origin index, or error border index fields contain data → the system updates the existing cargo index record in GCSB1RT database with the cleared hold 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_UpdateIndexDatabaseRecord(["Start Step"])
E_UpdateIndexDatabaseRecord(["End Step"])
N_UpdateIndexDatabaseRecord_Node0{"Either held destination index or
held border index fields contain
data"}:::decision N_UpdateIndexDatabaseRecord_Node0_action["The system updates the existing
cargo index record in GCSB1RT
database with the cleared error
fields"]:::main N_UpdateIndexDatabaseRecord_Node0 -- Yes --> N_UpdateIndexDatabaseRecord_Node0_action N_UpdateIndexDatabaseRecord_Node0_action --> E_UpdateIndexDatabaseRecord S_UpdateIndexDatabaseRecord --> N_UpdateIndexDatabaseRecord_Node0 N_UpdateIndexDatabaseRecord_Node1{"Any of error destination index,
error origin index, or error border
index fields contain data"}:::decision N_UpdateIndexDatabaseRecord_Node1_action["The system updates the existing
cargo index record in GCSB1RT
database with the cleared hold
fields"]:::exclusion N_UpdateIndexDatabaseRecord_Node1 -- Yes -->|Alternative| N_UpdateIndexDatabaseRecord_Node1_action N_UpdateIndexDatabaseRecord_Node1_action --> E_UpdateIndexDatabaseRecord N_UpdateIndexDatabaseRecord_Node0 -- No --> N_UpdateIndexDatabaseRecord_Node1 N_UpdateIndexDatabaseRecord_Node1 -- No --> E_UpdateIndexDatabaseRecord
held border index fields contain
data"}:::decision N_UpdateIndexDatabaseRecord_Node0_action["The system updates the existing
cargo index record in GCSB1RT
database with the cleared error
fields"]:::main N_UpdateIndexDatabaseRecord_Node0 -- Yes --> N_UpdateIndexDatabaseRecord_Node0_action N_UpdateIndexDatabaseRecord_Node0_action --> E_UpdateIndexDatabaseRecord S_UpdateIndexDatabaseRecord --> N_UpdateIndexDatabaseRecord_Node0 N_UpdateIndexDatabaseRecord_Node1{"Any of error destination index,
error origin index, or error border
index fields contain data"}:::decision N_UpdateIndexDatabaseRecord_Node1_action["The system updates the existing
cargo index record in GCSB1RT
database with the cleared hold
fields"]:::exclusion N_UpdateIndexDatabaseRecord_Node1 -- Yes -->|Alternative| N_UpdateIndexDatabaseRecord_Node1_action N_UpdateIndexDatabaseRecord_Node1_action --> E_UpdateIndexDatabaseRecord N_UpdateIndexDatabaseRecord_Node0 -- No --> N_UpdateIndexDatabaseRecord_Node1 N_UpdateIndexDatabaseRecord_Node1 -- No --> E_UpdateIndexDatabaseRecord
File: GCCUSIO.cbl
GIVEN:
Error index fields have been cleared from a cargo index record
WHEN:
Either held destination index or held border index fields contain data
THEN:
The system updates the existing cargo index record in GCSB1RT database with the cleared error fields
File: GCCUSIO.cbl
GIVEN:
Hold index fields have been cleared from a cargo index record
WHEN:
Any of error destination index, error origin index, or error border index fields contain data
THEN:
The system updates the existing cargo index record in GCSB1RT database with the cleared hold fields
β Consolidated Acceptance Criteria
- The cargo does not have hold status (RT11-USCARGO-HOLD, RT11-USCARGO-HOLDPCS, RT11-USCARGO-PR-HPCS, RT11-USCARGO-HOLD-B, RT11-USCARGO-PR-H-BO, RT11-USCARGO-HOLD-D, RT11-USCARGO-PR-H-DE, RT11-USCARGO-HOLDFDA) AND the cargo has error status → the system clears held destination index and held border index fields to spaces while keeping error index fields intact
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearHoldIndexFieldsKeepErrorIndexFields(["Start Step"])
E_ClearHoldIndexFieldsKeepErrorIndexFields(["End Step"])
N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0{"The cargo does not have hold status
RT11-USCARGO-HOLD,
RT11-USCARGO-HOLDPCS,
RT11-USCARGO-PR-HPCS,
RT11-USCARGO-HOLD-B,
RT11-USCARGO-PR-H-BO,
RT11-USCARGO-HOLD-D,
RT11-USCARGO-PR-H-DE,
RT11-USCARGO-HOLDFDA AND the cargo
has error status"}:::decision N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0_action["The system clears held destination
index and held border index fields
to spaces while keeping error index
fields intact"]:::exclusion N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0 -- Yes -->|Alternative| N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0_action N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0_action --> E_ClearHoldIndexFieldsKeepErrorIndexFields S_ClearHoldIndexFieldsKeepErrorIndexFields --> N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0 N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0 -- No --> E_ClearHoldIndexFieldsKeepErrorIndexFields
RT11-USCARGO-HOLD,
RT11-USCARGO-HOLDPCS,
RT11-USCARGO-PR-HPCS,
RT11-USCARGO-HOLD-B,
RT11-USCARGO-PR-H-BO,
RT11-USCARGO-HOLD-D,
RT11-USCARGO-PR-H-DE,
RT11-USCARGO-HOLDFDA AND the cargo
has error status"}:::decision N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0_action["The system clears held destination
index and held border index fields
to spaces while keeping error index
fields intact"]:::exclusion N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0 -- Yes -->|Alternative| N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0_action N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0_action --> E_ClearHoldIndexFieldsKeepErrorIndexFields S_ClearHoldIndexFieldsKeepErrorIndexFields --> N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0 N_ClearHoldIndexFieldsKeepErrorIndexFields_Node0 -- No --> E_ClearHoldIndexFieldsKeepErrorIndexFields
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with an index record in GCSB1RT
WHEN:
The cargo does not have hold status (RT11-USCARGO-HOLD, RT11-USCARGO-HOLDPCS, RT11-USCARGO-PR-HPCS, RT11-USCARGO-HOLD-B, RT11-USCARGO-PR-H-BO, RT11-USCARGO-HOLD-D, RT11-USCARGO-PR-H-DE, RT11-USCARGO-HOLDFDA) AND the cargo has error status
THEN:
- The system clears held destination index
- Held border index fields to spaces while keeping error index fields intact
β Consolidated Acceptance Criteria
- The system processes the cargo for index requirements → the system populates error code origin as 'E', error origin with origin station number, error origin cargo with CCN key, error code border as 'E', error border with border station number from MC table lookup, error border cargo with CCN key, error code destination as 'E', error destination with destination station number, and error destination cargo with 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_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation(["Start Step"])
E_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation(["End Step"])
N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0{"The system processes the cargo for
index requirements"}:::decision N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0_action["The system populates error code
origin as E , error origin with
origin station number, error origin
cargo with CCN key, error code
border as E , error border with
border station number from MC table
lookup, error border cargo with CCN
key, error code destination as E ,
error destination with destination
station number, and error
destination cargo with CCN key"]:::main N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0 -- Yes --> N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0_action N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0_action --> E_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation S_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation --> N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0 N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0 -- No --> E_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation
index requirements"}:::decision N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0_action["The system populates error code
origin as E , error origin with
origin station number, error origin
cargo with CCN key, error code
border as E , error border with
border station number from MC table
lookup, error border cargo with CCN
key, error code destination as E ,
error destination with destination
station number, and error
destination cargo with CCN key"]:::main N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0 -- Yes --> N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0_action N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0_action --> E_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation S_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation --> N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0 N_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation_Node0 -- No --> E_PopulateErrorIndexFieldsOriginStationBorderStationDestinationStation
File: GCCUSIO.cbl
GIVEN:
A cargo record has error status (RT10-CPCARGO-ERROR, RT10-CPCARGO-PENDING, or RT11-USCARGO-ERROR)
WHEN:
The system processes the cargo for index requirements
THEN:
The system populates error code origin as 'E', error origin with origin station number, error origin cargo with CCN key, error code border as 'E', error border with border station number from MC table lookup, error border cargo with CCN key, error code destination as 'E', error destination with destination station number, and error destination cargo with CCN key
β Consolidated Acceptance Criteria
- The system processes the cargo for index requirements → the system populates held destination with destination station number and held destination cargo with CCN key for destination holds (HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, HOLDFDA), and populates held border with border station number from MC table lookup and held border cargo with CCN key for border holds (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLDFDA)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PopulateHoldIndexFieldsDestinationStationBorderStation(["Start Step"])
E_PopulateHoldIndexFieldsDestinationStationBorderStation(["End Step"])
N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0{"The system processes the cargo for
index requirements"}:::decision N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0_action["The system populates held
destination with destination station
number and held destination cargo
with CCN key for destination holds
HOLD, HOLDPCS, PR-HPCS, HOLD-D,
PR-H-DE, HOLDFDA, and populates held
border with border station number
from MC table lookup and held border
cargo with CCN key for border holds
HOLD, HOLDPCS, PR-HPCS, HOLD-B,
PR-H-BO, HOLDFDA"]:::main N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0 -- Yes --> N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0_action N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0_action --> E_PopulateHoldIndexFieldsDestinationStationBorderStation S_PopulateHoldIndexFieldsDestinationStationBorderStation --> N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0 N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0 -- No --> E_PopulateHoldIndexFieldsDestinationStationBorderStation
index requirements"}:::decision N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0_action["The system populates held
destination with destination station
number and held destination cargo
with CCN key for destination holds
HOLD, HOLDPCS, PR-HPCS, HOLD-D,
PR-H-DE, HOLDFDA, and populates held
border with border station number
from MC table lookup and held border
cargo with CCN key for border holds
HOLD, HOLDPCS, PR-HPCS, HOLD-B,
PR-H-BO, HOLDFDA"]:::main N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0 -- Yes --> N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0_action N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0_action --> E_PopulateHoldIndexFieldsDestinationStationBorderStation S_PopulateHoldIndexFieldsDestinationStationBorderStation --> N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0 N_PopulateHoldIndexFieldsDestinationStationBorderStation_Node0 -- No --> E_PopulateHoldIndexFieldsDestinationStationBorderStation
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status (RT11-USCARGO-HOLD, RT11-USCARGO-HOLDPCS, RT11-USCARGO-PR-HPCS, RT11-USCARGO-HOLD-B, RT11-USCARGO-PR-H-BO, RT11-USCARGO-HOLD-D, RT11-USCARGO-PR-H-DE, or RT11-USCARGO-HOLDFDA)
WHEN:
The system processes the cargo for index requirements
THEN:
- The system populates held destination with destination station number
- Held destination cargo with ccn key for destination holds (hold, holdpcs, pr-hpcs, hold-d, pr-h-de, holdfda), and populates held border with border station number from mc table lookup
- Held border cargo with ccn key for border holds (hold, holdpcs, pr-hpcs, hold-b, pr-h-bo, holdfda)
β Consolidated Acceptance Criteria
- The system begins populating error fields for the origin station → the error code 'E' is assigned to the origin station error 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_SetErrorCodeEforOriginStation(["Start Step"])
E_SetErrorCodeEforOriginStation(["End Step"])
N_SetErrorCodeEforOriginStation_Node0{"The system begins populating error
fields for the origin station"}:::decision N_SetErrorCodeEforOriginStation_Node0_action["The error code E is assigned to the
origin station error code field"]:::exclusion N_SetErrorCodeEforOriginStation_Node0 -- Yes -->|Alternative| N_SetErrorCodeEforOriginStation_Node0_action N_SetErrorCodeEforOriginStation_Node0_action --> E_SetErrorCodeEforOriginStation S_SetErrorCodeEforOriginStation --> N_SetErrorCodeEforOriginStation_Node0 N_SetErrorCodeEforOriginStation_Node0 -- No --> E_SetErrorCodeEforOriginStation
fields for the origin station"}:::decision N_SetErrorCodeEforOriginStation_Node0_action["The error code E is assigned to the
origin station error code field"]:::exclusion N_SetErrorCodeEforOriginStation_Node0 -- Yes -->|Alternative| N_SetErrorCodeEforOriginStation_Node0_action N_SetErrorCodeEforOriginStation_Node0_action --> E_SetErrorCodeEforOriginStation S_SetErrorCodeEforOriginStation --> N_SetErrorCodeEforOriginStation_Node0 N_SetErrorCodeEforOriginStation_Node0 -- No --> E_SetErrorCodeEforOriginStation
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index field population
WHEN:
The system begins populating error fields for the origin station
THEN:
The error code 'E' is assigned to the origin station error code field
β Consolidated Acceptance Criteria
- The system populates the origin error index → the cargo's CCN key is assigned to the error origin cargo field to establish the link
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoCCNKeyforOriginErrorIndex(["Start Step"])
E_SetCargoCCNKeyforOriginErrorIndex(["End Step"])
N_SetCargoCCNKeyforOriginErrorIndex_Node0{"The system populates the origin
error index"}:::decision N_SetCargoCCNKeyforOriginErrorIndex_Node0_action["The cargo s CCN key is assigned to
the error origin cargo field to
establish the link"]:::exclusion N_SetCargoCCNKeyforOriginErrorIndex_Node0 -- Yes -->|Alternative| N_SetCargoCCNKeyforOriginErrorIndex_Node0_action N_SetCargoCCNKeyforOriginErrorIndex_Node0_action --> E_SetCargoCCNKeyforOriginErrorIndex S_SetCargoCCNKeyforOriginErrorIndex --> N_SetCargoCCNKeyforOriginErrorIndex_Node0 N_SetCargoCCNKeyforOriginErrorIndex_Node0 -- No --> E_SetCargoCCNKeyforOriginErrorIndex
error index"}:::decision N_SetCargoCCNKeyforOriginErrorIndex_Node0_action["The cargo s CCN key is assigned to
the error origin cargo field to
establish the link"]:::exclusion N_SetCargoCCNKeyforOriginErrorIndex_Node0 -- Yes -->|Alternative| N_SetCargoCCNKeyforOriginErrorIndex_Node0_action N_SetCargoCCNKeyforOriginErrorIndex_Node0_action --> E_SetCargoCCNKeyforOriginErrorIndex S_SetCargoCCNKeyforOriginErrorIndex --> N_SetCargoCCNKeyforOriginErrorIndex_Node0 N_SetCargoCCNKeyforOriginErrorIndex_Node0 -- No --> E_SetCargoCCNKeyforOriginErrorIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record has a unique CCN key and origin station error information
WHEN:
The system populates the origin error index
THEN:
The cargo's CCN key is assigned to the error origin cargo field to establish the link
β Consolidated Acceptance Criteria
- The system begins populating error fields for the border station → the error code 'E' is assigned to the border station error 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_SetErrorCodeEforBorderStation(["Start Step"])
E_SetErrorCodeEforBorderStation(["End Step"])
N_SetErrorCodeEforBorderStation_Node0{"The system begins populating error
fields for the border station"}:::decision N_SetErrorCodeEforBorderStation_Node0_action["The error code E is assigned to the
border station error code field"]:::exclusion N_SetErrorCodeEforBorderStation_Node0 -- Yes -->|Alternative| N_SetErrorCodeEforBorderStation_Node0_action N_SetErrorCodeEforBorderStation_Node0_action --> E_SetErrorCodeEforBorderStation S_SetErrorCodeEforBorderStation --> N_SetErrorCodeEforBorderStation_Node0 N_SetErrorCodeEforBorderStation_Node0 -- No --> E_SetErrorCodeEforBorderStation
fields for the border station"}:::decision N_SetErrorCodeEforBorderStation_Node0_action["The error code E is assigned to the
border station error code field"]:::exclusion N_SetErrorCodeEforBorderStation_Node0 -- Yes -->|Alternative| N_SetErrorCodeEforBorderStation_Node0_action N_SetErrorCodeEforBorderStation_Node0_action --> E_SetErrorCodeEforBorderStation S_SetErrorCodeEforBorderStation --> N_SetErrorCodeEforBorderStation_Node0 N_SetErrorCodeEforBorderStation_Node0 -- No --> E_SetErrorCodeEforBorderStation
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index field population
WHEN:
The system begins populating error fields for the border station
THEN:
The error code 'E' is assigned to the border station error code field
β Consolidated Acceptance Criteria
- The system populates the border error index → the cargo's CCN key is assigned to the error border cargo field to establish the link
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoCCNKeyforBorderErrorIndex(["Start Step"])
E_SetCargoCCNKeyforBorderErrorIndex(["End Step"])
N_SetCargoCCNKeyforBorderErrorIndex_Node0{"The system populates the border
error index"}:::decision N_SetCargoCCNKeyforBorderErrorIndex_Node0_action["The cargo s CCN key is assigned to
the error border cargo field to
establish the link"]:::exclusion N_SetCargoCCNKeyforBorderErrorIndex_Node0 -- Yes -->|Alternative| N_SetCargoCCNKeyforBorderErrorIndex_Node0_action N_SetCargoCCNKeyforBorderErrorIndex_Node0_action --> E_SetCargoCCNKeyforBorderErrorIndex S_SetCargoCCNKeyforBorderErrorIndex --> N_SetCargoCCNKeyforBorderErrorIndex_Node0 N_SetCargoCCNKeyforBorderErrorIndex_Node0 -- No --> E_SetCargoCCNKeyforBorderErrorIndex
error index"}:::decision N_SetCargoCCNKeyforBorderErrorIndex_Node0_action["The cargo s CCN key is assigned to
the error border cargo field to
establish the link"]:::exclusion N_SetCargoCCNKeyforBorderErrorIndex_Node0 -- Yes -->|Alternative| N_SetCargoCCNKeyforBorderErrorIndex_Node0_action N_SetCargoCCNKeyforBorderErrorIndex_Node0_action --> E_SetCargoCCNKeyforBorderErrorIndex S_SetCargoCCNKeyforBorderErrorIndex --> N_SetCargoCCNKeyforBorderErrorIndex_Node0 N_SetCargoCCNKeyforBorderErrorIndex_Node0 -- No --> E_SetCargoCCNKeyforBorderErrorIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record has a unique CCN key and border station error information is being processed
WHEN:
The system populates the border error index
THEN:
The cargo's CCN key is assigned to the error border cargo field to establish the link
β Consolidated Acceptance Criteria
- The system begins populating error fields for the destination station → the error code 'E' is assigned to the destination station error 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_SetErrorCodeEforDestinationStation(["Start Step"])
E_SetErrorCodeEforDestinationStation(["End Step"])
N_SetErrorCodeEforDestinationStation_Node0{"The system begins populating error
fields for the destination station"}:::decision N_SetErrorCodeEforDestinationStation_Node0_action["The error code E is assigned to the
destination station error code field"]:::exclusion N_SetErrorCodeEforDestinationStation_Node0 -- Yes -->|Alternative| N_SetErrorCodeEforDestinationStation_Node0_action N_SetErrorCodeEforDestinationStation_Node0_action --> E_SetErrorCodeEforDestinationStation S_SetErrorCodeEforDestinationStation --> N_SetErrorCodeEforDestinationStation_Node0 N_SetErrorCodeEforDestinationStation_Node0 -- No --> E_SetErrorCodeEforDestinationStation
fields for the destination station"}:::decision N_SetErrorCodeEforDestinationStation_Node0_action["The error code E is assigned to the
destination station error code field"]:::exclusion N_SetErrorCodeEforDestinationStation_Node0 -- Yes -->|Alternative| N_SetErrorCodeEforDestinationStation_Node0_action N_SetErrorCodeEforDestinationStation_Node0_action --> E_SetErrorCodeEforDestinationStation S_SetErrorCodeEforDestinationStation --> N_SetErrorCodeEforDestinationStation_Node0 N_SetErrorCodeEforDestinationStation_Node0 -- No --> E_SetErrorCodeEforDestinationStation
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index field population
WHEN:
The system begins populating error fields for the destination station
THEN:
The error code 'E' is assigned to the destination station error code field
β Consolidated Acceptance Criteria
- The system populates the destination error index → the cargo's CCN key is assigned to the error destination cargo field to establish the link
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoCCNKeyforDestinationErrorIndex(["Start Step"])
E_SetCargoCCNKeyforDestinationErrorIndex(["End Step"])
N_SetCargoCCNKeyforDestinationErrorIndex_Node0{"The system populates the
destination error index"}:::decision N_SetCargoCCNKeyforDestinationErrorIndex_Node0_action["The cargo s CCN key is assigned to
the error destination cargo field to
establish the link"]:::exclusion N_SetCargoCCNKeyforDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_SetCargoCCNKeyforDestinationErrorIndex_Node0_action N_SetCargoCCNKeyforDestinationErrorIndex_Node0_action --> E_SetCargoCCNKeyforDestinationErrorIndex S_SetCargoCCNKeyforDestinationErrorIndex --> N_SetCargoCCNKeyforDestinationErrorIndex_Node0 N_SetCargoCCNKeyforDestinationErrorIndex_Node0 -- No --> E_SetCargoCCNKeyforDestinationErrorIndex
destination error index"}:::decision N_SetCargoCCNKeyforDestinationErrorIndex_Node0_action["The cargo s CCN key is assigned to
the error destination cargo field to
establish the link"]:::exclusion N_SetCargoCCNKeyforDestinationErrorIndex_Node0 -- Yes -->|Alternative| N_SetCargoCCNKeyforDestinationErrorIndex_Node0_action N_SetCargoCCNKeyforDestinationErrorIndex_Node0_action --> E_SetCargoCCNKeyforDestinationErrorIndex S_SetCargoCCNKeyforDestinationErrorIndex --> N_SetCargoCCNKeyforDestinationErrorIndex_Node0 N_SetCargoCCNKeyforDestinationErrorIndex_Node0 -- No --> E_SetCargoCCNKeyforDestinationErrorIndex
File: GCCUSIO.cbl
GIVEN:
A cargo record has a unique CCN key and destination station error information
WHEN:
The system populates the destination error index
THEN:
The cargo's CCN key is assigned to the error destination cargo field to establish the link
β Consolidated Acceptance Criteria
- The table lookup returns successfully with return flag '0' → the system uses the retrieved station number from the table segment to set the border hold 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_UseBorderStationNumber(["Start Step"])
E_UseBorderStationNumber(["End Step"])
N_UseBorderStationNumber_Node0{"The table lookup returns
successfully with return flag 0"}:::decision N_UseBorderStationNumber_Node0_action["The system uses the retrieved
station number from the table
segment to set the border hold index"]:::main N_UseBorderStationNumber_Node0 -- Yes --> N_UseBorderStationNumber_Node0_action N_UseBorderStationNumber_Node0_action --> E_UseBorderStationNumber S_UseBorderStationNumber --> N_UseBorderStationNumber_Node0 N_UseBorderStationNumber_Node0 -- No --> E_UseBorderStationNumber
successfully with return flag 0"}:::decision N_UseBorderStationNumber_Node0_action["The system uses the retrieved
station number from the table
segment to set the border hold index"]:::main N_UseBorderStationNumber_Node0 -- Yes --> N_UseBorderStationNumber_Node0_action N_UseBorderStationNumber_Node0_action --> E_UseBorderStationNumber S_UseBorderStationNumber --> N_UseBorderStationNumber_Node0 N_UseBorderStationNumber_Node0 -- No --> E_UseBorderStationNumber
File: GCCUSIO.cbl
GIVEN:
The MC table lookup has been performed for border station information
WHEN:
The table lookup returns successfully with return flag '0'
THEN:
The system uses the retrieved station number from the table segment to set the border hold index
β Consolidated Acceptance Criteria
- The delete GCSB1RT index record process is executed and the record is found → the system deletes the index record from GCSB1RT database
- The record has been successfully retrieved and verified → the system executes the delete operation to remove the record from 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_DeleteIndexRecordfromDatabase(["Start Step"])
E_DeleteIndexRecordfromDatabase(["End Step"])
N_DeleteIndexRecordfromDatabase_Node0{"The delete GCSB1RT index record
process is executed and the record
is found"}:::decision N_DeleteIndexRecordfromDatabase_Node0_action["The system deletes the index record
from GCSB1RT database"]:::main N_DeleteIndexRecordfromDatabase_Node0 -- Yes --> N_DeleteIndexRecordfromDatabase_Node0_action N_DeleteIndexRecordfromDatabase_Node0_action --> E_DeleteIndexRecordfromDatabase S_DeleteIndexRecordfromDatabase --> N_DeleteIndexRecordfromDatabase_Node0 N_DeleteIndexRecordfromDatabase_Node1{"The record has been successfully
retrieved and verified"}:::decision N_DeleteIndexRecordfromDatabase_Node1_action["The system executes the delete
operation to remove the record from
the database"]:::main N_DeleteIndexRecordfromDatabase_Node1 -- Yes --> N_DeleteIndexRecordfromDatabase_Node1_action N_DeleteIndexRecordfromDatabase_Node1_action --> E_DeleteIndexRecordfromDatabase N_DeleteIndexRecordfromDatabase_Node0 -- No --> N_DeleteIndexRecordfromDatabase_Node1 N_DeleteIndexRecordfromDatabase_Node1 -- No --> E_DeleteIndexRecordfromDatabase
process is executed and the record
is found"}:::decision N_DeleteIndexRecordfromDatabase_Node0_action["The system deletes the index record
from GCSB1RT database"]:::main N_DeleteIndexRecordfromDatabase_Node0 -- Yes --> N_DeleteIndexRecordfromDatabase_Node0_action N_DeleteIndexRecordfromDatabase_Node0_action --> E_DeleteIndexRecordfromDatabase S_DeleteIndexRecordfromDatabase --> N_DeleteIndexRecordfromDatabase_Node0 N_DeleteIndexRecordfromDatabase_Node1{"The record has been successfully
retrieved and verified"}:::decision N_DeleteIndexRecordfromDatabase_Node1_action["The system executes the delete
operation to remove the record from
the database"]:::main N_DeleteIndexRecordfromDatabase_Node1 -- Yes --> N_DeleteIndexRecordfromDatabase_Node1_action N_DeleteIndexRecordfromDatabase_Node1_action --> E_DeleteIndexRecordfromDatabase N_DeleteIndexRecordfromDatabase_Node0 -- No --> N_DeleteIndexRecordfromDatabase_Node1 N_DeleteIndexRecordfromDatabase_Node1 -- No --> E_DeleteIndexRecordfromDatabase
File: GCCUSIO.cbl
GIVEN:
A cargo CCN key is provided and an index record exists in GCSB1RT
WHEN:
- The delete gcsb1rt index record process is executed
- The record is found
THEN:
The system deletes the index record from GCSB1RT database
File: GCCUSIO.cbl
GIVEN:
An index record exists in GCSB1RT database
WHEN:
- The record has been successfully retrieved
- Verified
THEN:
The system executes the delete operation to remove the record from the database
β Consolidated Acceptance Criteria
- The process begins → the system clears all fields in the GCSB1RT record 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_InitializeGCSB1RTRecordtoSpaces(["Start Step"])
E_InitializeGCSB1RTRecordtoSpaces(["End Step"])
N_InitializeGCSB1RTRecordtoSpaces_Node0{"The process begins"}:::decision
N_InitializeGCSB1RTRecordtoSpaces_Node0_action["The system clears all fields in the
GCSB1RT record structure"]:::main N_InitializeGCSB1RTRecordtoSpaces_Node0 -- Yes --> N_InitializeGCSB1RTRecordtoSpaces_Node0_action N_InitializeGCSB1RTRecordtoSpaces_Node0_action --> E_InitializeGCSB1RTRecordtoSpaces S_InitializeGCSB1RTRecordtoSpaces --> N_InitializeGCSB1RTRecordtoSpaces_Node0 N_InitializeGCSB1RTRecordtoSpaces_Node0 -- No --> E_InitializeGCSB1RTRecordtoSpaces
GCSB1RT record structure"]:::main N_InitializeGCSB1RTRecordtoSpaces_Node0 -- Yes --> N_InitializeGCSB1RTRecordtoSpaces_Node0_action N_InitializeGCSB1RTRecordtoSpaces_Node0_action --> E_InitializeGCSB1RTRecordtoSpaces S_InitializeGCSB1RTRecordtoSpaces --> N_InitializeGCSB1RTRecordtoSpaces_Node0 N_InitializeGCSB1RTRecordtoSpaces_Node0 -- No --> E_InitializeGCSB1RTRecordtoSpaces
File: GCCUSIO.cbl
GIVEN:
A delete GCSB1RT index record process is initiated
WHEN:
The process begins
THEN:
The system clears all fields in the GCSB1RT record structure
β Consolidated Acceptance Criteria
- The system needs to verify if the index record exists → the system attempts to retrieve the existing index record using the cargo 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_AttempttoRetrieveExistingIndexRecord(["Start Step"])
E_AttempttoRetrieveExistingIndexRecord(["End Step"])
N_AttempttoRetrieveExistingIndexRecord_Node0{"The system needs to verify if the
index record exists"}:::decision N_AttempttoRetrieveExistingIndexRecord_Node0_action["The system attempts to retrieve the
existing index record using the
cargo key"]:::main N_AttempttoRetrieveExistingIndexRecord_Node0 -- Yes --> N_AttempttoRetrieveExistingIndexRecord_Node0_action N_AttempttoRetrieveExistingIndexRecord_Node0_action --> E_AttempttoRetrieveExistingIndexRecord S_AttempttoRetrieveExistingIndexRecord --> N_AttempttoRetrieveExistingIndexRecord_Node0 N_AttempttoRetrieveExistingIndexRecord_Node0 -- No --> E_AttempttoRetrieveExistingIndexRecord
index record exists"}:::decision N_AttempttoRetrieveExistingIndexRecord_Node0_action["The system attempts to retrieve the
existing index record using the
cargo key"]:::main N_AttempttoRetrieveExistingIndexRecord_Node0 -- Yes --> N_AttempttoRetrieveExistingIndexRecord_Node0_action N_AttempttoRetrieveExistingIndexRecord_Node0_action --> E_AttempttoRetrieveExistingIndexRecord S_AttempttoRetrieveExistingIndexRecord --> N_AttempttoRetrieveExistingIndexRecord_Node0 N_AttempttoRetrieveExistingIndexRecord_Node0 -- No --> E_AttempttoRetrieveExistingIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo key is set for index record identification
WHEN:
The system needs to verify if the index record exists
THEN:
The system attempts to retrieve the existing index record using the cargo key
β Consolidated Acceptance Criteria
- The index record is not found in the database → the system clears the status code to indicate no 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_ClearStatusCode(["Start Step"])
E_ClearStatusCode(["End Step"])
N_ClearStatusCode_Node0{"The index record is not found in
the database"}:::decision N_ClearStatusCode_Node0_action["The system clears the status code
to indicate no error condition"]:::main N_ClearStatusCode_Node0 -- Yes --> N_ClearStatusCode_Node0_action N_ClearStatusCode_Node0_action --> E_ClearStatusCode S_ClearStatusCode --> N_ClearStatusCode_Node0 N_ClearStatusCode_Node0 -- No --> E_ClearStatusCode
the database"}:::decision N_ClearStatusCode_Node0_action["The system clears the status code
to indicate no error condition"]:::main N_ClearStatusCode_Node0 -- Yes --> N_ClearStatusCode_Node0_action N_ClearStatusCode_Node0_action --> E_ClearStatusCode S_ClearStatusCode --> N_ClearStatusCode_Node0 N_ClearStatusCode_Node0 -- No --> E_ClearStatusCode
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A delete GCSB1RT index record process is executed
WHEN:
The index record is not found in the database
THEN:
The system clears the status code to indicate no error condition
β Consolidated Acceptance Criteria
- The system checks for USCARGO-HOLD:
- USCARGO-HOLDPCS
- USCARGO-PR-HPCS
- USCARGO-HOLD-D
- USCARGO-PR-H-DE
- USCARGO-HOLDFDA status conditions
- The system checks for USCARGO-HOLD-B OR USCARGO-PR-H-BO status conditions → the system should identify that border hold index processing is required and proceed with border hold field population
- The system checks for USCARGO-ERROR status condition → the system should identify that error index processing is required and proceed with error field 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_CheckRT11USCARGOStatusFields(["Start Step"])
E_CheckRT11USCARGOStatusFields(["End Step"])
N_CheckRT11USCARGOStatusFields_Node0{"The system checks for USCARGO-HOLD
OR USCARGO-HOLDPCS OR
USCARGO-PR-HPCS OR USCARGO-HOLD-D OR
USCARGO-PR-H-DE OR USCARGO-HOLDFDA
status conditions"}:::decision N_CheckRT11USCARGOStatusFields_Node0_action["The system should identify that
destination hold index processing is
required and proceed with hold field
population"]:::main N_CheckRT11USCARGOStatusFields_Node0 -- Yes --> N_CheckRT11USCARGOStatusFields_Node0_action N_CheckRT11USCARGOStatusFields_Node0_action --> E_CheckRT11USCARGOStatusFields S_CheckRT11USCARGOStatusFields --> N_CheckRT11USCARGOStatusFields_Node0 N_CheckRT11USCARGOStatusFields_Node1{"The system checks for
USCARGO-HOLD-B OR USCARGO-PR-H-BO
status conditions"}:::decision N_CheckRT11USCARGOStatusFields_Node1_action["The system should identify that
border hold index processing is
required and proceed with border
hold field population"]:::main N_CheckRT11USCARGOStatusFields_Node1 -- Yes --> N_CheckRT11USCARGOStatusFields_Node1_action N_CheckRT11USCARGOStatusFields_Node1_action --> E_CheckRT11USCARGOStatusFields N_CheckRT11USCARGOStatusFields_Node0 -- No --> N_CheckRT11USCARGOStatusFields_Node1 N_CheckRT11USCARGOStatusFields_Node2{"The system checks for USCARGO-ERROR
status condition"}:::decision N_CheckRT11USCARGOStatusFields_Node2_action["The system should identify that
error index processing is required
and proceed with error field
population"]:::exclusion N_CheckRT11USCARGOStatusFields_Node2 -- Yes -->|Alternative| N_CheckRT11USCARGOStatusFields_Node2_action N_CheckRT11USCARGOStatusFields_Node2_action --> E_CheckRT11USCARGOStatusFields N_CheckRT11USCARGOStatusFields_Node1 -- No --> N_CheckRT11USCARGOStatusFields_Node2 N_CheckRT11USCARGOStatusFields_Node2 -- No --> E_CheckRT11USCARGOStatusFields
OR USCARGO-HOLDPCS OR
USCARGO-PR-HPCS OR USCARGO-HOLD-D OR
USCARGO-PR-H-DE OR USCARGO-HOLDFDA
status conditions"}:::decision N_CheckRT11USCARGOStatusFields_Node0_action["The system should identify that
destination hold index processing is
required and proceed with hold field
population"]:::main N_CheckRT11USCARGOStatusFields_Node0 -- Yes --> N_CheckRT11USCARGOStatusFields_Node0_action N_CheckRT11USCARGOStatusFields_Node0_action --> E_CheckRT11USCARGOStatusFields S_CheckRT11USCARGOStatusFields --> N_CheckRT11USCARGOStatusFields_Node0 N_CheckRT11USCARGOStatusFields_Node1{"The system checks for
USCARGO-HOLD-B OR USCARGO-PR-H-BO
status conditions"}:::decision N_CheckRT11USCARGOStatusFields_Node1_action["The system should identify that
border hold index processing is
required and proceed with border
hold field population"]:::main N_CheckRT11USCARGOStatusFields_Node1 -- Yes --> N_CheckRT11USCARGOStatusFields_Node1_action N_CheckRT11USCARGOStatusFields_Node1_action --> E_CheckRT11USCARGOStatusFields N_CheckRT11USCARGOStatusFields_Node0 -- No --> N_CheckRT11USCARGOStatusFields_Node1 N_CheckRT11USCARGOStatusFields_Node2{"The system checks for USCARGO-ERROR
status condition"}:::decision N_CheckRT11USCARGOStatusFields_Node2_action["The system should identify that
error index processing is required
and proceed with error field
population"]:::exclusion N_CheckRT11USCARGOStatusFields_Node2 -- Yes -->|Alternative| N_CheckRT11USCARGOStatusFields_Node2_action N_CheckRT11USCARGOStatusFields_Node2_action --> E_CheckRT11USCARGOStatusFields N_CheckRT11USCARGOStatusFields_Node1 -- No --> N_CheckRT11USCARGOStatusFields_Node2 N_CheckRT11USCARGOStatusFields_Node2 -- No --> E_CheckRT11USCARGOStatusFields
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status fields
WHEN:
The system checks for USCARGO-HOLD OR USCARGO-HOLDPCS OR USCARGO-PR-HPCS OR USCARGO-HOLD-D OR USCARGO-PR-H-DE OR USCARGO-HOLDFDA status conditions
THEN:
- The system should identify that destination hold index processing is required
- Proceed with hold field population
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status fields
WHEN:
The system checks for USCARGO-HOLD-B OR USCARGO-PR-H-BO status conditions
THEN:
- The system should identify that border hold index processing is required
- Proceed with border hold field population
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status fields
WHEN:
The system checks for USCARGO-ERROR status condition
THEN:
- The system should identify that error index processing is required
- Proceed with error field population
β Consolidated Acceptance Criteria
- The cargo has USCARGO-HOLD:
- USCARGO-HOLDPCS
- USCARGO-PR-HPCS
- USCARGO-HOLD-D
- USCARGO-PR-H-DE
- USCARGO-HOLDFDA 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_SetDestinationHoldIndexRequirements(["Start Step"])
E_SetDestinationHoldIndexRequirements(["End Step"])
N_SetDestinationHoldIndexRequirements_Node0{"The cargo has USCARGO-HOLD OR
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-D OR USCARGO-PR-H-DE
OR USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndexRequirements_Node0_action["The system should populate the
destination hold index with the
destination station number and the
destination cargo key with the CCN
key"]:::main N_SetDestinationHoldIndexRequirements_Node0 -- Yes --> N_SetDestinationHoldIndexRequirements_Node0_action N_SetDestinationHoldIndexRequirements_Node0_action --> E_SetDestinationHoldIndexRequirements S_SetDestinationHoldIndexRequirements --> N_SetDestinationHoldIndexRequirements_Node0 N_SetDestinationHoldIndexRequirements_Node0 -- No --> E_SetDestinationHoldIndexRequirements
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-D OR USCARGO-PR-H-DE
OR USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndexRequirements_Node0_action["The system should populate the
destination hold index with the
destination station number and the
destination cargo key with the CCN
key"]:::main N_SetDestinationHoldIndexRequirements_Node0 -- Yes --> N_SetDestinationHoldIndexRequirements_Node0_action N_SetDestinationHoldIndexRequirements_Node0_action --> E_SetDestinationHoldIndexRequirements S_SetDestinationHoldIndexRequirements --> N_SetDestinationHoldIndexRequirements_Node0 N_SetDestinationHoldIndexRequirements_Node0 -- No --> E_SetDestinationHoldIndexRequirements
File: GCCUSIO.cbl
GIVEN:
A cargo record with destination hold status conditions
WHEN:
The cargo has USCARGO-HOLD OR USCARGO-HOLDPCS OR USCARGO-PR-HPCS OR USCARGO-HOLD-D OR USCARGO-PR-H-DE OR USCARGO-HOLDFDA status
THEN:
- The system should populate the destination hold index with the destination station number
- The destination cargo key with the ccn key
β Consolidated Acceptance Criteria
- The cargo has USCARGO-HOLD:
- USCARGO-HOLDPCS
- USCARGO-PR-HPCS
- USCARGO-HOLD-B
- USCARGO-PR-H-BO
- USCARGO-HOLDFDA 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_SetBorderHoldIndexRequirements(["Start Step"])
E_SetBorderHoldIndexRequirements(["End Step"])
N_SetBorderHoldIndexRequirements_Node0{"The cargo has USCARGO-HOLD OR
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-B OR USCARGO-PR-H-BO
OR USCARGO-HOLDFDA status"}:::decision N_SetBorderHoldIndexRequirements_Node0_action["The system should retrieve the
border station number from the MC
table using the location ID and
populate the border hold index
fields with the station number and
CCN key"]:::main N_SetBorderHoldIndexRequirements_Node0 -- Yes --> N_SetBorderHoldIndexRequirements_Node0_action N_SetBorderHoldIndexRequirements_Node0_action --> E_SetBorderHoldIndexRequirements S_SetBorderHoldIndexRequirements --> N_SetBorderHoldIndexRequirements_Node0 N_SetBorderHoldIndexRequirements_Node0 -- No --> E_SetBorderHoldIndexRequirements
USCARGO-HOLDPCS OR USCARGO-PR-HPCS
OR USCARGO-HOLD-B OR USCARGO-PR-H-BO
OR USCARGO-HOLDFDA status"}:::decision N_SetBorderHoldIndexRequirements_Node0_action["The system should retrieve the
border station number from the MC
table using the location ID and
populate the border hold index
fields with the station number and
CCN key"]:::main N_SetBorderHoldIndexRequirements_Node0 -- Yes --> N_SetBorderHoldIndexRequirements_Node0_action N_SetBorderHoldIndexRequirements_Node0_action --> E_SetBorderHoldIndexRequirements S_SetBorderHoldIndexRequirements --> N_SetBorderHoldIndexRequirements_Node0 N_SetBorderHoldIndexRequirements_Node0 -- No --> E_SetBorderHoldIndexRequirements
File: GCCUSIO.cbl
GIVEN:
A cargo record with border hold status conditions
WHEN:
The cargo has USCARGO-HOLD OR USCARGO-HOLDPCS OR USCARGO-PR-HPCS OR USCARGO-HOLD-B OR USCARGO-PR-H-BO OR USCARGO-HOLDFDA status
THEN:
- The system should retrieve the border station number from the mc table using the location id
- Populate the border hold index fields with the station number
- Ccn key
β Consolidated Acceptance Criteria
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status AND no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → delete the cargo from the status index table 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_CargohasErrororHoldStatus(["Start Step"])
E_CargohasErrororHoldStatus(["End Step"])
N_CargohasErrororHoldStatus_Node0{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_CargohasErrororHoldStatus_Node0_action["Delete the cargo from the status
index table and exit processing"]:::exclusion N_CargohasErrororHoldStatus_Node0 -- Yes -->|Alternative| N_CargohasErrororHoldStatus_Node0_action N_CargohasErrororHoldStatus_Node0_action --> E_CargohasErrororHoldStatus S_CargohasErrororHoldStatus --> N_CargohasErrororHoldStatus_Node0 N_CargohasErrororHoldStatus_Node0 -- No --> E_CargohasErrororHoldStatus
status AND no CP cargo pending
status AND no US cargo error status
AND no US cargo hold status AND no
US cargo hold PCS status AND no US
cargo pre-hold PCS status AND no US
cargo hold border status AND no US
cargo pre-hold border status AND no
US cargo hold destination status AND
no US cargo pre-hold destination
status AND no US cargo hold FDA
status"}:::decision N_CargohasErrororHoldStatus_Node0_action["Delete the cargo from the status
index table and exit processing"]:::exclusion N_CargohasErrororHoldStatus_Node0 -- Yes -->|Alternative| N_CargohasErrororHoldStatus_Node0_action N_CargohasErrororHoldStatus_Node0_action --> E_CargohasErrororHoldStatus S_CargohasErrororHoldStatus --> N_CargohasErrororHoldStatus_Node0 N_CargohasErrororHoldStatus_Node0 -- No --> E_CargohasErrororHoldStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
- No us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
- Delete the cargo from the status index table
- Exit processing
β Consolidated Acceptance Criteria
- The cargo has no CP cargo error status AND no CP cargo pending status AND no US cargo error status → retrieve the current status index record, clear all error index fields, and if no hold index fields remain then delete the status record, otherwise update the status 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_CargohasErrorStatusOnly(["Start Step"])
E_CargohasErrorStatusOnly(["End Step"])
N_CargohasErrorStatusOnly_Node0{"The cargo has no CP cargo error
status AND no CP cargo pending
status AND no US cargo error status"}:::decision N_CargohasErrorStatusOnly_Node0_action["Retrieve the current status index
record, clear all error index
fields, and if no hold index fields
remain then delete the status
record, otherwise update the status
record"]:::exclusion N_CargohasErrorStatusOnly_Node0 -- Yes -->|Alternative| N_CargohasErrorStatusOnly_Node0_action N_CargohasErrorStatusOnly_Node0_action --> E_CargohasErrorStatusOnly S_CargohasErrorStatusOnly --> N_CargohasErrorStatusOnly_Node0 N_CargohasErrorStatusOnly_Node0 -- No --> E_CargohasErrorStatusOnly
status AND no CP cargo pending
status AND no US cargo error status"}:::decision N_CargohasErrorStatusOnly_Node0_action["Retrieve the current status index
record, clear all error index
fields, and if no hold index fields
remain then delete the status
record, otherwise update the status
record"]:::exclusion N_CargohasErrorStatusOnly_Node0 -- Yes -->|Alternative| N_CargohasErrorStatusOnly_Node0_action N_CargohasErrorStatusOnly_Node0_action --> E_CargohasErrorStatusOnly S_CargohasErrorStatusOnly --> N_CargohasErrorStatusOnly_Node0 N_CargohasErrorStatusOnly_Node0 -- No --> E_CargohasErrorStatusOnly
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with potential error and hold statuses
WHEN:
- The cargo has no cp cargo error status
- No cp cargo pending status
- No us cargo error status
THEN:
Retrieve the current status index record, clear all error index fields, and if no hold index fields remain then delete the status record, otherwise update the status record
β Consolidated Acceptance Criteria
- The cargo has no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status → retrieve the current status index record and if found, clear all hold index fields, and if no error index fields remain then delete the status record, otherwise update the status 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_CargohasHoldStatusOnly(["Start Step"])
E_CargohasHoldStatusOnly(["End Step"])
N_CargohasHoldStatusOnly_Node0{"The cargo has no US cargo hold
status AND no US cargo hold PCS
status AND no US cargo pre-hold PCS
status AND no US cargo hold border
status AND no US cargo pre-hold
border status AND no US cargo hold
destination status AND no US cargo
pre-hold destination status AND no
US cargo hold FDA status"}:::decision N_CargohasHoldStatusOnly_Node0_action["Retrieve the current status index
record and if found, clear all hold
index fields, and if no error index
fields remain then delete the status
record, otherwise update the status
record"]:::main N_CargohasHoldStatusOnly_Node0 -- Yes --> N_CargohasHoldStatusOnly_Node0_action N_CargohasHoldStatusOnly_Node0_action --> E_CargohasHoldStatusOnly S_CargohasHoldStatusOnly --> N_CargohasHoldStatusOnly_Node0 N_CargohasHoldStatusOnly_Node0 -- No --> E_CargohasHoldStatusOnly
status AND no US cargo hold PCS
status AND no US cargo pre-hold PCS
status AND no US cargo hold border
status AND no US cargo pre-hold
border status AND no US cargo hold
destination status AND no US cargo
pre-hold destination status AND no
US cargo hold FDA status"}:::decision N_CargohasHoldStatusOnly_Node0_action["Retrieve the current status index
record and if found, clear all hold
index fields, and if no error index
fields remain then delete the status
record, otherwise update the status
record"]:::main N_CargohasHoldStatusOnly_Node0 -- Yes --> N_CargohasHoldStatusOnly_Node0_action N_CargohasHoldStatusOnly_Node0_action --> E_CargohasHoldStatusOnly S_CargohasHoldStatusOnly --> N_CargohasHoldStatusOnly_Node0 N_CargohasHoldStatusOnly_Node0 -- No --> E_CargohasHoldStatusOnly
File: GCCUSIO.cbl
GIVEN:
A cargo record exists with potential error and hold statuses
WHEN:
- The cargo has no us cargo hold status
- No us cargo hold pcs status
- No us cargo pre-hold pcs status
- No us cargo hold border status
- No us cargo pre-hold border status
- No us cargo hold destination status
- No us cargo pre-hold destination status
- No us cargo hold fda status
THEN:
- Retrieve the current status index record
- If found, clear all hold index fields, and if no error index fields remain then delete the status record, otherwise update the status record
β Consolidated Acceptance Criteria
- The cargo has CP cargo error status:
- CP cargo pending status
- US cargo error status
- The cargo has US cargo hold status:
- US cargo hold PCS status
- US cargo pre-hold PCS status
- US cargo hold border status
- US cargo pre-hold border status
- US cargo hold destination status
- US cargo pre-hold destination status
- US cargo hold FDA 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_CargohasBothErrorandHoldStatus(["Start Step"])
E_CargohasBothErrorandHoldStatus(["End Step"])
N_CargohasBothErrorandHoldStatus_Node0{"The cargo has CP cargo error status
OR CP cargo pending status OR US
cargo error status"}:::decision N_CargohasBothErrorandHoldStatus_Node0_action["Retrieve the current status index
record, populate all error index
fields with origin station, border
station, and destination station
information, and if the status
record exists then update it,
otherwise create a new status record"]:::exclusion N_CargohasBothErrorandHoldStatus_Node0 -- Yes -->|Alternative| N_CargohasBothErrorandHoldStatus_Node0_action N_CargohasBothErrorandHoldStatus_Node0_action --> E_CargohasBothErrorandHoldStatus S_CargohasBothErrorandHoldStatus --> N_CargohasBothErrorandHoldStatus_Node0 N_CargohasBothErrorandHoldStatus_Node1{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold destination status OR US cargo
pre-hold destination status OR US
cargo hold FDA status"}:::decision N_CargohasBothErrorandHoldStatus_Node1_action["Retrieve the current status index
record, populate hold index fields
with destination and border station
information, and if the status
record exists then update it,
otherwise create a new status record"]:::main N_CargohasBothErrorandHoldStatus_Node1 -- Yes --> N_CargohasBothErrorandHoldStatus_Node1_action N_CargohasBothErrorandHoldStatus_Node1_action --> E_CargohasBothErrorandHoldStatus N_CargohasBothErrorandHoldStatus_Node0 -- No --> N_CargohasBothErrorandHoldStatus_Node1 N_CargohasBothErrorandHoldStatus_Node1 -- No --> E_CargohasBothErrorandHoldStatus
OR CP cargo pending status OR US
cargo error status"}:::decision N_CargohasBothErrorandHoldStatus_Node0_action["Retrieve the current status index
record, populate all error index
fields with origin station, border
station, and destination station
information, and if the status
record exists then update it,
otherwise create a new status record"]:::exclusion N_CargohasBothErrorandHoldStatus_Node0 -- Yes -->|Alternative| N_CargohasBothErrorandHoldStatus_Node0_action N_CargohasBothErrorandHoldStatus_Node0_action --> E_CargohasBothErrorandHoldStatus S_CargohasBothErrorandHoldStatus --> N_CargohasBothErrorandHoldStatus_Node0 N_CargohasBothErrorandHoldStatus_Node1{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold destination status OR US cargo
pre-hold destination status OR US
cargo hold FDA status"}:::decision N_CargohasBothErrorandHoldStatus_Node1_action["Retrieve the current status index
record, populate hold index fields
with destination and border station
information, and if the status
record exists then update it,
otherwise create a new status record"]:::main N_CargohasBothErrorandHoldStatus_Node1 -- Yes --> N_CargohasBothErrorandHoldStatus_Node1_action N_CargohasBothErrorandHoldStatus_Node1_action --> E_CargohasBothErrorandHoldStatus N_CargohasBothErrorandHoldStatus_Node0 -- No --> N_CargohasBothErrorandHoldStatus_Node1 N_CargohasBothErrorandHoldStatus_Node1 -- No --> E_CargohasBothErrorandHoldStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo has CP cargo error status OR CP cargo pending status OR US cargo error status
THEN:
Retrieve the current status index record, populate all error index fields with origin station, border station, and destination station information, and if the status record exists then update it, otherwise create a new status record
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold border status OR US cargo pre-hold border status OR US cargo hold destination status OR US cargo pre-hold destination status OR US cargo hold FDA status
THEN:
- Retrieve the current status index record, populate hold index fields with destination
- Border station information, and if the status record exists then update it, otherwise create a new status record
β Consolidated Acceptance Criteria
- If cargo status conditions → the system identifies if cargo has CP cargo error status OR CP cargo pending status OR US cargo 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_HasErrorStatus(["Start Step"])
E_HasErrorStatus(["End Step"])
N_HasErrorStatus_Node0{"The system evaluates cargo status
conditions"}:::decision N_HasErrorStatus_Node0_action["The system identifies if cargo has
CP cargo error status OR CP cargo
pending status OR US cargo error
status"]:::main N_HasErrorStatus_Node0 -- Yes --> N_HasErrorStatus_Node0_action N_HasErrorStatus_Node0_action --> E_HasErrorStatus S_HasErrorStatus --> N_HasErrorStatus_Node0 N_HasErrorStatus_Node0 -- No --> E_HasErrorStatus
conditions"}:::decision N_HasErrorStatus_Node0_action["The system identifies if cargo has
CP cargo error status OR CP cargo
pending status OR US cargo error
status"]:::main N_HasErrorStatus_Node0 -- Yes --> N_HasErrorStatus_Node0_action N_HasErrorStatus_Node0_action --> E_HasErrorStatus S_HasErrorStatus --> N_HasErrorStatus_Node0 N_HasErrorStatus_Node0 -- No --> E_HasErrorStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for status index updates
WHEN:
The system evaluates cargo status conditions
THEN:
The system identifies if cargo has CP cargo error status OR CP cargo pending status OR US cargo error status
β Consolidated Acceptance Criteria
- If cargo status conditions → the system identifies if cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold border status OR US cargo pre-hold border status OR US cargo hold destination status OR US cargo pre-hold destination status OR US cargo hold FDA 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_HasHoldStatus(["Start Step"])
E_HasHoldStatus(["End Step"])
N_HasHoldStatus_Node0{"The system evaluates cargo status
conditions"}:::decision N_HasHoldStatus_Node0_action["The system identifies if cargo has
US cargo hold status OR US cargo
hold PCS status OR US cargo pre-hold
PCS status OR US cargo hold border
status OR US cargo pre-hold border
status OR US cargo hold destination
status OR US cargo pre-hold
destination status OR US cargo hold
FDA status"]:::main N_HasHoldStatus_Node0 -- Yes --> N_HasHoldStatus_Node0_action N_HasHoldStatus_Node0_action --> E_HasHoldStatus S_HasHoldStatus --> N_HasHoldStatus_Node0 N_HasHoldStatus_Node0 -- No --> E_HasHoldStatus
conditions"}:::decision N_HasHoldStatus_Node0_action["The system identifies if cargo has
US cargo hold status OR US cargo
hold PCS status OR US cargo pre-hold
PCS status OR US cargo hold border
status OR US cargo pre-hold border
status OR US cargo hold destination
status OR US cargo pre-hold
destination status OR US cargo hold
FDA status"]:::main N_HasHoldStatus_Node0 -- Yes --> N_HasHoldStatus_Node0_action N_HasHoldStatus_Node0_action --> E_HasHoldStatus S_HasHoldStatus --> N_HasHoldStatus_Node0 N_HasHoldStatus_Node0 -- No --> E_HasHoldStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record is being processed for status index updates
WHEN:
The system evaluates cargo status conditions
THEN:
The system identifies if cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold border status OR US cargo pre-hold border status OR US cargo hold destination status OR US cargo pre-hold destination status OR US cargo hold FDA status
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system retrieves the current GCSB1RT record AND clears error origin index AND clears error destination index AND clears error border index AND if no held destination index exists AND no held border index exists then deletes the GCSB1RT record else replaces the GCSB1RT record
- The cargo has CP cargo error status:
- CP cargo pending status
- US cargo 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_ContinueProcessingErrorConditions(["Start Step"])
E_ContinueProcessingErrorConditions(["End Step"])
N_ContinueProcessingErrorConditions_Node0{"The system processes the cargo
status update"}:::decision N_ContinueProcessingErrorConditions_Node0_action["The system retrieves the current
GCSB1RT record AND clears error
origin index AND clears error
destination index AND clears error
border index AND if no held
destination index exists AND no held
border index exists then deletes the
GCSB1RT record else replaces the
GCSB1RT record"]:::main N_ContinueProcessingErrorConditions_Node0 -- Yes --> N_ContinueProcessingErrorConditions_Node0_action N_ContinueProcessingErrorConditions_Node0_action --> E_ContinueProcessingErrorConditions S_ContinueProcessingErrorConditions --> N_ContinueProcessingErrorConditions_Node0 N_ContinueProcessingErrorConditions_Node1{"The cargo has CP cargo error status
OR CP cargo pending status OR US
cargo error status"}:::decision N_ContinueProcessingErrorConditions_Node1_action["The system retrieves the current
GCSB1RT record AND fills error
fields with origin station, border
station, and destination station
information AND if GCSB1RT record
exists then replaces the record else
inserts a new GCSB1RT record"]:::exclusion N_ContinueProcessingErrorConditions_Node1 -- Yes -->|Alternative| N_ContinueProcessingErrorConditions_Node1_action N_ContinueProcessingErrorConditions_Node1_action --> E_ContinueProcessingErrorConditions N_ContinueProcessingErrorConditions_Node0 -- No --> N_ContinueProcessingErrorConditions_Node1 N_ContinueProcessingErrorConditions_Node1 -- No --> E_ContinueProcessingErrorConditions
status update"}:::decision N_ContinueProcessingErrorConditions_Node0_action["The system retrieves the current
GCSB1RT record AND clears error
origin index AND clears error
destination index AND clears error
border index AND if no held
destination index exists AND no held
border index exists then deletes the
GCSB1RT record else replaces the
GCSB1RT record"]:::main N_ContinueProcessingErrorConditions_Node0 -- Yes --> N_ContinueProcessingErrorConditions_Node0_action N_ContinueProcessingErrorConditions_Node0_action --> E_ContinueProcessingErrorConditions S_ContinueProcessingErrorConditions --> N_ContinueProcessingErrorConditions_Node0 N_ContinueProcessingErrorConditions_Node1{"The cargo has CP cargo error status
OR CP cargo pending status OR US
cargo error status"}:::decision N_ContinueProcessingErrorConditions_Node1_action["The system retrieves the current
GCSB1RT record AND fills error
fields with origin station, border
station, and destination station
information AND if GCSB1RT record
exists then replaces the record else
inserts a new GCSB1RT record"]:::exclusion N_ContinueProcessingErrorConditions_Node1 -- Yes -->|Alternative| N_ContinueProcessingErrorConditions_Node1_action N_ContinueProcessingErrorConditions_Node1_action --> E_ContinueProcessingErrorConditions N_ContinueProcessingErrorConditions_Node0 -- No --> N_ContinueProcessingErrorConditions_Node1 N_ContinueProcessingErrorConditions_Node1 -- No --> E_ContinueProcessingErrorConditions
File: GCCUSIO.cbl
GIVEN:
A cargo record has no CP cargo error status AND no CP cargo pending status AND no US cargo error status but has hold conditions
WHEN:
The system processes the cargo status update
THEN:
- The system retrieves the current gcsb1rt record
- Clears error origin index
- Clears error destination index
- Clears error border index
- If no held destination index exists
- No held border index exists then deletes the gcsb1rt record else replaces the gcsb1rt record
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo has CP cargo error status OR CP cargo pending status OR US cargo error status
THEN:
- The system retrieves the current gcsb1rt record
- Fills error fields with origin station, border station, and destination station information
- If gcsb1rt record exists then replaces the record else inserts a new gcsb1rt record
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system retrieves the current GCSB1RT record AND if record is found then clears held destination index AND clears held border index AND if no error destination index exists AND no error origin index exists AND no error border index exists then deletes the GCSB1RT record else replaces the GCSB1RT record
- The cargo has US cargo hold status:
- US cargo hold PCS status
- US cargo pre-hold PCS status
- US cargo hold border status
- US cargo pre-hold border status
- US cargo hold destination status
- US cargo pre-hold destination status
- US cargo hold FDA 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_ContinueProcessingHoldConditions(["Start Step"])
E_ContinueProcessingHoldConditions(["End Step"])
N_ContinueProcessingHoldConditions_Node0{"The system processes the cargo
status update"}:::decision N_ContinueProcessingHoldConditions_Node0_action["The system retrieves the current
GCSB1RT record AND if record is
found then clears held destination
index AND clears held border index
AND if no error destination index
exists AND no error origin index
exists AND no error border index
exists then deletes the GCSB1RT
record else replaces the GCSB1RT
record"]:::main N_ContinueProcessingHoldConditions_Node0 -- Yes --> N_ContinueProcessingHoldConditions_Node0_action N_ContinueProcessingHoldConditions_Node0_action --> E_ContinueProcessingHoldConditions S_ContinueProcessingHoldConditions --> N_ContinueProcessingHoldConditions_Node0 N_ContinueProcessingHoldConditions_Node1{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold destination status OR US cargo
pre-hold destination status OR US
cargo hold FDA status"}:::decision N_ContinueProcessingHoldConditions_Node1_action["The system retrieves the current
GCSB1RT record AND fills held fields
with destination and border
information AND if GCSB1RT record
exists then replaces the record else
inserts a new GCSB1RT record"]:::main N_ContinueProcessingHoldConditions_Node1 -- Yes --> N_ContinueProcessingHoldConditions_Node1_action N_ContinueProcessingHoldConditions_Node1_action --> E_ContinueProcessingHoldConditions N_ContinueProcessingHoldConditions_Node0 -- No --> N_ContinueProcessingHoldConditions_Node1 N_ContinueProcessingHoldConditions_Node1 -- No --> E_ContinueProcessingHoldConditions
status update"}:::decision N_ContinueProcessingHoldConditions_Node0_action["The system retrieves the current
GCSB1RT record AND if record is
found then clears held destination
index AND clears held border index
AND if no error destination index
exists AND no error origin index
exists AND no error border index
exists then deletes the GCSB1RT
record else replaces the GCSB1RT
record"]:::main N_ContinueProcessingHoldConditions_Node0 -- Yes --> N_ContinueProcessingHoldConditions_Node0_action N_ContinueProcessingHoldConditions_Node0_action --> E_ContinueProcessingHoldConditions S_ContinueProcessingHoldConditions --> N_ContinueProcessingHoldConditions_Node0 N_ContinueProcessingHoldConditions_Node1{"The cargo has US cargo hold status
OR US cargo hold PCS status OR US
cargo pre-hold PCS status OR US
cargo hold border status OR US cargo
pre-hold border status OR US cargo
hold destination status OR US cargo
pre-hold destination status OR US
cargo hold FDA status"}:::decision N_ContinueProcessingHoldConditions_Node1_action["The system retrieves the current
GCSB1RT record AND fills held fields
with destination and border
information AND if GCSB1RT record
exists then replaces the record else
inserts a new GCSB1RT record"]:::main N_ContinueProcessingHoldConditions_Node1 -- Yes --> N_ContinueProcessingHoldConditions_Node1_action N_ContinueProcessingHoldConditions_Node1_action --> E_ContinueProcessingHoldConditions N_ContinueProcessingHoldConditions_Node0 -- No --> N_ContinueProcessingHoldConditions_Node1 N_ContinueProcessingHoldConditions_Node1 -- No --> E_ContinueProcessingHoldConditions
File: GCCUSIO.cbl
GIVEN:
A cargo record has no US cargo hold status AND no US cargo hold PCS status AND no US cargo pre-hold PCS status AND no US cargo hold border status AND no US cargo pre-hold border status AND no US cargo hold destination status AND no US cargo pre-hold destination status AND no US cargo hold FDA status but has error conditions
WHEN:
The system processes the cargo status update
THEN:
- The system retrieves the current gcsb1rt record
- If record is found then clears held destination index
- Clears held border index
- If no error destination index exists
- No error origin index exists
- No error border index exists then deletes the gcsb1rt record else replaces the gcsb1rt record
File: GCCUSIO.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo has US cargo hold status OR US cargo hold PCS status OR US cargo pre-hold PCS status OR US cargo hold border status OR US cargo pre-hold border status OR US cargo hold destination status OR US cargo pre-hold destination status OR US cargo hold FDA status
THEN:
- The system retrieves the current gcsb1rt record
- Fills held fields with destination
- Border information
- If gcsb1rt record exists then replaces the record else inserts a new gcsb1rt record
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals HOLD → the system identifies cargo as having general hold status requiring destination hold index 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_CheckRT11USCARGOHOLDStatus(["Start Step"])
E_CheckRT11USCARGOHOLDStatus(["End Step"])
N_CheckRT11USCARGOHOLDStatus_Node0{"The system checks if RT11 USCARGO
status equals HOLD"}:::decision N_CheckRT11USCARGOHOLDStatus_Node0_action["The system identifies cargo as
having general hold status requiring
destination hold index processing"]:::main N_CheckRT11USCARGOHOLDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDStatus_Node0_action N_CheckRT11USCARGOHOLDStatus_Node0_action --> E_CheckRT11USCARGOHOLDStatus S_CheckRT11USCARGOHOLDStatus --> N_CheckRT11USCARGOHOLDStatus_Node0 N_CheckRT11USCARGOHOLDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDStatus
status equals HOLD"}:::decision N_CheckRT11USCARGOHOLDStatus_Node0_action["The system identifies cargo as
having general hold status requiring
destination hold index processing"]:::main N_CheckRT11USCARGOHOLDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDStatus_Node0_action N_CheckRT11USCARGOHOLDStatus_Node0_action --> E_CheckRT11USCARGOHOLDStatus S_CheckRT11USCARGOHOLDStatus --> N_CheckRT11USCARGOHOLDStatus_Node0 N_CheckRT11USCARGOHOLDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field
WHEN:
The system checks if RT11 USCARGO status equals HOLD
THEN:
The system identifies cargo as having general hold status requiring destination hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals HOLDPCS → the system identifies cargo as having hold PCS status requiring destination hold index 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_CheckRT11USCARGOHOLDPCSStatus(["Start Step"])
E_CheckRT11USCARGOHOLDPCSStatus(["End Step"])
N_CheckRT11USCARGOHOLDPCSStatus_Node0{"The system checks if RT11 USCARGO
status equals HOLDPCS"}:::decision N_CheckRT11USCARGOHOLDPCSStatus_Node0_action["The system identifies cargo as
having hold PCS status requiring
destination hold index processing"]:::main N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDPCSStatus_Node0_action N_CheckRT11USCARGOHOLDPCSStatus_Node0_action --> E_CheckRT11USCARGOHOLDPCSStatus S_CheckRT11USCARGOHOLDPCSStatus --> N_CheckRT11USCARGOHOLDPCSStatus_Node0 N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDPCSStatus
status equals HOLDPCS"}:::decision N_CheckRT11USCARGOHOLDPCSStatus_Node0_action["The system identifies cargo as
having hold PCS status requiring
destination hold index processing"]:::main N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDPCSStatus_Node0_action N_CheckRT11USCARGOHOLDPCSStatus_Node0_action --> E_CheckRT11USCARGOHOLDPCSStatus S_CheckRT11USCARGOHOLDPCSStatus --> N_CheckRT11USCARGOHOLDPCSStatus_Node0 N_CheckRT11USCARGOHOLDPCSStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDPCSStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no general HOLD status
WHEN:
The system checks if RT11 USCARGO status equals HOLDPCS
THEN:
The system identifies cargo as having hold PCS status requiring destination hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals PR-HPCS → the system identifies cargo as having pre-release hold PCS status requiring destination hold index 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_CheckRT11USCARGOPRHPCSStatus(["Start Step"])
E_CheckRT11USCARGOPRHPCSStatus(["End Step"])
N_CheckRT11USCARGOPRHPCSStatus_Node0{"The system checks if RT11 USCARGO
status equals PR-HPCS"}:::decision N_CheckRT11USCARGOPRHPCSStatus_Node0_action["The system identifies cargo as
having pre-release hold PCS status
requiring destination hold index
processing"]:::main N_CheckRT11USCARGOPRHPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHPCSStatus_Node0_action N_CheckRT11USCARGOPRHPCSStatus_Node0_action --> E_CheckRT11USCARGOPRHPCSStatus S_CheckRT11USCARGOPRHPCSStatus --> N_CheckRT11USCARGOPRHPCSStatus_Node0 N_CheckRT11USCARGOPRHPCSStatus_Node0 -- No --> E_CheckRT11USCARGOPRHPCSStatus
status equals PR-HPCS"}:::decision N_CheckRT11USCARGOPRHPCSStatus_Node0_action["The system identifies cargo as
having pre-release hold PCS status
requiring destination hold index
processing"]:::main N_CheckRT11USCARGOPRHPCSStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHPCSStatus_Node0_action N_CheckRT11USCARGOPRHPCSStatus_Node0_action --> E_CheckRT11USCARGOPRHPCSStatus S_CheckRT11USCARGOPRHPCSStatus --> N_CheckRT11USCARGOPRHPCSStatus_Node0 N_CheckRT11USCARGOPRHPCSStatus_Node0 -- No --> E_CheckRT11USCARGOPRHPCSStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no HOLD or HOLDPCS status
WHEN:
The system checks if RT11 USCARGO status equals PR-HPCS
THEN:
The system identifies cargo as having pre-release hold PCS status requiring destination hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals HOLD-B → the system identifies cargo as having border hold status requiring border hold index 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_CheckRT11USCARGOHOLDBStatus(["Start Step"])
E_CheckRT11USCARGOHOLDBStatus(["End Step"])
N_CheckRT11USCARGOHOLDBStatus_Node0{"The system checks if RT11 USCARGO
status equals HOLD-B"}:::decision N_CheckRT11USCARGOHOLDBStatus_Node0_action["The system identifies cargo as
having border hold status requiring
border hold index processing"]:::main N_CheckRT11USCARGOHOLDBStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDBStatus_Node0_action N_CheckRT11USCARGOHOLDBStatus_Node0_action --> E_CheckRT11USCARGOHOLDBStatus S_CheckRT11USCARGOHOLDBStatus --> N_CheckRT11USCARGOHOLDBStatus_Node0 N_CheckRT11USCARGOHOLDBStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDBStatus
status equals HOLD-B"}:::decision N_CheckRT11USCARGOHOLDBStatus_Node0_action["The system identifies cargo as
having border hold status requiring
border hold index processing"]:::main N_CheckRT11USCARGOHOLDBStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDBStatus_Node0_action N_CheckRT11USCARGOHOLDBStatus_Node0_action --> E_CheckRT11USCARGOHOLDBStatus S_CheckRT11USCARGOHOLDBStatus --> N_CheckRT11USCARGOHOLDBStatus_Node0 N_CheckRT11USCARGOHOLDBStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDBStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no destination hold statuses
WHEN:
The system checks if RT11 USCARGO status equals HOLD-B
THEN:
The system identifies cargo as having border hold status requiring border hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals PR-H-BO → the system identifies cargo as having pre-release hold border status requiring border hold index 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_CheckRT11USCARGOPRHBOStatus(["Start Step"])
E_CheckRT11USCARGOPRHBOStatus(["End Step"])
N_CheckRT11USCARGOPRHBOStatus_Node0{"The system checks if RT11 USCARGO
status equals PR-H-BO"}:::decision N_CheckRT11USCARGOPRHBOStatus_Node0_action["The system identifies cargo as
having pre-release hold border
status requiring border hold index
processing"]:::main N_CheckRT11USCARGOPRHBOStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHBOStatus_Node0_action N_CheckRT11USCARGOPRHBOStatus_Node0_action --> E_CheckRT11USCARGOPRHBOStatus S_CheckRT11USCARGOPRHBOStatus --> N_CheckRT11USCARGOPRHBOStatus_Node0 N_CheckRT11USCARGOPRHBOStatus_Node0 -- No --> E_CheckRT11USCARGOPRHBOStatus
status equals PR-H-BO"}:::decision N_CheckRT11USCARGOPRHBOStatus_Node0_action["The system identifies cargo as
having pre-release hold border
status requiring border hold index
processing"]:::main N_CheckRT11USCARGOPRHBOStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHBOStatus_Node0_action N_CheckRT11USCARGOPRHBOStatus_Node0_action --> E_CheckRT11USCARGOPRHBOStatus S_CheckRT11USCARGOPRHBOStatus --> N_CheckRT11USCARGOPRHBOStatus_Node0 N_CheckRT11USCARGOPRHBOStatus_Node0 -- No --> E_CheckRT11USCARGOPRHBOStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no destination hold or HOLD-B statuses
WHEN:
The system checks if RT11 USCARGO status equals PR-H-BO
THEN:
The system identifies cargo as having pre-release hold border status requiring border hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals HOLD-D → the system identifies cargo as having destination hold status requiring destination hold index 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_CheckRT11USCARGOHOLDDStatus(["Start Step"])
E_CheckRT11USCARGOHOLDDStatus(["End Step"])
N_CheckRT11USCARGOHOLDDStatus_Node0{"The system checks if RT11 USCARGO
status equals HOLD-D"}:::decision N_CheckRT11USCARGOHOLDDStatus_Node0_action["The system identifies cargo as
having destination hold status
requiring destination hold index
processing"]:::main N_CheckRT11USCARGOHOLDDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDDStatus_Node0_action N_CheckRT11USCARGOHOLDDStatus_Node0_action --> E_CheckRT11USCARGOHOLDDStatus S_CheckRT11USCARGOHOLDDStatus --> N_CheckRT11USCARGOHOLDDStatus_Node0 N_CheckRT11USCARGOHOLDDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDDStatus
status equals HOLD-D"}:::decision N_CheckRT11USCARGOHOLDDStatus_Node0_action["The system identifies cargo as
having destination hold status
requiring destination hold index
processing"]:::main N_CheckRT11USCARGOHOLDDStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDDStatus_Node0_action N_CheckRT11USCARGOHOLDDStatus_Node0_action --> E_CheckRT11USCARGOHOLDDStatus S_CheckRT11USCARGOHOLDDStatus --> N_CheckRT11USCARGOHOLDDStatus_Node0 N_CheckRT11USCARGOHOLDDStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDDStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no previous hold statuses
WHEN:
The system checks if RT11 USCARGO status equals HOLD-D
THEN:
The system identifies cargo as having destination hold status requiring destination hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals PR-H-DE → the system identifies cargo as having pre-release hold destination status requiring destination hold index 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_CheckRT11USCARGOPRHDEStatus(["Start Step"])
E_CheckRT11USCARGOPRHDEStatus(["End Step"])
N_CheckRT11USCARGOPRHDEStatus_Node0{"The system checks if RT11 USCARGO
status equals PR-H-DE"}:::decision N_CheckRT11USCARGOPRHDEStatus_Node0_action["The system identifies cargo as
having pre-release hold destination
status requiring destination hold
index processing"]:::main N_CheckRT11USCARGOPRHDEStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHDEStatus_Node0_action N_CheckRT11USCARGOPRHDEStatus_Node0_action --> E_CheckRT11USCARGOPRHDEStatus S_CheckRT11USCARGOPRHDEStatus --> N_CheckRT11USCARGOPRHDEStatus_Node0 N_CheckRT11USCARGOPRHDEStatus_Node0 -- No --> E_CheckRT11USCARGOPRHDEStatus
status equals PR-H-DE"}:::decision N_CheckRT11USCARGOPRHDEStatus_Node0_action["The system identifies cargo as
having pre-release hold destination
status requiring destination hold
index processing"]:::main N_CheckRT11USCARGOPRHDEStatus_Node0 -- Yes --> N_CheckRT11USCARGOPRHDEStatus_Node0_action N_CheckRT11USCARGOPRHDEStatus_Node0_action --> E_CheckRT11USCARGOPRHDEStatus S_CheckRT11USCARGOPRHDEStatus --> N_CheckRT11USCARGOPRHDEStatus_Node0 N_CheckRT11USCARGOPRHDEStatus_Node0 -- No --> E_CheckRT11USCARGOPRHDEStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no previous hold statuses
WHEN:
The system checks if RT11 USCARGO status equals PR-H-DE
THEN:
The system identifies cargo as having pre-release hold destination status requiring destination hold index processing
β Consolidated Acceptance Criteria
- The system checks if RT11 USCARGO status equals HOLDFDA → the system identifies cargo as having FDA hold status requiring destination hold index 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_CheckRT11USCARGOHOLDFDAStatus(["Start Step"])
E_CheckRT11USCARGOHOLDFDAStatus(["End Step"])
N_CheckRT11USCARGOHOLDFDAStatus_Node0{"The system checks if RT11 USCARGO
status equals HOLDFDA"}:::decision N_CheckRT11USCARGOHOLDFDAStatus_Node0_action["The system identifies cargo as
having FDA hold status requiring
destination hold index processing"]:::main N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDFDAStatus_Node0_action N_CheckRT11USCARGOHOLDFDAStatus_Node0_action --> E_CheckRT11USCARGOHOLDFDAStatus S_CheckRT11USCARGOHOLDFDAStatus --> N_CheckRT11USCARGOHOLDFDAStatus_Node0 N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDFDAStatus
status equals HOLDFDA"}:::decision N_CheckRT11USCARGOHOLDFDAStatus_Node0_action["The system identifies cargo as
having FDA hold status requiring
destination hold index processing"]:::main N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- Yes --> N_CheckRT11USCARGOHOLDFDAStatus_Node0_action N_CheckRT11USCARGOHOLDFDAStatus_Node0_action --> E_CheckRT11USCARGOHOLDFDAStatus S_CheckRT11USCARGOHOLDFDAStatus --> N_CheckRT11USCARGOHOLDFDAStatus_Node0 N_CheckRT11USCARGOHOLDFDAStatus_Node0 -- No --> E_CheckRT11USCARGOHOLDFDAStatus
File: GCCUSIO.cbl
GIVEN:
A cargo record with RT11 USCARGO status field and no previous hold statuses
WHEN:
The system checks if RT11 USCARGO status equals HOLDFDA
THEN:
The system identifies cargo as having FDA hold status requiring destination hold index processing
β Consolidated Acceptance Criteria
- The system needs to set border hold index → the system calls table lookup function to retrieve MC table segment using cargo location ID and extracts station number for border hold 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_RetrieveStationInformationforBorder(["Start Step"])
E_RetrieveStationInformationforBorder(["End Step"])
N_RetrieveStationInformationforBorder_Node0{"The system needs to set border hold
index"}:::decision N_RetrieveStationInformationforBorder_Node0_action["The system calls table lookup
function to retrieve MC table
segment using cargo location ID and
extracts station number for border
hold index"]:::main N_RetrieveStationInformationforBorder_Node0 -- Yes --> N_RetrieveStationInformationforBorder_Node0_action N_RetrieveStationInformationforBorder_Node0_action --> E_RetrieveStationInformationforBorder S_RetrieveStationInformationforBorder --> N_RetrieveStationInformationforBorder_Node0 N_RetrieveStationInformationforBorder_Node0 -- No --> E_RetrieveStationInformationforBorder
index"}:::decision N_RetrieveStationInformationforBorder_Node0_action["The system calls table lookup
function to retrieve MC table
segment using cargo location ID and
extracts station number for border
hold index"]:::main N_RetrieveStationInformationforBorder_Node0 -- Yes --> N_RetrieveStationInformationforBorder_Node0_action N_RetrieveStationInformationforBorder_Node0_action --> E_RetrieveStationInformationforBorder S_RetrieveStationInformationforBorder --> N_RetrieveStationInformationforBorder_Node0 N_RetrieveStationInformationforBorder_Node0 -- No --> E_RetrieveStationInformationforBorder
File: GCCUSIO.cbl
GIVEN:
A cargo record requiring border hold index processing
WHEN:
The system needs to set border hold index
THEN:
- The system calls table lookup function to retrieve mc table segment using cargo location id
- Extracts station number for border hold index
β Consolidated Acceptance Criteria
- The cargo has no error index fields populated (error-dest, error-orig, error-border are all spaces) → the system deletes the GCSB1RT index record completely
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteGCSB1RTifNoOtherIndexes(["Start Step"])
E_DeleteGCSB1RTifNoOtherIndexes(["End Step"])
N_DeleteGCSB1RTifNoOtherIndexes_Node0{"The cargo has no error index fields
populated error-dest, error-orig,
error-border are all spaces"}:::decision N_DeleteGCSB1RTifNoOtherIndexes_Node0_action["The system deletes the GCSB1RT
index record completely"]:::exclusion N_DeleteGCSB1RTifNoOtherIndexes_Node0 -- Yes -->|Alternative| N_DeleteGCSB1RTifNoOtherIndexes_Node0_action N_DeleteGCSB1RTifNoOtherIndexes_Node0_action --> E_DeleteGCSB1RTifNoOtherIndexes S_DeleteGCSB1RTifNoOtherIndexes --> N_DeleteGCSB1RTifNoOtherIndexes_Node0 N_DeleteGCSB1RTifNoOtherIndexes_Node0 -- No --> E_DeleteGCSB1RTifNoOtherIndexes
populated error-dest, error-orig,
error-border are all spaces"}:::decision N_DeleteGCSB1RTifNoOtherIndexes_Node0_action["The system deletes the GCSB1RT
index record completely"]:::exclusion N_DeleteGCSB1RTifNoOtherIndexes_Node0 -- Yes -->|Alternative| N_DeleteGCSB1RTifNoOtherIndexes_Node0_action N_DeleteGCSB1RTifNoOtherIndexes_Node0_action --> E_DeleteGCSB1RTifNoOtherIndexes S_DeleteGCSB1RTifNoOtherIndexes --> N_DeleteGCSB1RTifNoOtherIndexes_Node0 N_DeleteGCSB1RTifNoOtherIndexes_Node0 -- No --> E_DeleteGCSB1RTifNoOtherIndexes
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT record exists for cargo with cleared hold indexes
WHEN:
The cargo has no error index fields populated (error-dest, error-orig, error-border are all spaces)
THEN:
The system deletes the GCSB1RT index record completely
β Consolidated Acceptance Criteria
- The system searches for existing GCSB1RT error index record using cargo CCN key → the system retrieves the record if it exists and sets appropriate status 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_RetrieveExistingErrorIndexRecord(["Start Step"])
E_RetrieveExistingErrorIndexRecord(["End Step"])
N_RetrieveExistingErrorIndexRecord_Node0{"The system searches for existing
GCSB1RT error index record using
cargo CCN key"}:::decision N_RetrieveExistingErrorIndexRecord_Node0_action["The system retrieves the record if
it exists and sets appropriate
status flag"]:::exclusion N_RetrieveExistingErrorIndexRecord_Node0 -- Yes -->|Alternative| N_RetrieveExistingErrorIndexRecord_Node0_action N_RetrieveExistingErrorIndexRecord_Node0_action --> E_RetrieveExistingErrorIndexRecord S_RetrieveExistingErrorIndexRecord --> N_RetrieveExistingErrorIndexRecord_Node0 N_RetrieveExistingErrorIndexRecord_Node0 -- No --> E_RetrieveExistingErrorIndexRecord
GCSB1RT error index record using
cargo CCN key"}:::decision N_RetrieveExistingErrorIndexRecord_Node0_action["The system retrieves the record if
it exists and sets appropriate
status flag"]:::exclusion N_RetrieveExistingErrorIndexRecord_Node0 -- Yes -->|Alternative| N_RetrieveExistingErrorIndexRecord_Node0_action N_RetrieveExistingErrorIndexRecord_Node0_action --> E_RetrieveExistingErrorIndexRecord S_RetrieveExistingErrorIndexRecord --> N_RetrieveExistingErrorIndexRecord_Node0 N_RetrieveExistingErrorIndexRecord_Node0 -- No --> E_RetrieveExistingErrorIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record requires error index processing
WHEN:
The system searches for existing GCSB1RT error index record using cargo CCN key
THEN:
- The system retrieves the record if it exists
- Sets appropriate status flag
β Consolidated Acceptance Criteria
- The system fills error fields for the index record → error code 'E' is set, origin station number is populated from cargo record, and cargo CCN is set as error origin cargo 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_PopulateErrorOriginStation(["Start Step"])
E_PopulateErrorOriginStation(["End Step"])
N_PopulateErrorOriginStation_Node0{"The system fills error fields for
the index record"}:::decision N_PopulateErrorOriginStation_Node0_action["Error code E is set, origin station
number is populated from cargo
record, and cargo CCN is set as
error origin cargo key"]:::exclusion N_PopulateErrorOriginStation_Node0 -- Yes -->|Alternative| N_PopulateErrorOriginStation_Node0_action N_PopulateErrorOriginStation_Node0_action --> E_PopulateErrorOriginStation S_PopulateErrorOriginStation --> N_PopulateErrorOriginStation_Node0 N_PopulateErrorOriginStation_Node0 -- No --> E_PopulateErrorOriginStation
the index record"}:::decision N_PopulateErrorOriginStation_Node0_action["Error code E is set, origin station
number is populated from cargo
record, and cargo CCN is set as
error origin cargo key"]:::exclusion N_PopulateErrorOriginStation_Node0 -- Yes -->|Alternative| N_PopulateErrorOriginStation_Node0_action N_PopulateErrorOriginStation_Node0_action --> E_PopulateErrorOriginStation S_PopulateErrorOriginStation --> N_PopulateErrorOriginStation_Node0 N_PopulateErrorOriginStation_Node0 -- No --> E_PopulateErrorOriginStation
File: GCCUSIO.cbl
GIVEN:
Cargo has error status and error index record is being processed
WHEN:
The system fills error fields for the index record
THEN:
Error code 'E' is set, origin station number is populated from cargo record, and cargo CCN is set as error origin cargo key
β Consolidated Acceptance Criteria
- The system fills error fields for the index record → error code 'E' is set, destination station number is populated from cargo record, and cargo CCN is set as error destination cargo 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_PopulateErrorDestinationStation(["Start Step"])
E_PopulateErrorDestinationStation(["End Step"])
N_PopulateErrorDestinationStation_Node0{"The system fills error fields for
the index record"}:::decision N_PopulateErrorDestinationStation_Node0_action["Error code E is set, destination
station number is populated from
cargo record, and cargo CCN is set
as error destination cargo key"]:::exclusion N_PopulateErrorDestinationStation_Node0 -- Yes -->|Alternative| N_PopulateErrorDestinationStation_Node0_action N_PopulateErrorDestinationStation_Node0_action --> E_PopulateErrorDestinationStation S_PopulateErrorDestinationStation --> N_PopulateErrorDestinationStation_Node0 N_PopulateErrorDestinationStation_Node0 -- No --> E_PopulateErrorDestinationStation
the index record"}:::decision N_PopulateErrorDestinationStation_Node0_action["Error code E is set, destination
station number is populated from
cargo record, and cargo CCN is set
as error destination cargo key"]:::exclusion N_PopulateErrorDestinationStation_Node0 -- Yes -->|Alternative| N_PopulateErrorDestinationStation_Node0_action N_PopulateErrorDestinationStation_Node0_action --> E_PopulateErrorDestinationStation S_PopulateErrorDestinationStation --> N_PopulateErrorDestinationStation_Node0 N_PopulateErrorDestinationStation_Node0 -- No --> E_PopulateErrorDestinationStation
File: GCCUSIO.cbl
GIVEN:
Cargo has error status and error index record is being processed
WHEN:
The system fills error fields for the index record
THEN:
Error code 'E' is set, destination station number is populated from cargo record, and cargo CCN is set as error destination cargo key
β Consolidated Acceptance Criteria
- The system fills error border fields for the index record → error code 'E' is set, border station number is populated from MC table result, and cargo CCN is set as error border cargo 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_PopulateErrorBorderStation(["Start Step"])
E_PopulateErrorBorderStation(["End Step"])
N_PopulateErrorBorderStation_Node0{"The system fills error border
fields for the index record"}:::decision N_PopulateErrorBorderStation_Node0_action["Error code E is set, border station
number is populated from MC table
result, and cargo CCN is set as
error border cargo key"]:::exclusion N_PopulateErrorBorderStation_Node0 -- Yes -->|Alternative| N_PopulateErrorBorderStation_Node0_action N_PopulateErrorBorderStation_Node0_action --> E_PopulateErrorBorderStation S_PopulateErrorBorderStation --> N_PopulateErrorBorderStation_Node0 N_PopulateErrorBorderStation_Node0 -- No --> E_PopulateErrorBorderStation
fields for the index record"}:::decision N_PopulateErrorBorderStation_Node0_action["Error code E is set, border station
number is populated from MC table
result, and cargo CCN is set as
error border cargo key"]:::exclusion N_PopulateErrorBorderStation_Node0 -- Yes -->|Alternative| N_PopulateErrorBorderStation_Node0_action N_PopulateErrorBorderStation_Node0_action --> E_PopulateErrorBorderStation S_PopulateErrorBorderStation --> N_PopulateErrorBorderStation_Node0 N_PopulateErrorBorderStation_Node0 -- No --> E_PopulateErrorBorderStation
File: GCCUSIO.cbl
GIVEN:
Cargo has error status and border station information is available from MC table lookup
WHEN:
The system fills error border fields for the index record
THEN:
Error code 'E' is set, border station number is populated from MC table result, and cargo CCN is set as error border cargo key
β Consolidated Acceptance Criteria
- The system needs to create error index entry → a new GCSB1RT record is inserted with cargo CCN as key and populated error 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_CreateNewErrorIndexRecord(["Start Step"])
E_CreateNewErrorIndexRecord(["End Step"])
N_CreateNewErrorIndexRecord_Node0{"The system needs to create error
index entry"}:::decision N_CreateNewErrorIndexRecord_Node0_action["A new GCSB1RT record is inserted
with cargo CCN as key and populated
error fields"]:::exclusion N_CreateNewErrorIndexRecord_Node0 -- Yes -->|Alternative| N_CreateNewErrorIndexRecord_Node0_action N_CreateNewErrorIndexRecord_Node0_action --> E_CreateNewErrorIndexRecord S_CreateNewErrorIndexRecord --> N_CreateNewErrorIndexRecord_Node0 N_CreateNewErrorIndexRecord_Node0 -- No --> E_CreateNewErrorIndexRecord
index entry"}:::decision N_CreateNewErrorIndexRecord_Node0_action["A new GCSB1RT record is inserted
with cargo CCN as key and populated
error fields"]:::exclusion N_CreateNewErrorIndexRecord_Node0 -- Yes -->|Alternative| N_CreateNewErrorIndexRecord_Node0_action N_CreateNewErrorIndexRecord_Node0_action --> E_CreateNewErrorIndexRecord S_CreateNewErrorIndexRecord --> N_CreateNewErrorIndexRecord_Node0 N_CreateNewErrorIndexRecord_Node0 -- No --> E_CreateNewErrorIndexRecord
File: GCCUSIO.cbl
GIVEN:
Cargo has error status and no existing error index record is found
WHEN:
The system needs to create error index entry
THEN:
- A new gcsb1rt record is inserted with cargo ccn as key
- Populated error fields
β Consolidated Acceptance Criteria
- The system needs to update error index entry → the existing GCSB1RT record is updated with current error field 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_UpdateExistingErrorIndexRecord(["Start Step"])
E_UpdateExistingErrorIndexRecord(["End Step"])
N_UpdateExistingErrorIndexRecord_Node0{"The system needs to update error
index entry"}:::decision N_UpdateExistingErrorIndexRecord_Node0_action["The existing GCSB1RT record is
updated with current error field
information"]:::exclusion N_UpdateExistingErrorIndexRecord_Node0 -- Yes -->|Alternative| N_UpdateExistingErrorIndexRecord_Node0_action N_UpdateExistingErrorIndexRecord_Node0_action --> E_UpdateExistingErrorIndexRecord S_UpdateExistingErrorIndexRecord --> N_UpdateExistingErrorIndexRecord_Node0 N_UpdateExistingErrorIndexRecord_Node0 -- No --> E_UpdateExistingErrorIndexRecord
index entry"}:::decision N_UpdateExistingErrorIndexRecord_Node0_action["The existing GCSB1RT record is
updated with current error field
information"]:::exclusion N_UpdateExistingErrorIndexRecord_Node0 -- Yes -->|Alternative| N_UpdateExistingErrorIndexRecord_Node0_action N_UpdateExistingErrorIndexRecord_Node0_action --> E_UpdateExistingErrorIndexRecord S_UpdateExistingErrorIndexRecord --> N_UpdateExistingErrorIndexRecord_Node0 N_UpdateExistingErrorIndexRecord_Node0 -- No --> E_UpdateExistingErrorIndexRecord
File: GCCUSIO.cbl
GIVEN:
Cargo has error status and existing error index record is found
WHEN:
The system needs to update error index entry
THEN:
The existing GCSB1RT record is updated with current error field information
β Consolidated Acceptance Criteria
- The system checks if held destination index and held border index are both empty → if both held indexes are empty, the record should be deleted; otherwise, the record should be kept
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyOtherIndexEntriesRemain(["Start Step"])
E_AnyOtherIndexEntriesRemain(["End Step"])
N_AnyOtherIndexEntriesRemain_Node0{"The system checks if held
destination index and held border
index are both empty"}:::decision N_AnyOtherIndexEntriesRemain_Node0_action["If both held indexes are empty, the
record should be deleted otherwise,
the record should be kept"]:::main N_AnyOtherIndexEntriesRemain_Node0 -- Yes --> N_AnyOtherIndexEntriesRemain_Node0_action N_AnyOtherIndexEntriesRemain_Node0_action --> E_AnyOtherIndexEntriesRemain S_AnyOtherIndexEntriesRemain --> N_AnyOtherIndexEntriesRemain_Node0 N_AnyOtherIndexEntriesRemain_Node0 -- No --> E_AnyOtherIndexEntriesRemain
destination index and held border
index are both empty"}:::decision N_AnyOtherIndexEntriesRemain_Node0_action["If both held indexes are empty, the
record should be deleted otherwise,
the record should be kept"]:::main N_AnyOtherIndexEntriesRemain_Node0 -- Yes --> N_AnyOtherIndexEntriesRemain_Node0_action N_AnyOtherIndexEntriesRemain_Node0_action --> E_AnyOtherIndexEntriesRemain S_AnyOtherIndexEntriesRemain --> N_AnyOtherIndexEntriesRemain_Node0 N_AnyOtherIndexEntriesRemain_Node0 -- No --> E_AnyOtherIndexEntriesRemain
File: GCCUSIO.cbl
GIVEN:
Error fields have been cleared from index record
WHEN:
- The system checks if held destination index
- Held border index are both empty
THEN:
If both held indexes are empty, the record should be deleted; otherwise, the record should be kept
β Consolidated Acceptance Criteria
- The system determines the index record is no longer needed → the GCSB1RT error index record is deleted from 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_DeleteErrorIndexRecord(["Start Step"])
E_DeleteErrorIndexRecord(["End Step"])
N_DeleteErrorIndexRecord_Node0{"The system determines the index
record is no longer needed"}:::decision N_DeleteErrorIndexRecord_Node0_action["The GCSB1RT error index record is
deleted from the database"]:::main N_DeleteErrorIndexRecord_Node0 -- Yes --> N_DeleteErrorIndexRecord_Node0_action N_DeleteErrorIndexRecord_Node0_action --> E_DeleteErrorIndexRecord S_DeleteErrorIndexRecord --> N_DeleteErrorIndexRecord_Node0 N_DeleteErrorIndexRecord_Node0 -- No --> E_DeleteErrorIndexRecord
record is no longer needed"}:::decision N_DeleteErrorIndexRecord_Node0_action["The GCSB1RT error index record is
deleted from the database"]:::main N_DeleteErrorIndexRecord_Node0 -- Yes --> N_DeleteErrorIndexRecord_Node0_action N_DeleteErrorIndexRecord_Node0_action --> E_DeleteErrorIndexRecord S_DeleteErrorIndexRecord --> N_DeleteErrorIndexRecord_Node0 N_DeleteErrorIndexRecord_Node0 -- No --> E_DeleteErrorIndexRecord
File: GCCUSIO.cbl
GIVEN:
Error fields have been cleared and no other index entries remain in the record
WHEN:
The system determines the index record is no longer needed
THEN:
The GCSB1RT error index record is deleted from the database
β Consolidated Acceptance Criteria
- The system determines the index record is still needed for other purposes → the GCSB1RT error index record is updated and retained 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_KeepErrorIndexRecord(["Start Step"])
E_KeepErrorIndexRecord(["End Step"])
N_KeepErrorIndexRecord_Node0{"The system determines the index
record is still needed for other
purposes"}:::decision N_KeepErrorIndexRecord_Node0_action["The GCSB1RT error index record is
updated and retained in the database"]:::main N_KeepErrorIndexRecord_Node0 -- Yes --> N_KeepErrorIndexRecord_Node0_action N_KeepErrorIndexRecord_Node0_action --> E_KeepErrorIndexRecord S_KeepErrorIndexRecord --> N_KeepErrorIndexRecord_Node0 N_KeepErrorIndexRecord_Node0 -- No --> E_KeepErrorIndexRecord
record is still needed for other
purposes"}:::decision N_KeepErrorIndexRecord_Node0_action["The GCSB1RT error index record is
updated and retained in the database"]:::main N_KeepErrorIndexRecord_Node0 -- Yes --> N_KeepErrorIndexRecord_Node0_action N_KeepErrorIndexRecord_Node0_action --> E_KeepErrorIndexRecord S_KeepErrorIndexRecord --> N_KeepErrorIndexRecord_Node0 N_KeepErrorIndexRecord_Node0 -- No --> E_KeepErrorIndexRecord
File: GCCUSIO.cbl
GIVEN:
Error fields have been cleared but other index entries still remain in the record
WHEN:
The system determines the index record is still needed for other purposes
THEN:
- The gcsb1rt error index record is updated
- Retained in the database
β Consolidated Acceptance Criteria
- The system needs to retrieve an existing GCSB1RT index record → the GCSB1RT record area is cleared to spaces to ensure no residual data affects the retrieval operation
- The system prepares to check for existing hold index records → the GCSB1RT record area must be 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_ClearGCSB1RTRecordArea(["Start Step"])
E_ClearGCSB1RTRecordArea(["End Step"])
N_ClearGCSB1RTRecordArea_Node0{"The system needs to retrieve an
existing GCSB1RT index record"}:::decision N_ClearGCSB1RTRecordArea_Node0_action["The GCSB1RT record area is cleared
to spaces to ensure no residual data
affects the retrieval operation"]:::main N_ClearGCSB1RTRecordArea_Node0 -- Yes --> N_ClearGCSB1RTRecordArea_Node0_action N_ClearGCSB1RTRecordArea_Node0_action --> E_ClearGCSB1RTRecordArea S_ClearGCSB1RTRecordArea --> N_ClearGCSB1RTRecordArea_Node0 N_ClearGCSB1RTRecordArea_Node1{"The system prepares to check for
existing hold index records"}:::decision N_ClearGCSB1RTRecordArea_Node1_action["The GCSB1RT record area must be
cleared to spaces"]:::main N_ClearGCSB1RTRecordArea_Node1 -- Yes --> N_ClearGCSB1RTRecordArea_Node1_action N_ClearGCSB1RTRecordArea_Node1_action --> E_ClearGCSB1RTRecordArea N_ClearGCSB1RTRecordArea_Node0 -- No --> N_ClearGCSB1RTRecordArea_Node1 N_ClearGCSB1RTRecordArea_Node1 -- No --> E_ClearGCSB1RTRecordArea
existing GCSB1RT index record"}:::decision N_ClearGCSB1RTRecordArea_Node0_action["The GCSB1RT record area is cleared
to spaces to ensure no residual data
affects the retrieval operation"]:::main N_ClearGCSB1RTRecordArea_Node0 -- Yes --> N_ClearGCSB1RTRecordArea_Node0_action N_ClearGCSB1RTRecordArea_Node0_action --> E_ClearGCSB1RTRecordArea S_ClearGCSB1RTRecordArea --> N_ClearGCSB1RTRecordArea_Node0 N_ClearGCSB1RTRecordArea_Node1{"The system prepares to check for
existing hold index records"}:::decision N_ClearGCSB1RTRecordArea_Node1_action["The GCSB1RT record area must be
cleared to spaces"]:::main N_ClearGCSB1RTRecordArea_Node1 -- Yes --> N_ClearGCSB1RTRecordArea_Node1_action N_ClearGCSB1RTRecordArea_Node1_action --> E_ClearGCSB1RTRecordArea N_ClearGCSB1RTRecordArea_Node0 -- No --> N_ClearGCSB1RTRecordArea_Node1 N_ClearGCSB1RTRecordArea_Node1 -- No --> E_ClearGCSB1RTRecordArea
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT record area exists in memory
WHEN:
The system needs to retrieve an existing GCSB1RT index record
THEN:
The GCSB1RT record area is cleared to spaces to ensure no residual data affects the retrieval operation
File: GCCUSIO.cbl
GIVEN:
A hold index record search is about to be performed
WHEN:
The system prepares to check for existing hold index records
THEN:
The GCSB1RT record area must be cleared to spaces
β Consolidated Acceptance Criteria
- The system processes the successful retrieval result → the SW-GCSB1RT-FOUND flag is set to TRUE to indicate that the GCSB1RT index record exists and was successfully retrieved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFoundFlagtoTRUE(["Start Step"])
E_SetFoundFlagtoTRUE(["End Step"])
N_SetFoundFlagtoTRUE_Node0{"The system processes the successful
retrieval result"}:::decision N_SetFoundFlagtoTRUE_Node0_action["The SW-GCSB1RT-FOUND flag is set to
TRUE to indicate that the GCSB1RT
index record exists and was
successfully retrieved"]:::main N_SetFoundFlagtoTRUE_Node0 -- Yes --> N_SetFoundFlagtoTRUE_Node0_action N_SetFoundFlagtoTRUE_Node0_action --> E_SetFoundFlagtoTRUE S_SetFoundFlagtoTRUE --> N_SetFoundFlagtoTRUE_Node0 N_SetFoundFlagtoTRUE_Node0 -- No --> E_SetFoundFlagtoTRUE
retrieval result"}:::decision N_SetFoundFlagtoTRUE_Node0_action["The SW-GCSB1RT-FOUND flag is set to
TRUE to indicate that the GCSB1RT
index record exists and was
successfully retrieved"]:::main N_SetFoundFlagtoTRUE_Node0 -- Yes --> N_SetFoundFlagtoTRUE_Node0_action N_SetFoundFlagtoTRUE_Node0_action --> E_SetFoundFlagtoTRUE S_SetFoundFlagtoTRUE --> N_SetFoundFlagtoTRUE_Node0 N_SetFoundFlagtoTRUE_Node0 -- No --> E_SetFoundFlagtoTRUE
File: GCCUSIO.cbl
GIVEN:
The database retrieval operation returned a status code of spaces (successful)
WHEN:
The system processes the successful retrieval result
THEN:
- The sw-gcsb1rt-found flag is set to true to indicate that the gcsb1rt index record exists
- Was successfully retrieved
β Consolidated Acceptance Criteria
- The system processes the unsuccessful retrieval result → the SW-GCSB1RT-NOT-FOUND flag is set to TRUE to indicate that the GCSB1RT index record does not exist 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_SetNotFoundFlagtoTRUE(["Start Step"])
E_SetNotFoundFlagtoTRUE(["End Step"])
N_SetNotFoundFlagtoTRUE_Node0{"The system processes the
unsuccessful retrieval result"}:::decision N_SetNotFoundFlagtoTRUE_Node0_action["The SW-GCSB1RT-NOT-FOUND flag is
set to TRUE to indicate that the
GCSB1RT index record does not exist
in the database"]:::main N_SetNotFoundFlagtoTRUE_Node0 -- Yes --> N_SetNotFoundFlagtoTRUE_Node0_action N_SetNotFoundFlagtoTRUE_Node0_action --> E_SetNotFoundFlagtoTRUE S_SetNotFoundFlagtoTRUE --> N_SetNotFoundFlagtoTRUE_Node0 N_SetNotFoundFlagtoTRUE_Node0 -- No --> E_SetNotFoundFlagtoTRUE
unsuccessful retrieval result"}:::decision N_SetNotFoundFlagtoTRUE_Node0_action["The SW-GCSB1RT-NOT-FOUND flag is
set to TRUE to indicate that the
GCSB1RT index record does not exist
in the database"]:::main N_SetNotFoundFlagtoTRUE_Node0 -- Yes --> N_SetNotFoundFlagtoTRUE_Node0_action N_SetNotFoundFlagtoTRUE_Node0_action --> E_SetNotFoundFlagtoTRUE S_SetNotFoundFlagtoTRUE --> N_SetNotFoundFlagtoTRUE_Node0 N_SetNotFoundFlagtoTRUE_Node0 -- No --> E_SetNotFoundFlagtoTRUE
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
The database retrieval operation returned a non-space status code (record not found)
WHEN:
The system processes the unsuccessful retrieval result
THEN:
The SW-GCSB1RT-NOT-FOUND flag is set to TRUE to indicate that the GCSB1RT index record does not exist in the database
β Consolidated Acceptance Criteria
- The system completes processing the not found condition → the database status code is cleared to spaces to reset the status for subsequent 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_ClearDatabaseStatus(["Start Step"])
E_ClearDatabaseStatus(["End Step"])
N_ClearDatabaseStatus_Node0{"The system completes processing the
not found condition"}:::decision N_ClearDatabaseStatus_Node0_action["The database status code is cleared
to spaces to reset the status for
subsequent operations"]:::main N_ClearDatabaseStatus_Node0 -- Yes --> N_ClearDatabaseStatus_Node0_action N_ClearDatabaseStatus_Node0_action --> E_ClearDatabaseStatus S_ClearDatabaseStatus --> N_ClearDatabaseStatus_Node0 N_ClearDatabaseStatus_Node0 -- No --> E_ClearDatabaseStatus
not found condition"}:::decision N_ClearDatabaseStatus_Node0_action["The database status code is cleared
to spaces to reset the status for
subsequent operations"]:::main N_ClearDatabaseStatus_Node0 -- Yes --> N_ClearDatabaseStatus_Node0_action N_ClearDatabaseStatus_Node0_action --> E_ClearDatabaseStatus S_ClearDatabaseStatus --> N_ClearDatabaseStatus_Node0 N_ClearDatabaseStatus_Node0 -- No --> E_ClearDatabaseStatus
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
The GCSB1RT index record was not found and the not found flag has been set
WHEN:
The system completes processing the not found condition
THEN:
The database status code is cleared to spaces to reset the status for subsequent operations
β Consolidated Acceptance Criteria
- The database operation is about to be initiated → the database accept status must be cleared to spaces to ensure proper 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_ClearDatabaseStatusFlags(["Start Step"])
E_ClearDatabaseStatusFlags(["End Step"])
N_ClearDatabaseStatusFlags_Node0{"The database operation is about to
be initiated"}:::decision N_ClearDatabaseStatusFlags_Node0_action["The database accept status must be
cleared to spaces to ensure proper
processing"]:::main N_ClearDatabaseStatusFlags_Node0 -- Yes --> N_ClearDatabaseStatusFlags_Node0_action N_ClearDatabaseStatusFlags_Node0_action --> E_ClearDatabaseStatusFlags S_ClearDatabaseStatusFlags --> N_ClearDatabaseStatusFlags_Node0 N_ClearDatabaseStatusFlags_Node0 -- No --> E_ClearDatabaseStatusFlags
be initiated"}:::decision N_ClearDatabaseStatusFlags_Node0_action["The database accept status must be
cleared to spaces to ensure proper
processing"]:::main N_ClearDatabaseStatusFlags_Node0 -- Yes --> N_ClearDatabaseStatusFlags_Node0_action N_ClearDatabaseStatusFlags_Node0_action --> E_ClearDatabaseStatusFlags S_ClearDatabaseStatusFlags --> N_ClearDatabaseStatusFlags_Node0 N_ClearDatabaseStatusFlags_Node0 -- No --> E_ClearDatabaseStatusFlags
File: GCCUSIO.cbl
GIVEN:
The system is preparing to create a new GCSB1RT index record
WHEN:
The database operation is about to be initiated
THEN:
The database accept status must be cleared to spaces to ensure proper processing
β Consolidated Acceptance Criteria
- The database function code is being set → the function code must be set to 'ISRT' to indicate an 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_SetFunctionCodetoISRT(["Start Step"])
E_SetFunctionCodetoISRT(["End Step"])
N_SetFunctionCodetoISRT_Node0{"The database function code is being
set"}:::decision N_SetFunctionCodetoISRT_Node0_action["The function code must be set to
ISRT to indicate an insert operation"]:::main N_SetFunctionCodetoISRT_Node0 -- Yes --> N_SetFunctionCodetoISRT_Node0_action N_SetFunctionCodetoISRT_Node0_action --> E_SetFunctionCodetoISRT S_SetFunctionCodetoISRT --> N_SetFunctionCodetoISRT_Node0 N_SetFunctionCodetoISRT_Node0 -- No --> E_SetFunctionCodetoISRT
set"}:::decision N_SetFunctionCodetoISRT_Node0_action["The function code must be set to
ISRT to indicate an insert operation"]:::main N_SetFunctionCodetoISRT_Node0 -- Yes --> N_SetFunctionCodetoISRT_Node0_action N_SetFunctionCodetoISRT_Node0_action --> E_SetFunctionCodetoISRT S_SetFunctionCodetoISRT --> N_SetFunctionCodetoISRT_Node0 N_SetFunctionCodetoISRT_Node0 -- No --> E_SetFunctionCodetoISRT
File: GCCUSIO.cbl
GIVEN:
The system needs to create a new GCSB1RT index record
WHEN:
The database function code is being set
THEN:
The function code must be set to 'ISRT' to indicate an insert operation
β Consolidated Acceptance Criteria
- The system executes the database insert operation → the CIMS interface must be called with the common control block, function code, PCB, GCSB1RT record, and unqualified SSA to insert the new index 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_CallDatabaseInsertOperation(["Start Step"])
E_CallDatabaseInsertOperation(["End Step"])
N_CallDatabaseInsertOperation_Node0{"The system executes the database
insert operation"}:::decision N_CallDatabaseInsertOperation_Node0_action["The CIMS interface must be called
with the common control block,
function code, PCB, GCSB1RT record,
and unqualified SSA to insert the
new index record"]:::main N_CallDatabaseInsertOperation_Node0 -- Yes --> N_CallDatabaseInsertOperation_Node0_action N_CallDatabaseInsertOperation_Node0_action --> E_CallDatabaseInsertOperation S_CallDatabaseInsertOperation --> N_CallDatabaseInsertOperation_Node0 N_CallDatabaseInsertOperation_Node0 -- No --> E_CallDatabaseInsertOperation
insert operation"}:::decision N_CallDatabaseInsertOperation_Node0_action["The CIMS interface must be called
with the common control block,
function code, PCB, GCSB1RT record,
and unqualified SSA to insert the
new index record"]:::main N_CallDatabaseInsertOperation_Node0 -- Yes --> N_CallDatabaseInsertOperation_Node0_action N_CallDatabaseInsertOperation_Node0_action --> E_CallDatabaseInsertOperation S_CallDatabaseInsertOperation --> N_CallDatabaseInsertOperation_Node0 N_CallDatabaseInsertOperation_Node0 -- No --> E_CallDatabaseInsertOperation
File: GCCUSIO.cbl
GIVEN:
The cargo key is set, database status is cleared, and function code is set to ISRT
WHEN:
The system executes the database insert operation
THEN:
The CIMS interface must be called with the common control block, function code, PCB, GCSB1RT record, and unqualified SSA to insert the new index record
β Consolidated Acceptance Criteria
- The system prepares the database operation → the function code must be set to 'REPL' to perform a replace 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_SetFunctionCodetoREPL(["Start Step"])
E_SetFunctionCodetoREPL(["End Step"])
N_SetFunctionCodetoREPL_Node0{"The system prepares the database
operation"}:::decision N_SetFunctionCodetoREPL_Node0_action["The function code must be set to
REPL to perform a replace operation"]:::main N_SetFunctionCodetoREPL_Node0 -- Yes --> N_SetFunctionCodetoREPL_Node0_action N_SetFunctionCodetoREPL_Node0_action --> E_SetFunctionCodetoREPL S_SetFunctionCodetoREPL --> N_SetFunctionCodetoREPL_Node0 N_SetFunctionCodetoREPL_Node0 -- No --> E_SetFunctionCodetoREPL
operation"}:::decision N_SetFunctionCodetoREPL_Node0_action["The function code must be set to
REPL to perform a replace operation"]:::main N_SetFunctionCodetoREPL_Node0 -- Yes --> N_SetFunctionCodetoREPL_Node0_action N_SetFunctionCodetoREPL_Node0_action --> E_SetFunctionCodetoREPL S_SetFunctionCodetoREPL --> N_SetFunctionCodetoREPL_Node0 N_SetFunctionCodetoREPL_Node0 -- No --> E_SetFunctionCodetoREPL
File: GCCUSIO.cbl
GIVEN:
An existing index record needs to be updated in GCSB1RT
WHEN:
The system prepares the database operation
THEN:
The function code must be set to 'REPL' to perform a replace operation
β Consolidated Acceptance Criteria
- The system executes the database call using CIMS with REPL function code, PCB, GCSB1RT record, and unqualified SSA → the database management system processes the replace operation on the GCSB1RT index 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_CallIMSDatabasewithREPLFunction(["Start Step"])
E_CallIMSDatabasewithREPLFunction(["End Step"])
N_CallIMSDatabasewithREPLFunction_Node0{"The system executes the database
call using CIMS with REPL function
code, PCB, GCSB1RT record, and
unqualified SSA"}:::decision N_CallIMSDatabasewithREPLFunction_Node0_action["The database management system
processes the replace operation on
the GCSB1RT index record"]:::main N_CallIMSDatabasewithREPLFunction_Node0 -- Yes --> N_CallIMSDatabasewithREPLFunction_Node0_action N_CallIMSDatabasewithREPLFunction_Node0_action --> E_CallIMSDatabasewithREPLFunction S_CallIMSDatabasewithREPLFunction --> N_CallIMSDatabasewithREPLFunction_Node0 N_CallIMSDatabasewithREPLFunction_Node0 -- No --> E_CallIMSDatabasewithREPLFunction
call using CIMS with REPL function
code, PCB, GCSB1RT record, and
unqualified SSA"}:::decision N_CallIMSDatabasewithREPLFunction_Node0_action["The database management system
processes the replace operation on
the GCSB1RT index record"]:::main N_CallIMSDatabasewithREPLFunction_Node0 -- Yes --> N_CallIMSDatabasewithREPLFunction_Node0_action N_CallIMSDatabasewithREPLFunction_Node0_action --> E_CallIMSDatabasewithREPLFunction S_CallIMSDatabasewithREPLFunction --> N_CallIMSDatabasewithREPLFunction_Node0 N_CallIMSDatabasewithREPLFunction_Node0 -- No --> E_CallIMSDatabasewithREPLFunction
File: GCCUSIO.cbl
GIVEN:
The function code is set to 'REPL' and accept status is set to 'GE'
WHEN:
The system executes the database call using CIMS with REPL function code, PCB, GCSB1RT record, and unqualified SSA
THEN:
The database management system processes the replace operation on the GCSB1RT index record
β Consolidated Acceptance Criteria
- The system checks the CC-STATUS-CODE after the database operation → if CC-STATUS-CODE equals SPACES then the update is successful, otherwise the update 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_UpdateSuccessful(["Start Step"])
E_UpdateSuccessful(["End Step"])
N_UpdateSuccessful_Node0{"The system checks the
CC-STATUS-CODE after the database
operation"}:::decision N_UpdateSuccessful_Node0_action["If CC-STATUS-CODE equals SPACES
then the update is successful,
otherwise the update failed"]:::main N_UpdateSuccessful_Node0 -- Yes --> N_UpdateSuccessful_Node0_action N_UpdateSuccessful_Node0_action --> E_UpdateSuccessful S_UpdateSuccessful --> N_UpdateSuccessful_Node0 N_UpdateSuccessful_Node0 -- No --> E_UpdateSuccessful
CC-STATUS-CODE after the database
operation"}:::decision N_UpdateSuccessful_Node0_action["If CC-STATUS-CODE equals SPACES
then the update is successful,
otherwise the update failed"]:::main N_UpdateSuccessful_Node0 -- Yes --> N_UpdateSuccessful_Node0_action N_UpdateSuccessful_Node0_action --> E_UpdateSuccessful S_UpdateSuccessful --> N_UpdateSuccessful_Node0 N_UpdateSuccessful_Node0 -- No --> E_UpdateSuccessful
File: GCCUSIO.cbl
GIVEN:
A replace operation has been executed on the GCSB1RT index record
WHEN:
The system checks the CC-STATUS-CODE after the database operation
THEN:
If CC-STATUS-CODE equals SPACES then the update is successful, otherwise the update failed
β Consolidated Acceptance Criteria
- The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-D or USCARGO-PR-H-DE or USCARGO-HOLDFDA status → the system sets the destination station number to held destination index and cargo CCN key to held destination cargo index
- The cargo has USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-D, USCARGO-PR-H-DE, or USCARGO-HOLDFDA status → the system sets the held destination index to the destination station number and held destination cargo index to the cargo CCN key
- The system processes hold field population → the system sets the destination station number to the held destination key and sets the cargo CCN key to the held destination cargo 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_SetDestinationHoldIndexFields(["Start Step"])
E_SetDestinationHoldIndexFields(["End Step"])
N_SetDestinationHoldIndexFields_Node0{"The cargo has USCARGO-HOLD or
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-D or USCARGO-PR-H-DE
or USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndexFields_Node0_action["The system sets the destination
station number to held destination
index and cargo CCN key to held
destination cargo index"]:::main N_SetDestinationHoldIndexFields_Node0 -- Yes --> N_SetDestinationHoldIndexFields_Node0_action N_SetDestinationHoldIndexFields_Node0_action --> E_SetDestinationHoldIndexFields S_SetDestinationHoldIndexFields --> N_SetDestinationHoldIndexFields_Node0 N_SetDestinationHoldIndexFields_Node1{"The cargo has USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-D, USCARGO-PR-H-DE, or
USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndexFields_Node1_action["The system sets the held
destination index to the destination
station number and held destination
cargo index to the cargo CCN key"]:::main N_SetDestinationHoldIndexFields_Node1 -- Yes --> N_SetDestinationHoldIndexFields_Node1_action N_SetDestinationHoldIndexFields_Node1_action --> E_SetDestinationHoldIndexFields N_SetDestinationHoldIndexFields_Node0 -- No --> N_SetDestinationHoldIndexFields_Node1 N_SetDestinationHoldIndexFields_Node2{"The system processes hold field
population"}:::decision N_SetDestinationHoldIndexFields_Node2_action["The system sets the destination
station number to the held
destination key and sets the cargo
CCN key to the held destination
cargo key"]:::main N_SetDestinationHoldIndexFields_Node2 -- Yes --> N_SetDestinationHoldIndexFields_Node2_action N_SetDestinationHoldIndexFields_Node2_action --> E_SetDestinationHoldIndexFields N_SetDestinationHoldIndexFields_Node1 -- No --> N_SetDestinationHoldIndexFields_Node2 N_SetDestinationHoldIndexFields_Node2 -- No --> E_SetDestinationHoldIndexFields
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-D or USCARGO-PR-H-DE
or USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndexFields_Node0_action["The system sets the destination
station number to held destination
index and cargo CCN key to held
destination cargo index"]:::main N_SetDestinationHoldIndexFields_Node0 -- Yes --> N_SetDestinationHoldIndexFields_Node0_action N_SetDestinationHoldIndexFields_Node0_action --> E_SetDestinationHoldIndexFields S_SetDestinationHoldIndexFields --> N_SetDestinationHoldIndexFields_Node0 N_SetDestinationHoldIndexFields_Node1{"The cargo has USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-D, USCARGO-PR-H-DE, or
USCARGO-HOLDFDA status"}:::decision N_SetDestinationHoldIndexFields_Node1_action["The system sets the held
destination index to the destination
station number and held destination
cargo index to the cargo CCN key"]:::main N_SetDestinationHoldIndexFields_Node1 -- Yes --> N_SetDestinationHoldIndexFields_Node1_action N_SetDestinationHoldIndexFields_Node1_action --> E_SetDestinationHoldIndexFields N_SetDestinationHoldIndexFields_Node0 -- No --> N_SetDestinationHoldIndexFields_Node1 N_SetDestinationHoldIndexFields_Node2{"The system processes hold field
population"}:::decision N_SetDestinationHoldIndexFields_Node2_action["The system sets the destination
station number to the held
destination key and sets the cargo
CCN key to the held destination
cargo key"]:::main N_SetDestinationHoldIndexFields_Node2 -- Yes --> N_SetDestinationHoldIndexFields_Node2_action N_SetDestinationHoldIndexFields_Node2_action --> E_SetDestinationHoldIndexFields N_SetDestinationHoldIndexFields_Node1 -- No --> N_SetDestinationHoldIndexFields_Node2 N_SetDestinationHoldIndexFields_Node2 -- No --> E_SetDestinationHoldIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record with active hold status
WHEN:
The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-D or USCARGO-PR-H-DE or USCARGO-HOLDFDA status
THEN:
- The system sets the destination station number to held destination index
- Cargo ccn key to held destination cargo index
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status conditions
WHEN:
The cargo has USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-D, USCARGO-PR-H-DE, or USCARGO-HOLDFDA status
THEN:
- The system sets the held destination index to the destination station number
- Held destination cargo index to the cargo ccn key
File: GCCUSIO.cbl
GIVEN:
A cargo record has destination hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-D, PR-H-DE, or HOLDFDA)
WHEN:
The system processes hold field population
THEN:
- The system sets the destination station number to the held destination key
- Sets the cargo ccn key to the held destination cargo key
β Consolidated Acceptance Criteria
- The cargo has USCARGO-HOLD or USCARGO-HOLDPCS or USCARGO-PR-HPCS or USCARGO-HOLD-B or USCARGO-PR-H-BO or USCARGO-HOLDFDA status and MC table lookup returns successfully → the system sets the MC station number to held border index and cargo CCN key to held border cargo index
- The cargo has USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, or USCARGO-HOLDFDA status → the system retrieves the station number from the MC table using the location ID, sets the held border index to this station number, and sets the held border cargo index to the cargo CCN key
- The system processes hold field population → the system retrieves the border station number from MC table lookup and sets it to the held border key, and sets the cargo CCN key to the held border cargo 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_SetBorderHoldIndexFields(["Start Step"])
E_SetBorderHoldIndexFields(["End Step"])
N_SetBorderHoldIndexFields_Node0{"The cargo has USCARGO-HOLD or
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-B or USCARGO-PR-H-BO
or USCARGO-HOLDFDA status and MC
table lookup returns successfully"}:::decision N_SetBorderHoldIndexFields_Node0_action["The system sets the MC station
number to held border index and
cargo CCN key to held border cargo
index"]:::main N_SetBorderHoldIndexFields_Node0 -- Yes --> N_SetBorderHoldIndexFields_Node0_action N_SetBorderHoldIndexFields_Node0_action --> E_SetBorderHoldIndexFields S_SetBorderHoldIndexFields --> N_SetBorderHoldIndexFields_Node0 N_SetBorderHoldIndexFields_Node1{"The cargo has USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-B, USCARGO-PR-H-BO, or
USCARGO-HOLDFDA status"}:::decision N_SetBorderHoldIndexFields_Node1_action["The system retrieves the station
number from the MC table using the
location ID, sets the held border
index to this station number, and
sets the held border cargo index to
the cargo CCN key"]:::main N_SetBorderHoldIndexFields_Node1 -- Yes --> N_SetBorderHoldIndexFields_Node1_action N_SetBorderHoldIndexFields_Node1_action --> E_SetBorderHoldIndexFields N_SetBorderHoldIndexFields_Node0 -- No --> N_SetBorderHoldIndexFields_Node1 N_SetBorderHoldIndexFields_Node2{"The system processes hold field
population"}:::decision N_SetBorderHoldIndexFields_Node2_action["The system retrieves the border
station number from MC table lookup
and sets it to the held border key,
and sets the cargo CCN key to the
held border cargo key"]:::main N_SetBorderHoldIndexFields_Node2 -- Yes --> N_SetBorderHoldIndexFields_Node2_action N_SetBorderHoldIndexFields_Node2_action --> E_SetBorderHoldIndexFields N_SetBorderHoldIndexFields_Node1 -- No --> N_SetBorderHoldIndexFields_Node2 N_SetBorderHoldIndexFields_Node2 -- No --> E_SetBorderHoldIndexFields
USCARGO-HOLDPCS or USCARGO-PR-HPCS
or USCARGO-HOLD-B or USCARGO-PR-H-BO
or USCARGO-HOLDFDA status and MC
table lookup returns successfully"}:::decision N_SetBorderHoldIndexFields_Node0_action["The system sets the MC station
number to held border index and
cargo CCN key to held border cargo
index"]:::main N_SetBorderHoldIndexFields_Node0 -- Yes --> N_SetBorderHoldIndexFields_Node0_action N_SetBorderHoldIndexFields_Node0_action --> E_SetBorderHoldIndexFields S_SetBorderHoldIndexFields --> N_SetBorderHoldIndexFields_Node0 N_SetBorderHoldIndexFields_Node1{"The cargo has USCARGO-HOLD,
USCARGO-HOLDPCS, USCARGO-PR-HPCS,
USCARGO-HOLD-B, USCARGO-PR-H-BO, or
USCARGO-HOLDFDA status"}:::decision N_SetBorderHoldIndexFields_Node1_action["The system retrieves the station
number from the MC table using the
location ID, sets the held border
index to this station number, and
sets the held border cargo index to
the cargo CCN key"]:::main N_SetBorderHoldIndexFields_Node1 -- Yes --> N_SetBorderHoldIndexFields_Node1_action N_SetBorderHoldIndexFields_Node1_action --> E_SetBorderHoldIndexFields N_SetBorderHoldIndexFields_Node0 -- No --> N_SetBorderHoldIndexFields_Node1 N_SetBorderHoldIndexFields_Node2{"The system processes hold field
population"}:::decision N_SetBorderHoldIndexFields_Node2_action["The system retrieves the border
station number from MC table lookup
and sets it to the held border key,
and sets the cargo CCN key to the
held border cargo key"]:::main N_SetBorderHoldIndexFields_Node2 -- Yes --> N_SetBorderHoldIndexFields_Node2_action N_SetBorderHoldIndexFields_Node2_action --> E_SetBorderHoldIndexFields N_SetBorderHoldIndexFields_Node1 -- No --> N_SetBorderHoldIndexFields_Node2 N_SetBorderHoldIndexFields_Node2 -- No --> E_SetBorderHoldIndexFields
File: GCCUSIO.cbl
GIVEN:
A cargo record with border hold status and successful MC table lookup
WHEN:
- The cargo has uscargo-hold or uscargo-holdpcs or uscargo-pr-hpcs or uscargo-hold-b or uscargo-pr-h-bo or uscargo-holdfda status
- Mc table lookup returns successfully
THEN:
- The system sets the mc station number to held border index
- Cargo ccn key to held border cargo index
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status conditions
WHEN:
The cargo has USCARGO-HOLD, USCARGO-HOLDPCS, USCARGO-PR-HPCS, USCARGO-HOLD-B, USCARGO-PR-H-BO, or USCARGO-HOLDFDA status
THEN:
The system retrieves the station number from the MC table using the location ID, sets the held border index to this station number, and sets the held border cargo index to the cargo CCN key
File: GCCUSIO.cbl
GIVEN:
A cargo record has border hold status (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, or HOLDFDA)
WHEN:
The system processes hold field population
THEN:
- The system retrieves the border station number from mc table lookup
- Sets it to the held border key, and sets the cargo ccn key to the held border cargo key
β Consolidated Acceptance Criteria
- The system successfully retrieves an existing GCSB1RT record → the system updates the existing record with current hold index field 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_UpdateExistingGCSB1RTIndexRecord(["Start Step"])
E_UpdateExistingGCSB1RTIndexRecord(["End Step"])
N_UpdateExistingGCSB1RTIndexRecord_Node0{"The system successfully retrieves
an existing GCSB1RT record"}:::decision N_UpdateExistingGCSB1RTIndexRecord_Node0_action["The system updates the existing
record with current hold index field
values"]:::main N_UpdateExistingGCSB1RTIndexRecord_Node0 -- Yes --> N_UpdateExistingGCSB1RTIndexRecord_Node0_action N_UpdateExistingGCSB1RTIndexRecord_Node0_action --> E_UpdateExistingGCSB1RTIndexRecord S_UpdateExistingGCSB1RTIndexRecord --> N_UpdateExistingGCSB1RTIndexRecord_Node0 N_UpdateExistingGCSB1RTIndexRecord_Node0 -- No --> E_UpdateExistingGCSB1RTIndexRecord
an existing GCSB1RT record"}:::decision N_UpdateExistingGCSB1RTIndexRecord_Node0_action["The system updates the existing
record with current hold index field
values"]:::main N_UpdateExistingGCSB1RTIndexRecord_Node0 -- Yes --> N_UpdateExistingGCSB1RTIndexRecord_Node0_action N_UpdateExistingGCSB1RTIndexRecord_Node0_action --> E_UpdateExistingGCSB1RTIndexRecord S_UpdateExistingGCSB1RTIndexRecord --> N_UpdateExistingGCSB1RTIndexRecord_Node0 N_UpdateExistingGCSB1RTIndexRecord_Node0 -- No --> E_UpdateExistingGCSB1RTIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo record with hold conditions and an existing GCSB1RT index record
WHEN:
The system successfully retrieves an existing GCSB1RT record
THEN:
The system updates the existing record with current hold index field values
β Consolidated Acceptance Criteria
- At least one of the error destination index, error origin index, or error border index contains data → the system updates the GCSB1RT record with cleared hold fields while preserving error index 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_UpdateGCSB1RTwithClearedHoldFields(["Start Step"])
E_UpdateGCSB1RTwithClearedHoldFields(["End Step"])
N_UpdateGCSB1RTwithClearedHoldFields_Node0{"At least one of the error
destination index, error origin
index, or error border index
contains data"}:::decision N_UpdateGCSB1RTwithClearedHoldFields_Node0_action["The system updates the GCSB1RT
record with cleared hold fields
while preserving error index entries"]:::exclusion N_UpdateGCSB1RTwithClearedHoldFields_Node0 -- Yes -->|Alternative| N_UpdateGCSB1RTwithClearedHoldFields_Node0_action N_UpdateGCSB1RTwithClearedHoldFields_Node0_action --> E_UpdateGCSB1RTwithClearedHoldFields S_UpdateGCSB1RTwithClearedHoldFields --> N_UpdateGCSB1RTwithClearedHoldFields_Node0 N_UpdateGCSB1RTwithClearedHoldFields_Node0 -- No --> E_UpdateGCSB1RTwithClearedHoldFields
destination index, error origin
index, or error border index
contains data"}:::decision N_UpdateGCSB1RTwithClearedHoldFields_Node0_action["The system updates the GCSB1RT
record with cleared hold fields
while preserving error index entries"]:::exclusion N_UpdateGCSB1RTwithClearedHoldFields_Node0 -- Yes -->|Alternative| N_UpdateGCSB1RTwithClearedHoldFields_Node0_action N_UpdateGCSB1RTwithClearedHoldFields_Node0_action --> E_UpdateGCSB1RTwithClearedHoldFields S_UpdateGCSB1RTwithClearedHoldFields --> N_UpdateGCSB1RTwithClearedHoldFields_Node0 N_UpdateGCSB1RTwithClearedHoldFields_Node0 -- No --> E_UpdateGCSB1RTwithClearedHoldFields
File: GCCUSIO.cbl
GIVEN:
A GCSB1RT index record with cleared hold fields and existing error index entries
WHEN:
At least one of the error destination index, error origin index, or error border index contains data
THEN:
The system updates the GCSB1RT record with cleared hold fields while preserving error index entries
β Consolidated Acceptance Criteria
- There are no error destination index fields, no error origin index fields, and no error border index fields present → the system deletes the entire cargo status record from GCSB1RT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteHoldIndexRecord(["Start Step"])
E_DeleteHoldIndexRecord(["End Step"])
N_DeleteHoldIndexRecord_Node0{"There are no error destination
index fields, no error origin index
fields, and no error border index
fields present"}:::decision N_DeleteHoldIndexRecord_Node0_action["The system deletes the entire cargo
status record from GCSB1RT"]:::exclusion N_DeleteHoldIndexRecord_Node0 -- Yes -->|Alternative| N_DeleteHoldIndexRecord_Node0_action N_DeleteHoldIndexRecord_Node0_action --> E_DeleteHoldIndexRecord S_DeleteHoldIndexRecord --> N_DeleteHoldIndexRecord_Node0 N_DeleteHoldIndexRecord_Node0 -- No --> E_DeleteHoldIndexRecord
index fields, no error origin index
fields, and no error border index
fields present"}:::decision N_DeleteHoldIndexRecord_Node0_action["The system deletes the entire cargo
status record from GCSB1RT"]:::exclusion N_DeleteHoldIndexRecord_Node0 -- Yes -->|Alternative| N_DeleteHoldIndexRecord_Node0_action N_DeleteHoldIndexRecord_Node0_action --> E_DeleteHoldIndexRecord S_DeleteHoldIndexRecord --> N_DeleteHoldIndexRecord_Node0 N_DeleteHoldIndexRecord_Node0 -- No --> E_DeleteHoldIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo status record exists with hold index fields cleared and no hold conditions present
WHEN:
There are no error destination index fields, no error origin index fields, and no error border index fields present
THEN:
The system deletes the entire cargo status record from GCSB1RT
β Consolidated Acceptance Criteria
- There are error destination index fields, error origin index fields, or error border index fields present → the system updates the existing cargo status record in GCSB1RT with the cleared hold fields while preserving 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_UpdateHoldIndexRecord(["Start Step"])
E_UpdateHoldIndexRecord(["End Step"])
N_UpdateHoldIndexRecord_Node0{"There are error destination index
fields, error origin index fields,
or error border index fields present"}:::decision N_UpdateHoldIndexRecord_Node0_action["The system updates the existing
cargo status record in GCSB1RT with
the cleared hold fields while
preserving error information"]:::exclusion N_UpdateHoldIndexRecord_Node0 -- Yes -->|Alternative| N_UpdateHoldIndexRecord_Node0_action N_UpdateHoldIndexRecord_Node0_action --> E_UpdateHoldIndexRecord S_UpdateHoldIndexRecord --> N_UpdateHoldIndexRecord_Node0 N_UpdateHoldIndexRecord_Node0 -- No --> E_UpdateHoldIndexRecord
fields, error origin index fields,
or error border index fields present"}:::decision N_UpdateHoldIndexRecord_Node0_action["The system updates the existing
cargo status record in GCSB1RT with
the cleared hold fields while
preserving error information"]:::exclusion N_UpdateHoldIndexRecord_Node0 -- Yes -->|Alternative| N_UpdateHoldIndexRecord_Node0_action N_UpdateHoldIndexRecord_Node0_action --> E_UpdateHoldIndexRecord S_UpdateHoldIndexRecord --> N_UpdateHoldIndexRecord_Node0 N_UpdateHoldIndexRecord_Node0 -- No --> E_UpdateHoldIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo status record exists with hold index fields cleared and no hold conditions present
WHEN:
There are error destination index fields, error origin index fields, or error border index fields present
THEN:
The system updates the existing cargo status record in GCSB1RT with the cleared hold fields while preserving error information
β Consolidated Acceptance Criteria
- Hold index fields have been populated with destination and/or border hold information → the system updates the existing cargo status record in GCSB1RT with the new hold index field 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_UpdateExistingHoldIndexRecord(["Start Step"])
E_UpdateExistingHoldIndexRecord(["End Step"])
N_UpdateExistingHoldIndexRecord_Node0{"Hold index fields have been
populated with destination andor
border hold information"}:::decision N_UpdateExistingHoldIndexRecord_Node0_action["The system updates the existing
cargo status record in GCSB1RT with
the new hold index field values"]:::main N_UpdateExistingHoldIndexRecord_Node0 -- Yes --> N_UpdateExistingHoldIndexRecord_Node0_action N_UpdateExistingHoldIndexRecord_Node0_action --> E_UpdateExistingHoldIndexRecord S_UpdateExistingHoldIndexRecord --> N_UpdateExistingHoldIndexRecord_Node0 N_UpdateExistingHoldIndexRecord_Node0 -- No --> E_UpdateExistingHoldIndexRecord
populated with destination andor
border hold information"}:::decision N_UpdateExistingHoldIndexRecord_Node0_action["The system updates the existing
cargo status record in GCSB1RT with
the new hold index field values"]:::main N_UpdateExistingHoldIndexRecord_Node0 -- Yes --> N_UpdateExistingHoldIndexRecord_Node0_action N_UpdateExistingHoldIndexRecord_Node0_action --> E_UpdateExistingHoldIndexRecord S_UpdateExistingHoldIndexRecord --> N_UpdateExistingHoldIndexRecord_Node0 N_UpdateExistingHoldIndexRecord_Node0 -- No --> E_UpdateExistingHoldIndexRecord
File: GCCUSIO.cbl
GIVEN:
A cargo status record exists in GCSB1RT and cargo has hold conditions
WHEN:
Hold index fields have been populated with destination and/or border hold information
THEN:
The system updates the existing cargo status record in GCSB1RT with the new hold index field values
β Consolidated Acceptance Criteria
- Hold index fields have been populated with destination and/or border hold information → the system creates a new cargo status record in GCSB1RT with the hold index field values and cargo key 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_CreateNewHoldIndexRecord(["Start Step"])
E_CreateNewHoldIndexRecord(["End Step"])
N_CreateNewHoldIndexRecord_Node0{"Hold index fields have been
populated with destination andor
border hold information"}:::decision N_CreateNewHoldIndexRecord_Node0_action["The system creates a new cargo
status record in GCSB1RT with the
hold index field values and cargo
key information"]:::main N_CreateNewHoldIndexRecord_Node0 -- Yes --> N_CreateNewHoldIndexRecord_Node0_action N_CreateNewHoldIndexRecord_Node0_action --> E_CreateNewHoldIndexRecord S_CreateNewHoldIndexRecord --> N_CreateNewHoldIndexRecord_Node0 N_CreateNewHoldIndexRecord_Node0 -- No --> E_CreateNewHoldIndexRecord
populated with destination andor
border hold information"}:::decision N_CreateNewHoldIndexRecord_Node0_action["The system creates a new cargo
status record in GCSB1RT with the
hold index field values and cargo
key information"]:::main N_CreateNewHoldIndexRecord_Node0 -- Yes --> N_CreateNewHoldIndexRecord_Node0_action N_CreateNewHoldIndexRecord_Node0_action --> E_CreateNewHoldIndexRecord S_CreateNewHoldIndexRecord --> N_CreateNewHoldIndexRecord_Node0 N_CreateNewHoldIndexRecord_Node0 -- No --> E_CreateNewHoldIndexRecord
File: GCCUSIO.cbl
GIVEN:
No cargo status record exists in GCSB1RT and cargo has hold conditions
WHEN:
Hold index fields have been populated with destination and/or border hold information
THEN:
- The system creates a new cargo status record in gcsb1rt with the hold index field values
- Cargo key information
β Consolidated Acceptance Criteria
- The database returns a status code of spaces indicating success → the system must set the hold index record 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_SetHoldIndexRecordFoundFlag(["Start Step"])
E_SetHoldIndexRecordFoundFlag(["End Step"])
N_SetHoldIndexRecordFoundFlag_Node0{"The database returns a status code
of spaces indicating success"}:::decision N_SetHoldIndexRecordFoundFlag_Node0_action["The system must set the hold index
record found flag to true"]:::main N_SetHoldIndexRecordFoundFlag_Node0 -- Yes --> N_SetHoldIndexRecordFoundFlag_Node0_action N_SetHoldIndexRecordFoundFlag_Node0_action --> E_SetHoldIndexRecordFoundFlag S_SetHoldIndexRecordFoundFlag --> N_SetHoldIndexRecordFoundFlag_Node0 N_SetHoldIndexRecordFoundFlag_Node0 -- No --> E_SetHoldIndexRecordFoundFlag
of spaces indicating success"}:::decision N_SetHoldIndexRecordFoundFlag_Node0_action["The system must set the hold index
record found flag to true"]:::main N_SetHoldIndexRecordFoundFlag_Node0 -- Yes --> N_SetHoldIndexRecordFoundFlag_Node0_action N_SetHoldIndexRecordFoundFlag_Node0_action --> E_SetHoldIndexRecordFoundFlag S_SetHoldIndexRecordFoundFlag --> N_SetHoldIndexRecordFoundFlag_Node0 N_SetHoldIndexRecordFoundFlag_Node0 -- No --> E_SetHoldIndexRecordFoundFlag
File: GCCUSIO.cbl
GIVEN:
A hold index record search has been executed
WHEN:
The database returns a status code of spaces indicating success
THEN:
The system must set the hold index record found flag to true
β Consolidated Acceptance Criteria
- The database returns a status code other than spaces indicating record not found → the system must set the hold index record not 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_SetHoldIndexRecordNotFoundFlag(["Start Step"])
E_SetHoldIndexRecordNotFoundFlag(["End Step"])
N_SetHoldIndexRecordNotFoundFlag_Node0{"The database returns a status code
other than spaces indicating record
not found"}:::decision N_SetHoldIndexRecordNotFoundFlag_Node0_action["The system must set the hold index
record not found flag to true"]:::main N_SetHoldIndexRecordNotFoundFlag_Node0 -- Yes --> N_SetHoldIndexRecordNotFoundFlag_Node0_action N_SetHoldIndexRecordNotFoundFlag_Node0_action --> E_SetHoldIndexRecordNotFoundFlag S_SetHoldIndexRecordNotFoundFlag --> N_SetHoldIndexRecordNotFoundFlag_Node0 N_SetHoldIndexRecordNotFoundFlag_Node0 -- No --> E_SetHoldIndexRecordNotFoundFlag
other than spaces indicating record
not found"}:::decision N_SetHoldIndexRecordNotFoundFlag_Node0_action["The system must set the hold index
record not found flag to true"]:::main N_SetHoldIndexRecordNotFoundFlag_Node0 -- Yes --> N_SetHoldIndexRecordNotFoundFlag_Node0_action N_SetHoldIndexRecordNotFoundFlag_Node0_action --> E_SetHoldIndexRecordNotFoundFlag S_SetHoldIndexRecordNotFoundFlag --> N_SetHoldIndexRecordNotFoundFlag_Node0 N_SetHoldIndexRecordNotFoundFlag_Node0 -- No --> E_SetHoldIndexRecordNotFoundFlag
File: GCCUSIO.cbl
Exclusion / Alternative Path
GIVEN:
A hold index record search has been executed
WHEN:
The database returns a status code other than spaces indicating record not found
THEN:
The system must set the hold index record not found flag to true
β Consolidated Acceptance Criteria
- If the specific hold status types (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA) → the system identifies whether destination hold fields, border hold fields, or both need to be 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_CheckHoldType(["Start Step"])
E_CheckHoldType(["End Step"])
N_CheckHoldType_Node0{"The system evaluates the specific
hold status types HOLD, HOLDPCS,
PR-HPCS, HOLD-B, PR-H-BO, HOLD-D,
PR-H-DE, HOLDFDA"}:::decision N_CheckHoldType_Node0_action["The system identifies whether
destination hold fields, border hold
fields, or both need to be populated"]:::main N_CheckHoldType_Node0 -- Yes --> N_CheckHoldType_Node0_action N_CheckHoldType_Node0_action --> E_CheckHoldType S_CheckHoldType --> N_CheckHoldType_Node0 N_CheckHoldType_Node0 -- No --> E_CheckHoldType
hold status types HOLD, HOLDPCS,
PR-HPCS, HOLD-B, PR-H-BO, HOLD-D,
PR-H-DE, HOLDFDA"}:::decision N_CheckHoldType_Node0_action["The system identifies whether
destination hold fields, border hold
fields, or both need to be populated"]:::main N_CheckHoldType_Node0 -- Yes --> N_CheckHoldType_Node0_action N_CheckHoldType_Node0_action --> E_CheckHoldType S_CheckHoldType --> N_CheckHoldType_Node0 N_CheckHoldType_Node0 -- No --> E_CheckHoldType
File: GCCUSIO.cbl
GIVEN:
A cargo record has hold status conditions detected
WHEN:
The system evaluates the specific hold status types (HOLD, HOLDPCS, PR-HPCS, HOLD-B, PR-H-BO, HOLD-D, PR-H-DE, HOLDFDA)
THEN:
The system identifies whether destination hold fields, border hold fields, or both need to be populated
β Consolidated Acceptance Criteria
- The system needs to determine the border station number → the system calls table lookup service to retrieve MC table segment using the cargo location ID and extracts the station number if lookup 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_UseBorderStationNumberfromMCTable(["Start Step"])
E_UseBorderStationNumberfromMCTable(["End Step"])
N_UseBorderStationNumberfromMCTable_Node0{"The system needs to determine the
border station number"}:::decision N_UseBorderStationNumberfromMCTable_Node0_action["The system calls table lookup
service to retrieve MC table segment
using the cargo location ID and
extracts the station number if
lookup is successful"]:::main N_UseBorderStationNumberfromMCTable_Node0 -- Yes --> N_UseBorderStationNumberfromMCTable_Node0_action N_UseBorderStationNumberfromMCTable_Node0_action --> E_UseBorderStationNumberfromMCTable S_UseBorderStationNumberfromMCTable --> N_UseBorderStationNumberfromMCTable_Node0 N_UseBorderStationNumberfromMCTable_Node0 -- No --> E_UseBorderStationNumberfromMCTable
border station number"}:::decision N_UseBorderStationNumberfromMCTable_Node0_action["The system calls table lookup
service to retrieve MC table segment
using the cargo location ID and
extracts the station number if
lookup is successful"]:::main N_UseBorderStationNumberfromMCTable_Node0 -- Yes --> N_UseBorderStationNumberfromMCTable_Node0_action N_UseBorderStationNumberfromMCTable_Node0_action --> E_UseBorderStationNumberfromMCTable S_UseBorderStationNumberfromMCTable --> N_UseBorderStationNumberfromMCTable_Node0 N_UseBorderStationNumberfromMCTable_Node0 -- No --> E_UseBorderStationNumberfromMCTable
File: GCCUSIO.cbl
GIVEN:
A cargo record requires border hold index fields and has a location ID
WHEN:
The system needs to determine the border station number
THEN:
- The system calls table lookup service to retrieve mc table segment using the cargo location id
- Extracts the station number if lookup is successful
β Consolidated Acceptance Criteria
- The system needs to persist the hold index information → the system checks if a status record exists, and if found updates it with hold fields, otherwise inserts a new status record with the hold index 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_CreateNewGCSB1RTHoldIndexRecord(["Start Step"])
E_CreateNewGCSB1RTHoldIndexRecord(["End Step"])
N_CreateNewGCSB1RTHoldIndexRecord_Node0{"The system needs to persist the
hold index information"}:::decision N_CreateNewGCSB1RTHoldIndexRecord_Node0_action["The system checks if a status
record exists, and if found updates
it with hold fields, otherwise
inserts a new status record with the
hold index information"]:::main N_CreateNewGCSB1RTHoldIndexRecord_Node0 -- Yes --> N_CreateNewGCSB1RTHoldIndexRecord_Node0_action N_CreateNewGCSB1RTHoldIndexRecord_Node0_action --> E_CreateNewGCSB1RTHoldIndexRecord S_CreateNewGCSB1RTHoldIndexRecord --> N_CreateNewGCSB1RTHoldIndexRecord_Node0 N_CreateNewGCSB1RTHoldIndexRecord_Node0 -- No --> E_CreateNewGCSB1RTHoldIndexRecord
hold index information"}:::decision N_CreateNewGCSB1RTHoldIndexRecord_Node0_action["The system checks if a status
record exists, and if found updates
it with hold fields, otherwise
inserts a new status record with the
hold index information"]:::main N_CreateNewGCSB1RTHoldIndexRecord_Node0 -- Yes --> N_CreateNewGCSB1RTHoldIndexRecord_Node0_action N_CreateNewGCSB1RTHoldIndexRecord_Node0_action --> E_CreateNewGCSB1RTHoldIndexRecord S_CreateNewGCSB1RTHoldIndexRecord --> N_CreateNewGCSB1RTHoldIndexRecord_Node0 N_CreateNewGCSB1RTHoldIndexRecord_Node0 -- No --> E_CreateNewGCSB1RTHoldIndexRecord
File: GCCUSIO.cbl
GIVEN:
Hold index fields have been populated for a cargo record
WHEN:
The system needs to persist the hold index information
THEN:
The system checks if a status record exists, and if found updates it with hold fields, otherwise inserts a new status record with the hold index information
β Consolidated Acceptance Criteria
- The system processes a hold index record update operation → the function code must be set to 'REPL' to enable record replacement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFunctionCodetoREPL(["Start Step"])
E_SetFunctionCodetoREPL(["End Step"])
N_SetFunctionCodetoREPL_Node0{"The system processes a hold index
record update operation"}:::decision N_SetFunctionCodetoREPL_Node0_action["The function code must be set to
REPL to enable record replacement"]:::main N_SetFunctionCodetoREPL_Node0 -- Yes --> N_SetFunctionCodetoREPL_Node0_action N_SetFunctionCodetoREPL_Node0_action --> E_SetFunctionCodetoREPL S_SetFunctionCodetoREPL --> N_SetFunctionCodetoREPL_Node0 N_SetFunctionCodetoREPL_Node0 -- No --> E_SetFunctionCodetoREPL
record update operation"}:::decision N_SetFunctionCodetoREPL_Node0_action["The function code must be set to
REPL to enable record replacement"]:::main N_SetFunctionCodetoREPL_Node0 -- Yes --> N_SetFunctionCodetoREPL_Node0_action N_SetFunctionCodetoREPL_Node0_action --> E_SetFunctionCodetoREPL S_SetFunctionCodetoREPL --> N_SetFunctionCodetoREPL_Node0 N_SetFunctionCodetoREPL_Node0 -- No --> E_SetFunctionCodetoREPL
File: GCCUSIO.cbl
GIVEN:
An existing hold index record needs to be updated in GCSB1RT table
WHEN:
The system processes a hold index record update operation
THEN:
The function code must be set to 'REPL' to enable record replacement
β Consolidated Acceptance Criteria
- The system needs to update an existing hold index record → the system must call CIMS with the function code, PCB, GCSB1RT record, and unqualified SSA to execute the replace 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_CallCIMSwithReplaceFunction(["Start Step"])
E_CallCIMSwithReplaceFunction(["End Step"])
N_CallCIMSwithReplaceFunction_Node0{"The system needs to update an
existing hold index record"}:::decision N_CallCIMSwithReplaceFunction_Node0_action["The system must call CIMS with the
function code, PCB, GCSB1RT record,
and unqualified SSA to execute the
replace operation"]:::main N_CallCIMSwithReplaceFunction_Node0 -- Yes --> N_CallCIMSwithReplaceFunction_Node0_action N_CallCIMSwithReplaceFunction_Node0_action --> E_CallCIMSwithReplaceFunction S_CallCIMSwithReplaceFunction --> N_CallCIMSwithReplaceFunction_Node0 N_CallCIMSwithReplaceFunction_Node0 -- No --> E_CallCIMSwithReplaceFunction
existing hold index record"}:::decision N_CallCIMSwithReplaceFunction_Node0_action["The system must call CIMS with the
function code, PCB, GCSB1RT record,
and unqualified SSA to execute the
replace operation"]:::main N_CallCIMSwithReplaceFunction_Node0 -- Yes --> N_CallCIMSwithReplaceFunction_Node0_action N_CallCIMSwithReplaceFunction_Node0_action --> E_CallCIMSwithReplaceFunction S_CallCIMSwithReplaceFunction --> N_CallCIMSwithReplaceFunction_Node0 N_CallCIMSwithReplaceFunction_Node0 -- No --> E_CallCIMSwithReplaceFunction
File: GCCUSIO.cbl
GIVEN:
The function code is set to 'REPL' and accept status is set to 'GE'
WHEN:
The system needs to update an existing hold index record
THEN:
The system must call CIMS with the function code, PCB, GCSB1RT record, and unqualified SSA to execute the replace operation
CERR Sequence (Canada Cargo/Train Manifest response - EDI350)
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 (Canada Cargo/Train Manifest response - EDI350)
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 (Canada Cargo/Train Manifest response - EDI350)
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
GCCMQERR Sequence (Canada Cargo/Train Manifest response - EDI350)
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
GCX126R Sequence (Canada Cargo/Train Manifest response - EDI350)
Objective: GCX126R is a batch program that processes EDI 350 messages from CBSA (Canada Border Services Agency) for customs cargo and train/conveyance manifests. The program reads messages from MQ queues, validates and processes different EDI segments (M10, P4, V9, K1, X4, N7), updates cargo and train records in IMS databases based on various customs events (arrivals, releases, holds, deconsolidation), handles master/follower manifest relationships, and sends email notifications via Merlin for customs holds, errors, and releases. It also links Canadian and US manifests for cross-border tracking and includes special processing for CSA (Customs Self Assessment) authorized delivery.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start EDI 350 Processing]:::start
B[1:Initialize Program Configuration]:::process
C[2:Read EDI 350 Message from Queue]:::process
D{Message Available?}:::decision
E{Message Valid?}:::decision
F[3:Determine Message Type]:::process
G{Conveyance 350?}:::decision
H[4:Parse EDI Segments]:::process
I{Segment Type?}:::decision
J[5:Process M10 Notice Segment]:::process
K[6:Process P4 Port Segment]:::process
L[7:Process V9 Notice Reason Segment]:::process
M[8:Process K1 Remarks Segment]:::process
N[9:Process N7 Equipment Segment]:::process
O[10:Process Conveyance 350 Train Arrival]:::process
P[11:Update Cargo Border Arrival Status]:::process
Q[12:Process Master Manifest Border Arrival]:::process
R[13:Send Train Not Found Error]:::process
S{Train Found?}:::decision
T[14:Log K1 Remarks]:::process
U[15:Log N7 Equipment Information]:::process
V[16:Lookup Cargo by CCN]:::process
W{Cargo Found?}:::decision
X{Notice Reason?}:::decision
Y[17:Handle Unknown Cargo Release]:::process
Z1[18:Handle Unknown Cargo Deconsolidation]:::process
Z2[19:Handle Unknown Cargo Entry]:::process
Z3[20:Process Document Not Matched]:::process
Z4[21:Process Cargo Complete]:::process
Z5[22:Process Document Package Complete]:::process
Z6[23:Process Document Not On File]:::process
Z7[24:Process Cargo Reported]:::process
Z8[25:Process Cargo Arrived]:::process
Z9[26:Process Cargo Release]:::process
Z10[27:Process Authorized to Deliver]:::process
Z11[28:Process Cargo Hold]:::process
Z12[29:Process Deconsolidation Release]:::process
Z13[30:Set Release Information]:::process
Z14[31:Process Associated US Manifest]:::process
Z15[32:Process CSA Authorization]:::process
Z16[33:Process Follower Manifests]:::process
Z17[34:Prepare Cargo Hold Email]:::process
Z18[39:Send Email Notification]:::process
Z19{More Segments?}:::decision
Z20[End Processing]:::final
MQ[(MQ_QUEUE)]:::datasource
GCSTBRT[(GCSTBRT Admin Table)]:::datasource
GCSB4RT[(GCSB4RT Train Table)]:::datasource
GCSCCRT[(GCSCCRT Cargo Table)]:::datasource
GCSA2RT[(GCSA2RT Cargo Secondary)]:::datasource
GCSUSRT[(GCSUSRT US Cargo Table)]:::datasource
IMS_PCB[(IMS_IO_PCB Message Queue)]:::datasource
A --> B
GCSTBRT -.->|Read Admin Config| B
B --> C
MQ -.->|Read Message| C
C --> D
D -->|No| Z20
D -->|Yes| E
E -->|Invalid/Skip| Z20
E -->|Valid| F
F --> G
G -->|Yes - Conveyance| H
G -->|No - Cargo| H
H --> I
I -->|M10| J
I -->|P4| K
I -->|V9| L
I -->|K1| M
I -->|N7| N
I -->|X4 & Conveyance| O
I -->|X4 & Cargo| V
I -->|SE Trailer| T
O --> S
S -->|No| R
GCSB4RT -.->|Verify Train| S
R --> Z18
S -->|Yes| P
GCSCCRT -.->|Update Border Arrival| P
P --> Q
GCSCCRT -.->|Update Follower Manifests| Q
Q --> Z19
J --> Z19
K --> Z19
L --> Z19
M --> Z19
N --> Z19
T --> U
U --> V
GCSCCRT -.->|Read Cargo by CCN| V
GCSA2RT -.->|Read Cargo Secondary| V
V --> W
W -->|No| X
X -->|Released| Y
X -->|Decon| Z1
X -->|Other| Z2
Y --> Z18
Z1 --> Z18
Z2 --> Z18
W -->|Yes| X
X -->|Not Matched| Z3
X -->|Cargo Complete| Z4
X -->|Doc Pkg Complete| Z5
X -->|Doc Not On File| Z6
X -->|Reported| Z7
X -->|Arrived| Z8
X -->|Released| Z9
X -->|Auth to Deliver| Z10
X -->|Held| Z11
X -->|Decon| Z12
Z3 --> Z19
Z4 --> Z19
Z5 --> Z19
GCSCCRT -.->|Update Cargo| Z5
Z6 --> Z19
Z7 --> Z19
Z8 --> Z19
Z9 --> Z13
Z13 --> Z14
GCSUSRT -.->|Read/Update US Cargo| Z14
Z14 --> Z16
GCSCCRT -.->|Update Cargo| Z14
Z16 --> Z19
GCSCCRT -.->|Update Follower Manifests| Z16
Z10 --> Z15
Z15 --> Z14
GCSCCRT -.->|Update CSA Status| Z15
Z11 --> Z17
Z17 --> Z18
GCSCCRT -.->|Update Hold Status| Z11
Z12 --> Z13
Z18 --> Z19
IMS_PCB -.->|Log Messages| Z18
Z19 -->|Yes| I
Z19 -->|No| Z20
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#2BB534
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- Initialization is performed → set log index to 1, clear remark index, clear log array, clear previous CRN, set all segment flags to not found, set cargo not found flag, initialize line counters, set from usercode to 'OM01247', set accept status to 'GE', initialize all segment structures (M10, P4, V9, K1, X4, N7), retrieve admin table with table ID 'AD' and sequence ID 'ADMINID', if admin segment found then set Merlin recipient to admin DC Merlin 1 value, format machine date and time from system values, initialize date conversion parameters, convert machine date to Julian format, read message queue, connect to MQ manager, and open MQ 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_1InitializeProgramConfiguration(["Start Step"])
E_1InitializeProgramConfiguration(["End Step"])
N_1InitializeProgramConfiguration_Node0{"Initialization is performed"}:::decision
N_1InitializeProgramConfiguration_Node0_action["Set log index to 1, clear remark
index, clear log array, clear
previous CRN, set all segment flags
to not found, set cargo not found
flag, initialize line counters, set
from usercode to OM01247 , set
accept status to GE , initialize all
segment structures M10, P4, V9, K1,
X4, N7, retrieve admin table with
table ID AD and sequence ID ADMINID
, if admin segment found then set
Merlin recipient to admin DC Merlin
1 value, format machine date and
time from system values, initialize
date conversion parameters, convert
machine date to Julian format, read
message queue, connect to MQ
manager, and open MQ queue"]:::main N_1InitializeProgramConfiguration_Node0 -- Yes --> N_1InitializeProgramConfiguration_Node0_action N_1InitializeProgramConfiguration_Node0_action --> E_1InitializeProgramConfiguration S_1InitializeProgramConfiguration --> N_1InitializeProgramConfiguration_Node0 N_1InitializeProgramConfiguration_Node0 -- No --> E_1InitializeProgramConfiguration
index, clear log array, clear
previous CRN, set all segment flags
to not found, set cargo not found
flag, initialize line counters, set
from usercode to OM01247 , set
accept status to GE , initialize all
segment structures M10, P4, V9, K1,
X4, N7, retrieve admin table with
table ID AD and sequence ID ADMINID
, if admin segment found then set
Merlin recipient to admin DC Merlin
1 value, format machine date and
time from system values, initialize
date conversion parameters, convert
machine date to Julian format, read
message queue, connect to MQ
manager, and open MQ queue"]:::main N_1InitializeProgramConfiguration_Node0 -- Yes --> N_1InitializeProgramConfiguration_Node0_action N_1InitializeProgramConfiguration_Node0_action --> E_1InitializeProgramConfiguration S_1InitializeProgramConfiguration --> N_1InitializeProgramConfiguration_Node0 N_1InitializeProgramConfiguration_Node0 -- No --> E_1InitializeProgramConfiguration
File: GCX126R.cbl
GIVEN:
The program GCX126 starts execution
WHEN:
Initialization is performed
THEN:
- Set log index to 1, clear remark index, clear log array, clear previous crn, set all segment flags to not found, set cargo not found flag, initialize line counters, set from usercode to 'om01247', set accept status to 'ge', initialize all segment structures (m10, p4, v9, k1, x4, n7), retrieve admin table with table id 'ad' and sequence id 'adminid', if admin segment found then set merlin recipient to admin dc merlin 1 value, format machine date
- Time from system values, initialize date conversion parameters, convert machine date to julian format, read message queue, connect to mq manager, and open mq queue
β Consolidated Acceptance Criteria
- MQGET operation is performed → read message into MQS-MESSAGE buffer, calculate maximum MQS entries as (data length minus header length) divided by entry length rounded, if calculated entries exceed maximum constant then set to maximum constant 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_2ReadEDI350MessagefromQueue(["Start Step"])
E_2ReadEDI350MessagefromQueue(["End Step"])
N_2ReadEDI350MessagefromQueue_Node0{"MQGET operation is performed"}:::decision
N_2ReadEDI350MessagefromQueue_Node0_action["Read message into MQS-MESSAGE
buffer, calculate maximum MQS
entries as data length minus header
length divided by entry length
rounded, if calculated entries
exceed maximum constant then set to
maximum constant value"]:::main N_2ReadEDI350MessagefromQueue_Node0 -- Yes --> N_2ReadEDI350MessagefromQueue_Node0_action N_2ReadEDI350MessagefromQueue_Node0_action --> E_2ReadEDI350MessagefromQueue S_2ReadEDI350MessagefromQueue --> N_2ReadEDI350MessagefromQueue_Node0 N_2ReadEDI350MessagefromQueue_Node0 -- No --> E_2ReadEDI350MessagefromQueue
buffer, calculate maximum MQS
entries as data length minus header
length divided by entry length
rounded, if calculated entries
exceed maximum constant then set to
maximum constant value"]:::main N_2ReadEDI350MessagefromQueue_Node0 -- Yes --> N_2ReadEDI350MessagefromQueue_Node0_action N_2ReadEDI350MessagefromQueue_Node0_action --> E_2ReadEDI350MessagefromQueue S_2ReadEDI350MessagefromQueue --> N_2ReadEDI350MessagefromQueue_Node0 N_2ReadEDI350MessagefromQueue_Node0 -- No --> E_2ReadEDI350MessagefromQueue
File: GCX126R.cbl
GIVEN:
MQ connection is established and queue is open
WHEN:
MQGET operation is performed
THEN:
Read message into MQS-MESSAGE buffer, calculate maximum MQS entries as (data length minus header length) divided by entry length rounded, if calculated entries exceed maximum constant then set to maximum constant value
β Consolidated Acceptance Criteria
- Message header is examined → if MQS cross-way header positions 1 through 10 equal '+++3505040' then set conveyance 350 flag to true, else set cargo 350 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_3DetermineMessageType(["Start Step"])
E_3DetermineMessageType(["End Step"])
N_3DetermineMessageType_Node0{"Message header is examined"}:::decision
N_3DetermineMessageType_Node0_action["If MQS cross-way header positions 1
through 10 equal 3505040 then set
conveyance 350 flag to true, else
set cargo 350 flag to true"]:::main N_3DetermineMessageType_Node0 -- Yes --> N_3DetermineMessageType_Node0_action N_3DetermineMessageType_Node0_action --> E_3DetermineMessageType S_3DetermineMessageType --> N_3DetermineMessageType_Node0 N_3DetermineMessageType_Node0 -- No --> E_3DetermineMessageType
through 10 equal 3505040 then set
conveyance 350 flag to true, else
set cargo 350 flag to true"]:::main N_3DetermineMessageType_Node0 -- Yes --> N_3DetermineMessageType_Node0_action N_3DetermineMessageType_Node0_action --> E_3DetermineMessageType S_3DetermineMessageType --> N_3DetermineMessageType_Node0 N_3DetermineMessageType_Node0 -- No --> E_3DetermineMessageType
File: GCX126R.cbl
GIVEN:
A valid EDI 350 message has been loaded
WHEN:
Message header is examined
THEN:
If MQS cross-way header positions 1 through 10 equal '+++3505040' then set conveyance 350 flag to true, else set cargo 350 flag to true
β Consolidated Acceptance Criteria
- Each message line is processed → if table ID is 'ST' then set header found and first X4 flags, else if table ID is 'M10' then perform M10 segment processing, else if table ID is 'P4' then perform P4 segment processing, else if table ID is 'V9' then perform V9 segment processing, else if table ID is 'VID' then continue, else if table ID is 'K1' then perform K1 segment processing, else if table ID is 'X4' then initialize K1 comments and perform X4 segment processing, else if table ID is 'N7' then perform N7 segment processing, else if table ID is 'SE' then set trailer found and end found flags and perform rest of message 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_4ParseEDISegmentsandSegmentType(["Start Step"])
E_4ParseEDISegmentsandSegmentType(["End Step"])
N_4ParseEDISegmentsandSegmentType_Node0{"Each message line is processed"}:::decision
N_4ParseEDISegmentsandSegmentType_Node0_action["If table ID is ST then set header
found and first X4 flags, else if
table ID is M10 then perform M10
segment processing, else if table ID
is P4 then perform P4 segment
processing, else if table ID is V9
then perform V9 segment processing,
else if table ID is VID then
continue, else if table ID is K1
then perform K1 segment processing,
else if table ID is X4 then
initialize K1 comments and perform
X4 segment processing, else if table
ID is N7 then perform N7 segment
processing, else if table ID is SE
then set trailer found and end found
flags and perform rest of message
processing"]:::main N_4ParseEDISegmentsandSegmentType_Node0 -- Yes --> N_4ParseEDISegmentsandSegmentType_Node0_action N_4ParseEDISegmentsandSegmentType_Node0_action --> E_4ParseEDISegmentsandSegmentType S_4ParseEDISegmentsandSegmentType --> N_4ParseEDISegmentsandSegmentType_Node0 N_4ParseEDISegmentsandSegmentType_Node0 -- No --> E_4ParseEDISegmentsandSegmentType
found and first X4 flags, else if
table ID is M10 then perform M10
segment processing, else if table ID
is P4 then perform P4 segment
processing, else if table ID is V9
then perform V9 segment processing,
else if table ID is VID then
continue, else if table ID is K1
then perform K1 segment processing,
else if table ID is X4 then
initialize K1 comments and perform
X4 segment processing, else if table
ID is N7 then perform N7 segment
processing, else if table ID is SE
then set trailer found and end found
flags and perform rest of message
processing"]:::main N_4ParseEDISegmentsandSegmentType_Node0 -- Yes --> N_4ParseEDISegmentsandSegmentType_Node0_action N_4ParseEDISegmentsandSegmentType_Node0_action --> E_4ParseEDISegmentsandSegmentType S_4ParseEDISegmentsandSegmentType --> N_4ParseEDISegmentsandSegmentType_Node0 N_4ParseEDISegmentsandSegmentType_Node0 -- No --> E_4ParseEDISegmentsandSegmentType
File: GCX126R.cbl
GIVEN:
Message has been validated and type determined
WHEN:
Each message line is processed
THEN:
- If table id is 'st' then set header found
- First x4 flags, else if table id is 'm10' then perform m10 segment processing, else if table id is 'p4' then perform p4 segment processing, else if table id is 'v9' then perform v9 segment processing, else if table id is 'vid' then continue, else if table id is 'k1' then perform k1 segment processing, else if table id is 'x4' then initialize k1 comments
- Perform x4 segment processing, else if table id is 'n7' then perform n7 segment processing, else if table id is 'se' then set trailer found
- End found flags
- Perform rest of message processing
β Consolidated Acceptance Criteria
- M10 segment is processed → set M10 segment found flag to true, initialize M10 segment structure, and move table entry to M10 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_5ProcessM10NoticeSegment(["Start Step"])
E_5ProcessM10NoticeSegment(["End Step"])
N_5ProcessM10NoticeSegment_Node0{"M10 segment is processed"}:::decision
N_5ProcessM10NoticeSegment_Node0_action["Set M10 segment found flag to true,
initialize M10 segment structure,
and move table entry to M10 segment
structure"]:::main N_5ProcessM10NoticeSegment_Node0 -- Yes --> N_5ProcessM10NoticeSegment_Node0_action N_5ProcessM10NoticeSegment_Node0_action --> E_5ProcessM10NoticeSegment S_5ProcessM10NoticeSegment --> N_5ProcessM10NoticeSegment_Node0 N_5ProcessM10NoticeSegment_Node0 -- No --> E_5ProcessM10NoticeSegment
initialize M10 segment structure,
and move table entry to M10 segment
structure"]:::main N_5ProcessM10NoticeSegment_Node0 -- Yes --> N_5ProcessM10NoticeSegment_Node0_action N_5ProcessM10NoticeSegment_Node0_action --> E_5ProcessM10NoticeSegment S_5ProcessM10NoticeSegment --> N_5ProcessM10NoticeSegment_Node0 N_5ProcessM10NoticeSegment_Node0 -- No --> E_5ProcessM10NoticeSegment
File: GCX126R.cbl
GIVEN:
Message line contains M10 segment identifier
WHEN:
M10 segment is processed
THEN:
Set M10 segment found flag to true, initialize M10 segment structure, and move table entry to M10 segment structure
β Consolidated Acceptance Criteria
- P4 segment is processed → set P4 segment found flag to true, initialize P4 segment structure, and move table entry to P4 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_6ProcessP4PortSegment(["Start Step"])
E_6ProcessP4PortSegment(["End Step"])
N_6ProcessP4PortSegment_Node0{"P4 segment is processed"}:::decision
N_6ProcessP4PortSegment_Node0_action["Set P4 segment found flag to true,
initialize P4 segment structure, and
move table entry to P4 segment
structure"]:::main N_6ProcessP4PortSegment_Node0 -- Yes --> N_6ProcessP4PortSegment_Node0_action N_6ProcessP4PortSegment_Node0_action --> E_6ProcessP4PortSegment S_6ProcessP4PortSegment --> N_6ProcessP4PortSegment_Node0 N_6ProcessP4PortSegment_Node0 -- No --> E_6ProcessP4PortSegment
initialize P4 segment structure, and
move table entry to P4 segment
structure"]:::main N_6ProcessP4PortSegment_Node0 -- Yes --> N_6ProcessP4PortSegment_Node0_action N_6ProcessP4PortSegment_Node0_action --> E_6ProcessP4PortSegment S_6ProcessP4PortSegment --> N_6ProcessP4PortSegment_Node0 N_6ProcessP4PortSegment_Node0 -- No --> E_6ProcessP4PortSegment
File: GCX126R.cbl
GIVEN:
Message line contains P4 segment identifier
WHEN:
P4 segment is processed
THEN:
Set P4 segment found flag to true, initialize P4 segment structure, and move table entry to P4 segment structure
β Consolidated Acceptance Criteria
- V9 segment is processed → set V9 segment found flag to true, initialize V9 segment structure, and move table entry to V9 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_7ProcessV9NoticeReasonSegment(["Start Step"])
E_7ProcessV9NoticeReasonSegment(["End Step"])
N_7ProcessV9NoticeReasonSegment_Node0{"V9 segment is processed"}:::decision
N_7ProcessV9NoticeReasonSegment_Node0_action["Set V9 segment found flag to true,
initialize V9 segment structure, and
move table entry to V9 segment
structure"]:::main N_7ProcessV9NoticeReasonSegment_Node0 -- Yes --> N_7ProcessV9NoticeReasonSegment_Node0_action N_7ProcessV9NoticeReasonSegment_Node0_action --> E_7ProcessV9NoticeReasonSegment S_7ProcessV9NoticeReasonSegment --> N_7ProcessV9NoticeReasonSegment_Node0 N_7ProcessV9NoticeReasonSegment_Node0 -- No --> E_7ProcessV9NoticeReasonSegment
initialize V9 segment structure, and
move table entry to V9 segment
structure"]:::main N_7ProcessV9NoticeReasonSegment_Node0 -- Yes --> N_7ProcessV9NoticeReasonSegment_Node0_action N_7ProcessV9NoticeReasonSegment_Node0_action --> E_7ProcessV9NoticeReasonSegment S_7ProcessV9NoticeReasonSegment --> N_7ProcessV9NoticeReasonSegment_Node0 N_7ProcessV9NoticeReasonSegment_Node0 -- No --> E_7ProcessV9NoticeReasonSegment
File: GCX126R.cbl
GIVEN:
Message line contains V9 segment identifier
WHEN:
V9 segment is processed
THEN:
Set V9 segment found flag to true, initialize V9 segment structure, and move table entry to V9 segment structure
β Consolidated Acceptance Criteria
- K1 segment is processed → set K1 segment found flag to true, initialize K1 segment structure, move table entry to K1 segment structure, add 1 to K1 remark index, if K1 remark index exceeds maximum (50) then set index to maximum value, else move K1 segment to K1 remark array at 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_8ProcessK1RemarksSegment(["Start Step"])
E_8ProcessK1RemarksSegment(["End Step"])
N_8ProcessK1RemarksSegment_Node0{"K1 segment is processed"}:::decision
N_8ProcessK1RemarksSegment_Node0_action["Set K1 segment found flag to true,
initialize K1 segment structure,
move table entry to K1 segment
structure, add 1 to K1 remark index,
if K1 remark index exceeds maximum
50 then set index to maximum value,
else move K1 segment to K1 remark
array at current index position"]:::main N_8ProcessK1RemarksSegment_Node0 -- Yes --> N_8ProcessK1RemarksSegment_Node0_action N_8ProcessK1RemarksSegment_Node0_action --> E_8ProcessK1RemarksSegment S_8ProcessK1RemarksSegment --> N_8ProcessK1RemarksSegment_Node0 N_8ProcessK1RemarksSegment_Node0 -- No --> E_8ProcessK1RemarksSegment
initialize K1 segment structure,
move table entry to K1 segment
structure, add 1 to K1 remark index,
if K1 remark index exceeds maximum
50 then set index to maximum value,
else move K1 segment to K1 remark
array at current index position"]:::main N_8ProcessK1RemarksSegment_Node0 -- Yes --> N_8ProcessK1RemarksSegment_Node0_action N_8ProcessK1RemarksSegment_Node0_action --> E_8ProcessK1RemarksSegment S_8ProcessK1RemarksSegment --> N_8ProcessK1RemarksSegment_Node0 N_8ProcessK1RemarksSegment_Node0 -- No --> E_8ProcessK1RemarksSegment
File: GCX126R.cbl
GIVEN:
Message line contains K1 segment identifier
WHEN:
K1 segment is processed
THEN:
Set K1 segment found flag to true, initialize K1 segment structure, move table entry to K1 segment structure, add 1 to K1 remark index, if K1 remark index exceeds maximum (50) then set index to maximum value, else move K1 segment to K1 remark array at current index position
β Consolidated Acceptance Criteria
- N7 segment is processed → set N7 segment found flag to true, initialize N7 segment structure, move table entry to N7 segment structure, if N7 equipment number is not spaces then move equipment number to log data at current log index with type 'EDI 350 EQP#:' and add 1 to log 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_9ProcessN7EquipmentSegment(["Start Step"])
E_9ProcessN7EquipmentSegment(["End Step"])
N_9ProcessN7EquipmentSegment_Node0{"N7 segment is processed"}:::decision
N_9ProcessN7EquipmentSegment_Node0_action["Set N7 segment found flag to true,
initialize N7 segment structure,
move table entry to N7 segment
structure, if N7 equipment number is
not spaces then move equipment
number to log data at current log
index with type EDI 350 EQP: and add
1 to log index"]:::main N_9ProcessN7EquipmentSegment_Node0 -- Yes --> N_9ProcessN7EquipmentSegment_Node0_action N_9ProcessN7EquipmentSegment_Node0_action --> E_9ProcessN7EquipmentSegment S_9ProcessN7EquipmentSegment --> N_9ProcessN7EquipmentSegment_Node0 N_9ProcessN7EquipmentSegment_Node0 -- No --> E_9ProcessN7EquipmentSegment
initialize N7 segment structure,
move table entry to N7 segment
structure, if N7 equipment number is
not spaces then move equipment
number to log data at current log
index with type EDI 350 EQP: and add
1 to log index"]:::main N_9ProcessN7EquipmentSegment_Node0 -- Yes --> N_9ProcessN7EquipmentSegment_Node0_action N_9ProcessN7EquipmentSegment_Node0_action --> E_9ProcessN7EquipmentSegment S_9ProcessN7EquipmentSegment --> N_9ProcessN7EquipmentSegment_Node0 N_9ProcessN7EquipmentSegment_Node0 -- No --> E_9ProcessN7EquipmentSegment
File: GCX126R.cbl
GIVEN:
Message line contains N7 segment identifier
WHEN:
N7 segment is processed
THEN:
Set N7 segment found flag to true, initialize N7 segment structure, move table entry to N7 segment structure, if N7 equipment number is not spaces then move equipment number to log data at current log index with type 'EDI 350 EQP#:' and add 1 to log index
β Consolidated Acceptance Criteria
- X4 segment processing is performed → if X4 release document ID positions 1 through 25 equal previous CRN then continue, else move X4 release document ID positions 1 through 25 to B4 key value and previous CRN, perform train lookup by CRN, if train not found (status code not spaces) then prepare unknown train error message with CRN, set line count to 4, set message type to unknown, and perform email send preparation, else if train found then move log information, format date and time from machine values, set action code to 'ZZZ', move CRN to train or US CCN field, set cargo type to CA train, set message to '350 ACK - ARRIVAL ACK AT BORDER', and spawn 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_10ProcessConveyance350TrainArrivalandTrainFound(["Start Step"])
E_10ProcessConveyance350TrainArrivalandTrainFound(["End Step"])
N_10ProcessConveyance350TrainArrivalandTrainFound_Node0{"X4 segment processing is performed"}:::decision
N_10ProcessConveyance350TrainArrivalandTrainFound_Node0_action["If X4 release document ID positions
1 through 25 equal previous CRN then
continue, else move X4 release
document ID positions 1 through 25
to B4 key value and previous CRN,
perform train lookup by CRN, if
train not found status code not
spaces then prepare unknown train
error message with CRN, set line
count to 4, set message type to
unknown, and perform email send
preparation, else if train found
then move log information, format
date and time from machine values,
set action code to ZZZ , move CRN to
train or US CCN field, set cargo
type to CA train, set message to 350
ACK - ARRIVAL ACK AT BORDER , and
spawn log entry"]:::main N_10ProcessConveyance350TrainArrivalandTrainFound_Node0 -- Yes --> N_10ProcessConveyance350TrainArrivalandTrainFound_Node0_action N_10ProcessConveyance350TrainArrivalandTrainFound_Node0_action --> E_10ProcessConveyance350TrainArrivalandTrainFound S_10ProcessConveyance350TrainArrivalandTrainFound --> N_10ProcessConveyance350TrainArrivalandTrainFound_Node0 N_10ProcessConveyance350TrainArrivalandTrainFound_Node0 -- No --> E_10ProcessConveyance350TrainArrivalandTrainFound
1 through 25 equal previous CRN then
continue, else move X4 release
document ID positions 1 through 25
to B4 key value and previous CRN,
perform train lookup by CRN, if
train not found status code not
spaces then prepare unknown train
error message with CRN, set line
count to 4, set message type to
unknown, and perform email send
preparation, else if train found
then move log information, format
date and time from machine values,
set action code to ZZZ , move CRN to
train or US CCN field, set cargo
type to CA train, set message to 350
ACK - ARRIVAL ACK AT BORDER , and
spawn log entry"]:::main N_10ProcessConveyance350TrainArrivalandTrainFound_Node0 -- Yes --> N_10ProcessConveyance350TrainArrivalandTrainFound_Node0_action N_10ProcessConveyance350TrainArrivalandTrainFound_Node0_action --> E_10ProcessConveyance350TrainArrivalandTrainFound S_10ProcessConveyance350TrainArrivalandTrainFound --> N_10ProcessConveyance350TrainArrivalandTrainFound_Node0 N_10ProcessConveyance350TrainArrivalandTrainFound_Node0 -- No --> E_10ProcessConveyance350TrainArrivalandTrainFound
File: GCX126R.cbl
GIVEN:
X4 segment is being processed and entry type code is '992' and conveyance 350 flag is true
WHEN:
X4 segment processing is performed
THEN:
- If x4 release document id positions 1 through 25 equal previous crn then continue, else move x4 release document id positions 1 through 25 to b4 key value
- Previous crn, perform train lookup by crn, if train not found (status code not spaces) then prepare unknown train error message with crn, set line count to 4, set message type to unknown, and perform email send preparation, else if train found then move log information, format date
- Time from machine values, set action code to 'zzz', move crn to train or us ccn field, set cargo type to ca train, set message to '350 ack - arrival ack at border', and spawn log entry
β Consolidated Acceptance Criteria
- Cargo border update is performed → perform cargo lookup by CCN, if cargo is found then set message to '350 ACK - ARRIVAL ACK AT BORDER', move cargo CCN key to current CCN key, perform log cargo info message, set cargo border arrival acknowledgment flag to true, clear status code, set accept status to spaces, and replace 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_11UpdateCargoBorderArrivalStatus(["Start Step"])
E_11UpdateCargoBorderArrivalStatus(["End Step"])
N_11UpdateCargoBorderArrivalStatus_Node0{"Cargo border update is performed"}:::decision
N_11UpdateCargoBorderArrivalStatus_Node0_action["Perform cargo lookup by CCN, if
cargo is found then set message to
350 ACK - ARRIVAL ACK AT BORDER ,
move cargo CCN key to current CCN
key, perform log cargo info message,
set cargo border arrival
acknowledgment flag to true, clear
status code, set accept status to
spaces, and replace cargo record"]:::main N_11UpdateCargoBorderArrivalStatus_Node0 -- Yes --> N_11UpdateCargoBorderArrivalStatus_Node0_action N_11UpdateCargoBorderArrivalStatus_Node0_action --> E_11UpdateCargoBorderArrivalStatus S_11UpdateCargoBorderArrivalStatus --> N_11UpdateCargoBorderArrivalStatus_Node0 N_11UpdateCargoBorderArrivalStatus_Node0 -- No --> E_11UpdateCargoBorderArrivalStatus
cargo is found then set message to
350 ACK - ARRIVAL ACK AT BORDER ,
move cargo CCN key to current CCN
key, perform log cargo info message,
set cargo border arrival
acknowledgment flag to true, clear
status code, set accept status to
spaces, and replace cargo record"]:::main N_11UpdateCargoBorderArrivalStatus_Node0 -- Yes --> N_11UpdateCargoBorderArrivalStatus_Node0_action N_11UpdateCargoBorderArrivalStatus_Node0_action --> E_11UpdateCargoBorderArrivalStatus S_11UpdateCargoBorderArrivalStatus --> N_11UpdateCargoBorderArrivalStatus_Node0 N_11UpdateCargoBorderArrivalStatus_Node0 -- No --> E_11UpdateCargoBorderArrivalStatus
File: GCX126R.cbl
GIVEN:
Train has been validated and X4 CBSA release reference ID positions 1 through 25 are moved to cargo key value
WHEN:
Cargo border update is performed
THEN:
Perform cargo lookup by CCN, if cargo is found then set message to '350 ACK - ARRIVAL ACK AT BORDER', move cargo CCN key to current CCN key, perform log cargo info message, set cargo border arrival acknowledgment flag to true, clear status code, set accept status to spaces, and replace cargo record
β Consolidated Acceptance Criteria
- Master manifest processing is performed → move cargo CCN key to B0 CCN key, clear follower manifest array, set follower not end of database flag, set index to 1, perform until follower end of database or index exceeds 100: set accept status to 'GEGB', call database with get next function for cargo using B0 qualifier, if status code is spaces and master manifest CCN equals X4 CBSA release reference ID positions 1 through 25 then if cargo is follower manifest then move cargo CCN key to follower manifest array at index position and add 1 to index, else set follower end of database flag, subtract 1 from index, if index is less than or equal to zero then exit, else perform varying index from 1 by 1 until follower manifest at index is spaces or low values or index exceeds limit: move follower manifest CCN to cargo key value, perform cargo lookup, if cargo found then perform cargo border update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_12ProcessMasterManifestBorderArrival(["Start Step"])
E_12ProcessMasterManifestBorderArrival(["End Step"])
N_12ProcessMasterManifestBorderArrival_Node0{"Master manifest processing is
performed"}:::decision N_12ProcessMasterManifestBorderArrival_Node0_action["Move cargo CCN key to B0 CCN key,
clear follower manifest array, set
follower not end of database flag,
set index to 1, perform until
follower end of database or index
exceeds 100: set accept status to
GEGB , call database with get next
function for cargo using B0
qualifier, if status code is spaces
and master manifest CCN equals X4
CBSA release reference ID positions
1 through 25 then if cargo is
follower manifest then move cargo
CCN key to follower manifest array
at index position and add 1 to
index, else set follower end of
database flag, subtract 1 from
index, if index is less than or
equal to zero then exit, else
perform varying index from 1 by 1
until follower manifest at index is
spaces or low values or index
exceeds limit: move follower
manifest CCN to cargo key value,
perform cargo lookup, if cargo found
then perform cargo border update"]:::main N_12ProcessMasterManifestBorderArrival_Node0 -- Yes --> N_12ProcessMasterManifestBorderArrival_Node0_action N_12ProcessMasterManifestBorderArrival_Node0_action --> E_12ProcessMasterManifestBorderArrival S_12ProcessMasterManifestBorderArrival --> N_12ProcessMasterManifestBorderArrival_Node0 N_12ProcessMasterManifestBorderArrival_Node0 -- No --> E_12ProcessMasterManifestBorderArrival
performed"}:::decision N_12ProcessMasterManifestBorderArrival_Node0_action["Move cargo CCN key to B0 CCN key,
clear follower manifest array, set
follower not end of database flag,
set index to 1, perform until
follower end of database or index
exceeds 100: set accept status to
GEGB , call database with get next
function for cargo using B0
qualifier, if status code is spaces
and master manifest CCN equals X4
CBSA release reference ID positions
1 through 25 then if cargo is
follower manifest then move cargo
CCN key to follower manifest array
at index position and add 1 to
index, else set follower end of
database flag, subtract 1 from
index, if index is less than or
equal to zero then exit, else
perform varying index from 1 by 1
until follower manifest at index is
spaces or low values or index
exceeds limit: move follower
manifest CCN to cargo key value,
perform cargo lookup, if cargo found
then perform cargo border update"]:::main N_12ProcessMasterManifestBorderArrival_Node0 -- Yes --> N_12ProcessMasterManifestBorderArrival_Node0_action N_12ProcessMasterManifestBorderArrival_Node0_action --> E_12ProcessMasterManifestBorderArrival S_12ProcessMasterManifestBorderArrival --> N_12ProcessMasterManifestBorderArrival_Node0 N_12ProcessMasterManifestBorderArrival_Node0 -- No --> E_12ProcessMasterManifestBorderArrival
File: GCX126R.cbl
GIVEN:
Cargo has been updated with border arrival and cargo is master manifest type
WHEN:
Master manifest processing is performed
THEN:
- Move cargo ccn key to b0 ccn key, clear follower manifest array, set follower not end of database flag, set index to 1, perform until follower end of database or index exceeds 100: set accept status to 'gegb', call database with get next function for cargo using b0 qualifier, if status code is spaces
- Master manifest ccn equals x4 cbsa release reference id positions 1 through 25 then if cargo is follower manifest then move cargo ccn key to follower manifest array at index position
- Add 1 to index, else set follower end of database flag, subtract 1 from index, if index is less than or equal to zero then exit, else perform varying index from 1 by 1 until follower manifest at index is spaces or low values or index exceeds limit: move follower manifest ccn to cargo key value, perform cargo lookup, if cargo found then perform cargo border update
β Consolidated Acceptance Criteria
- Error notification is prepared → clear detail line 1, concatenate 'UNKNOWN TRAIN ENTRY IN EDI 350 ' with X4 release document ID positions 1 through 25 into detail line 1, move 'THIS CRN WAS NOT FOUND.' to detail line 3, set line count to 4, set message type to unknown, and perform email send preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13SendTrainNotFoundError(["Start Step"])
E_13SendTrainNotFoundError(["End Step"])
N_13SendTrainNotFoundError_Node0{"Error notification is prepared"}:::decision
N_13SendTrainNotFoundError_Node0_action["Clear detail line 1, concatenate
UNKNOWN TRAIN ENTRY IN EDI 350 with
X4 release document ID positions 1
through 25 into detail line 1, move
THIS CRN WAS NOT FOUND. to detail
line 3, set line count to 4, set
message type to unknown, and perform
email send preparation"]:::exclusion N_13SendTrainNotFoundError_Node0 -- Yes -->|Alternative| N_13SendTrainNotFoundError_Node0_action N_13SendTrainNotFoundError_Node0_action --> E_13SendTrainNotFoundError S_13SendTrainNotFoundError --> N_13SendTrainNotFoundError_Node0 N_13SendTrainNotFoundError_Node0 -- No --> E_13SendTrainNotFoundError
UNKNOWN TRAIN ENTRY IN EDI 350 with
X4 release document ID positions 1
through 25 into detail line 1, move
THIS CRN WAS NOT FOUND. to detail
line 3, set line count to 4, set
message type to unknown, and perform
email send preparation"]:::exclusion N_13SendTrainNotFoundError_Node0 -- Yes -->|Alternative| N_13SendTrainNotFoundError_Node0_action N_13SendTrainNotFoundError_Node0_action --> E_13SendTrainNotFoundError S_13SendTrainNotFoundError --> N_13SendTrainNotFoundError_Node0 N_13SendTrainNotFoundError_Node0 -- No --> E_13SendTrainNotFoundError
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Train lookup by CRN has failed (status code is not spaces)
WHEN:
Error notification is prepared
THEN:
Clear detail line 1, concatenate 'UNKNOWN TRAIN ENTRY IN EDI 350 ' with X4 release document ID positions 1 through 25 into detail line 1, move 'THIS CRN WAS NOT FOUND.' to detail line 3, set line count to 4, set message type to unknown, and perform email send preparation
β Consolidated Acceptance Criteria
- Rest of message processing is performed → perform varying index from 1 by 1 until index exceeds K1 remark index: if K1 remark for X4 at index is not spaces then initialize K1 segment, move K1 remark for X4 at index to K1 segment, clear info message, concatenate 'EDI 350 K1: ' with K1 free form message 1 into info message, perform log cargo info message, if K1 free form message 2 is not spaces then clear info message, concatenate 'EDI 350 K1: ' with K1 free form message 2 into info message, and perform log cargo info 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_14LogK1Remarks(["Start Step"])
E_14LogK1Remarks(["End Step"])
N_14LogK1Remarks_Node0{"Rest of message processing is
performed"}:::decision N_14LogK1Remarks_Node0_action["Perform varying index from 1 by 1
until index exceeds K1 remark index:
if K1 remark for X4 at index is not
spaces then initialize K1 segment,
move K1 remark for X4 at index to K1
segment, clear info message,
concatenate EDI 350 K1: with K1 free
form message 1 into info message,
perform log cargo info message, if
K1 free form message 2 is not spaces
then clear info message, concatenate
EDI 350 K1: with K1 free form
message 2 into info message, and
perform log cargo info message"]:::main N_14LogK1Remarks_Node0 -- Yes --> N_14LogK1Remarks_Node0_action N_14LogK1Remarks_Node0_action --> E_14LogK1Remarks S_14LogK1Remarks --> N_14LogK1Remarks_Node0 N_14LogK1Remarks_Node0 -- No --> E_14LogK1Remarks
performed"}:::decision N_14LogK1Remarks_Node0_action["Perform varying index from 1 by 1
until index exceeds K1 remark index:
if K1 remark for X4 at index is not
spaces then initialize K1 segment,
move K1 remark for X4 at index to K1
segment, clear info message,
concatenate EDI 350 K1: with K1 free
form message 1 into info message,
perform log cargo info message, if
K1 free form message 2 is not spaces
then clear info message, concatenate
EDI 350 K1: with K1 free form
message 2 into info message, and
perform log cargo info message"]:::main N_14LogK1Remarks_Node0 -- Yes --> N_14LogK1Remarks_Node0_action N_14LogK1Remarks_Node0_action --> E_14LogK1Remarks S_14LogK1Remarks --> N_14LogK1Remarks_Node0 N_14LogK1Remarks_Node0 -- No --> E_14LogK1Remarks
File: GCX126R.cbl
GIVEN:
SE trailer segment has been processed and K1 segment found flag is true
WHEN:
Rest of message processing is performed
THEN:
Perform varying index from 1 by 1 until index exceeds K1 remark index: if K1 remark for X4 at index is not spaces then initialize K1 segment, move K1 remark for X4 at index to K1 segment, clear info message, concatenate 'EDI 350 K1: ' with K1 free form message 1 into info message, perform log cargo info message, if K1 free form message 2 is not spaces then clear info message, concatenate 'EDI 350 K1: ' with K1 free form message 2 into info message, and perform log cargo info message
β Consolidated Acceptance Criteria
- Rest of message processing is performed → perform varying log index from 1 by 1 until log line at index is spaces or log index exceeds 50: clear info message, move log line at index to info message, and perform log cargo info 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_15LogN7EquipmentInformation(["Start Step"])
E_15LogN7EquipmentInformation(["End Step"])
N_15LogN7EquipmentInformation_Node0{"Rest of message processing is
performed"}:::decision N_15LogN7EquipmentInformation_Node0_action["Perform varying log index from 1 by
1 until log line at index is spaces
or log index exceeds 50: clear info
message, move log line at index to
info message, and perform log cargo
info message"]:::main N_15LogN7EquipmentInformation_Node0 -- Yes --> N_15LogN7EquipmentInformation_Node0_action N_15LogN7EquipmentInformation_Node0_action --> E_15LogN7EquipmentInformation S_15LogN7EquipmentInformation --> N_15LogN7EquipmentInformation_Node0 N_15LogN7EquipmentInformation_Node0 -- No --> E_15LogN7EquipmentInformation
performed"}:::decision N_15LogN7EquipmentInformation_Node0_action["Perform varying log index from 1 by
1 until log line at index is spaces
or log index exceeds 50: clear info
message, move log line at index to
info message, and perform log cargo
info message"]:::main N_15LogN7EquipmentInformation_Node0 -- Yes --> N_15LogN7EquipmentInformation_Node0_action N_15LogN7EquipmentInformation_Node0_action --> E_15LogN7EquipmentInformation S_15LogN7EquipmentInformation --> N_15LogN7EquipmentInformation_Node0 N_15LogN7EquipmentInformation_Node0 -- No --> E_15LogN7EquipmentInformation
File: GCX126R.cbl
GIVEN:
SE trailer segment has been processed and N7 segment found flag is true
WHEN:
Rest of message processing is performed
THEN:
Perform varying log index from 1 by 1 until log line at index is spaces or log index exceeds 50: clear info message, move log line at index to info message, and perform log cargo info message
β Consolidated Acceptance Criteria
- Cargo lookup is performed → move M10 CCN positions 1 through 25 to cargo key value, set accept status to 'GE', call database with get hold unique function for cargo using cargo qualifier, perform cargo switch setting, if cargo found then set accept status to 'GE' and call database with get hold unique function for cargo secondary using A2 qualifier, if status code is 'GE' then clear cargo secondary 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_16LookupCargobyCCN(["Start Step"])
E_16LookupCargobyCCN(["End Step"])
N_16LookupCargobyCCN_Node0{"Cargo lookup is performed"}:::decision
N_16LookupCargobyCCN_Node0_action["Move M10 CCN positions 1 through 25
to cargo key value, set accept
status to GE , call database with
get hold unique function for cargo
using cargo qualifier, perform cargo
switch setting, if cargo found then
set accept status to GE and call
database with get hold unique
function for cargo secondary using
A2 qualifier, if status code is GE
then clear cargo secondary segment"]:::main N_16LookupCargobyCCN_Node0 -- Yes --> N_16LookupCargobyCCN_Node0_action N_16LookupCargobyCCN_Node0_action --> E_16LookupCargobyCCN S_16LookupCargobyCCN --> N_16LookupCargobyCCN_Node0 N_16LookupCargobyCCN_Node0 -- No --> E_16LookupCargobyCCN
to cargo key value, set accept
status to GE , call database with
get hold unique function for cargo
using cargo qualifier, perform cargo
switch setting, if cargo found then
set accept status to GE and call
database with get hold unique
function for cargo secondary using
A2 qualifier, if status code is GE
then clear cargo secondary segment"]:::main N_16LookupCargobyCCN_Node0 -- Yes --> N_16LookupCargobyCCN_Node0_action N_16LookupCargobyCCN_Node0_action --> E_16LookupCargobyCCN S_16LookupCargobyCCN --> N_16LookupCargobyCCN_Node0 N_16LookupCargobyCCN_Node0 -- No --> E_16LookupCargobyCCN
File: GCX126R.cbl
GIVEN:
M10 segment has been processed and contains CCN in positions 1 through 25
WHEN:
Cargo lookup is performed
THEN:
Move M10 CCN positions 1 through 25 to cargo key value, set accept status to 'GE', call database with get hold unique function for cargo using cargo qualifier, perform cargo switch setting, if cargo found then set accept status to 'GE' and call database with get hold unique function for cargo secondary using A2 qualifier, if status code is 'GE' then clear cargo secondary segment
β Consolidated Acceptance Criteria
- The system performs a cargo lookup using the follower CCN → the cargo record is retrieved from GCSCCRT table using GHU operation AND cargo status switches are set to indicate if cargo was found, deleted, or has other status 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_16LookupCargobyFollowerCCN(["Start Step"])
E_16LookupCargobyFollowerCCN(["End Step"])
N_16LookupCargobyFollowerCCN_Node0{"The system performs a cargo lookup
using the follower CCN"}:::decision N_16LookupCargobyFollowerCCN_Node0_action["The cargo record is retrieved from
GCSCCRT table using GHU operation
AND cargo status switches are set to
indicate if cargo was found,
deleted, or has other status
conditions"]:::main N_16LookupCargobyFollowerCCN_Node0 -- Yes --> N_16LookupCargobyFollowerCCN_Node0_action N_16LookupCargobyFollowerCCN_Node0_action --> E_16LookupCargobyFollowerCCN S_16LookupCargobyFollowerCCN --> N_16LookupCargobyFollowerCCN_Node0 N_16LookupCargobyFollowerCCN_Node0 -- No --> E_16LookupCargobyFollowerCCN
using the follower CCN"}:::decision N_16LookupCargobyFollowerCCN_Node0_action["The cargo record is retrieved from
GCSCCRT table using GHU operation
AND cargo status switches are set to
indicate if cargo was found,
deleted, or has other status
conditions"]:::main N_16LookupCargobyFollowerCCN_Node0 -- Yes --> N_16LookupCargobyFollowerCCN_Node0_action N_16LookupCargobyFollowerCCN_Node0_action --> E_16LookupCargobyFollowerCCN S_16LookupCargobyFollowerCCN --> N_16LookupCargobyFollowerCCN_Node0 N_16LookupCargobyFollowerCCN_Node0 -- No --> E_16LookupCargobyFollowerCCN
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been retrieved from the array
WHEN:
The system performs a cargo lookup using the follower CCN
THEN:
- The cargo record is retrieved from gcsccrt table using ghu operation
- Cargo status switches are set to indicate if cargo was found, deleted, or has other status conditions
β Consolidated Acceptance Criteria
- Unknown cargo processing is performed → clear detail line 1, concatenate 'UNKNOWN EDI 350 RELEASE FROM CBSA ' with M10 CCN positions 1 through 25 into detail line 1, move 'THIS CCN WAS NOT FOUND.' to detail line 3, concatenate 'RELEASE NUMBER: ' with X4 CBSA release reference ID positions 1 through 15, ' DONE BY PORT ' with P4 port code positions 1 through 4 into detail line 4, set line count to 5, set message type to unknown, and perform email send preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_17HandleUnknownCargoRelease(["Start Step"])
E_17HandleUnknownCargoRelease(["End Step"])
N_17HandleUnknownCargoRelease_Node0{"Unknown cargo processing is
performed"}:::decision N_17HandleUnknownCargoRelease_Node0_action["Clear detail line 1, concatenate
UNKNOWN EDI 350 RELEASE FROM CBSA
with M10 CCN positions 1 through 25
into detail line 1, move THIS CCN
WAS NOT FOUND. to detail line 3,
concatenate RELEASE NUMBER: with X4
CBSA release reference ID positions
1 through 15, DONE BY PORT with P4
port code positions 1 through 4 into
detail line 4, set line count to 5,
set message type to unknown, and
perform email send preparation"]:::main N_17HandleUnknownCargoRelease_Node0 -- Yes --> N_17HandleUnknownCargoRelease_Node0_action N_17HandleUnknownCargoRelease_Node0_action --> E_17HandleUnknownCargoRelease S_17HandleUnknownCargoRelease --> N_17HandleUnknownCargoRelease_Node0 N_17HandleUnknownCargoRelease_Node0 -- No --> E_17HandleUnknownCargoRelease
performed"}:::decision N_17HandleUnknownCargoRelease_Node0_action["Clear detail line 1, concatenate
UNKNOWN EDI 350 RELEASE FROM CBSA
with M10 CCN positions 1 through 25
into detail line 1, move THIS CCN
WAS NOT FOUND. to detail line 3,
concatenate RELEASE NUMBER: with X4
CBSA release reference ID positions
1 through 15, DONE BY PORT with P4
port code positions 1 through 4 into
detail line 4, set line count to 5,
set message type to unknown, and
perform email send preparation"]:::main N_17HandleUnknownCargoRelease_Node0 -- Yes --> N_17HandleUnknownCargoRelease_Node0_action N_17HandleUnknownCargoRelease_Node0_action --> E_17HandleUnknownCargoRelease S_17HandleUnknownCargoRelease --> N_17HandleUnknownCargoRelease_Node0 N_17HandleUnknownCargoRelease_Node0 -- No --> E_17HandleUnknownCargoRelease
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo lookup has failed (cargo not found) and V9 notice reason indicates released
WHEN:
Unknown cargo processing is performed
THEN:
Clear detail line 1, concatenate 'UNKNOWN EDI 350 RELEASE FROM CBSA ' with M10 CCN positions 1 through 25 into detail line 1, move 'THIS CCN WAS NOT FOUND.' to detail line 3, concatenate 'RELEASE NUMBER: ' with X4 CBSA release reference ID positions 1 through 15, ' DONE BY PORT ' with P4 port code positions 1 through 4 into detail line 4, set line count to 5, set message type to unknown, and perform email send preparation
β Consolidated Acceptance Criteria
- Unknown cargo processing is performed → clear detail line 1, concatenate 'UNKNOWN EDI 350 DCON NOTICE ' with M10 CCN positions 1 through 25 into detail line 1, move 'THIS CCN WAS NOT FOUND.' to detail line 3, concatenate 'HOUSE BILL CLOSE NUMBER' with X4 CBSA release reference ID positions 1 through 25, ' DONE BY PORT ' with P4 port code positions 1 through 4 into detail line 4, set line count to 5, set message type to unknown, and perform email send preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_18HandleUnknownCargoDeconsolidation(["Start Step"])
E_18HandleUnknownCargoDeconsolidation(["End Step"])
N_18HandleUnknownCargoDeconsolidation_Node0{"Unknown cargo processing is
performed"}:::decision N_18HandleUnknownCargoDeconsolidation_Node0_action["Clear detail line 1, concatenate
UNKNOWN EDI 350 DCON NOTICE with M10
CCN positions 1 through 25 into
detail line 1, move THIS CCN WAS NOT
FOUND. to detail line 3, concatenate
HOUSE BILL CLOSE NUMBER with X4 CBSA
release reference ID positions 1
through 25, DONE BY PORT with P4
port code positions 1 through 4 into
detail line 4, set line count to 5,
set message type to unknown, and
perform email send preparation"]:::main N_18HandleUnknownCargoDeconsolidation_Node0 -- Yes --> N_18HandleUnknownCargoDeconsolidation_Node0_action N_18HandleUnknownCargoDeconsolidation_Node0_action --> E_18HandleUnknownCargoDeconsolidation S_18HandleUnknownCargoDeconsolidation --> N_18HandleUnknownCargoDeconsolidation_Node0 N_18HandleUnknownCargoDeconsolidation_Node0 -- No --> E_18HandleUnknownCargoDeconsolidation
performed"}:::decision N_18HandleUnknownCargoDeconsolidation_Node0_action["Clear detail line 1, concatenate
UNKNOWN EDI 350 DCON NOTICE with M10
CCN positions 1 through 25 into
detail line 1, move THIS CCN WAS NOT
FOUND. to detail line 3, concatenate
HOUSE BILL CLOSE NUMBER with X4 CBSA
release reference ID positions 1
through 25, DONE BY PORT with P4
port code positions 1 through 4 into
detail line 4, set line count to 5,
set message type to unknown, and
perform email send preparation"]:::main N_18HandleUnknownCargoDeconsolidation_Node0 -- Yes --> N_18HandleUnknownCargoDeconsolidation_Node0_action N_18HandleUnknownCargoDeconsolidation_Node0_action --> E_18HandleUnknownCargoDeconsolidation S_18HandleUnknownCargoDeconsolidation --> N_18HandleUnknownCargoDeconsolidation_Node0 N_18HandleUnknownCargoDeconsolidation_Node0 -- No --> E_18HandleUnknownCargoDeconsolidation
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo lookup has failed (cargo not found) and V9 notice reason indicates deconsolidation
WHEN:
Unknown cargo processing is performed
THEN:
Clear detail line 1, concatenate 'UNKNOWN EDI 350 DCON NOTICE ' with M10 CCN positions 1 through 25 into detail line 1, move 'THIS CCN WAS NOT FOUND.' to detail line 3, concatenate 'HOUSE BILL CLOSE NUMBER' with X4 CBSA release reference ID positions 1 through 25, ' DONE BY PORT ' with P4 port code positions 1 through 4 into detail line 4, set line count to 5, set message type to unknown, and perform email send preparation
β Consolidated Acceptance Criteria
- Unknown cargo processing is performed → clear detail line 1, concatenate 'UNKNOWN EDI 350 ENTRY FROM CBSA ' with M10 CCN positions 1 through 25 into detail line 1, move 'THIS CCN WAS NOT FOUND.' to detail line 3, concatenate 'NOTICE DOC TYPE: ' with M10 notice document type code, ' WITH REASON CODE ' with V9 notice reason code positions 1 through 4 into detail line 4, set line count to 5, set message type to unknown, and perform email send preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_19HandleUnknownCargoEntry(["Start Step"])
E_19HandleUnknownCargoEntry(["End Step"])
N_19HandleUnknownCargoEntry_Node0{"Unknown cargo processing is
performed"}:::decision N_19HandleUnknownCargoEntry_Node0_action["Clear detail line 1, concatenate
UNKNOWN EDI 350 ENTRY FROM CBSA with
M10 CCN positions 1 through 25 into
detail line 1, move THIS CCN WAS NOT
FOUND. to detail line 3, concatenate
NOTICE DOC TYPE: with M10 notice
document type code, WITH REASON CODE
with V9 notice reason code positions
1 through 4 into detail line 4, set
line count to 5, set message type to
unknown, and perform email send
preparation"]:::main N_19HandleUnknownCargoEntry_Node0 -- Yes --> N_19HandleUnknownCargoEntry_Node0_action N_19HandleUnknownCargoEntry_Node0_action --> E_19HandleUnknownCargoEntry S_19HandleUnknownCargoEntry --> N_19HandleUnknownCargoEntry_Node0 N_19HandleUnknownCargoEntry_Node0 -- No --> E_19HandleUnknownCargoEntry
performed"}:::decision N_19HandleUnknownCargoEntry_Node0_action["Clear detail line 1, concatenate
UNKNOWN EDI 350 ENTRY FROM CBSA with
M10 CCN positions 1 through 25 into
detail line 1, move THIS CCN WAS NOT
FOUND. to detail line 3, concatenate
NOTICE DOC TYPE: with M10 notice
document type code, WITH REASON CODE
with V9 notice reason code positions
1 through 4 into detail line 4, set
line count to 5, set message type to
unknown, and perform email send
preparation"]:::main N_19HandleUnknownCargoEntry_Node0 -- Yes --> N_19HandleUnknownCargoEntry_Node0_action N_19HandleUnknownCargoEntry_Node0_action --> E_19HandleUnknownCargoEntry S_19HandleUnknownCargoEntry --> N_19HandleUnknownCargoEntry_Node0 N_19HandleUnknownCargoEntry_Node0 -- No --> E_19HandleUnknownCargoEntry
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo lookup has failed (cargo not found) and V9 notice reason is not released or deconsolidation
WHEN:
Unknown cargo processing is performed
THEN:
Clear detail line 1, concatenate 'UNKNOWN EDI 350 ENTRY FROM CBSA ' with M10 CCN positions 1 through 25 into detail line 1, move 'THIS CCN WAS NOT FOUND.' to detail line 3, concatenate 'NOTICE DOC TYPE: ' with M10 notice document type code, ' WITH REASON CODE ' with V9 notice reason code positions 1 through 4 into detail line 4, set line count to 5, set message type to unknown, and perform email send preparation
β Consolidated Acceptance Criteria
- Cargo processing is performed → clear info message, move 'EDI 350: DOC NOT MATCHED ' to info message, and perform log cargo info 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_20ProcessDocumentNotMatched(["Start Step"])
E_20ProcessDocumentNotMatched(["End Step"])
N_20ProcessDocumentNotMatched_Node0{"Cargo processing is performed"}:::decision
N_20ProcessDocumentNotMatched_Node0_action["Clear info message, move EDI 350:
DOC NOT MATCHED to info message, and
perform log cargo info message"]:::main N_20ProcessDocumentNotMatched_Node0 -- Yes --> N_20ProcessDocumentNotMatched_Node0_action N_20ProcessDocumentNotMatched_Node0_action --> E_20ProcessDocumentNotMatched S_20ProcessDocumentNotMatched --> N_20ProcessDocumentNotMatched_Node0 N_20ProcessDocumentNotMatched_Node0 -- No --> E_20ProcessDocumentNotMatched
DOC NOT MATCHED to info message, and
perform log cargo info message"]:::main N_20ProcessDocumentNotMatched_Node0 -- Yes --> N_20ProcessDocumentNotMatched_Node0_action N_20ProcessDocumentNotMatched_Node0_action --> E_20ProcessDocumentNotMatched S_20ProcessDocumentNotMatched --> N_20ProcessDocumentNotMatched_Node0 N_20ProcessDocumentNotMatched_Node0 -- No --> E_20ProcessDocumentNotMatched
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has been found and V9 notice reason indicates not matched
WHEN:
Cargo processing is performed
THEN:
Clear info message, move 'EDI 350: DOC NOT MATCHED ' to info message, and perform log cargo info message
β Consolidated Acceptance Criteria
- Cargo processing is performed → clear info message, move 'EDI 350: CARGO COMPLETE MESSAGE ' to info message, and perform log cargo info 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_21ProcessCargoComplete(["Start Step"])
E_21ProcessCargoComplete(["End Step"])
N_21ProcessCargoComplete_Node0{"Cargo processing is performed"}:::decision
N_21ProcessCargoComplete_Node0_action["Clear info message, move EDI 350:
CARGO COMPLETE MESSAGE to info
message, and perform log cargo info
message"]:::main N_21ProcessCargoComplete_Node0 -- Yes --> N_21ProcessCargoComplete_Node0_action N_21ProcessCargoComplete_Node0_action --> E_21ProcessCargoComplete S_21ProcessCargoComplete --> N_21ProcessCargoComplete_Node0 N_21ProcessCargoComplete_Node0 -- No --> E_21ProcessCargoComplete
CARGO COMPLETE MESSAGE to info
message, and perform log cargo info
message"]:::main N_21ProcessCargoComplete_Node0 -- Yes --> N_21ProcessCargoComplete_Node0_action N_21ProcessCargoComplete_Node0_action --> E_21ProcessCargoComplete S_21ProcessCargoComplete --> N_21ProcessCargoComplete_Node0 N_21ProcessCargoComplete_Node0 -- No --> E_21ProcessCargoComplete
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates cargo complete
WHEN:
Cargo processing is performed
THEN:
Clear info message, move 'EDI 350: CARGO COMPLETE MESSAGE ' to info message, and perform log cargo info message
β Consolidated Acceptance Criteria
- Cargo processing is performed → if X4 CBSA release reference ID positions 1 through 15 not equal cargo broker entry positions 1 through 15 or X4 CBSA release reference ID positions 1 through 14 not equal cargo customs transaction number positions 1 through 14, and X4 CBSA release reference ID is not spaces, then move X4 CBSA release reference ID positions 1 through 15 to cargo broker entry, move X4 CBSA release reference ID positions 1 through 14 to cargo customs transaction number, move machine date to cargo broker date, move machine time positions 1 through 4 to cargo broker time, clear info message, concatenate 'EDI 350: DOC PKG COMPLETE : ' with X4 CBSA release reference ID positions 1 through 15 into info message, perform log cargo info message, and perform cargo replace
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_22ProcessDocumentPackageComplete(["Start Step"])
E_22ProcessDocumentPackageComplete(["End Step"])
N_22ProcessDocumentPackageComplete_Node0{"Cargo processing is performed"}:::decision
N_22ProcessDocumentPackageComplete_Node0_action["If X4 CBSA release reference ID
positions 1 through 15 not equal
cargo broker entry positions 1
through 15 or X4 CBSA release
reference ID positions 1 through 14
not equal cargo customs transaction
number positions 1 through 14, and
X4 CBSA release reference ID is not
spaces, then move X4 CBSA release
reference ID positions 1 through 15
to cargo broker entry, move X4 CBSA
release reference ID positions 1
through 14 to cargo customs
transaction number, move machine
date to cargo broker date, move
machine time positions 1 through 4
to cargo broker time, clear info
message, concatenate EDI 350: DOC
PKG COMPLETE : with X4 CBSA release
reference ID positions 1 through 15
into info message, perform log cargo
info message, and perform cargo
replace"]:::main N_22ProcessDocumentPackageComplete_Node0 -- Yes --> N_22ProcessDocumentPackageComplete_Node0_action N_22ProcessDocumentPackageComplete_Node0_action --> E_22ProcessDocumentPackageComplete S_22ProcessDocumentPackageComplete --> N_22ProcessDocumentPackageComplete_Node0 N_22ProcessDocumentPackageComplete_Node0 -- No --> E_22ProcessDocumentPackageComplete
positions 1 through 15 not equal
cargo broker entry positions 1
through 15 or X4 CBSA release
reference ID positions 1 through 14
not equal cargo customs transaction
number positions 1 through 14, and
X4 CBSA release reference ID is not
spaces, then move X4 CBSA release
reference ID positions 1 through 15
to cargo broker entry, move X4 CBSA
release reference ID positions 1
through 14 to cargo customs
transaction number, move machine
date to cargo broker date, move
machine time positions 1 through 4
to cargo broker time, clear info
message, concatenate EDI 350: DOC
PKG COMPLETE : with X4 CBSA release
reference ID positions 1 through 15
into info message, perform log cargo
info message, and perform cargo
replace"]:::main N_22ProcessDocumentPackageComplete_Node0 -- Yes --> N_22ProcessDocumentPackageComplete_Node0_action N_22ProcessDocumentPackageComplete_Node0_action --> E_22ProcessDocumentPackageComplete S_22ProcessDocumentPackageComplete --> N_22ProcessDocumentPackageComplete_Node0 N_22ProcessDocumentPackageComplete_Node0 -- No --> E_22ProcessDocumentPackageComplete
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates document package complete
WHEN:
Cargo processing is performed
THEN:
If X4 CBSA release reference ID positions 1 through 15 not equal cargo broker entry positions 1 through 15 or X4 CBSA release reference ID positions 1 through 14 not equal cargo customs transaction number positions 1 through 14, and X4 CBSA release reference ID is not spaces, then move X4 CBSA release reference ID positions 1 through 15 to cargo broker entry, move X4 CBSA release reference ID positions 1 through 14 to cargo customs transaction number, move machine date to cargo broker date, move machine time positions 1 through 4 to cargo broker time, clear info message, concatenate 'EDI 350: DOC PKG COMPLETE : ' with X4 CBSA release reference ID positions 1 through 15 into info message, perform log cargo info message, and perform cargo replace
β Consolidated Acceptance Criteria
- Cargo processing is performed → clear info message, if X4 release document type code position 1 equals 'R' then concatenate 'EDI 350: DOC NOT ON FILE FOR RELEASE ' with X4 CBSA release reference ID positions 1 through 15 into info message and perform log cargo info message, else concatenate 'EDI 350:DOC NOT ON FILE H-BILL CLOSE ' with X4 CBSA release reference ID positions 1 through 25 into info message and perform log cargo info 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_23ProcessDocumentNotOnFile(["Start Step"])
E_23ProcessDocumentNotOnFile(["End Step"])
N_23ProcessDocumentNotOnFile_Node0{"Cargo processing is performed"}:::decision
N_23ProcessDocumentNotOnFile_Node0_action["Clear info message, if X4 release
document type code position 1 equals
R then concatenate EDI 350: DOC NOT
ON FILE FOR RELEASE with X4 CBSA
release reference ID positions 1
through 15 into info message and
perform log cargo info message, else
concatenate EDI 350:DOC NOT ON FILE
H-BILL CLOSE with X4 CBSA release
reference ID positions 1 through 25
into info message and perform log
cargo info message"]:::main N_23ProcessDocumentNotOnFile_Node0 -- Yes --> N_23ProcessDocumentNotOnFile_Node0_action N_23ProcessDocumentNotOnFile_Node0_action --> E_23ProcessDocumentNotOnFile S_23ProcessDocumentNotOnFile --> N_23ProcessDocumentNotOnFile_Node0 N_23ProcessDocumentNotOnFile_Node0 -- No --> E_23ProcessDocumentNotOnFile
document type code position 1 equals
R then concatenate EDI 350: DOC NOT
ON FILE FOR RELEASE with X4 CBSA
release reference ID positions 1
through 15 into info message and
perform log cargo info message, else
concatenate EDI 350:DOC NOT ON FILE
H-BILL CLOSE with X4 CBSA release
reference ID positions 1 through 25
into info message and perform log
cargo info message"]:::main N_23ProcessDocumentNotOnFile_Node0 -- Yes --> N_23ProcessDocumentNotOnFile_Node0_action N_23ProcessDocumentNotOnFile_Node0_action --> E_23ProcessDocumentNotOnFile S_23ProcessDocumentNotOnFile --> N_23ProcessDocumentNotOnFile_Node0 N_23ProcessDocumentNotOnFile_Node0 -- No --> E_23ProcessDocumentNotOnFile
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has been found and V9 notice reason indicates document not on file
WHEN:
Cargo processing is performed
THEN:
- Clear info message, if x4 release document type code position 1 equals 'r' then concatenate 'edi 350: doc not on file for release ' with x4 cbsa release reference id positions 1 through 15 into info message
- Perform log cargo info message, else concatenate 'edi 350:doc not on file h-bill close ' with x4 cbsa release reference id positions 1 through 25 into info message
- Perform log cargo info message
β Consolidated Acceptance Criteria
- Cargo processing is performed → clear info message, concatenate 'EDI 350: CARGO REPORTED ' into info message, and perform log cargo info 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_24ProcessCargoReported(["Start Step"])
E_24ProcessCargoReported(["End Step"])
N_24ProcessCargoReported_Node0{"Cargo processing is performed"}:::decision
N_24ProcessCargoReported_Node0_action["Clear info message, concatenate EDI
350: CARGO REPORTED into info
message, and perform log cargo info
message"]:::main N_24ProcessCargoReported_Node0 -- Yes --> N_24ProcessCargoReported_Node0_action N_24ProcessCargoReported_Node0_action --> E_24ProcessCargoReported S_24ProcessCargoReported --> N_24ProcessCargoReported_Node0 N_24ProcessCargoReported_Node0 -- No --> E_24ProcessCargoReported
350: CARGO REPORTED into info
message, and perform log cargo info
message"]:::main N_24ProcessCargoReported_Node0 -- Yes --> N_24ProcessCargoReported_Node0_action N_24ProcessCargoReported_Node0_action --> E_24ProcessCargoReported S_24ProcessCargoReported --> N_24ProcessCargoReported_Node0 N_24ProcessCargoReported_Node0 -- No --> E_24ProcessCargoReported
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates reported
WHEN:
Cargo processing is performed
THEN:
Clear info message, concatenate 'EDI 350: CARGO REPORTED ' into info message, and perform log cargo info message
β Consolidated Acceptance Criteria
- Cargo processing is performed → clear info message, concatenate 'EDI 350: CARGO ARRIVED AT PORT ' with P4 port code positions 1 through 4 into info message, and perform log cargo info 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_25ProcessCargoArrived(["Start Step"])
E_25ProcessCargoArrived(["End Step"])
N_25ProcessCargoArrived_Node0{"Cargo processing is performed"}:::decision
N_25ProcessCargoArrived_Node0_action["Clear info message, concatenate EDI
350: CARGO ARRIVED AT PORT with P4
port code positions 1 through 4 into
info message, and perform log cargo
info message"]:::main N_25ProcessCargoArrived_Node0 -- Yes --> N_25ProcessCargoArrived_Node0_action N_25ProcessCargoArrived_Node0_action --> E_25ProcessCargoArrived S_25ProcessCargoArrived --> N_25ProcessCargoArrived_Node0 N_25ProcessCargoArrived_Node0 -- No --> E_25ProcessCargoArrived
350: CARGO ARRIVED AT PORT with P4
port code positions 1 through 4 into
info message, and perform log cargo
info message"]:::main N_25ProcessCargoArrived_Node0 -- Yes --> N_25ProcessCargoArrived_Node0_action N_25ProcessCargoArrived_Node0_action --> E_25ProcessCargoArrived S_25ProcessCargoArrived --> N_25ProcessCargoArrived_Node0 N_25ProcessCargoArrived_Node0 -- No --> E_25ProcessCargoArrived
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates arrived
WHEN:
Cargo processing is performed
THEN:
Clear info message, concatenate 'EDI 350: CARGO ARRIVED AT PORT ' with P4 port code positions 1 through 4 into info message, and perform log cargo info message
β Consolidated Acceptance Criteria
- Cargo processing is performed → perform set release information, clear info message, concatenate 'EDI 350: RELEASE : ' with X4 CBSA release reference ID positions 1 through 15, ' AT PORT ' with P4 port code positions 1 through 4 into info message, concatenate X4 CBSA release reference ID positions 1 through 15, '/' with P4 port code positions 1 through 4 into cargo release reason, perform log cargo info message, perform process US manifest, move cargo release date to hold date, move cargo release time to hold time, perform cargo replace, if cargo is master manifest then save cargo segment, move cargo CCN key to B0 CCN key, set follower not end of database flag, perform process multi follower manifests, restore cargo segment, move cargo waybill key to save waybill index, and move cargo equipment car to current car ID 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_26ProcessCargoRelease(["Start Step"])
E_26ProcessCargoRelease(["End Step"])
N_26ProcessCargoRelease_Node0{"Cargo processing is performed"}:::decision
N_26ProcessCargoRelease_Node0_action["Perform set release information,
clear info message, concatenate EDI
350: RELEASE : with X4 CBSA release
reference ID positions 1 through 15,
AT PORT with P4 port code positions
1 through 4 into info message,
concatenate X4 CBSA release
reference ID positions 1 through 15,
with P4 port code positions 1
through 4 into cargo release reason,
perform log cargo info message,
perform process US manifest, move
cargo release date to hold date,
move cargo release time to hold
time, perform cargo replace, if
cargo is master manifest then save
cargo segment, move cargo CCN key to
B0 CCN key, set follower not end of
database flag, perform process multi
follower manifests, restore cargo
segment, move cargo waybill key to
save waybill index, and move cargo
equipment car to current car ID key"]:::main N_26ProcessCargoRelease_Node0 -- Yes --> N_26ProcessCargoRelease_Node0_action N_26ProcessCargoRelease_Node0_action --> E_26ProcessCargoRelease S_26ProcessCargoRelease --> N_26ProcessCargoRelease_Node0 N_26ProcessCargoRelease_Node0 -- No --> E_26ProcessCargoRelease
clear info message, concatenate EDI
350: RELEASE : with X4 CBSA release
reference ID positions 1 through 15,
AT PORT with P4 port code positions
1 through 4 into info message,
concatenate X4 CBSA release
reference ID positions 1 through 15,
with P4 port code positions 1
through 4 into cargo release reason,
perform log cargo info message,
perform process US manifest, move
cargo release date to hold date,
move cargo release time to hold
time, perform cargo replace, if
cargo is master manifest then save
cargo segment, move cargo CCN key to
B0 CCN key, set follower not end of
database flag, perform process multi
follower manifests, restore cargo
segment, move cargo waybill key to
save waybill index, and move cargo
equipment car to current car ID key"]:::main N_26ProcessCargoRelease_Node0 -- Yes --> N_26ProcessCargoRelease_Node0_action N_26ProcessCargoRelease_Node0_action --> E_26ProcessCargoRelease S_26ProcessCargoRelease --> N_26ProcessCargoRelease_Node0 N_26ProcessCargoRelease_Node0 -- No --> E_26ProcessCargoRelease
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates released
WHEN:
Cargo processing is performed
THEN:
Perform set release information, clear info message, concatenate 'EDI 350: RELEASE : ' with X4 CBSA release reference ID positions 1 through 15, ' AT PORT ' with P4 port code positions 1 through 4 into info message, concatenate X4 CBSA release reference ID positions 1 through 15, '/' with P4 port code positions 1 through 4 into cargo release reason, perform log cargo info message, perform process US manifest, move cargo release date to hold date, move cargo release time to hold time, perform cargo replace, if cargo is master manifest then save cargo segment, move cargo CCN key to B0 CCN key, set follower not end of database flag, perform process multi follower manifests, restore cargo segment, move cargo waybill key to save waybill index, and move cargo equipment car to current car ID key
β Consolidated Acceptance Criteria
- Cargo processing is performed → if cargo CSA indicator is on then move 'EDI 350: ACCEPTED - CSA' to info message, perform log cargo info message, set cargo status to CSA delivery, set cargo CSA authorization to deliver received flag to true, and perform cargo replace, else move 'EDI 350: NOT ACCEPTED - NON-CSA' to info message and perform log cargo info message, then perform process US 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_27ProcessAuthorizedtoDeliver(["Start Step"])
E_27ProcessAuthorizedtoDeliver(["End Step"])
N_27ProcessAuthorizedtoDeliver_Node0{"Cargo processing is performed"}:::decision
N_27ProcessAuthorizedtoDeliver_Node0_action["If cargo CSA indicator is on then
move EDI 350: ACCEPTED - CSA to info
message, perform log cargo info
message, set cargo status to CSA
delivery, set cargo CSA
authorization to deliver received
flag to true, and perform cargo
replace, else move EDI 350: NOT
ACCEPTED - NON-CSA to info message
and perform log cargo info message,
then perform process US manifest"]:::main N_27ProcessAuthorizedtoDeliver_Node0 -- Yes --> N_27ProcessAuthorizedtoDeliver_Node0_action N_27ProcessAuthorizedtoDeliver_Node0_action --> E_27ProcessAuthorizedtoDeliver S_27ProcessAuthorizedtoDeliver --> N_27ProcessAuthorizedtoDeliver_Node0 N_27ProcessAuthorizedtoDeliver_Node0 -- No --> E_27ProcessAuthorizedtoDeliver
move EDI 350: ACCEPTED - CSA to info
message, perform log cargo info
message, set cargo status to CSA
delivery, set cargo CSA
authorization to deliver received
flag to true, and perform cargo
replace, else move EDI 350: NOT
ACCEPTED - NON-CSA to info message
and perform log cargo info message,
then perform process US manifest"]:::main N_27ProcessAuthorizedtoDeliver_Node0 -- Yes --> N_27ProcessAuthorizedtoDeliver_Node0_action N_27ProcessAuthorizedtoDeliver_Node0_action --> E_27ProcessAuthorizedtoDeliver S_27ProcessAuthorizedtoDeliver --> N_27ProcessAuthorizedtoDeliver_Node0 N_27ProcessAuthorizedtoDeliver_Node0 -- No --> E_27ProcessAuthorizedtoDeliver
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates authorized to deliver
WHEN:
Cargo processing is performed
THEN:
- If cargo csa indicator is on then move 'edi 350: accepted - csa' to info message, perform log cargo info message, set cargo status to csa delivery, set cargo csa authorization to deliver received flag to true, and perform cargo replace, else move 'edi 350: not accepted - non-csa' to info message
- Perform log cargo info message, then perform process us manifest
β Consolidated Acceptance Criteria
- Cargo processing is performed → clear info message, move 'EDI 350: GOODS HELD FOR EXAMINATION' to info message, perform log cargo info message, set cargo status to hold, perform cargo replace, if cargo CCN key positions 1 through 4 equal '6105' then perform Merlin prepare hold 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_28ProcessCargoHold(["Start Step"])
E_28ProcessCargoHold(["End Step"])
N_28ProcessCargoHold_Node0{"Cargo processing is performed"}:::decision
N_28ProcessCargoHold_Node0_action["Clear info message, move EDI 350:
GOODS HELD FOR EXAMINATION to info
message, perform log cargo info
message, set cargo status to hold,
perform cargo replace, if cargo CCN
key positions 1 through 4 equal 6105
then perform Merlin prepare hold
notification"]:::main N_28ProcessCargoHold_Node0 -- Yes --> N_28ProcessCargoHold_Node0_action N_28ProcessCargoHold_Node0_action --> E_28ProcessCargoHold S_28ProcessCargoHold --> N_28ProcessCargoHold_Node0 N_28ProcessCargoHold_Node0 -- No --> E_28ProcessCargoHold
GOODS HELD FOR EXAMINATION to info
message, perform log cargo info
message, set cargo status to hold,
perform cargo replace, if cargo CCN
key positions 1 through 4 equal 6105
then perform Merlin prepare hold
notification"]:::main N_28ProcessCargoHold_Node0 -- Yes --> N_28ProcessCargoHold_Node0_action N_28ProcessCargoHold_Node0_action --> E_28ProcessCargoHold S_28ProcessCargoHold --> N_28ProcessCargoHold_Node0 N_28ProcessCargoHold_Node0 -- No --> E_28ProcessCargoHold
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates held
WHEN:
Cargo processing is performed
THEN:
Clear info message, move 'EDI 350: GOODS HELD FOR EXAMINATION' to info message, perform log cargo info message, set cargo status to hold, perform cargo replace, if cargo CCN key positions 1 through 4 equal '6105' then perform Merlin prepare hold notification
β Consolidated Acceptance Criteria
- Cargo processing is performed → perform set release information, clear info message, concatenate 'EDI 350: RELEASE VIA DECON AT PORT ' with P4 port code positions 1 through 4 into info message, concatenate 'DECONSOLIDATION AT ' with P4 port code positions 1 through 4 into cargo release reason, perform log cargo info message, perform process US manifest, move cargo release date to hold date, move cargo release time to hold time, perform cargo replace, if cargo is master manifest then save cargo segment, move cargo CCN key to B0 CCN key, set follower not end of database flag, perform process multi follower manifests, restore cargo segment, move cargo waybill key to save waybill index, and move cargo equipment car to current car ID 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_29ProcessDeconsolidationRelease(["Start Step"])
E_29ProcessDeconsolidationRelease(["End Step"])
N_29ProcessDeconsolidationRelease_Node0{"Cargo processing is performed"}:::decision
N_29ProcessDeconsolidationRelease_Node0_action["Perform set release information,
clear info message, concatenate EDI
350: RELEASE VIA DECON AT PORT with
P4 port code positions 1 through 4
into info message, concatenate
DECONSOLIDATION AT with P4 port code
positions 1 through 4 into cargo
release reason, perform log cargo
info message, perform process US
manifest, move cargo release date to
hold date, move cargo release time
to hold time, perform cargo replace,
if cargo is master manifest then
save cargo segment, move cargo CCN
key to B0 CCN key, set follower not
end of database flag, perform
process multi follower manifests,
restore cargo segment, move cargo
waybill key to save waybill index,
and move cargo equipment car to
current car ID key"]:::main N_29ProcessDeconsolidationRelease_Node0 -- Yes --> N_29ProcessDeconsolidationRelease_Node0_action N_29ProcessDeconsolidationRelease_Node0_action --> E_29ProcessDeconsolidationRelease S_29ProcessDeconsolidationRelease --> N_29ProcessDeconsolidationRelease_Node0 N_29ProcessDeconsolidationRelease_Node0 -- No --> E_29ProcessDeconsolidationRelease
clear info message, concatenate EDI
350: RELEASE VIA DECON AT PORT with
P4 port code positions 1 through 4
into info message, concatenate
DECONSOLIDATION AT with P4 port code
positions 1 through 4 into cargo
release reason, perform log cargo
info message, perform process US
manifest, move cargo release date to
hold date, move cargo release time
to hold time, perform cargo replace,
if cargo is master manifest then
save cargo segment, move cargo CCN
key to B0 CCN key, set follower not
end of database flag, perform
process multi follower manifests,
restore cargo segment, move cargo
waybill key to save waybill index,
and move cargo equipment car to
current car ID key"]:::main N_29ProcessDeconsolidationRelease_Node0 -- Yes --> N_29ProcessDeconsolidationRelease_Node0_action N_29ProcessDeconsolidationRelease_Node0_action --> E_29ProcessDeconsolidationRelease S_29ProcessDeconsolidationRelease --> N_29ProcessDeconsolidationRelease_Node0 N_29ProcessDeconsolidationRelease_Node0 -- No --> E_29ProcessDeconsolidationRelease
File: GCX126R.cbl
GIVEN:
Cargo has been found and V9 notice reason indicates deconsolidation
WHEN:
Cargo processing is performed
THEN:
Perform set release information, clear info message, concatenate 'EDI 350: RELEASE VIA DECON AT PORT ' with P4 port code positions 1 through 4 into info message, concatenate 'DECONSOLIDATION AT ' with P4 port code positions 1 through 4 into cargo release reason, perform log cargo info message, perform process US manifest, move cargo release date to hold date, move cargo release time to hold time, perform cargo replace, if cargo is master manifest then save cargo segment, move cargo CCN key to B0 CCN key, set follower not end of database flag, perform process multi follower manifests, restore cargo segment, move cargo waybill key to save waybill index, and move cargo equipment car to current car ID key
β Consolidated Acceptance Criteria
- Release information setting is performed → clear cargo destination station number index, clear cargo destination station number for index, move machine date to cargo release date, move machine time to cargo release time, move ACF2 user ID to cargo release by, move 'RELEASED' to cargo current status, move 'R' to cargo release status, move 'A' to cargo release type, clear cargo release reason, clear cargo error or release status index, and clear cargo 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_30SetReleaseInformation(["Start Step"])
E_30SetReleaseInformation(["End Step"])
N_30SetReleaseInformation_Node0{"Release information setting is
performed"}:::decision N_30SetReleaseInformation_Node0_action["Clear cargo destination station
number index, clear cargo
destination station number for
index, move machine date to cargo
release date, move machine time to
cargo release time, move ACF2 user
ID to cargo release by, move
RELEASED to cargo current status,
move R to cargo release status, move
A to cargo release type, clear cargo
release reason, clear cargo error or
release status index, and clear
cargo error status"]:::main N_30SetReleaseInformation_Node0 -- Yes --> N_30SetReleaseInformation_Node0_action N_30SetReleaseInformation_Node0_action --> E_30SetReleaseInformation S_30SetReleaseInformation --> N_30SetReleaseInformation_Node0 N_30SetReleaseInformation_Node0 -- No --> E_30SetReleaseInformation
performed"}:::decision N_30SetReleaseInformation_Node0_action["Clear cargo destination station
number index, clear cargo
destination station number for
index, move machine date to cargo
release date, move machine time to
cargo release time, move ACF2 user
ID to cargo release by, move
RELEASED to cargo current status,
move R to cargo release status, move
A to cargo release type, clear cargo
release reason, clear cargo error or
release status index, and clear
cargo error status"]:::main N_30SetReleaseInformation_Node0 -- Yes --> N_30SetReleaseInformation_Node0_action N_30SetReleaseInformation_Node0_action --> E_30SetReleaseInformation S_30SetReleaseInformation --> N_30SetReleaseInformation_Node0 N_30SetReleaseInformation_Node0 -- No --> E_30SetReleaseInformation
File: GCX126R.cbl
GIVEN:
Cargo is being released or deconsolidated
WHEN:
Release information setting is performed
THEN:
Clear cargo destination station number index, clear cargo destination station number for index, move machine date to cargo release date, move machine time to cargo release time, move ACF2 user ID to cargo release by, move 'RELEASED' to cargo current status, move 'R' to cargo release status, move 'A' to cargo release type, clear cargo release reason, clear cargo error or release status index, and clear cargo error status
β Consolidated Acceptance Criteria
- The system processes the deconsolidation release → clear GCCC-DESTIN-STN-NUM-INDEX and GCCC-DESTIN-STN-NUM-FOR-INDEX to spaces, set GCCC-RELEASE-DATE to CC-MACHINE-DATE-X, set GCCC-RELEASE-TIME to CC-MACHINE-TIME-X, set GCCC-RELEASE-BY to CC-ACF2-USERID, set GCCC-CURRENT-STATUS to 'RELEASED', set GCCC-RELEASE-STATUS to 'R', set GCCC-RELEASE-TYPE to 'A', clear GCCC-RELEASE-REASON to spaces, clear GCCC-ERR-OR-REL-STATUS-INDEX to spaces, and clear GCCC-ERROR-STATUS 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_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields(["Start Step"])
E_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields(["End Step"])
N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0{"The system processes the
deconsolidation release"}:::decision N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action["Clear GCCC-DESTIN-STN-NUM-INDEX and
GCCC-DESTIN-STN-NUM-FOR-INDEX to
spaces, set GCCC-RELEASE-DATE to
CC-MACHINE-DATE-X, set
GCCC-RELEASE-TIME to
CC-MACHINE-TIME-X, set
GCCC-RELEASE-BY to CC-ACF2-USERID,
set GCCC-CURRENT-STATUS to RELEASED
, set GCCC-RELEASE-STATUS to R , set
GCCC-RELEASE-TYPE to A , clear
GCCC-RELEASE-REASON to spaces, clear
GCCC-ERR-OR-REL-STATUS-INDEX to
spaces, and clear GCCC-ERROR-STATUS
to spaces"]:::main N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- Yes --> N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action --> E_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields S_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields --> N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- No --> E_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields
deconsolidation release"}:::decision N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action["Clear GCCC-DESTIN-STN-NUM-INDEX and
GCCC-DESTIN-STN-NUM-FOR-INDEX to
spaces, set GCCC-RELEASE-DATE to
CC-MACHINE-DATE-X, set
GCCC-RELEASE-TIME to
CC-MACHINE-TIME-X, set
GCCC-RELEASE-BY to CC-ACF2-USERID,
set GCCC-CURRENT-STATUS to RELEASED
, set GCCC-RELEASE-STATUS to R , set
GCCC-RELEASE-TYPE to A , clear
GCCC-RELEASE-REASON to spaces, clear
GCCC-ERR-OR-REL-STATUS-INDEX to
spaces, and clear GCCC-ERROR-STATUS
to spaces"]:::main N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- Yes --> N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action --> E_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields S_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields --> N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 N_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- No --> E_30SetReleaseInformationCleardestinationstationSetreleasedatetimeSetreleasebyuserSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields
File: GCX126R.cbl
GIVEN:
A cargo record exists and V9 notice reason code indicates deconsolidation
WHEN:
The system processes the deconsolidation release
THEN:
- Clear gccc-destin-stn-num-index
- Gccc-destin-stn-num-for-index to spaces, set gccc-release-date to cc-machine-date-x, set gccc-release-time to cc-machine-time-x, set gccc-release-by to cc-acf2-userid, set gccc-current-status to 'released', set gccc-release-status to 'r', set gccc-release-type to 'a', clear gccc-release-reason to spaces, clear gccc-err-or-rel-status-index to spaces, and clear gccc-error-status to spaces
β Consolidated Acceptance Criteria
- US manifest processing is performed → set US manifest not found flag, set not end of file flag, perform get unique US cargo by car and waybill, perform get next US cargo by car and waybill until US manifest found or end of file, if end of file then exit, else move log information, concatenate machine century with machine date into log date, move machine time to log time, move log use input message to action code, move US cargo CCN key to train or US CCN field, set cargo type to US cargo, concatenate 'CDN CCN RLSED BY EDI 350: ' with cargo CCN key into message, and perform spawn 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_31ProcessAssociatedUSManifest(["Start Step"])
E_31ProcessAssociatedUSManifest(["End Step"])
N_31ProcessAssociatedUSManifest_Node0{"US manifest processing is performed"}:::decision
N_31ProcessAssociatedUSManifest_Node0_action["Set US manifest not found flag, set
not end of file flag, perform get
unique US cargo by car and waybill,
perform get next US cargo by car and
waybill until US manifest found or
end of file, if end of file then
exit, else move log information,
concatenate machine century with
machine date into log date, move
machine time to log time, move log
use input message to action code,
move US cargo CCN key to train or US
CCN field, set cargo type to US
cargo, concatenate CDN CCN RLSED BY
EDI 350: with cargo CCN key into
message, and perform spawn log entry"]:::main N_31ProcessAssociatedUSManifest_Node0 -- Yes --> N_31ProcessAssociatedUSManifest_Node0_action N_31ProcessAssociatedUSManifest_Node0_action --> E_31ProcessAssociatedUSManifest S_31ProcessAssociatedUSManifest --> N_31ProcessAssociatedUSManifest_Node0 N_31ProcessAssociatedUSManifest_Node0 -- No --> E_31ProcessAssociatedUSManifest
not end of file flag, perform get
unique US cargo by car and waybill,
perform get next US cargo by car and
waybill until US manifest found or
end of file, if end of file then
exit, else move log information,
concatenate machine century with
machine date into log date, move
machine time to log time, move log
use input message to action code,
move US cargo CCN key to train or US
CCN field, set cargo type to US
cargo, concatenate CDN CCN RLSED BY
EDI 350: with cargo CCN key into
message, and perform spawn log entry"]:::main N_31ProcessAssociatedUSManifest_Node0 -- Yes --> N_31ProcessAssociatedUSManifest_Node0_action N_31ProcessAssociatedUSManifest_Node0_action --> E_31ProcessAssociatedUSManifest S_31ProcessAssociatedUSManifest --> N_31ProcessAssociatedUSManifest_Node0 N_31ProcessAssociatedUSManifest_Node0 -- No --> E_31ProcessAssociatedUSManifest
File: GCX126R.cbl
GIVEN:
Canadian cargo has been released or authorized to deliver
WHEN:
US manifest processing is performed
THEN:
- Set us manifest not found flag, set not end of file flag, perform get unique us cargo by car
- Waybill, perform get next us cargo by car
- Waybill until us manifest found or end of file, if end of file then exit, else move log information, concatenate machine century with machine date into log date, move machine time to log time, move log use input message to action code, move us cargo ccn key to train or us ccn field, set cargo type to us cargo, concatenate 'cdn ccn rlsed by edi 350: ' with cargo ccn key into message, and perform spawn log entry
β Consolidated Acceptance Criteria
- The system processes the associated US manifest → perform Z3300-GU-US-CARGO-BY-CARWB to retrieve US cargo by car ID and waybill, then perform Z3350-GN-US-CARGO-BY-CARWB until WS-US-MFST-FOUND is true or WS-EOF is true; if US manifest found and not EOF, perform Z200-MOVE-LOG-INFORMATION, construct GCX105-DATE from CC-MACHINE-CENTURY and CC-MACHINE-DATE-X, set GCX105-TIME to CC-MACHINE-TIME-X, set GCX105-ACTION-CODE to LOG-USE-INPUT-MESSAGE, set GCX105-TRAIN-OR-US-CCN to GCUSRT-US-CCN-KEY, set GCX105-US-CARGO to true, construct GCX105-MESSAGE as 'CDN CCN RLSED BY EDI 350: ' concatenated with GCCC-CCN-KEY, and perform Z300-SPAWN-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_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN(["Start Step"])
E_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN(["End Step"])
N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0{"The system processes the associated
US manifest"}:::decision N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0_action["Perform Z3300-GU-US-CARGO-BY-CARWB
to retrieve US cargo by car ID and
waybill, then perform
Z3350-GN-US-CARGO-BY-CARWB until
WS-US-MFST-FOUND is true or WS-EOF
is true if US manifest found and not
EOF, perform
Z200-MOVE-LOG-INFORMATION, construct
GCX105-DATE from CC-MACHINE-CENTURY
and CC-MACHINE-DATE-X, set
GCX105-TIME to CC-MACHINE-TIME-X,
set GCX105-ACTION-CODE to
LOG-USE-INPUT-MESSAGE, set
GCX105-TRAIN-OR-US-CCN to
GCUSRT-US-CCN-KEY, set
GCX105-US-CARGO to true, construct
GCX105-MESSAGE as CDN CCN RLSED BY
EDI 350: concatenated with
GCCC-CCN-KEY, and perform
Z300-SPAWN-GCT1051E"]:::main N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0 -- Yes --> N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0_action N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0_action --> E_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN S_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN --> N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0 N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0 -- No --> E_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN
US manifest"}:::decision N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0_action["Perform Z3300-GU-US-CARGO-BY-CARWB
to retrieve US cargo by car ID and
waybill, then perform
Z3350-GN-US-CARGO-BY-CARWB until
WS-US-MFST-FOUND is true or WS-EOF
is true if US manifest found and not
EOF, perform
Z200-MOVE-LOG-INFORMATION, construct
GCX105-DATE from CC-MACHINE-CENTURY
and CC-MACHINE-DATE-X, set
GCX105-TIME to CC-MACHINE-TIME-X,
set GCX105-ACTION-CODE to
LOG-USE-INPUT-MESSAGE, set
GCX105-TRAIN-OR-US-CCN to
GCUSRT-US-CCN-KEY, set
GCX105-US-CARGO to true, construct
GCX105-MESSAGE as CDN CCN RLSED BY
EDI 350: concatenated with
GCCC-CCN-KEY, and perform
Z300-SPAWN-GCT1051E"]:::main N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0 -- Yes --> N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0_action N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0_action --> E_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN S_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN --> N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0 N_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN_Node0 -- No --> E_31ProcessAssociatedUSManifestFindUSmanifestbycarIDandwaybillLogreleasemessagetoUSCCNReferenceCanadianCCN
File: GCX126R.cbl
GIVEN:
A Canadian cargo has been released via deconsolidation with valid equipment car ID and waybill number stored in WS-CURRENT-CARID-KEY and SAVE-WAYBILL-INDEX
WHEN:
The system processes the associated US manifest
THEN:
- Perform z3300-gu-us-cargo-by-carwb to retrieve us cargo by car id
- Waybill, then perform z3350-gn-us-cargo-by-carwb until ws-us-mfst-found is true or ws-eof is true; if us manifest found
- Not eof, perform z200-move-log-information, construct gcx105-date from cc-machine-century
- Cc-machine-date-x, set gcx105-time to cc-machine-time-x, set gcx105-action-code to log-use-input-message, set gcx105-train-or-us-ccn to gcusrt-us-ccn-key, set gcx105-us-cargo to true, construct gcx105-message as 'cdn ccn rlsed by edi 350: ' concatenated with gccc-ccn-key, and perform z300-spawn-gct1051e
β Consolidated Acceptance Criteria
- The system searches for associated US cargo manifest → the system retrieves US cargo from GCSUSRT table using equipment car ID and waybill number AND if a matching US cargo is found that is not deleted and has no train created, a log entry is created with message 'CDN CCN RLSED BY EDI 350: ' concatenated with the Canadian follower CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_31ProcessAssociatedUSManifest(["Start Step"])
E_31ProcessAssociatedUSManifest(["End Step"])
N_31ProcessAssociatedUSManifest_Node0{"The system searches for associated
US cargo manifest"}:::decision N_31ProcessAssociatedUSManifest_Node0_action["The system retrieves US cargo from
GCSUSRT table using equipment car ID
and waybill number AND if a matching
US cargo is found that is not
deleted and has no train created, a
log entry is created with message
CDN CCN RLSED BY EDI 350:
concatenated with the Canadian
follower CCN"]:::main N_31ProcessAssociatedUSManifest_Node0 -- Yes --> N_31ProcessAssociatedUSManifest_Node0_action N_31ProcessAssociatedUSManifest_Node0_action --> E_31ProcessAssociatedUSManifest S_31ProcessAssociatedUSManifest --> N_31ProcessAssociatedUSManifest_Node0 N_31ProcessAssociatedUSManifest_Node0 -- No --> E_31ProcessAssociatedUSManifest
US cargo manifest"}:::decision N_31ProcessAssociatedUSManifest_Node0_action["The system retrieves US cargo from
GCSUSRT table using equipment car ID
and waybill number AND if a matching
US cargo is found that is not
deleted and has no train created, a
log entry is created with message
CDN CCN RLSED BY EDI 350:
concatenated with the Canadian
follower CCN"]:::main N_31ProcessAssociatedUSManifest_Node0 -- Yes --> N_31ProcessAssociatedUSManifest_Node0_action N_31ProcessAssociatedUSManifest_Node0_action --> E_31ProcessAssociatedUSManifest S_31ProcessAssociatedUSManifest --> N_31ProcessAssociatedUSManifest_Node0 N_31ProcessAssociatedUSManifest_Node0 -- No --> E_31ProcessAssociatedUSManifest
File: GCX126R.cbl
GIVEN:
A follower manifest has been released AND the cargo record contains equipment car ID and waybill number
WHEN:
The system searches for associated US cargo manifest
THEN:
- The system retrieves us cargo from gcsusrt table using equipment car id
- Waybill number
- If a matching us cargo is found that is not deleted
- Has no train created, a log entry is created with message 'cdn ccn rlsed by edi 350: ' concatenated with the canadian follower ccn
β Consolidated Acceptance Criteria
- CSA authorization processing is performed → if cargo CSA indicator is on then move 'EDI 350: ACCEPTED - CSA' to info message, perform log cargo info message, set cargo status to CSA delivery, set cargo CSA authorization to deliver received flag to true, and perform cargo replace, else move 'EDI 350: NOT ACCEPTED - NON-CSA' to info message and perform log cargo info 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_32ProcessCSAAuthorization(["Start Step"])
E_32ProcessCSAAuthorization(["End Step"])
N_32ProcessCSAAuthorization_Node0{"CSA authorization processing is
performed"}:::decision N_32ProcessCSAAuthorization_Node0_action["If cargo CSA indicator is on then
move EDI 350: ACCEPTED - CSA to info
message, perform log cargo info
message, set cargo status to CSA
delivery, set cargo CSA
authorization to deliver received
flag to true, and perform cargo
replace, else move EDI 350: NOT
ACCEPTED - NON-CSA to info message
and perform log cargo info message"]:::main N_32ProcessCSAAuthorization_Node0 -- Yes --> N_32ProcessCSAAuthorization_Node0_action N_32ProcessCSAAuthorization_Node0_action --> E_32ProcessCSAAuthorization S_32ProcessCSAAuthorization --> N_32ProcessCSAAuthorization_Node0 N_32ProcessCSAAuthorization_Node0 -- No --> E_32ProcessCSAAuthorization
performed"}:::decision N_32ProcessCSAAuthorization_Node0_action["If cargo CSA indicator is on then
move EDI 350: ACCEPTED - CSA to info
message, perform log cargo info
message, set cargo status to CSA
delivery, set cargo CSA
authorization to deliver received
flag to true, and perform cargo
replace, else move EDI 350: NOT
ACCEPTED - NON-CSA to info message
and perform log cargo info message"]:::main N_32ProcessCSAAuthorization_Node0 -- Yes --> N_32ProcessCSAAuthorization_Node0_action N_32ProcessCSAAuthorization_Node0_action --> E_32ProcessCSAAuthorization S_32ProcessCSAAuthorization --> N_32ProcessCSAAuthorization_Node0 N_32ProcessCSAAuthorization_Node0 -- No --> E_32ProcessCSAAuthorization
File: GCX126R.cbl
GIVEN:
V9 notice reason indicates authorized to deliver
WHEN:
CSA authorization processing is performed
THEN:
- If cargo csa indicator is on then move 'edi 350: accepted - csa' to info message, perform log cargo info message, set cargo status to csa delivery, set cargo csa authorization to deliver received flag to true, and perform cargo replace, else move 'edi 350: not accepted - non-csa' to info message
- Perform log cargo info message
β Consolidated Acceptance Criteria
- Multi follower processing is performed → set accept status to 'GEGB', clear follower manifest array, set index to 1, perform until follower end of database or index exceeds 100: call database with get next function for cargo using B0 qualifier, if status code is spaces and saved CCN equals master manifest CCN then if cargo is master manifest then continue else move cargo CCN key to follower manifest array at index and add 1 to index, else set follower end of database flag, subtract 1 from index, if index is less than or equal to zero then exit, else perform varying index from 1 by 1 until follower manifest at index is spaces or low values or index exceeds limit: move follower manifest CCN to cargo key value, perform cargo lookup, if cargo found then perform set release information, clear info message, if V9 released then concatenate 'EDI 350: RELEASE : ' with X4 CBSA release reference ID positions 1 through 15, ' AT PORT ' with P4 port code positions 1 through 4 into info message and concatenate X4 CBSA release reference ID positions 1 through 15, '/' with P4 port code positions 1 through 4 into cargo release reason, else concatenate 'EDI 350: RELEASE VIA DECON AT PORT ' with P4 port code positions 1 through 4 into info message and concatenate 'DECONSOLIDATION AT ' with P4 port code positions 1 through 4 into cargo release reason, move cargo CCN key to current CCN key, perform log cargo info message, move cargo waybill key to save waybill index, move cargo equipment car to current car ID key, perform process US manifest, clear status code, set accept status to spaces, and call database with replace function for 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_33ProcessFollowerManifests(["Start Step"])
E_33ProcessFollowerManifests(["End Step"])
N_33ProcessFollowerManifests_Node0{"Multi follower processing is
performed"}:::decision N_33ProcessFollowerManifests_Node0_action["Set accept status to GEGB , clear
follower manifest array, set index
to 1, perform until follower end of
database or index exceeds 100: call
database with get next function for
cargo using B0 qualifier, if status
code is spaces and saved CCN equals
master manifest CCN then if cargo is
master manifest then continue else
move cargo CCN key to follower
manifest array at index and add 1 to
index, else set follower end of
database flag, subtract 1 from
index, if index is less than or
equal to zero then exit, else
perform varying index from 1 by 1
until follower manifest at index is
spaces or low values or index
exceeds limit: move follower
manifest CCN to cargo key value,
perform cargo lookup, if cargo found
then perform set release
information, clear info message, if
V9 released then concatenate EDI
350: RELEASE : with X4 CBSA release
reference ID positions 1 through 15,
AT PORT with P4 port code positions
1 through 4 into info message and
concatenate X4 CBSA release
reference ID positions 1 through 15,
with P4 port code positions 1
through 4 into cargo release reason,
else concatenate EDI 350: RELEASE
VIA DECON AT PORT with P4 port code
positions 1 through 4 into info
message and concatenate
DECONSOLIDATION AT with P4 port code
positions 1 through 4 into cargo
release reason, move cargo CCN key
to current CCN key, perform log
cargo info message, move cargo
waybill key to save waybill index,
move cargo equipment car to current
car ID key, perform process US
manifest, clear status code, set
accept status to spaces, and call
database with replace function for
cargo"]:::main N_33ProcessFollowerManifests_Node0 -- Yes --> N_33ProcessFollowerManifests_Node0_action N_33ProcessFollowerManifests_Node0_action --> E_33ProcessFollowerManifests S_33ProcessFollowerManifests --> N_33ProcessFollowerManifests_Node0 N_33ProcessFollowerManifests_Node0 -- No --> E_33ProcessFollowerManifests
performed"}:::decision N_33ProcessFollowerManifests_Node0_action["Set accept status to GEGB , clear
follower manifest array, set index
to 1, perform until follower end of
database or index exceeds 100: call
database with get next function for
cargo using B0 qualifier, if status
code is spaces and saved CCN equals
master manifest CCN then if cargo is
master manifest then continue else
move cargo CCN key to follower
manifest array at index and add 1 to
index, else set follower end of
database flag, subtract 1 from
index, if index is less than or
equal to zero then exit, else
perform varying index from 1 by 1
until follower manifest at index is
spaces or low values or index
exceeds limit: move follower
manifest CCN to cargo key value,
perform cargo lookup, if cargo found
then perform set release
information, clear info message, if
V9 released then concatenate EDI
350: RELEASE : with X4 CBSA release
reference ID positions 1 through 15,
AT PORT with P4 port code positions
1 through 4 into info message and
concatenate X4 CBSA release
reference ID positions 1 through 15,
with P4 port code positions 1
through 4 into cargo release reason,
else concatenate EDI 350: RELEASE
VIA DECON AT PORT with P4 port code
positions 1 through 4 into info
message and concatenate
DECONSOLIDATION AT with P4 port code
positions 1 through 4 into cargo
release reason, move cargo CCN key
to current CCN key, perform log
cargo info message, move cargo
waybill key to save waybill index,
move cargo equipment car to current
car ID key, perform process US
manifest, clear status code, set
accept status to spaces, and call
database with replace function for
cargo"]:::main N_33ProcessFollowerManifests_Node0 -- Yes --> N_33ProcessFollowerManifests_Node0_action N_33ProcessFollowerManifests_Node0_action --> E_33ProcessFollowerManifests S_33ProcessFollowerManifests --> N_33ProcessFollowerManifests_Node0 N_33ProcessFollowerManifests_Node0 -- No --> E_33ProcessFollowerManifests
File: GCX126R.cbl
GIVEN:
Master manifest has been released or deconsolidated
WHEN:
Multi follower processing is performed
THEN:
- Set accept status to 'gegb', clear follower manifest array, set index to 1, perform until follower end of database or index exceeds 100: call database with get next function for cargo using b0 qualifier, if status code is spaces
- Saved ccn equals master manifest ccn then if cargo is master manifest then continue else move cargo ccn key to follower manifest array at index
- Add 1 to index, else set follower end of database flag, subtract 1 from index, if index is less than or equal to zero then exit, else perform varying index from 1 by 1 until follower manifest at index is spaces or low values or index exceeds limit: move follower manifest ccn to cargo key value, perform cargo lookup, if cargo found then perform set release information, clear info message, if v9 released then concatenate 'edi 350: release : ' with x4 cbsa release reference id positions 1 through 15, ' at port ' with p4 port code positions 1 through 4 into info message
- Concatenate x4 cbsa release reference id positions 1 through 15, '/' with p4 port code positions 1 through 4 into cargo release reason, else concatenate 'edi 350: release via decon at port ' with p4 port code positions 1 through 4 into info message
- Concatenate 'deconsolidation at ' with p4 port code positions 1 through 4 into cargo release reason, move cargo ccn key to current ccn key, perform log cargo info message, move cargo waybill key to save waybill index, move cargo equipment car to current car id key, perform process us manifest, clear status code, set accept status to spaces, and call database with replace function for cargo
β Consolidated Acceptance Criteria
- The system processes follower manifests → save GCCC-CARGO-REPORT-SEGMENT to WS-SAVE-GCSCCRT, set CC-ACCEPT-STATUS to 'GEGB', initialize WS-FOLLOWER-MANI-ARRAY to spaces, set WS-FOLLOWER-NOT-END-OF-DB to true, set I to 1; perform until WS-FOLLOWER-END-OF-DB or I > 100: call CIMS with GN, GCCC-PCB7, GCCC-CARGO-REPORT-SEGMENT, and CCRT-B0RT-SSAQ; if CC-STATUS-CODE is space and GCCC-MASTER-MFST-CCN equals WS-SAVE-CCN: if GCCC-FOLLOWER-MFST is true, move GCCC-CCN-KEY to WS-FOLLOWER-MANI(I) and add 1 to I; else set WS-FOLLOWER-END-OF-DB to true; subtract 1 from I; if I > 0, perform varying J from 1 by 1 until WS-FOLLOWER-MANI(I) is spaces or low-values or J > I: move WS-FOLLOWER-MANI(J) to KEY-VALUE of CCRT-SSAQ and A2RT-SSAQ, perform Z3000-GHU-CARGO; if WS-CARGO-FOUND: perform D110-SET-RELEASE-INFORMATION, construct WS-GCX105-INFO-MSG as 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4-01-PORT-CDE (first 4 characters), construct GCCC-RELEASE-REASON as 'DECONSOLIDATION AT ' concatenated with P4-01-PORT-CDE (first 4 characters), move GCCC-CCN-KEY to WS-CURRENT-CCN-KEY, perform Z150-LOG-CARGO-INFO-MSG, move GCCC-WAYBILL-KEY-FOR-INDEX to SAVE-WAYBILL-INDEX, move GCCC-EQUIPMENT-CAR to WS-CURRENT-CARID-KEY, perform D120-PROCESS-US-MFST, clear CC-STATUS-CODE, set CC-ACCEPT-STATUS to spaces, and call CIMS with REPL, GCCC-PCB, and GCCC-CARGO-REPORT-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_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord(["Start Step"])
E_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord(["End Step"])
N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0{"The system processes follower
manifests"}:::decision N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0_action["Save GCCC-CARGO-REPORT-SEGMENT to
WS-SAVE-GCSCCRT, set
CC-ACCEPT-STATUS to GEGB ,
initialize WS-FOLLOWER-MANI-ARRAY to
spaces, set
WS-FOLLOWER-NOT-END-OF-DB to true,
set I to 1 perform until
WS-FOLLOWER-END-OF-DB or I 100: call
CIMS with GN, GCCC-PCB7,
GCCC-CARGO-REPORT-SEGMENT, and
CCRT-B0RT-SSAQ if CC-STATUS-CODE is
space and GCCC-MASTER-MFST-CCN
equals WS-SAVE-CCN: if
GCCC-FOLLOWER-MFST is true, move
GCCC-CCN-KEY to WS-FOLLOWER-MANII
and add 1 to I else set
WS-FOLLOWER-END-OF-DB to true
subtract 1 from I if I 0, perform
varying J from 1 by 1 until
WS-FOLLOWER-MANII is spaces or
low-values or J I: move
WS-FOLLOWER-MANIJ to KEY-VALUE of
CCRT-SSAQ and A2RT-SSAQ, perform
Z3000-GHU-CARGO if WS-CARGO-FOUND:
perform
D110-SET-RELEASE-INFORMATION,
construct WS-GCX105-INFO-MSG as EDI
350: RELEASE VIA DECON AT PORT
concatenated with P4-01-PORT-CDE
first 4 characters, construct
GCCC-RELEASE-REASON as
DECONSOLIDATION AT concatenated with
P4-01-PORT-CDE first 4 characters,
move GCCC-CCN-KEY to
WS-CURRENT-CCN-KEY, perform
Z150-LOG-CARGO-INFO-MSG, move
GCCC-WAYBILL-KEY-FOR-INDEX to
SAVE-WAYBILL-INDEX, move
GCCC-EQUIPMENT-CAR to
WS-CURRENT-CARID-KEY, perform
D120-PROCESS-US-MFST, clear
CC-STATUS-CODE, set CC-ACCEPT-STATUS
to spaces, and call CIMS with REPL,
GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT"]:::main N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0 -- Yes --> N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0_action N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0_action --> E_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord S_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord --> N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0 N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0 -- No --> E_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord
manifests"}:::decision N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0_action["Save GCCC-CARGO-REPORT-SEGMENT to
WS-SAVE-GCSCCRT, set
CC-ACCEPT-STATUS to GEGB ,
initialize WS-FOLLOWER-MANI-ARRAY to
spaces, set
WS-FOLLOWER-NOT-END-OF-DB to true,
set I to 1 perform until
WS-FOLLOWER-END-OF-DB or I 100: call
CIMS with GN, GCCC-PCB7,
GCCC-CARGO-REPORT-SEGMENT, and
CCRT-B0RT-SSAQ if CC-STATUS-CODE is
space and GCCC-MASTER-MFST-CCN
equals WS-SAVE-CCN: if
GCCC-FOLLOWER-MFST is true, move
GCCC-CCN-KEY to WS-FOLLOWER-MANII
and add 1 to I else set
WS-FOLLOWER-END-OF-DB to true
subtract 1 from I if I 0, perform
varying J from 1 by 1 until
WS-FOLLOWER-MANII is spaces or
low-values or J I: move
WS-FOLLOWER-MANIJ to KEY-VALUE of
CCRT-SSAQ and A2RT-SSAQ, perform
Z3000-GHU-CARGO if WS-CARGO-FOUND:
perform
D110-SET-RELEASE-INFORMATION,
construct WS-GCX105-INFO-MSG as EDI
350: RELEASE VIA DECON AT PORT
concatenated with P4-01-PORT-CDE
first 4 characters, construct
GCCC-RELEASE-REASON as
DECONSOLIDATION AT concatenated with
P4-01-PORT-CDE first 4 characters,
move GCCC-CCN-KEY to
WS-CURRENT-CCN-KEY, perform
Z150-LOG-CARGO-INFO-MSG, move
GCCC-WAYBILL-KEY-FOR-INDEX to
SAVE-WAYBILL-INDEX, move
GCCC-EQUIPMENT-CAR to
WS-CURRENT-CARID-KEY, perform
D120-PROCESS-US-MFST, clear
CC-STATUS-CODE, set CC-ACCEPT-STATUS
to spaces, and call CIMS with REPL,
GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT"]:::main N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0 -- Yes --> N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0_action N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0_action --> E_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord S_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord --> N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0 N_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord_Node0 -- No --> E_33ProcessFollowerManifestsRetrieveallfollowermanifestsSetreleaseinformationforeachLogreleasemessageUpdatereleasereasonProcessUSmanifestUpdatecargorecord
File: GCX126R.cbl
GIVEN:
Current cargo is a master manifest that has been released via deconsolidation with GCCC-CCN-KEY stored in GCB0RT-CCN-KEY
WHEN:
The system processes follower manifests
THEN:
- Save gccc-cargo-report-segment to ws-save-gcsccrt, set cc-accept-status to 'gegb', initialize ws-follower-mani-array to spaces, set ws-follower-not-end-of-db to true, set i to 1; perform until ws-follower-end-of-db or i > 100: call cims with gn, gccc-pcb7, gccc-cargo-report-segment, and ccrt-b0rt-ssaq; if cc-status-code is space
- Gccc-master-mfst-ccn equals ws-save-ccn: if gccc-follower-mfst is true, move gccc-ccn-key to ws-follower-mani(i) and add 1 to i; else set ws-follower-end-of-db to true; subtract 1 from i; if i > 0, perform varying j from 1 by 1 until ws-follower-mani(i) is spaces or low-values or j > i: move ws-follower-mani(j) to key-value of ccrt-ssaq
- A2rt-ssaq, perform z3000-ghu-cargo; if ws-cargo-found: perform d110-set-release-information, construct ws-gcx105-info-msg as 'edi 350: release via decon at port ' concatenated with p4-01-port-cde (first 4 characters), construct gccc-release-reason as 'deconsolidation at ' concatenated with p4-01-port-cde (first 4 characters), move gccc-ccn-key to ws-current-ccn-key, perform z150-log-cargo-info-msg, move gccc-waybill-key-for-index to save-waybill-index, move gccc-equipment-car to ws-current-carid-key, perform d120-process-us-mfst, clear cc-status-code, set cc-accept-status to spaces, and call cims with repl, gccc-pcb, and gccc-cargo-report-segment
β Consolidated Acceptance Criteria
- The system retrieves follower manifests → set CC-ACCEPT-STATUS to 'GEGB', initialize WS-FOLLOWER-MANI-ARRAY to spaces, set I to 1, set WS-FOLLOWER-NOT-END-OF-DB to true; perform until WS-FOLLOWER-END-OF-DB is true or I > 100: call CIMS with GN function, GCCC-PCB7, GCCC-CARGO-REPORT-SEGMENT, and CCRT-B0RT-SSAQ; if CC-STATUS-CODE is space and GCCC-MASTER-MFST-CCN equals WS-SAVE-CCN: if GCCC-FOLLOWER-MFST is true, move GCCC-CCN-KEY to WS-FOLLOWER-MANI(I) and add 1 to I; else if CC-STATUS-CODE is not space or GCCC-MASTER-MFST-CCN does not equal WS-SAVE-CCN, set WS-FOLLOWER-END-OF-DB to true; subtract 1 from I after loop 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_33ProcessFollowerManifestsRetrieveallfollowermanifests(["Start Step"])
E_33ProcessFollowerManifestsRetrieveallfollowermanifests(["End Step"])
N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0{"The system retrieves follower
manifests"}:::decision N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0_action["Set CC-ACCEPT-STATUS to GEGB ,
initialize WS-FOLLOWER-MANI-ARRAY to
spaces, set I to 1, set
WS-FOLLOWER-NOT-END-OF-DB to true
perform until WS-FOLLOWER-END-OF-DB
is true or I 100: call CIMS with GN
function, GCCC-PCB7,
GCCC-CARGO-REPORT-SEGMENT, and
CCRT-B0RT-SSAQ if CC-STATUS-CODE is
space and GCCC-MASTER-MFST-CCN
equals WS-SAVE-CCN: if
GCCC-FOLLOWER-MFST is true, move
GCCC-CCN-KEY to WS-FOLLOWER-MANII
and add 1 to I else if
CC-STATUS-CODE is not space or
GCCC-MASTER-MFST-CCN does not equal
WS-SAVE-CCN, set
WS-FOLLOWER-END-OF-DB to true
subtract 1 from I after loop
completes"]:::main N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0 -- Yes --> N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0_action N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0_action --> E_33ProcessFollowerManifestsRetrieveallfollowermanifests S_33ProcessFollowerManifestsRetrieveallfollowermanifests --> N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0 N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0 -- No --> E_33ProcessFollowerManifestsRetrieveallfollowermanifests
manifests"}:::decision N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0_action["Set CC-ACCEPT-STATUS to GEGB ,
initialize WS-FOLLOWER-MANI-ARRAY to
spaces, set I to 1, set
WS-FOLLOWER-NOT-END-OF-DB to true
perform until WS-FOLLOWER-END-OF-DB
is true or I 100: call CIMS with GN
function, GCCC-PCB7,
GCCC-CARGO-REPORT-SEGMENT, and
CCRT-B0RT-SSAQ if CC-STATUS-CODE is
space and GCCC-MASTER-MFST-CCN
equals WS-SAVE-CCN: if
GCCC-FOLLOWER-MFST is true, move
GCCC-CCN-KEY to WS-FOLLOWER-MANII
and add 1 to I else if
CC-STATUS-CODE is not space or
GCCC-MASTER-MFST-CCN does not equal
WS-SAVE-CCN, set
WS-FOLLOWER-END-OF-DB to true
subtract 1 from I after loop
completes"]:::main N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0 -- Yes --> N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0_action N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0_action --> E_33ProcessFollowerManifestsRetrieveallfollowermanifests S_33ProcessFollowerManifestsRetrieveallfollowermanifests --> N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0 N_33ProcessFollowerManifestsRetrieveallfollowermanifests_Node0 -- No --> E_33ProcessFollowerManifestsRetrieveallfollowermanifests
File: GCX126R.cbl
GIVEN:
A master manifest CCN is stored in GCB0RT-CCN-KEY and WS-SAVE-CCN
WHEN:
The system retrieves follower manifests
THEN:
- Set cc-accept-status to 'gegb', initialize ws-follower-mani-array to spaces, set i to 1, set ws-follower-not-end-of-db to true; perform until ws-follower-end-of-db is true or i > 100: call cims with gn function, gccc-pcb7, gccc-cargo-report-segment, and ccrt-b0rt-ssaq; if cc-status-code is space
- Gccc-master-mfst-ccn equals ws-save-ccn: if gccc-follower-mfst is true, move gccc-ccn-key to ws-follower-mani(i) and add 1 to i; else if cc-status-code is not space or gccc-master-mfst-ccn does not equal ws-save-ccn, set ws-follower-end-of-db to true; subtract 1 from i after loop completes
β Consolidated Acceptance Criteria
- The system sets release information for the follower → if WS-CARGO-FOUND is true, perform D110-SET-RELEASE-INFORMATION which clears GCCC-DESTIN-STN-NUM-INDEX and GCCC-DESTIN-STN-NUM-FOR-INDEX to spaces, sets GCCC-RELEASE-DATE to CC-MACHINE-DATE-X, sets GCCC-RELEASE-TIME to CC-MACHINE-TIME-X, sets GCCC-RELEASE-BY to CC-ACF2-USERID, sets GCCC-CURRENT-STATUS to 'RELEASED', sets GCCC-RELEASE-STATUS to 'R', sets GCCC-RELEASE-TYPE to 'A', clears GCCC-RELEASE-REASON to spaces, clears GCCC-ERR-OR-REL-STATUS-INDEX to spaces, and clears GCCC-ERROR-STATUS 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_33ProcessFollowerManifestsSetreleaseinformationforeach(["Start Step"])
E_33ProcessFollowerManifestsSetreleaseinformationforeach(["End Step"])
N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0{"The system sets release information
for the follower"}:::decision N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0_action["If WS-CARGO-FOUND is true, perform
D110-SET-RELEASE-INFORMATION which
clears GCCC-DESTIN-STN-NUM-INDEX and
GCCC-DESTIN-STN-NUM-FOR-INDEX to
spaces, sets GCCC-RELEASE-DATE to
CC-MACHINE-DATE-X, sets
GCCC-RELEASE-TIME to
CC-MACHINE-TIME-X, sets
GCCC-RELEASE-BY to CC-ACF2-USERID,
sets GCCC-CURRENT-STATUS to RELEASED
, sets GCCC-RELEASE-STATUS to R ,
sets GCCC-RELEASE-TYPE to A , clears
GCCC-RELEASE-REASON to spaces,
clears GCCC-ERR-OR-REL-STATUS-INDEX
to spaces, and clears
GCCC-ERROR-STATUS to spaces"]:::main N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0 -- Yes --> N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0_action N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0_action --> E_33ProcessFollowerManifestsSetreleaseinformationforeach S_33ProcessFollowerManifestsSetreleaseinformationforeach --> N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0 N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0 -- No --> E_33ProcessFollowerManifestsSetreleaseinformationforeach
for the follower"}:::decision N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0_action["If WS-CARGO-FOUND is true, perform
D110-SET-RELEASE-INFORMATION which
clears GCCC-DESTIN-STN-NUM-INDEX and
GCCC-DESTIN-STN-NUM-FOR-INDEX to
spaces, sets GCCC-RELEASE-DATE to
CC-MACHINE-DATE-X, sets
GCCC-RELEASE-TIME to
CC-MACHINE-TIME-X, sets
GCCC-RELEASE-BY to CC-ACF2-USERID,
sets GCCC-CURRENT-STATUS to RELEASED
, sets GCCC-RELEASE-STATUS to R ,
sets GCCC-RELEASE-TYPE to A , clears
GCCC-RELEASE-REASON to spaces,
clears GCCC-ERR-OR-REL-STATUS-INDEX
to spaces, and clears
GCCC-ERROR-STATUS to spaces"]:::main N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0 -- Yes --> N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0_action N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0_action --> E_33ProcessFollowerManifestsSetreleaseinformationforeach S_33ProcessFollowerManifestsSetreleaseinformationforeach --> N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0 N_33ProcessFollowerManifestsSetreleaseinformationforeach_Node0 -- No --> E_33ProcessFollowerManifestsSetreleaseinformationforeach
File: GCX126R.cbl
GIVEN:
Follower manifest CCN is stored in WS-FOLLOWER-MANI(J) and cargo record has been retrieved
WHEN:
The system sets release information for the follower
THEN:
- If ws-cargo-found is true, perform d110-set-release-information which clears gccc-destin-stn-num-index
- Gccc-destin-stn-num-for-index to spaces, sets gccc-release-date to cc-machine-date-x, sets gccc-release-time to cc-machine-time-x, sets gccc-release-by to cc-acf2-userid, sets gccc-current-status to 'released', sets gccc-release-status to 'r', sets gccc-release-type to 'a', clears gccc-release-reason to spaces, clears gccc-err-or-rel-status-index to spaces, and clears gccc-error-status to spaces
β Consolidated Acceptance Criteria
- The system logs the release message for the follower → clear WS-GCX105-INFO-MSG to spaces, construct message 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4-01-PORT-CDE (first 4 characters) and store in WS-GCX105-INFO-MSG, move GCCC-CCN-KEY to WS-CURRENT-CCN-KEY, and perform Z150-LOG-CARGO-INFO-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_33ProcessFollowerManifestsLogreleasemessage(["Start Step"])
E_33ProcessFollowerManifestsLogreleasemessage(["End Step"])
N_33ProcessFollowerManifestsLogreleasemessage_Node0{"The system logs the release message
for the follower"}:::decision N_33ProcessFollowerManifestsLogreleasemessage_Node0_action["Clear WS-GCX105-INFO-MSG to spaces,
construct message EDI 350: RELEASE
VIA DECON AT PORT concatenated with
P4-01-PORT-CDE first 4 characters
and store in WS-GCX105-INFO-MSG,
move GCCC-CCN-KEY to
WS-CURRENT-CCN-KEY, and perform
Z150-LOG-CARGO-INFO-MSG"]:::main N_33ProcessFollowerManifestsLogreleasemessage_Node0 -- Yes --> N_33ProcessFollowerManifestsLogreleasemessage_Node0_action N_33ProcessFollowerManifestsLogreleasemessage_Node0_action --> E_33ProcessFollowerManifestsLogreleasemessage S_33ProcessFollowerManifestsLogreleasemessage --> N_33ProcessFollowerManifestsLogreleasemessage_Node0 N_33ProcessFollowerManifestsLogreleasemessage_Node0 -- No --> E_33ProcessFollowerManifestsLogreleasemessage
for the follower"}:::decision N_33ProcessFollowerManifestsLogreleasemessage_Node0_action["Clear WS-GCX105-INFO-MSG to spaces,
construct message EDI 350: RELEASE
VIA DECON AT PORT concatenated with
P4-01-PORT-CDE first 4 characters
and store in WS-GCX105-INFO-MSG,
move GCCC-CCN-KEY to
WS-CURRENT-CCN-KEY, and perform
Z150-LOG-CARGO-INFO-MSG"]:::main N_33ProcessFollowerManifestsLogreleasemessage_Node0 -- Yes --> N_33ProcessFollowerManifestsLogreleasemessage_Node0_action N_33ProcessFollowerManifestsLogreleasemessage_Node0_action --> E_33ProcessFollowerManifestsLogreleasemessage S_33ProcessFollowerManifestsLogreleasemessage --> N_33ProcessFollowerManifestsLogreleasemessage_Node0 N_33ProcessFollowerManifestsLogreleasemessage_Node0 -- No --> E_33ProcessFollowerManifestsLogreleasemessage
File: GCX126R.cbl
GIVEN:
Follower manifest has been found and release information has been set
WHEN:
The system logs the release message for the follower
THEN:
Clear WS-GCX105-INFO-MSG to spaces, construct message 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4-01-PORT-CDE (first 4 characters) and store in WS-GCX105-INFO-MSG, move GCCC-CCN-KEY to WS-CURRENT-CCN-KEY, and perform Z150-LOG-CARGO-INFO-MSG
β Consolidated Acceptance Criteria
- The system updates the release reason for the follower → construct string 'DECONSOLIDATION AT ' concatenated with P4-01-PORT-CDE (first 4 characters) and store in GCCC-RELEASE-REASON 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_33ProcessFollowerManifestsUpdatereleasereason(["Start Step"])
E_33ProcessFollowerManifestsUpdatereleasereason(["End Step"])
N_33ProcessFollowerManifestsUpdatereleasereason_Node0{"The system updates the release
reason for the follower"}:::decision N_33ProcessFollowerManifestsUpdatereleasereason_Node0_action["Construct string DECONSOLIDATION AT
concatenated with P4-01-PORT-CDE
first 4 characters and store in
GCCC-RELEASE-REASON field"]:::main N_33ProcessFollowerManifestsUpdatereleasereason_Node0 -- Yes --> N_33ProcessFollowerManifestsUpdatereleasereason_Node0_action N_33ProcessFollowerManifestsUpdatereleasereason_Node0_action --> E_33ProcessFollowerManifestsUpdatereleasereason S_33ProcessFollowerManifestsUpdatereleasereason --> N_33ProcessFollowerManifestsUpdatereleasereason_Node0 N_33ProcessFollowerManifestsUpdatereleasereason_Node0 -- No --> E_33ProcessFollowerManifestsUpdatereleasereason
reason for the follower"}:::decision N_33ProcessFollowerManifestsUpdatereleasereason_Node0_action["Construct string DECONSOLIDATION AT
concatenated with P4-01-PORT-CDE
first 4 characters and store in
GCCC-RELEASE-REASON field"]:::main N_33ProcessFollowerManifestsUpdatereleasereason_Node0 -- Yes --> N_33ProcessFollowerManifestsUpdatereleasereason_Node0_action N_33ProcessFollowerManifestsUpdatereleasereason_Node0_action --> E_33ProcessFollowerManifestsUpdatereleasereason S_33ProcessFollowerManifestsUpdatereleasereason --> N_33ProcessFollowerManifestsUpdatereleasereason_Node0 N_33ProcessFollowerManifestsUpdatereleasereason_Node0 -- No --> E_33ProcessFollowerManifestsUpdatereleasereason
File: GCX126R.cbl
GIVEN:
Follower manifest has been found and P4 segment contains port code
WHEN:
The system updates the release reason for the follower
THEN:
Construct string 'DECONSOLIDATION AT ' concatenated with P4-01-PORT-CDE (first 4 characters) and store in GCCC-RELEASE-REASON field
β Consolidated Acceptance Criteria
- The system processes the US manifest for the follower → move GCCC-WAYBILL-KEY-FOR-INDEX to SAVE-WAYBILL-INDEX, move GCCC-EQUIPMENT-CAR to WS-CURRENT-CARID-KEY, and perform D120-PROCESS-US-MFST which sets WS-US-MFST-NOT-FOUND to true, sets WS-NOT-EOF to true, performs Z3300-GU-US-CARGO-BY-CARWB, performs Z3350-GN-US-CARGO-BY-CARWB until WS-US-MFST-FOUND or WS-EOF; if not EOF: performs Z200-MOVE-LOG-INFORMATION, constructs GCX105-DATE from CC-MACHINE-CENTURY and CC-MACHINE-DATE-X, sets GCX105-TIME to CC-MACHINE-TIME-X, sets GCX105-ACTION-CODE to LOG-USE-INPUT-MESSAGE, sets GCX105-TRAIN-OR-US-CCN to GCUSRT-US-CCN-KEY, sets GCX105-US-CARGO to true, constructs GCX105-MESSAGE as 'CDN CCN RLSED BY EDI 350: ' concatenated with GCCC-CCN-KEY, and performs Z300-SPAWN-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_33ProcessFollowerManifestsProcessUSmanifest(["Start Step"])
E_33ProcessFollowerManifestsProcessUSmanifest(["End Step"])
N_33ProcessFollowerManifestsProcessUSmanifest_Node0{"The system processes the US
manifest for the follower"}:::decision N_33ProcessFollowerManifestsProcessUSmanifest_Node0_action["Move GCCC-WAYBILL-KEY-FOR-INDEX to
SAVE-WAYBILL-INDEX, move
GCCC-EQUIPMENT-CAR to
WS-CURRENT-CARID-KEY, and perform
D120-PROCESS-US-MFST which sets
WS-US-MFST-NOT-FOUND to true, sets
WS-NOT-EOF to true, performs
Z3300-GU-US-CARGO-BY-CARWB, performs
Z3350-GN-US-CARGO-BY-CARWB until
WS-US-MFST-FOUND or WS-EOF if not
EOF: performs
Z200-MOVE-LOG-INFORMATION,
constructs GCX105-DATE from
CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X, sets GCX105-TIME
to CC-MACHINE-TIME-X, sets
GCX105-ACTION-CODE to
LOG-USE-INPUT-MESSAGE, sets
GCX105-TRAIN-OR-US-CCN to
GCUSRT-US-CCN-KEY, sets
GCX105-US-CARGO to true, constructs
GCX105-MESSAGE as CDN CCN RLSED BY
EDI 350: concatenated with
GCCC-CCN-KEY, and performs
Z300-SPAWN-GCT1051E"]:::main N_33ProcessFollowerManifestsProcessUSmanifest_Node0 -- Yes --> N_33ProcessFollowerManifestsProcessUSmanifest_Node0_action N_33ProcessFollowerManifestsProcessUSmanifest_Node0_action --> E_33ProcessFollowerManifestsProcessUSmanifest S_33ProcessFollowerManifestsProcessUSmanifest --> N_33ProcessFollowerManifestsProcessUSmanifest_Node0 N_33ProcessFollowerManifestsProcessUSmanifest_Node0 -- No --> E_33ProcessFollowerManifestsProcessUSmanifest
manifest for the follower"}:::decision N_33ProcessFollowerManifestsProcessUSmanifest_Node0_action["Move GCCC-WAYBILL-KEY-FOR-INDEX to
SAVE-WAYBILL-INDEX, move
GCCC-EQUIPMENT-CAR to
WS-CURRENT-CARID-KEY, and perform
D120-PROCESS-US-MFST which sets
WS-US-MFST-NOT-FOUND to true, sets
WS-NOT-EOF to true, performs
Z3300-GU-US-CARGO-BY-CARWB, performs
Z3350-GN-US-CARGO-BY-CARWB until
WS-US-MFST-FOUND or WS-EOF if not
EOF: performs
Z200-MOVE-LOG-INFORMATION,
constructs GCX105-DATE from
CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X, sets GCX105-TIME
to CC-MACHINE-TIME-X, sets
GCX105-ACTION-CODE to
LOG-USE-INPUT-MESSAGE, sets
GCX105-TRAIN-OR-US-CCN to
GCUSRT-US-CCN-KEY, sets
GCX105-US-CARGO to true, constructs
GCX105-MESSAGE as CDN CCN RLSED BY
EDI 350: concatenated with
GCCC-CCN-KEY, and performs
Z300-SPAWN-GCT1051E"]:::main N_33ProcessFollowerManifestsProcessUSmanifest_Node0 -- Yes --> N_33ProcessFollowerManifestsProcessUSmanifest_Node0_action N_33ProcessFollowerManifestsProcessUSmanifest_Node0_action --> E_33ProcessFollowerManifestsProcessUSmanifest S_33ProcessFollowerManifestsProcessUSmanifest --> N_33ProcessFollowerManifestsProcessUSmanifest_Node0 N_33ProcessFollowerManifestsProcessUSmanifest_Node0 -- No --> E_33ProcessFollowerManifestsProcessUSmanifest
File: GCX126R.cbl
GIVEN:
Follower manifest has been found with valid GCCC-WAYBILL-KEY-FOR-INDEX and GCCC-EQUIPMENT-CAR
WHEN:
The system processes the US manifest for the follower
THEN:
- Move gccc-waybill-key-for-index to save-waybill-index, move gccc-equipment-car to ws-current-carid-key, and perform d120-process-us-mfst which sets ws-us-mfst-not-found to true, sets ws-not-eof to true, performs z3300-gu-us-cargo-by-carwb, performs z3350-gn-us-cargo-by-carwb until ws-us-mfst-found or ws-eof; if not eof: performs z200-move-log-information, constructs gcx105-date from cc-machine-century
- Cc-machine-date-x, sets gcx105-time to cc-machine-time-x, sets gcx105-action-code to log-use-input-message, sets gcx105-train-or-us-ccn to gcusrt-us-ccn-key, sets gcx105-us-cargo to true, constructs gcx105-message as 'cdn ccn rlsed by edi 350: ' concatenated with gccc-ccn-key, and performs z300-spawn-gct1051e
β Consolidated Acceptance Criteria
- The system updates the follower cargo record → clear CC-STATUS-CODE to spaces, set CC-ACCEPT-STATUS to spaces, and call CIMS with REPL function code, GCCC-PCB, and GCCC-CARGO-REPORT-SEGMENT to 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_33ProcessFollowerManifestsUpdatecargorecord(["Start Step"])
E_33ProcessFollowerManifestsUpdatecargorecord(["End Step"])
N_33ProcessFollowerManifestsUpdatecargorecord_Node0{"The system updates the follower
cargo record"}:::decision N_33ProcessFollowerManifestsUpdatecargorecord_Node0_action["Clear CC-STATUS-CODE to spaces, set
CC-ACCEPT-STATUS to spaces, and call
CIMS with REPL function code,
GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT to replace
the cargo record"]:::main N_33ProcessFollowerManifestsUpdatecargorecord_Node0 -- Yes --> N_33ProcessFollowerManifestsUpdatecargorecord_Node0_action N_33ProcessFollowerManifestsUpdatecargorecord_Node0_action --> E_33ProcessFollowerManifestsUpdatecargorecord S_33ProcessFollowerManifestsUpdatecargorecord --> N_33ProcessFollowerManifestsUpdatecargorecord_Node0 N_33ProcessFollowerManifestsUpdatecargorecord_Node0 -- No --> E_33ProcessFollowerManifestsUpdatecargorecord
cargo record"}:::decision N_33ProcessFollowerManifestsUpdatecargorecord_Node0_action["Clear CC-STATUS-CODE to spaces, set
CC-ACCEPT-STATUS to spaces, and call
CIMS with REPL function code,
GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT to replace
the cargo record"]:::main N_33ProcessFollowerManifestsUpdatecargorecord_Node0 -- Yes --> N_33ProcessFollowerManifestsUpdatecargorecord_Node0_action N_33ProcessFollowerManifestsUpdatecargorecord_Node0_action --> E_33ProcessFollowerManifestsUpdatecargorecord S_33ProcessFollowerManifestsUpdatecargorecord --> N_33ProcessFollowerManifestsUpdatecargorecord_Node0 N_33ProcessFollowerManifestsUpdatecargorecord_Node0 -- No --> E_33ProcessFollowerManifestsUpdatecargorecord
File: GCX126R.cbl
GIVEN:
Follower cargo record GCCC-CARGO-REPORT-SEGMENT has been updated with release information
WHEN:
The system updates the follower cargo record
THEN:
Clear CC-STATUS-CODE to spaces, set CC-ACCEPT-STATUS to spaces, and call CIMS with REPL function code, GCCC-PCB, and GCCC-CARGO-REPORT-SEGMENT to replace the cargo record
β Consolidated Acceptance Criteria
- Merlin hold preparation is performed → clear detail line 1, concatenate 'Cargo on HOLD for inspection by CBSA - EDI350' into detail line 1, clear detail line 2, concatenate 'Equipment : ' with cargo equipment ID for index into detail line 3, concatenate 'Waybill : ' with cargo CCN carrier index, cargo origin station number index, cargo waybill number index into detail line 4, concatenate 'CCN : ' with cargo CCN key into detail line 5, concatenate 'DESTINATION : ' with cargo destination station name, ', ' with cargo destination station state code into detail line 6, concatenate 'MANIFEST UPON : ' with cargo manifest to station name into detail line 7, set line count to 7, set message type to hold, and perform email send preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_34PrepareCargoHoldEmail(["Start Step"])
E_34PrepareCargoHoldEmail(["End Step"])
N_34PrepareCargoHoldEmail_Node0{"Merlin hold preparation is
performed"}:::decision N_34PrepareCargoHoldEmail_Node0_action["Clear detail line 1, concatenate
Cargo on HOLD for inspection by CBSA
- EDI350 into detail line 1, clear
detail line 2, concatenate Equipment
: with cargo equipment ID for index
into detail line 3, concatenate
Waybill : with cargo CCN carrier
index, cargo origin station number
index, cargo waybill number index
into detail line 4, concatenate CCN
: with cargo CCN key into detail
line 5, concatenate DESTINATION :
with cargo destination station name,
, with cargo destination station
state code into detail line 6,
concatenate MANIFEST UPON : with
cargo manifest to station name into
detail line 7, set line count to 7,
set message type to hold, and
perform email send preparation"]:::main N_34PrepareCargoHoldEmail_Node0 -- Yes --> N_34PrepareCargoHoldEmail_Node0_action N_34PrepareCargoHoldEmail_Node0_action --> E_34PrepareCargoHoldEmail S_34PrepareCargoHoldEmail --> N_34PrepareCargoHoldEmail_Node0 N_34PrepareCargoHoldEmail_Node0 -- No --> E_34PrepareCargoHoldEmail
performed"}:::decision N_34PrepareCargoHoldEmail_Node0_action["Clear detail line 1, concatenate
Cargo on HOLD for inspection by CBSA
- EDI350 into detail line 1, clear
detail line 2, concatenate Equipment
: with cargo equipment ID for index
into detail line 3, concatenate
Waybill : with cargo CCN carrier
index, cargo origin station number
index, cargo waybill number index
into detail line 4, concatenate CCN
: with cargo CCN key into detail
line 5, concatenate DESTINATION :
with cargo destination station name,
, with cargo destination station
state code into detail line 6,
concatenate MANIFEST UPON : with
cargo manifest to station name into
detail line 7, set line count to 7,
set message type to hold, and
perform email send preparation"]:::main N_34PrepareCargoHoldEmail_Node0 -- Yes --> N_34PrepareCargoHoldEmail_Node0_action N_34PrepareCargoHoldEmail_Node0_action --> E_34PrepareCargoHoldEmail S_34PrepareCargoHoldEmail --> N_34PrepareCargoHoldEmail_Node0 N_34PrepareCargoHoldEmail_Node0 -- No --> E_34PrepareCargoHoldEmail
File: GCX126R.cbl
GIVEN:
Cargo has been placed on hold and CCN starts with 6105
WHEN:
Merlin hold preparation is performed
THEN:
Clear detail line 1, concatenate 'Cargo on HOLD for inspection by CBSA - EDI350' into detail line 1, clear detail line 2, concatenate 'Equipment : ' with cargo equipment ID for index into detail line 3, concatenate 'Waybill : ' with cargo CCN carrier index, cargo origin station number index, cargo waybill number index into detail line 4, concatenate 'CCN : ' with cargo CCN key into detail line 5, concatenate 'DESTINATION : ' with cargo destination station name, ', ' with cargo destination station state code into detail line 6, concatenate 'MANIFEST UPON : ' with cargo manifest to station name into detail line 7, set line count to 7, set message type to hold, and perform email send preparation
β Consolidated Acceptance Criteria
- Email send preparation is performed → if message type is error then concatenate 'CUSTOMS RECEIVED ERR MSG ' with cargo CCN key into subject, else if message type is info then concatenate 'BROKER/MANIFEST MISMATCH ' with cargo CCN key into subject, else if message type is hold then concatenate 'CBSA CARGO HOLD - ' with cargo CCN key into subject, else move detail line 1 to subject, save current recipient and filename, clear recipient, if admin segment found then move admin DC Merlin 1 to recipient 1 and admin DC Merlin 5 to recipient 2, else move 'OM01247' to recipient 1 and clear recipient 2, if keywords are spaces or low values then if cargo found and cargo CCN key not spaces then move cargo CCN key to keywords, else move current CCN key to keywords, if message type is unknown then move 'UNKNOWN' to filename, clear recipient, move 'OM01247' to recipient 1, and perform call email send, else if message type is error then move 'CAERROR' to filename, perform call email send, move 'IN' to filename, clear recipient, move 'OM01247' to recipient 1, and perform call email send, else if message type is info then move 'IN' to filename, clear recipient, move 'OM01247' to recipient 1, and perform call email send, else if message type is unrelease then move 'IN' to filename, perform call email send, clear recipient, perform fetch manifest station segment, if manifest station Merlin ID not spaces then move 'IN' to filename, move manifest station Merlin ID to recipient 1, and perform call email send, else if message type is release then clear recipient, perform fetch manifest station segment, if manifest station Merlin ID not spaces then move 'IN' to filename, move manifest station Merlin ID to recipient 1, and perform call email send, else if message type is hold then move 'CAHOLD' to filename, clear recipient, move 'OM01247' to recipient 1, and perform call email send, then perform reset report 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_39SendEmailNotification(["Start Step"])
E_39SendEmailNotification(["End Step"])
N_39SendEmailNotification_Node0{"Email send preparation is performed"}:::decision
N_39SendEmailNotification_Node0_action["If message type is error then
concatenate CUSTOMS RECEIVED ERR MSG
with cargo CCN key into subject,
else if message type is info then
concatenate BROKERMANIFEST MISMATCH
with cargo CCN key into subject,
else if message type is hold then
concatenate CBSA CARGO HOLD - with
cargo CCN key into subject, else
move detail line 1 to subject, save
current recipient and filename,
clear recipient, if admin segment
found then move admin DC Merlin 1 to
recipient 1 and admin DC Merlin 5 to
recipient 2, else move OM01247 to
recipient 1 and clear recipient 2,
if keywords are spaces or low values
then if cargo found and cargo CCN
key not spaces then move cargo CCN
key to keywords, else move current
CCN key to keywords, if message type
is unknown then move UNKNOWN to
filename, clear recipient, move
OM01247 to recipient 1, and perform
call email send, else if message
type is error then move CAERROR to
filename, perform call email send,
move IN to filename, clear
recipient, move OM01247 to recipient
1, and perform call email send, else
if message type is info then move IN
to filename, clear recipient, move
OM01247 to recipient 1, and perform
call email send, else if message
type is unrelease then move IN to
filename, perform call email send,
clear recipient, perform fetch
manifest station segment, if
manifest station Merlin ID not
spaces then move IN to filename,
move manifest station Merlin ID to
recipient 1, and perform call email
send, else if message type is
release then clear recipient,
perform fetch manifest station
segment, if manifest station Merlin
ID not spaces then move IN to
filename, move manifest station
Merlin ID to recipient 1, and
perform call email send, else if
message type is hold then move
CAHOLD to filename, clear recipient,
move OM01247 to recipient 1, and
perform call email send, then
perform reset report fields"]:::main N_39SendEmailNotification_Node0 -- Yes --> N_39SendEmailNotification_Node0_action N_39SendEmailNotification_Node0_action --> E_39SendEmailNotification S_39SendEmailNotification --> N_39SendEmailNotification_Node0 N_39SendEmailNotification_Node0 -- No --> E_39SendEmailNotification
concatenate CUSTOMS RECEIVED ERR MSG
with cargo CCN key into subject,
else if message type is info then
concatenate BROKERMANIFEST MISMATCH
with cargo CCN key into subject,
else if message type is hold then
concatenate CBSA CARGO HOLD - with
cargo CCN key into subject, else
move detail line 1 to subject, save
current recipient and filename,
clear recipient, if admin segment
found then move admin DC Merlin 1 to
recipient 1 and admin DC Merlin 5 to
recipient 2, else move OM01247 to
recipient 1 and clear recipient 2,
if keywords are spaces or low values
then if cargo found and cargo CCN
key not spaces then move cargo CCN
key to keywords, else move current
CCN key to keywords, if message type
is unknown then move UNKNOWN to
filename, clear recipient, move
OM01247 to recipient 1, and perform
call email send, else if message
type is error then move CAERROR to
filename, perform call email send,
move IN to filename, clear
recipient, move OM01247 to recipient
1, and perform call email send, else
if message type is info then move IN
to filename, clear recipient, move
OM01247 to recipient 1, and perform
call email send, else if message
type is unrelease then move IN to
filename, perform call email send,
clear recipient, perform fetch
manifest station segment, if
manifest station Merlin ID not
spaces then move IN to filename,
move manifest station Merlin ID to
recipient 1, and perform call email
send, else if message type is
release then clear recipient,
perform fetch manifest station
segment, if manifest station Merlin
ID not spaces then move IN to
filename, move manifest station
Merlin ID to recipient 1, and
perform call email send, else if
message type is hold then move
CAHOLD to filename, clear recipient,
move OM01247 to recipient 1, and
perform call email send, then
perform reset report fields"]:::main N_39SendEmailNotification_Node0 -- Yes --> N_39SendEmailNotification_Node0_action N_39SendEmailNotification_Node0_action --> E_39SendEmailNotification S_39SendEmailNotification --> N_39SendEmailNotification_Node0 N_39SendEmailNotification_Node0 -- No --> E_39SendEmailNotification
File: GCX126R.cbl
GIVEN:
Email notification has been prepared with message type and content
WHEN:
Email send preparation is performed
THEN:
- If message type is error then concatenate 'customs received err msg ' with cargo ccn key into subject, else if message type is info then concatenate 'broker/manifest mismatch ' with cargo ccn key into subject, else if message type is hold then concatenate 'cbsa cargo hold - ' with cargo ccn key into subject, else move detail line 1 to subject, save current recipient
- Filename, clear recipient, if admin segment found then move admin dc merlin 1 to recipient 1
- Admin dc merlin 5 to recipient 2, else move 'om01247' to recipient 1
- Clear recipient 2, if keywords are spaces or low values then if cargo found
- Cargo ccn key not spaces then move cargo ccn key to keywords, else move current ccn key to keywords, if message type is unknown then move 'unknown' to filename, clear recipient, move 'om01247' to recipient 1, and perform call email send, else if message type is error then move 'caerror' to filename, perform call email send, move 'in' to filename, clear recipient, move 'om01247' to recipient 1, and perform call email send, else if message type is info then move 'in' to filename, clear recipient, move 'om01247' to recipient 1, and perform call email send, else if message type is unrelease then move 'in' to filename, perform call email send, clear recipient, perform fetch manifest station segment, if manifest station merlin id not spaces then move 'in' to filename, move manifest station merlin id to recipient 1, and perform call email send, else if message type is release then clear recipient, perform fetch manifest station segment, if manifest station merlin id not spaces then move 'in' to filename, move manifest station merlin id to recipient 1, and perform call email send, else if message type is hold then move 'cahold' to filename, clear recipient, move 'om01247' to recipient 1, and perform call email send, then perform reset report fields
β Consolidated Acceptance Criteria
- The system executes the resend operation → the system calls Z116-RESEND-MERLIN to attempt delivery to the default 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_40ResendFailedEmail(["Start Step"])
E_40ResendFailedEmail(["End Step"])
N_40ResendFailedEmail_Node0{"The system executes the resend
operation"}:::decision N_40ResendFailedEmail_Node0_action["The system calls Z116-RESEND-MERLIN
to attempt delivery to the default
recipient"]:::main N_40ResendFailedEmail_Node0 -- Yes --> N_40ResendFailedEmail_Node0_action N_40ResendFailedEmail_Node0_action --> E_40ResendFailedEmail S_40ResendFailedEmail --> N_40ResendFailedEmail_Node0 N_40ResendFailedEmail_Node0 -- No --> E_40ResendFailedEmail
operation"}:::decision N_40ResendFailedEmail_Node0_action["The system calls Z116-RESEND-MERLIN
to attempt delivery to the default
recipient"]:::main N_40ResendFailedEmail_Node0 -- Yes --> N_40ResendFailedEmail_Node0_action N_40ResendFailedEmail_Node0_action --> E_40ResendFailedEmail S_40ResendFailedEmail --> N_40ResendFailedEmail_Node0 N_40ResendFailedEmail_Node0 -- No --> E_40ResendFailedEmail
File: GCX126R.cbl
GIVEN:
An email notification has failed due to invalid recipient and has been rerouted to default user OM01247 with destination filename 'IN'
WHEN:
The system executes the resend operation
THEN:
The system calls Z116-RESEND-MERLIN to attempt delivery to the default recipient
β Consolidated Acceptance Criteria
- The system invokes the Z150-LOG-CARGO-INFO-MSG procedure → the equipment information is logged to cargo history with current date, time, CCN, cargo type indicator, and action code
- The system logs the release information → a GCT1051E log entry is created with current machine date in GCX105-DATE, current machine time in GCX105-TIME, follower CCN in GCX105-TRAIN-OR-US-CCN, cargo type set to CA-CARGO, action code set to LOG-USE-INPUT-MESSAGE, and the release message in GCX105-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_42LogCargoInformationMessage(["Start Step"])
E_42LogCargoInformationMessage(["End Step"])
N_42LogCargoInformationMessage_Node0{"The system invokes the
Z150-LOG-CARGO-INFO-MSG procedure"}:::decision N_42LogCargoInformationMessage_Node0_action["The equipment information is logged
to cargo history with current date,
time, CCN, cargo type indicator, and
action code"]:::main N_42LogCargoInformationMessage_Node0 -- Yes --> N_42LogCargoInformationMessage_Node0_action N_42LogCargoInformationMessage_Node0_action --> E_42LogCargoInformationMessage S_42LogCargoInformationMessage --> N_42LogCargoInformationMessage_Node0 N_42LogCargoInformationMessage_Node1{"The system logs the release
information"}:::decision N_42LogCargoInformationMessage_Node1_action["A GCT1051E log entry is created
with current machine date in
GCX105-DATE, current machine time in
GCX105-TIME, follower CCN in
GCX105-TRAIN-OR-US-CCN, cargo type
set to CA-CARGO, action code set to
LOG-USE-INPUT-MESSAGE, and the
release message in GCX105-MESSAGE"]:::main N_42LogCargoInformationMessage_Node1 -- Yes --> N_42LogCargoInformationMessage_Node1_action N_42LogCargoInformationMessage_Node1_action --> E_42LogCargoInformationMessage N_42LogCargoInformationMessage_Node0 -- No --> N_42LogCargoInformationMessage_Node1 N_42LogCargoInformationMessage_Node1 -- No --> E_42LogCargoInformationMessage
Z150-LOG-CARGO-INFO-MSG procedure"}:::decision N_42LogCargoInformationMessage_Node0_action["The equipment information is logged
to cargo history with current date,
time, CCN, cargo type indicator, and
action code"]:::main N_42LogCargoInformationMessage_Node0 -- Yes --> N_42LogCargoInformationMessage_Node0_action N_42LogCargoInformationMessage_Node0_action --> E_42LogCargoInformationMessage S_42LogCargoInformationMessage --> N_42LogCargoInformationMessage_Node0 N_42LogCargoInformationMessage_Node1{"The system logs the release
information"}:::decision N_42LogCargoInformationMessage_Node1_action["A GCT1051E log entry is created
with current machine date in
GCX105-DATE, current machine time in
GCX105-TIME, follower CCN in
GCX105-TRAIN-OR-US-CCN, cargo type
set to CA-CARGO, action code set to
LOG-USE-INPUT-MESSAGE, and the
release message in GCX105-MESSAGE"]:::main N_42LogCargoInformationMessage_Node1 -- Yes --> N_42LogCargoInformationMessage_Node1_action N_42LogCargoInformationMessage_Node1_action --> E_42LogCargoInformationMessage N_42LogCargoInformationMessage_Node0 -- No --> N_42LogCargoInformationMessage_Node1 N_42LogCargoInformationMessage_Node1 -- No --> E_42LogCargoInformationMessage
File: GCX126R.cbl
GIVEN:
Equipment information from LOG-LINE has been moved to WS-GCX105-INFO-MSG field
WHEN:
The system invokes the Z150-LOG-CARGO-INFO-MSG procedure
THEN:
The equipment information is logged to cargo history with current date, time, CCN, cargo type indicator, and action code
File: GCX126R.cbl
GIVEN:
A release message has been built in WS-GCX105-INFO-MSG AND the follower cargo CCN is in WS-CURRENT-CCN-KEY
WHEN:
The system logs the release information
THEN:
A GCT1051E log entry is created with current machine date in GCX105-DATE, current machine time in GCX105-TIME, follower CCN in GCX105-TRAIN-OR-US-CCN, cargo type set to CA-CARGO, action code set to LOG-USE-INPUT-MESSAGE, and the release message in GCX105-MESSAGE
β Consolidated Acceptance Criteria
- The system writes the log entry to the message queue → the system replaces all spaces in GCX105-DATE with zeroes, replaces all spaces in GCX105-TIME with '1', moves the GCX105-INPUT to GCT1051E-MSG, sets the accept status to blank, calls CIMS with CHNG function for the alternate PCB and GCT1051E segment, calls WRITMSGL with the alternate PCB, message code, message text, message length and module name, and calls CIMS with PURG function for the alternate PCB to commit 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_42LogCargoInformationMessagetoIMSMessageQueue(["Start Step"])
E_42LogCargoInformationMessagetoIMSMessageQueue(["End Step"])
N_42LogCargoInformationMessagetoIMSMessageQueue_Node0{"The system writes the log entry to
the message queue"}:::decision N_42LogCargoInformationMessagetoIMSMessageQueue_Node0_action["The system replaces all spaces in
GCX105-DATE with zeroes, replaces
all spaces in GCX105-TIME with 1 ,
moves the GCX105-INPUT to
GCT1051E-MSG, sets the accept status
to blank, calls CIMS with CHNG
function for the alternate PCB and
GCT1051E segment, calls WRITMSGL
with the alternate PCB, message
code, message text, message length
and module name, and calls CIMS with
PURG function for the alternate PCB
to commit the message"]:::main N_42LogCargoInformationMessagetoIMSMessageQueue_Node0 -- Yes --> N_42LogCargoInformationMessagetoIMSMessageQueue_Node0_action N_42LogCargoInformationMessagetoIMSMessageQueue_Node0_action --> E_42LogCargoInformationMessagetoIMSMessageQueue S_42LogCargoInformationMessagetoIMSMessageQueue --> N_42LogCargoInformationMessagetoIMSMessageQueue_Node0 N_42LogCargoInformationMessagetoIMSMessageQueue_Node0 -- No --> E_42LogCargoInformationMessagetoIMSMessageQueue
the message queue"}:::decision N_42LogCargoInformationMessagetoIMSMessageQueue_Node0_action["The system replaces all spaces in
GCX105-DATE with zeroes, replaces
all spaces in GCX105-TIME with 1 ,
moves the GCX105-INPUT to
GCT1051E-MSG, sets the accept status
to blank, calls CIMS with CHNG
function for the alternate PCB and
GCT1051E segment, calls WRITMSGL
with the alternate PCB, message
code, message text, message length
and module name, and calls CIMS with
PURG function for the alternate PCB
to commit the message"]:::main N_42LogCargoInformationMessagetoIMSMessageQueue_Node0 -- Yes --> N_42LogCargoInformationMessagetoIMSMessageQueue_Node0_action N_42LogCargoInformationMessagetoIMSMessageQueue_Node0_action --> E_42LogCargoInformationMessagetoIMSMessageQueue S_42LogCargoInformationMessagetoIMSMessageQueue --> N_42LogCargoInformationMessagetoIMSMessageQueue_Node0 N_42LogCargoInformationMessagetoIMSMessageQueue_Node0 -- No --> E_42LogCargoInformationMessagetoIMSMessageQueue
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The GCX105 log structure has been populated with arrival event information including date, time, CCN, and message text, and the message field is not spaces or low-values
WHEN:
The system writes the log entry to the message queue
THEN:
- The system replaces all spaces in gcx105-date with zeroes, replaces all spaces in gcx105-time with '1', moves the gcx105-input to gct1051e-msg, sets the accept status to blank, calls cims with chng function for the alternate pcb
- Gct1051e segment, calls writmsgl with the alternate pcb, message code, message text, message length
- Module name, and calls cims with purg function for the alternate pcb to commit the message
β Consolidated Acceptance Criteria
- The system updates the cargo record → perform Z3100-REPL-CARGO which clears CC-STATUS-CODE, sets CC-ACCEPT-STATUS to spaces, and calls CIMS with REPL function code, GCCC-PCB, and GCCC-CARGO-REPORT-SEGMENT to 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_43UpdateCargoRecordReplacecargorecordindatabase(["Start Step"])
E_43UpdateCargoRecordReplacecargorecordindatabase(["End Step"])
N_43UpdateCargoRecordReplacecargorecordindatabase_Node0{"The system updates the cargo record"}:::decision
N_43UpdateCargoRecordReplacecargorecordindatabase_Node0_action["Perform Z3100-REPL-CARGO which
clears CC-STATUS-CODE, sets
CC-ACCEPT-STATUS to spaces, and
calls CIMS with REPL function code,
GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT to replace
the cargo record"]:::main N_43UpdateCargoRecordReplacecargorecordindatabase_Node0 -- Yes --> N_43UpdateCargoRecordReplacecargorecordindatabase_Node0_action N_43UpdateCargoRecordReplacecargorecordindatabase_Node0_action --> E_43UpdateCargoRecordReplacecargorecordindatabase S_43UpdateCargoRecordReplacecargorecordindatabase --> N_43UpdateCargoRecordReplacecargorecordindatabase_Node0 N_43UpdateCargoRecordReplacecargorecordindatabase_Node0 -- No --> E_43UpdateCargoRecordReplacecargorecordindatabase
clears CC-STATUS-CODE, sets
CC-ACCEPT-STATUS to spaces, and
calls CIMS with REPL function code,
GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT to replace
the cargo record"]:::main N_43UpdateCargoRecordReplacecargorecordindatabase_Node0 -- Yes --> N_43UpdateCargoRecordReplacecargorecordindatabase_Node0_action N_43UpdateCargoRecordReplacecargorecordindatabase_Node0_action --> E_43UpdateCargoRecordReplacecargorecordindatabase S_43UpdateCargoRecordReplacecargorecordindatabase --> N_43UpdateCargoRecordReplacecargorecordindatabase_Node0 N_43UpdateCargoRecordReplacecargorecordindatabase_Node0 -- No --> E_43UpdateCargoRecordReplacecargorecordindatabase
File: GCX126R.cbl
GIVEN:
Cargo record GCCC-CARGO-REPORT-SEGMENT has been updated with release information
WHEN:
The system updates the cargo record
THEN:
Perform Z3100-REPL-CARGO which clears CC-STATUS-CODE, sets CC-ACCEPT-STATUS to spaces, and calls CIMS with REPL function code, GCCC-PCB, and GCCC-CARGO-REPORT-SEGMENT to replace the cargo record
β Consolidated Acceptance Criteria
- The system updates the follower cargo record → the cargo record is replaced in GCSCCRT table using REPL operation with the updated cargo 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_43UpdateCargoRecord(["Start Step"])
E_43UpdateCargoRecord(["End Step"])
N_43UpdateCargoRecord_Node0{"The system updates the follower
cargo record"}:::decision N_43UpdateCargoRecord_Node0_action["The cargo record is replaced in
GCSCCRT table using REPL operation
with the updated cargo segment data"]:::main N_43UpdateCargoRecord_Node0 -- Yes --> N_43UpdateCargoRecord_Node0_action N_43UpdateCargoRecord_Node0_action --> E_43UpdateCargoRecord S_43UpdateCargoRecord --> N_43UpdateCargoRecord_Node0 N_43UpdateCargoRecord_Node0 -- No --> E_43UpdateCargoRecord
cargo record"}:::decision N_43UpdateCargoRecord_Node0_action["The cargo record is replaced in
GCSCCRT table using REPL operation
with the updated cargo segment data"]:::main N_43UpdateCargoRecord_Node0 -- Yes --> N_43UpdateCargoRecord_Node0_action N_43UpdateCargoRecord_Node0_action --> E_43UpdateCargoRecord S_43UpdateCargoRecord --> N_43UpdateCargoRecord_Node0 N_43UpdateCargoRecord_Node0 -- No --> E_43UpdateCargoRecord
File: GCX126R.cbl
GIVEN:
All release information has been set in the follower cargo segment (GCCC-CARGO-REPORT-SEGMENT) including release date, time, user, status, type, and reason
WHEN:
The system updates the follower cargo record
THEN:
The cargo record is replaced in GCSCCRT table using REPL operation with the updated cargo segment data
β Consolidated Acceptance Criteria
- Message status is evaluated → if completion code is not OK and reason code is 2033 then set message not available flag, else if completion code is OK and backout count is not zero then set skip message flag, else if completion code is OK and maximum MQS entries is less than 1 then abort with error 'USER ABEND 350 MESSAGE TOO SHORT', else if completion code is OK and backout count is zero then set good message found flag, else set end of queue 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_MessageAvailableandMessageValid(["Start Step"])
E_MessageAvailableandMessageValid(["End Step"])
N_MessageAvailableandMessageValid_Node0{"Message status is evaluated"}:::decision
N_MessageAvailableandMessageValid_Node0_action["If completion code is not OK and
reason code is 2033 then set message
not available flag, else if
completion code is OK and backout
count is not zero then set skip
message flag, else if completion
code is OK and maximum MQS entries
is less than 1 then abort with error
USER ABEND 350 MESSAGE TOO SHORT ,
else if completion code is OK and
backout count is zero then set good
message found flag, else set end of
queue flag"]:::exclusion N_MessageAvailableandMessageValid_Node0 -- Yes -->|Alternative| N_MessageAvailableandMessageValid_Node0_action N_MessageAvailableandMessageValid_Node0_action --> E_MessageAvailableandMessageValid S_MessageAvailableandMessageValid --> N_MessageAvailableandMessageValid_Node0 N_MessageAvailableandMessageValid_Node0 -- No --> E_MessageAvailableandMessageValid
reason code is 2033 then set message
not available flag, else if
completion code is OK and backout
count is not zero then set skip
message flag, else if completion
code is OK and maximum MQS entries
is less than 1 then abort with error
USER ABEND 350 MESSAGE TOO SHORT ,
else if completion code is OK and
backout count is zero then set good
message found flag, else set end of
queue flag"]:::exclusion N_MessageAvailableandMessageValid_Node0 -- Yes -->|Alternative| N_MessageAvailableandMessageValid_Node0_action N_MessageAvailableandMessageValid_Node0_action --> E_MessageAvailableandMessageValid S_MessageAvailableandMessageValid --> N_MessageAvailableandMessageValid_Node0 N_MessageAvailableandMessageValid_Node0 -- No --> E_MessageAvailableandMessageValid
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been retrieved from the queue
WHEN:
Message status is evaluated
THEN:
- If completion code is not ok
- Reason code is 2033 then set message not available flag, else if completion code is ok
- Backout count is not zero then set skip message flag, else if completion code is ok
- Maximum mqs entries is less than 1 then abort with error 'user abend 350 message too short', else if completion code is ok
- Backout count is zero then set good message found flag, else set end of queue flag
β Consolidated Acceptance Criteria
- The program initialization begins → the current program name from CCCOM is saved to PROG-NAME-SAVED and MODULE-NAME is moved to CC-PROG 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_SetProgramNameandModuleName(["Start Step"])
E_SetProgramNameandModuleName(["End Step"])
N_SetProgramNameandModuleName_Node0{"The program initialization begins"}:::decision
N_SetProgramNameandModuleName_Node0_action["The current program name from CCCOM
is saved to PROG-NAME-SAVED and
MODULE-NAME is moved to CC-PROG in
CCCOM"]:::main N_SetProgramNameandModuleName_Node0 -- Yes --> N_SetProgramNameandModuleName_Node0_action N_SetProgramNameandModuleName_Node0_action --> E_SetProgramNameandModuleName S_SetProgramNameandModuleName --> N_SetProgramNameandModuleName_Node0 N_SetProgramNameandModuleName_Node0 -- No --> E_SetProgramNameandModuleName
is saved to PROG-NAME-SAVED and
MODULE-NAME is moved to CC-PROG in
CCCOM"]:::main N_SetProgramNameandModuleName_Node0 -- Yes --> N_SetProgramNameandModuleName_Node0_action N_SetProgramNameandModuleName_Node0_action --> E_SetProgramNameandModuleName S_SetProgramNameandModuleName --> N_SetProgramNameandModuleName_Node0 N_SetProgramNameandModuleName_Node0 -- No --> E_SetProgramNameandModuleName
File: GCX126R.cbl
GIVEN:
The program GCX126 is starting execution
WHEN:
The program initialization begins
THEN:
- The current program name from cccom is saved to prog-name-saved
- Module-name is moved to cc-prog in cccom
β Consolidated Acceptance Criteria
- Working storage initialization is performed → lOG-INDX is set to 1, WS-K1-REMARK-NDX is set to ZEROES, LOG-ARRAY is set to SPACES, WS-PREV-CRN is set to SPACES, WS-MQS-LEN-HEADER is set to LENGTH OF MQS-MESSAGE-HEADER, WS-MQS-LEN-OF-1-ENTRY is set to LENGTH OF MQS-TABLE-ENTRY(1), MRLN-LINE is set to 1, WS-CTR-NEW is set to 1, and MRLN-350-REPORT is set to SPACES
- Database access parameters are initialized → cC-ACCEPT-STATUS in CCCOM is set to 'GE', GCCTBIO-FUNC-CODE is set to GU, GCSTBRT-KEY-VALUE is set to SPACES, GCSTBDP-KEY-VALUE is set to SPACES, GCCTBIO-RETURN-FLAG is set to SPACES, GCSTBRT-AD-SEGMENT is set to SPACES, SECOND-PCB-FLAG is set to SPACES, and UNQUAL-SSA-FLAG is set to SPACES
- Message segment structures are initialized → m10-SEGMENT, P4-SEGMENT, V9-SEGMENT, K1-SEGMENT, X4-SEGMENT, and N7-SEGMENT are all initialized to their 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_InitializeWorkingStorageFields(["Start Step"])
E_InitializeWorkingStorageFields(["End Step"])
N_InitializeWorkingStorageFields_Node0{"Working storage initialization is
performed"}:::decision N_InitializeWorkingStorageFields_Node0_action["LOG-INDX is set to 1,
WS-K1-REMARK-NDX is set to ZEROES,
LOG-ARRAY is set to SPACES,
WS-PREV-CRN is set to SPACES,
WS-MQS-LEN-HEADER is set to LENGTH
OF MQS-MESSAGE-HEADER,
WS-MQS-LEN-OF-1-ENTRY is set to
LENGTH OF MQS-TABLE-ENTRY1,
MRLN-LINE is set to 1, WS-CTR-NEW is
set to 1, and MRLN-350-REPORT is set
to SPACES"]:::main N_InitializeWorkingStorageFields_Node0 -- Yes --> N_InitializeWorkingStorageFields_Node0_action N_InitializeWorkingStorageFields_Node0_action --> E_InitializeWorkingStorageFields S_InitializeWorkingStorageFields --> N_InitializeWorkingStorageFields_Node0 N_InitializeWorkingStorageFields_Node1{"Database access parameters are
initialized"}:::decision N_InitializeWorkingStorageFields_Node1_action["CC-ACCEPT-STATUS in CCCOM is set to
GE , GCCTBIO-FUNC-CODE is set to GU,
GCSTBRT-KEY-VALUE is set to SPACES,
GCSTBDP-KEY-VALUE is set to SPACES,
GCCTBIO-RETURN-FLAG is set to
SPACES, GCSTBRT-AD-SEGMENT is set to
SPACES, SECOND-PCB-FLAG is set to
SPACES, and UNQUAL-SSA-FLAG is set
to SPACES"]:::main N_InitializeWorkingStorageFields_Node1 -- Yes --> N_InitializeWorkingStorageFields_Node1_action N_InitializeWorkingStorageFields_Node1_action --> E_InitializeWorkingStorageFields N_InitializeWorkingStorageFields_Node0 -- No --> N_InitializeWorkingStorageFields_Node1 N_InitializeWorkingStorageFields_Node2{"Message segment structures are
initialized"}:::decision N_InitializeWorkingStorageFields_Node2_action["M10-SEGMENT, P4-SEGMENT,
V9-SEGMENT, K1-SEGMENT, X4-SEGMENT,
and N7-SEGMENT are all initialized
to their default values"]:::main N_InitializeWorkingStorageFields_Node2 -- Yes --> N_InitializeWorkingStorageFields_Node2_action N_InitializeWorkingStorageFields_Node2_action --> E_InitializeWorkingStorageFields N_InitializeWorkingStorageFields_Node1 -- No --> N_InitializeWorkingStorageFields_Node2 N_InitializeWorkingStorageFields_Node2 -- No --> E_InitializeWorkingStorageFields
performed"}:::decision N_InitializeWorkingStorageFields_Node0_action["LOG-INDX is set to 1,
WS-K1-REMARK-NDX is set to ZEROES,
LOG-ARRAY is set to SPACES,
WS-PREV-CRN is set to SPACES,
WS-MQS-LEN-HEADER is set to LENGTH
OF MQS-MESSAGE-HEADER,
WS-MQS-LEN-OF-1-ENTRY is set to
LENGTH OF MQS-TABLE-ENTRY1,
MRLN-LINE is set to 1, WS-CTR-NEW is
set to 1, and MRLN-350-REPORT is set
to SPACES"]:::main N_InitializeWorkingStorageFields_Node0 -- Yes --> N_InitializeWorkingStorageFields_Node0_action N_InitializeWorkingStorageFields_Node0_action --> E_InitializeWorkingStorageFields S_InitializeWorkingStorageFields --> N_InitializeWorkingStorageFields_Node0 N_InitializeWorkingStorageFields_Node1{"Database access parameters are
initialized"}:::decision N_InitializeWorkingStorageFields_Node1_action["CC-ACCEPT-STATUS in CCCOM is set to
GE , GCCTBIO-FUNC-CODE is set to GU,
GCSTBRT-KEY-VALUE is set to SPACES,
GCSTBDP-KEY-VALUE is set to SPACES,
GCCTBIO-RETURN-FLAG is set to
SPACES, GCSTBRT-AD-SEGMENT is set to
SPACES, SECOND-PCB-FLAG is set to
SPACES, and UNQUAL-SSA-FLAG is set
to SPACES"]:::main N_InitializeWorkingStorageFields_Node1 -- Yes --> N_InitializeWorkingStorageFields_Node1_action N_InitializeWorkingStorageFields_Node1_action --> E_InitializeWorkingStorageFields N_InitializeWorkingStorageFields_Node0 -- No --> N_InitializeWorkingStorageFields_Node1 N_InitializeWorkingStorageFields_Node2{"Message segment structures are
initialized"}:::decision N_InitializeWorkingStorageFields_Node2_action["M10-SEGMENT, P4-SEGMENT,
V9-SEGMENT, K1-SEGMENT, X4-SEGMENT,
and N7-SEGMENT are all initialized
to their default values"]:::main N_InitializeWorkingStorageFields_Node2 -- Yes --> N_InitializeWorkingStorageFields_Node2_action N_InitializeWorkingStorageFields_Node2_action --> E_InitializeWorkingStorageFields N_InitializeWorkingStorageFields_Node1 -- No --> N_InitializeWorkingStorageFields_Node2 N_InitializeWorkingStorageFields_Node2 -- No --> E_InitializeWorkingStorageFields
File: GCX126R.cbl
GIVEN:
The program is starting initialization
WHEN:
Working storage initialization is performed
THEN:
LOG-INDX is set to 1, WS-K1-REMARK-NDX is set to ZEROES, LOG-ARRAY is set to SPACES, WS-PREV-CRN is set to SPACES, WS-MQS-LEN-HEADER is set to LENGTH OF MQS-MESSAGE-HEADER, WS-MQS-LEN-OF-1-ENTRY is set to LENGTH OF MQS-TABLE-ENTRY(1), MRLN-LINE is set to 1, WS-CTR-NEW is set to 1, and MRLN-350-REPORT is set to SPACES
File: GCX126R.cbl
GIVEN:
The program needs to access database tables
WHEN:
Database access parameters are initialized
THEN:
CC-ACCEPT-STATUS in CCCOM is set to 'GE', GCCTBIO-FUNC-CODE is set to GU, GCSTBRT-KEY-VALUE is set to SPACES, GCSTBDP-KEY-VALUE is set to SPACES, GCCTBIO-RETURN-FLAG is set to SPACES, GCSTBRT-AD-SEGMENT is set to SPACES, SECOND-PCB-FLAG is set to SPACES, and UNQUAL-SSA-FLAG is set to SPACES
File: GCX126R.cbl
GIVEN:
The program is preparing to process a new EDI 350 message
WHEN:
Message segment structures are initialized
THEN:
M10-SEGMENT, P4-SEGMENT, V9-SEGMENT, K1-SEGMENT, X4-SEGMENT, and N7-SEGMENT are all initialized to their default values
β Consolidated Acceptance Criteria
- Segment flags are being initialized → wS-NO-HEADER-FOUND, WS-NO-TRAILER-FOUND, WS-NO-M10-SEG-FOUND, WS-NO-P4-SEG-FOUND, WS-NO-N7-SEG-FOUND, WS-NO-X4-SEG-FOUND, WS-NO-K1-SEG-FOUND, WS-NO-V9-SEG-FOUND, WS-NO-END-FOUND, and WS-CARGO-NOT-FOUND are all 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_InitializeSegmentFlags(["Start Step"])
E_InitializeSegmentFlags(["End Step"])
N_InitializeSegmentFlags_Node0{"Segment flags are being initialized"}:::decision
N_InitializeSegmentFlags_Node0_action["WS-NO-HEADER-FOUND,
WS-NO-TRAILER-FOUND,
WS-NO-M10-SEG-FOUND,
WS-NO-P4-SEG-FOUND,
WS-NO-N7-SEG-FOUND,
WS-NO-X4-SEG-FOUND,
WS-NO-K1-SEG-FOUND,
WS-NO-V9-SEG-FOUND, WS-NO-END-FOUND,
and WS-CARGO-NOT-FOUND are all set
to TRUE"]:::main N_InitializeSegmentFlags_Node0 -- Yes --> N_InitializeSegmentFlags_Node0_action N_InitializeSegmentFlags_Node0_action --> E_InitializeSegmentFlags S_InitializeSegmentFlags --> N_InitializeSegmentFlags_Node0 N_InitializeSegmentFlags_Node0 -- No --> E_InitializeSegmentFlags
WS-NO-TRAILER-FOUND,
WS-NO-M10-SEG-FOUND,
WS-NO-P4-SEG-FOUND,
WS-NO-N7-SEG-FOUND,
WS-NO-X4-SEG-FOUND,
WS-NO-K1-SEG-FOUND,
WS-NO-V9-SEG-FOUND, WS-NO-END-FOUND,
and WS-CARGO-NOT-FOUND are all set
to TRUE"]:::main N_InitializeSegmentFlags_Node0 -- Yes --> N_InitializeSegmentFlags_Node0_action N_InitializeSegmentFlags_Node0_action --> E_InitializeSegmentFlags S_InitializeSegmentFlags --> N_InitializeSegmentFlags_Node0 N_InitializeSegmentFlags_Node0 -- No --> E_InitializeSegmentFlags
File: GCX126R.cbl
GIVEN:
The program is initializing for message processing
WHEN:
Segment flags are being initialized
THEN:
WS-NO-HEADER-FOUND, WS-NO-TRAILER-FOUND, WS-NO-M10-SEG-FOUND, WS-NO-P4-SEG-FOUND, WS-NO-N7-SEG-FOUND, WS-NO-X4-SEG-FOUND, WS-NO-K1-SEG-FOUND, WS-NO-V9-SEG-FOUND, WS-NO-END-FOUND, and WS-CARGO-NOT-FOUND are all set to TRUE
β Consolidated Acceptance Criteria
- The Merlin sender code is being set → eMI-FROM-USERCODE is 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_SetMerlinReportUserCode(["Start Step"])
E_SetMerlinReportUserCode(["End Step"])
N_SetMerlinReportUserCode_Node0{"The Merlin sender code is being set"}:::decision
N_SetMerlinReportUserCode_Node0_action["EMI-FROM-USERCODE is set to OM01247"]:::main
N_SetMerlinReportUserCode_Node0 -- Yes --> N_SetMerlinReportUserCode_Node0_action
N_SetMerlinReportUserCode_Node0_action --> E_SetMerlinReportUserCode
S_SetMerlinReportUserCode --> N_SetMerlinReportUserCode_Node0
N_SetMerlinReportUserCode_Node0 -- No --> E_SetMerlinReportUserCode
File: GCX126R.cbl
GIVEN:
The program is initializing Merlin notification settings
WHEN:
The Merlin sender code is being set
THEN:
EMI-FROM-USERCODE is set to 'OM01247'
β Consolidated Acceptance Criteria
- Admin configuration is retrieved with TABLE-ID 'AD' and SEQID 'ADMINID' → gCCTBIO is called with function GU to retrieve GCSTBRT 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_RetrieveAdminConfigurationfromGCSTBRTTable(["Start Step"])
E_RetrieveAdminConfigurationfromGCSTBRTTable(["End Step"])
N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0{"Admin configuration is retrieved
with TABLE-ID AD and SEQID ADMINID"}:::decision N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0_action["GCCTBIO is called with function GU
to retrieve GCSTBRT segment"]:::main N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0 -- Yes --> N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0_action N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0_action --> E_RetrieveAdminConfigurationfromGCSTBRTTable S_RetrieveAdminConfigurationfromGCSTBRTTable --> N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0 N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0 -- No --> E_RetrieveAdminConfigurationfromGCSTBRTTable
with TABLE-ID AD and SEQID ADMINID"}:::decision N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0_action["GCCTBIO is called with function GU
to retrieve GCSTBRT segment"]:::main N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0 -- Yes --> N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0_action N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0_action --> E_RetrieveAdminConfigurationfromGCSTBRTTable S_RetrieveAdminConfigurationfromGCSTBRTTable --> N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0 N_RetrieveAdminConfigurationfromGCSTBRTTable_Node0 -- No --> E_RetrieveAdminConfigurationfromGCSTBRTTable
File: GCX126R.cbl
GIVEN:
The program needs to determine Merlin notification recipients
WHEN:
Admin configuration is retrieved with TABLE-ID 'AD' and SEQID 'ADMINID'
THEN:
GCCTBIO is called with function GU to retrieve GCSTBRT segment
β Consolidated Acceptance Criteria
- GCCTBIO-RETURN-FLAG equals '0' → 88-AD-SEGMENT-FOUND is set to TRUE, WS-TABLE-SEGMENT is moved to GCSTBRT-AD-SEGMENT, and GCSTBRT-AD-DC-P-MERLIN-1 is moved to WS-EMI-TO-USERCODE
- The system extracts the Merlin routing information → the system moves the value from GCSTBRT-AD-DC-P-MERLIN-1 to WS-EMI-TO-USERCODE for use in message 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_ExtractMerlinUserCodefromAdminConfig(["Start Step"])
E_ExtractMerlinUserCodefromAdminConfig(["End Step"])
N_ExtractMerlinUserCodefromAdminConfig_Node0{"GCCTBIO-RETURN-FLAG equals 0"}:::decision
N_ExtractMerlinUserCodefromAdminConfig_Node0_action["88-AD-SEGMENT-FOUND is set to TRUE,
WS-TABLE-SEGMENT is moved to
GCSTBRT-AD-SEGMENT, and
GCSTBRT-AD-DC-P-MERLIN-1 is moved to
WS-EMI-TO-USERCODE"]:::main N_ExtractMerlinUserCodefromAdminConfig_Node0 -- Yes --> N_ExtractMerlinUserCodefromAdminConfig_Node0_action N_ExtractMerlinUserCodefromAdminConfig_Node0_action --> E_ExtractMerlinUserCodefromAdminConfig S_ExtractMerlinUserCodefromAdminConfig --> N_ExtractMerlinUserCodefromAdminConfig_Node0 N_ExtractMerlinUserCodefromAdminConfig_Node1{"The system extracts the Merlin
routing information"}:::decision N_ExtractMerlinUserCodefromAdminConfig_Node1_action["The system moves the value from
GCSTBRT-AD-DC-P-MERLIN-1 to
WS-EMI-TO-USERCODE for use in
message routing"]:::main N_ExtractMerlinUserCodefromAdminConfig_Node1 -- Yes --> N_ExtractMerlinUserCodefromAdminConfig_Node1_action N_ExtractMerlinUserCodefromAdminConfig_Node1_action --> E_ExtractMerlinUserCodefromAdminConfig N_ExtractMerlinUserCodefromAdminConfig_Node0 -- No --> N_ExtractMerlinUserCodefromAdminConfig_Node1 N_ExtractMerlinUserCodefromAdminConfig_Node1 -- No --> E_ExtractMerlinUserCodefromAdminConfig
WS-TABLE-SEGMENT is moved to
GCSTBRT-AD-SEGMENT, and
GCSTBRT-AD-DC-P-MERLIN-1 is moved to
WS-EMI-TO-USERCODE"]:::main N_ExtractMerlinUserCodefromAdminConfig_Node0 -- Yes --> N_ExtractMerlinUserCodefromAdminConfig_Node0_action N_ExtractMerlinUserCodefromAdminConfig_Node0_action --> E_ExtractMerlinUserCodefromAdminConfig S_ExtractMerlinUserCodefromAdminConfig --> N_ExtractMerlinUserCodefromAdminConfig_Node0 N_ExtractMerlinUserCodefromAdminConfig_Node1{"The system extracts the Merlin
routing information"}:::decision N_ExtractMerlinUserCodefromAdminConfig_Node1_action["The system moves the value from
GCSTBRT-AD-DC-P-MERLIN-1 to
WS-EMI-TO-USERCODE for use in
message routing"]:::main N_ExtractMerlinUserCodefromAdminConfig_Node1 -- Yes --> N_ExtractMerlinUserCodefromAdminConfig_Node1_action N_ExtractMerlinUserCodefromAdminConfig_Node1_action --> E_ExtractMerlinUserCodefromAdminConfig N_ExtractMerlinUserCodefromAdminConfig_Node0 -- No --> N_ExtractMerlinUserCodefromAdminConfig_Node1 N_ExtractMerlinUserCodefromAdminConfig_Node1 -- No --> E_ExtractMerlinUserCodefromAdminConfig
File: GCX126R.cbl
GIVEN:
Admin configuration has been retrieved from GCSTBRT table
WHEN:
GCCTBIO-RETURN-FLAG equals '0'
THEN:
88-AD-SEGMENT-FOUND is set to TRUE, WS-TABLE-SEGMENT is moved to GCSTBRT-AD-SEGMENT, and GCSTBRT-AD-DC-P-MERLIN-1 is moved to WS-EMI-TO-USERCODE
File: GCX126R.cbl
GIVEN:
The administrative segment data has been successfully loaded into GCSTBRT-AD-SEGMENT
WHEN:
The system extracts the Merlin routing information
THEN:
The system moves the value from GCSTBRT-AD-DC-P-MERLIN-1 to WS-EMI-TO-USERCODE for use in message routing
β Consolidated Acceptance Criteria
- Machine date is being formatted → cC-MACHINE-YEAR from CCCOM is moved to WS-FMT-MACHINE-YEAR, CC-MACHINE-MONTH from CCCOM is moved to WS-FMT-MACHINE-MONTH, and CC-MACHINE-DAY from CCCOM is moved to WS-FMT-MACHINE-DAY
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMachineDateYYYYMMDD(["Start Step"])
E_FormatMachineDateYYYYMMDD(["End Step"])
N_FormatMachineDateYYYYMMDD_Node0{"Machine date is being formatted"}:::decision
N_FormatMachineDateYYYYMMDD_Node0_action["CC-MACHINE-YEAR from CCCOM is moved
to WS-FMT-MACHINE-YEAR,
CC-MACHINE-MONTH from CCCOM is moved
to WS-FMT-MACHINE-MONTH, and
CC-MACHINE-DAY from CCCOM is moved
to WS-FMT-MACHINE-DAY"]:::main N_FormatMachineDateYYYYMMDD_Node0 -- Yes --> N_FormatMachineDateYYYYMMDD_Node0_action N_FormatMachineDateYYYYMMDD_Node0_action --> E_FormatMachineDateYYYYMMDD S_FormatMachineDateYYYYMMDD --> N_FormatMachineDateYYYYMMDD_Node0 N_FormatMachineDateYYYYMMDD_Node0 -- No --> E_FormatMachineDateYYYYMMDD
to WS-FMT-MACHINE-YEAR,
CC-MACHINE-MONTH from CCCOM is moved
to WS-FMT-MACHINE-MONTH, and
CC-MACHINE-DAY from CCCOM is moved
to WS-FMT-MACHINE-DAY"]:::main N_FormatMachineDateYYYYMMDD_Node0 -- Yes --> N_FormatMachineDateYYYYMMDD_Node0_action N_FormatMachineDateYYYYMMDD_Node0_action --> E_FormatMachineDateYYYYMMDD S_FormatMachineDateYYYYMMDD --> N_FormatMachineDateYYYYMMDD_Node0 N_FormatMachineDateYYYYMMDD_Node0 -- No --> E_FormatMachineDateYYYYMMDD
File: GCX126R.cbl
GIVEN:
The program needs the current system date for processing
WHEN:
Machine date is being formatted
THEN:
CC-MACHINE-YEAR from CCCOM is moved to WS-FMT-MACHINE-YEAR, CC-MACHINE-MONTH from CCCOM is moved to WS-FMT-MACHINE-MONTH, and CC-MACHINE-DAY from CCCOM is moved to WS-FMT-MACHINE-DAY
β Consolidated Acceptance Criteria
- Machine time is being formatted → cC-MACHINE-HOUR from CCCOM is moved to WS-FMT-MACHINE-HOUR, CC-MACHINE-MIN from CCCOM is moved to WS-FMT-MACHINE-MIN, CC-MACHINE-SEC from CCCOM is moved to WS-FMT-MACHINE-SEC, and 01 is moved to WS-FMT-MACHINE-SEQ
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMachineTimeHHMMSS(["Start Step"])
E_FormatMachineTimeHHMMSS(["End Step"])
N_FormatMachineTimeHHMMSS_Node0{"Machine time is being formatted"}:::decision
N_FormatMachineTimeHHMMSS_Node0_action["CC-MACHINE-HOUR from CCCOM is moved
to WS-FMT-MACHINE-HOUR,
CC-MACHINE-MIN from CCCOM is moved
to WS-FMT-MACHINE-MIN,
CC-MACHINE-SEC from CCCOM is moved
to WS-FMT-MACHINE-SEC, and 01 is
moved to WS-FMT-MACHINE-SEQ"]:::main N_FormatMachineTimeHHMMSS_Node0 -- Yes --> N_FormatMachineTimeHHMMSS_Node0_action N_FormatMachineTimeHHMMSS_Node0_action --> E_FormatMachineTimeHHMMSS S_FormatMachineTimeHHMMSS --> N_FormatMachineTimeHHMMSS_Node0 N_FormatMachineTimeHHMMSS_Node0 -- No --> E_FormatMachineTimeHHMMSS
to WS-FMT-MACHINE-HOUR,
CC-MACHINE-MIN from CCCOM is moved
to WS-FMT-MACHINE-MIN,
CC-MACHINE-SEC from CCCOM is moved
to WS-FMT-MACHINE-SEC, and 01 is
moved to WS-FMT-MACHINE-SEQ"]:::main N_FormatMachineTimeHHMMSS_Node0 -- Yes --> N_FormatMachineTimeHHMMSS_Node0_action N_FormatMachineTimeHHMMSS_Node0_action --> E_FormatMachineTimeHHMMSS S_FormatMachineTimeHHMMSS --> N_FormatMachineTimeHHMMSS_Node0 N_FormatMachineTimeHHMMSS_Node0 -- No --> E_FormatMachineTimeHHMMSS
File: GCX126R.cbl
GIVEN:
The program needs the current system time for processing
WHEN:
Machine time is being formatted
THEN:
CC-MACHINE-HOUR from CCCOM is moved to WS-FMT-MACHINE-HOUR, CC-MACHINE-MIN from CCCOM is moved to WS-FMT-MACHINE-MIN, CC-MACHINE-SEC from CCCOM is moved to WS-FMT-MACHINE-SEC, and 01 is moved to WS-FMT-MACHINE-SEQ
β Consolidated Acceptance Criteria
- Formatted values are being saved → wS-FMT-MACHINE-DATE is moved to WS-SAVE-FMT-MACHINE-DATE and WS-X4-FMT-MACHINE-DATE, and WS-FMT-MACHINE-TIME is moved to WS-SAVE-FMT-MACHINE-TIME and WS-X4-FMT-MACHINE-TIME
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveFormattedDateTimeforProcessing(["Start Step"])
E_SaveFormattedDateTimeforProcessing(["End Step"])
N_SaveFormattedDateTimeforProcessing_Node0{"Formatted values are being saved"}:::decision
N_SaveFormattedDateTimeforProcessing_Node0_action["WS-FMT-MACHINE-DATE is moved to
WS-SAVE-FMT-MACHINE-DATE and
WS-X4-FMT-MACHINE-DATE, and
WS-FMT-MACHINE-TIME is moved to
WS-SAVE-FMT-MACHINE-TIME and
WS-X4-FMT-MACHINE-TIME"]:::main N_SaveFormattedDateTimeforProcessing_Node0 -- Yes --> N_SaveFormattedDateTimeforProcessing_Node0_action N_SaveFormattedDateTimeforProcessing_Node0_action --> E_SaveFormattedDateTimeforProcessing S_SaveFormattedDateTimeforProcessing --> N_SaveFormattedDateTimeforProcessing_Node0 N_SaveFormattedDateTimeforProcessing_Node0 -- No --> E_SaveFormattedDateTimeforProcessing
WS-SAVE-FMT-MACHINE-DATE and
WS-X4-FMT-MACHINE-DATE, and
WS-FMT-MACHINE-TIME is moved to
WS-SAVE-FMT-MACHINE-TIME and
WS-X4-FMT-MACHINE-TIME"]:::main N_SaveFormattedDateTimeforProcessing_Node0 -- Yes --> N_SaveFormattedDateTimeforProcessing_Node0_action N_SaveFormattedDateTimeforProcessing_Node0_action --> E_SaveFormattedDateTimeforProcessing S_SaveFormattedDateTimeforProcessing --> N_SaveFormattedDateTimeforProcessing_Node0 N_SaveFormattedDateTimeforProcessing_Node0 -- No --> E_SaveFormattedDateTimeforProcessing
File: GCX126R.cbl
GIVEN:
Machine date and time have been formatted
WHEN:
Formatted values are being saved
THEN:
- Ws-fmt-machine-date is moved to ws-save-fmt-machine-date
- Ws-x4-fmt-machine-date, and ws-fmt-machine-time is moved to ws-save-fmt-machine-time
- Ws-x4-fmt-machine-time
β Consolidated Acceptance Criteria
- Date conversion is performed → dATCV-PARAMETER-LIST is initialized, CC-MACHINE-CENTURY and CC-MACHINE-DATE-X from CCCOM are concatenated into INPUT-DATE-GREGORIAN, IN-FUNC-CODE is set to 2, OUT-FUNC-CODE is set to 1, ISCDATCV is called with DATCV-PARAMETER-LIST, and OUTPUT-1 is moved to WS-DATE
- DATCV-PARM-ERROR is TRUE → cC-ERROR-MESSAGE in CCCOM is set to 'MODULE ISCDATCV SAID CCCOM CONTAIN INVALID DATE' and the program aborts by performing Z900-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_ConvertGregorianDatetoJulianDate(["Start Step"])
E_ConvertGregorianDatetoJulianDate(["End Step"])
N_ConvertGregorianDatetoJulianDate_Node0{"Date conversion is performed"}:::decision
N_ConvertGregorianDatetoJulianDate_Node0_action["DATCV-PARAMETER-LIST is
initialized, CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X from CCCOM are
concatenated into
INPUT-DATE-GREGORIAN, IN-FUNC-CODE
is set to 2, OUT-FUNC-CODE is set to
1, ISCDATCV is called with
DATCV-PARAMETER-LIST, and OUTPUT-1
is moved to WS-DATE"]:::main N_ConvertGregorianDatetoJulianDate_Node0 -- Yes --> N_ConvertGregorianDatetoJulianDate_Node0_action N_ConvertGregorianDatetoJulianDate_Node0_action --> E_ConvertGregorianDatetoJulianDate S_ConvertGregorianDatetoJulianDate --> N_ConvertGregorianDatetoJulianDate_Node0 N_ConvertGregorianDatetoJulianDate_Node1{"DATCV-PARM-ERROR is TRUE"}:::decision N_ConvertGregorianDatetoJulianDate_Node1_action["CC-ERROR-MESSAGE in CCCOM is set to
MODULE ISCDATCV SAID CCCOM CONTAIN
INVALID DATE and the program aborts
by performing Z900-ABEND"]:::exclusion N_ConvertGregorianDatetoJulianDate_Node1 -- Yes -->|Alternative| N_ConvertGregorianDatetoJulianDate_Node1_action N_ConvertGregorianDatetoJulianDate_Node1_action --> E_ConvertGregorianDatetoJulianDate N_ConvertGregorianDatetoJulianDate_Node0 -- No --> N_ConvertGregorianDatetoJulianDate_Node1 N_ConvertGregorianDatetoJulianDate_Node1 -- No --> E_ConvertGregorianDatetoJulianDate
initialized, CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X from CCCOM are
concatenated into
INPUT-DATE-GREGORIAN, IN-FUNC-CODE
is set to 2, OUT-FUNC-CODE is set to
1, ISCDATCV is called with
DATCV-PARAMETER-LIST, and OUTPUT-1
is moved to WS-DATE"]:::main N_ConvertGregorianDatetoJulianDate_Node0 -- Yes --> N_ConvertGregorianDatetoJulianDate_Node0_action N_ConvertGregorianDatetoJulianDate_Node0_action --> E_ConvertGregorianDatetoJulianDate S_ConvertGregorianDatetoJulianDate --> N_ConvertGregorianDatetoJulianDate_Node0 N_ConvertGregorianDatetoJulianDate_Node1{"DATCV-PARM-ERROR is TRUE"}:::decision N_ConvertGregorianDatetoJulianDate_Node1_action["CC-ERROR-MESSAGE in CCCOM is set to
MODULE ISCDATCV SAID CCCOM CONTAIN
INVALID DATE and the program aborts
by performing Z900-ABEND"]:::exclusion N_ConvertGregorianDatetoJulianDate_Node1 -- Yes -->|Alternative| N_ConvertGregorianDatetoJulianDate_Node1_action N_ConvertGregorianDatetoJulianDate_Node1_action --> E_ConvertGregorianDatetoJulianDate N_ConvertGregorianDatetoJulianDate_Node0 -- No --> N_ConvertGregorianDatetoJulianDate_Node1 N_ConvertGregorianDatetoJulianDate_Node1 -- No --> E_ConvertGregorianDatetoJulianDate
File: GCX126R.cbl
GIVEN:
The current machine date is available in Gregorian format
WHEN:
Date conversion is performed
THEN:
- Datcv-parameter-list is initialized, cc-machine-century
- Cc-machine-date-x from cccom are concatenated into input-date-gregorian, in-func-code is set to 2, out-func-code is set to 1, iscdatcv is called with datcv-parameter-list, and output-1 is moved to ws-date
File: GCX126R.cbl
GIVEN:
Date conversion has been attempted using ISCDATCV
WHEN:
DATCV-PARM-ERROR is TRUE
THEN:
CC-ERROR-MESSAGE in CCCOM is set to 'MODULE ISCDATCV SAID CCCOM CONTAIN INVALID DATE' and the program aborts by performing Z900-ABEND
β Consolidated Acceptance Criteria
- Initial queue read is performed → wS-IOAREA is set to SPACES, CC-ACCEPT-STATUS in CCCOM is set to 'QCQD', and CIMS is called with CCCOM, GU function, IO-PCB from CCCOM, and WS-IOAREA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadInitialMessagefromIMSQueue(["Start Step"])
E_ReadInitialMessagefromIMSQueue(["End Step"])
N_ReadInitialMessagefromIMSQueue_Node0{"Initial queue read is performed"}:::decision
N_ReadInitialMessagefromIMSQueue_Node0_action["WS-IOAREA is set to SPACES,
CC-ACCEPT-STATUS in CCCOM is set to
QCQD , and CIMS is called with
CCCOM, GU function, IO-PCB from
CCCOM, and WS-IOAREA"]:::main N_ReadInitialMessagefromIMSQueue_Node0 -- Yes --> N_ReadInitialMessagefromIMSQueue_Node0_action N_ReadInitialMessagefromIMSQueue_Node0_action --> E_ReadInitialMessagefromIMSQueue S_ReadInitialMessagefromIMSQueue --> N_ReadInitialMessagefromIMSQueue_Node0 N_ReadInitialMessagefromIMSQueue_Node0 -- No --> E_ReadInitialMessagefromIMSQueue
CC-ACCEPT-STATUS in CCCOM is set to
QCQD , and CIMS is called with
CCCOM, GU function, IO-PCB from
CCCOM, and WS-IOAREA"]:::main N_ReadInitialMessagefromIMSQueue_Node0 -- Yes --> N_ReadInitialMessagefromIMSQueue_Node0_action N_ReadInitialMessagefromIMSQueue_Node0_action --> E_ReadInitialMessagefromIMSQueue S_ReadInitialMessagefromIMSQueue --> N_ReadInitialMessagefromIMSQueue_Node0 N_ReadInitialMessagefromIMSQueue_Node0 -- No --> E_ReadInitialMessagefromIMSQueue
File: GCX126R.cbl
GIVEN:
The program needs to check the IMS message queue
WHEN:
Initial queue read is performed
THEN:
WS-IOAREA is set to SPACES, CC-ACCEPT-STATUS in CCCOM is set to 'QCQD', and CIMS is called with CCCOM, GU function, IO-PCB from CCCOM, and WS-IOAREA
β Consolidated Acceptance Criteria
- MQ connection is established → mQCONNC is called with W03-MQMANAGER, W03-HCONN, W03-COMPCODE, and W03-REASON
- W03-COMPCODE is not equal to MQCC-OK → w03-REASON is moved to W03-REASON-CODE, OUTPUT-MESSAGE-TEXT is initialized, GCCMQERR is called with W03-REASON-CODE and OUTPUT-MESSAGE-TEXT, W03-REASON-CODE and OUTPUT-MESSAGE-TEXT are concatenated into MQ-ERROR-TEXT, '355' is moved to MQ-TRANS-SET, 'CONN FAILED' is moved to PGM-ERROR-TEXT, ERROR-MESSAGE2 is moved to CC-ERROR-MESSAGE in CCCOM, and the program aborts by performing Z900-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_EstablishMQConnectiontoQueueManager(["Start Step"])
E_EstablishMQConnectiontoQueueManager(["End Step"])
N_EstablishMQConnectiontoQueueManager_Node0{"MQ connection is established"}:::decision
N_EstablishMQConnectiontoQueueManager_Node0_action["MQCONNC is called with
W03-MQMANAGER, W03-HCONN,
W03-COMPCODE, and W03-REASON"]:::main N_EstablishMQConnectiontoQueueManager_Node0 -- Yes --> N_EstablishMQConnectiontoQueueManager_Node0_action N_EstablishMQConnectiontoQueueManager_Node0_action --> E_EstablishMQConnectiontoQueueManager S_EstablishMQConnectiontoQueueManager --> N_EstablishMQConnectiontoQueueManager_Node0 N_EstablishMQConnectiontoQueueManager_Node1{"W03-COMPCODE is not equal to
MQCC-OK"}:::decision N_EstablishMQConnectiontoQueueManager_Node1_action["W03-REASON is moved to
W03-REASON-CODE, OUTPUT-MESSAGE-TEXT
is initialized, GCCMQERR is called
with W03-REASON-CODE and
OUTPUT-MESSAGE-TEXT, W03-REASON-CODE
and OUTPUT-MESSAGE-TEXT are
concatenated into MQ-ERROR-TEXT, 355
is moved to MQ-TRANS-SET, CONN
FAILED is moved to PGM-ERROR-TEXT,
ERROR-MESSAGE2 is moved to
CC-ERROR-MESSAGE in CCCOM, and the
program aborts by performing
Z900-ABEND"]:::exclusion N_EstablishMQConnectiontoQueueManager_Node1 -- Yes -->|Alternative| N_EstablishMQConnectiontoQueueManager_Node1_action N_EstablishMQConnectiontoQueueManager_Node1_action --> E_EstablishMQConnectiontoQueueManager N_EstablishMQConnectiontoQueueManager_Node0 -- No --> N_EstablishMQConnectiontoQueueManager_Node1 N_EstablishMQConnectiontoQueueManager_Node1 -- No --> E_EstablishMQConnectiontoQueueManager
W03-MQMANAGER, W03-HCONN,
W03-COMPCODE, and W03-REASON"]:::main N_EstablishMQConnectiontoQueueManager_Node0 -- Yes --> N_EstablishMQConnectiontoQueueManager_Node0_action N_EstablishMQConnectiontoQueueManager_Node0_action --> E_EstablishMQConnectiontoQueueManager S_EstablishMQConnectiontoQueueManager --> N_EstablishMQConnectiontoQueueManager_Node0 N_EstablishMQConnectiontoQueueManager_Node1{"W03-COMPCODE is not equal to
MQCC-OK"}:::decision N_EstablishMQConnectiontoQueueManager_Node1_action["W03-REASON is moved to
W03-REASON-CODE, OUTPUT-MESSAGE-TEXT
is initialized, GCCMQERR is called
with W03-REASON-CODE and
OUTPUT-MESSAGE-TEXT, W03-REASON-CODE
and OUTPUT-MESSAGE-TEXT are
concatenated into MQ-ERROR-TEXT, 355
is moved to MQ-TRANS-SET, CONN
FAILED is moved to PGM-ERROR-TEXT,
ERROR-MESSAGE2 is moved to
CC-ERROR-MESSAGE in CCCOM, and the
program aborts by performing
Z900-ABEND"]:::exclusion N_EstablishMQConnectiontoQueueManager_Node1 -- Yes -->|Alternative| N_EstablishMQConnectiontoQueueManager_Node1_action N_EstablishMQConnectiontoQueueManager_Node1_action --> E_EstablishMQConnectiontoQueueManager N_EstablishMQConnectiontoQueueManager_Node0 -- No --> N_EstablishMQConnectiontoQueueManager_Node1 N_EstablishMQConnectiontoQueueManager_Node1 -- No --> E_EstablishMQConnectiontoQueueManager
File: GCX126R.cbl
GIVEN:
The program needs to access MQ messages
WHEN:
MQ connection is established
THEN:
MQCONNC is called with W03-MQMANAGER, W03-HCONN, W03-COMPCODE, and W03-REASON
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
MQ connection has been attempted
WHEN:
W03-COMPCODE is not equal to MQCC-OK
THEN:
- W03-reason is moved to w03-reason-code, output-message-text is initialized, gccmqerr is called with w03-reason-code
- Output-message-text, w03-reason-code
- Output-message-text are concatenated into mq-error-text, '355' is moved to mq-trans-set, 'conn failed' is moved to pgm-error-text, error-message2 is moved to cc-error-message in cccom, and the program aborts by performing z900-abend
β Consolidated Acceptance Criteria
- MQ queue is being opened → mQOT-Q is moved to MQOD-OBJECTTYPE, MQTMC-QNAME is moved to MQOD-OBJECTNAME, W03-OPTIONS is computed as MQOO-INPUT-AS-Q-DEF, and MQOPEN is called with W03-HCONN, MQOD, W03-OPTIONS, W03-HOBJ-RESPONSE, W03-COMPCODE, and W03-REASON
- W03-COMPCODE is not equal to MQCC-OK → w03-REASON is moved to W03-REASON-CODE, OUTPUT-MESSAGE-TEXT is initialized, GCCMQERR is called with W03-REASON-CODE and OUTPUT-MESSAGE-TEXT, W03-REASON-CODE and OUTPUT-MESSAGE-TEXT are concatenated into MQ-ERROR-TEXT, '355' is moved to MQ-TRANS-SET, 'OPEN FAILED' is moved to PGM-ERROR-TEXT, ERROR-MESSAGE2 is moved to CC-ERROR-MESSAGE in CCCOM, and the program aborts by performing Z900-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_OpenMQQueueforInput(["Start Step"])
E_OpenMQQueueforInput(["End Step"])
N_OpenMQQueueforInput_Node0{"MQ queue is being opened"}:::decision
N_OpenMQQueueforInput_Node0_action["MQOT-Q is moved to MQOD-OBJECTTYPE,
MQTMC-QNAME is moved to
MQOD-OBJECTNAME, W03-OPTIONS is
computed as MQOO-INPUT-AS-Q-DEF, and
MQOPEN is called with W03-HCONN,
MQOD, W03-OPTIONS,
W03-HOBJ-RESPONSE, W03-COMPCODE, and
W03-REASON"]:::main N_OpenMQQueueforInput_Node0 -- Yes --> N_OpenMQQueueforInput_Node0_action N_OpenMQQueueforInput_Node0_action --> E_OpenMQQueueforInput S_OpenMQQueueforInput --> N_OpenMQQueueforInput_Node0 N_OpenMQQueueforInput_Node1{"W03-COMPCODE is not equal to
MQCC-OK"}:::decision N_OpenMQQueueforInput_Node1_action["W03-REASON is moved to
W03-REASON-CODE, OUTPUT-MESSAGE-TEXT
is initialized, GCCMQERR is called
with W03-REASON-CODE and
OUTPUT-MESSAGE-TEXT, W03-REASON-CODE
and OUTPUT-MESSAGE-TEXT are
concatenated into MQ-ERROR-TEXT, 355
is moved to MQ-TRANS-SET, OPEN
FAILED is moved to PGM-ERROR-TEXT,
ERROR-MESSAGE2 is moved to
CC-ERROR-MESSAGE in CCCOM, and the
program aborts by performing
Z900-ABEND"]:::exclusion N_OpenMQQueueforInput_Node1 -- Yes -->|Alternative| N_OpenMQQueueforInput_Node1_action N_OpenMQQueueforInput_Node1_action --> E_OpenMQQueueforInput N_OpenMQQueueforInput_Node0 -- No --> N_OpenMQQueueforInput_Node1 N_OpenMQQueueforInput_Node1 -- No --> E_OpenMQQueueforInput
MQTMC-QNAME is moved to
MQOD-OBJECTNAME, W03-OPTIONS is
computed as MQOO-INPUT-AS-Q-DEF, and
MQOPEN is called with W03-HCONN,
MQOD, W03-OPTIONS,
W03-HOBJ-RESPONSE, W03-COMPCODE, and
W03-REASON"]:::main N_OpenMQQueueforInput_Node0 -- Yes --> N_OpenMQQueueforInput_Node0_action N_OpenMQQueueforInput_Node0_action --> E_OpenMQQueueforInput S_OpenMQQueueforInput --> N_OpenMQQueueforInput_Node0 N_OpenMQQueueforInput_Node1{"W03-COMPCODE is not equal to
MQCC-OK"}:::decision N_OpenMQQueueforInput_Node1_action["W03-REASON is moved to
W03-REASON-CODE, OUTPUT-MESSAGE-TEXT
is initialized, GCCMQERR is called
with W03-REASON-CODE and
OUTPUT-MESSAGE-TEXT, W03-REASON-CODE
and OUTPUT-MESSAGE-TEXT are
concatenated into MQ-ERROR-TEXT, 355
is moved to MQ-TRANS-SET, OPEN
FAILED is moved to PGM-ERROR-TEXT,
ERROR-MESSAGE2 is moved to
CC-ERROR-MESSAGE in CCCOM, and the
program aborts by performing
Z900-ABEND"]:::exclusion N_OpenMQQueueforInput_Node1 -- Yes -->|Alternative| N_OpenMQQueueforInput_Node1_action N_OpenMQQueueforInput_Node1_action --> E_OpenMQQueueforInput N_OpenMQQueueforInput_Node0 -- No --> N_OpenMQQueueforInput_Node1 N_OpenMQQueueforInput_Node1 -- No --> E_OpenMQQueueforInput
File: GCX126R.cbl
GIVEN:
MQ connection has been established successfully
WHEN:
MQ queue is being opened
THEN:
MQOT-Q is moved to MQOD-OBJECTTYPE, MQTMC-QNAME is moved to MQOD-OBJECTNAME, W03-OPTIONS is computed as MQOO-INPUT-AS-Q-DEF, and MQOPEN is called with W03-HCONN, MQOD, W03-OPTIONS, W03-HOBJ-RESPONSE, W03-COMPCODE, and W03-REASON
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
MQ queue open has been attempted
WHEN:
W03-COMPCODE is not equal to MQCC-OK
THEN:
- W03-reason is moved to w03-reason-code, output-message-text is initialized, gccmqerr is called with w03-reason-code
- Output-message-text, w03-reason-code
- Output-message-text are concatenated into mq-error-text, '355' is moved to mq-trans-set, 'open failed' is moved to pgm-error-text, error-message2 is moved to cc-error-message in cccom, and the program aborts by performing z900-abend
β Consolidated Acceptance Criteria
- The initialization process begins → all table access parameters are cleared (GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, GCCTBIO-RETURN-FLAG, GCSTBRT-AD-SEGMENT) and control flags (SECOND-PCB-FLAG, UNQUAL-SSA-FLAG) are 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_InitializeTableAccessFields(["Start Step"])
E_InitializeTableAccessFields(["End Step"])
N_InitializeTableAccessFields_Node0{"The initialization process begins"}:::decision
N_InitializeTableAccessFields_Node0_action["All table access parameters are
cleared GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE,
GCCTBIO-RETURN-FLAG,
GCSTBRT-AD-SEGMENT and control flags
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG are
set to spaces"]:::main N_InitializeTableAccessFields_Node0 -- Yes --> N_InitializeTableAccessFields_Node0_action N_InitializeTableAccessFields_Node0_action --> E_InitializeTableAccessFields S_InitializeTableAccessFields --> N_InitializeTableAccessFields_Node0 N_InitializeTableAccessFields_Node0 -- No --> E_InitializeTableAccessFields
cleared GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE,
GCCTBIO-RETURN-FLAG,
GCSTBRT-AD-SEGMENT and control flags
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG are
set to spaces"]:::main N_InitializeTableAccessFields_Node0 -- Yes --> N_InitializeTableAccessFields_Node0_action N_InitializeTableAccessFields_Node0_action --> E_InitializeTableAccessFields S_InitializeTableAccessFields --> N_InitializeTableAccessFields_Node0 N_InitializeTableAccessFields_Node0 -- No --> E_InitializeTableAccessFields
File: GCX126R.cbl
GIVEN:
The system needs to retrieve admin configuration data
WHEN:
The initialization process begins
THEN:
All table access parameters are cleared (GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, GCCTBIO-RETURN-FLAG, GCSTBRT-AD-SEGMENT) and control flags (SECOND-PCB-FLAG, UNQUAL-SSA-FLAG) are set to spaces
β Consolidated Acceptance Criteria
- The table identifier needs to be specified → the table ID is set to 'AD-TABLE-ID' value in GCSTBRT-KEY-TABLE-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_SetTableIDtoADMINID(["Start Step"])
E_SetTableIDtoADMINID(["End Step"])
N_SetTableIDtoADMINID_Node0{"The table identifier needs to be
specified"}:::decision N_SetTableIDtoADMINID_Node0_action["The table ID is set to AD-TABLE-ID
value in GCSTBRT-KEY-TABLE-ID"]:::main N_SetTableIDtoADMINID_Node0 -- Yes --> N_SetTableIDtoADMINID_Node0_action N_SetTableIDtoADMINID_Node0_action --> E_SetTableIDtoADMINID S_SetTableIDtoADMINID --> N_SetTableIDtoADMINID_Node0 N_SetTableIDtoADMINID_Node0 -- No --> E_SetTableIDtoADMINID
specified"}:::decision N_SetTableIDtoADMINID_Node0_action["The table ID is set to AD-TABLE-ID
value in GCSTBRT-KEY-TABLE-ID"]:::main N_SetTableIDtoADMINID_Node0 -- Yes --> N_SetTableIDtoADMINID_Node0_action N_SetTableIDtoADMINID_Node0_action --> E_SetTableIDtoADMINID S_SetTableIDtoADMINID --> N_SetTableIDtoADMINID_Node0 N_SetTableIDtoADMINID_Node0 -- No --> E_SetTableIDtoADMINID
File: GCX126R.cbl
GIVEN:
The system is preparing to access the GCSTBRT table
WHEN:
The table identifier needs to be specified
THEN:
The table ID is set to 'AD-TABLE-ID' value in GCSTBRT-KEY-TABLE-ID
β Consolidated Acceptance Criteria
- The specific record needs to be identified → the sequence ID is set to 'ADMINID' in GCSTBRT-KEY-SEQID
- The specific record within the administrative table needs to be identified → the system sets GCSTBRT-KEY-SEQID to 'ADMINID'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSequenceIDtoADMINID(["Start Step"])
E_SetSequenceIDtoADMINID(["End Step"])
N_SetSequenceIDtoADMINID_Node0{"The specific record needs to be
identified"}:::decision N_SetSequenceIDtoADMINID_Node0_action["The sequence ID is set to ADMINID
in GCSTBRT-KEY-SEQID"]:::main N_SetSequenceIDtoADMINID_Node0 -- Yes --> N_SetSequenceIDtoADMINID_Node0_action N_SetSequenceIDtoADMINID_Node0_action --> E_SetSequenceIDtoADMINID S_SetSequenceIDtoADMINID --> N_SetSequenceIDtoADMINID_Node0 N_SetSequenceIDtoADMINID_Node1{"The specific record within the
administrative table needs to be
identified"}:::decision N_SetSequenceIDtoADMINID_Node1_action["The system sets GCSTBRT-KEY-SEQID
to ADMINID"]:::main N_SetSequenceIDtoADMINID_Node1 -- Yes --> N_SetSequenceIDtoADMINID_Node1_action N_SetSequenceIDtoADMINID_Node1_action --> E_SetSequenceIDtoADMINID N_SetSequenceIDtoADMINID_Node0 -- No --> N_SetSequenceIDtoADMINID_Node1 N_SetSequenceIDtoADMINID_Node1 -- No --> E_SetSequenceIDtoADMINID
identified"}:::decision N_SetSequenceIDtoADMINID_Node0_action["The sequence ID is set to ADMINID
in GCSTBRT-KEY-SEQID"]:::main N_SetSequenceIDtoADMINID_Node0 -- Yes --> N_SetSequenceIDtoADMINID_Node0_action N_SetSequenceIDtoADMINID_Node0_action --> E_SetSequenceIDtoADMINID S_SetSequenceIDtoADMINID --> N_SetSequenceIDtoADMINID_Node0 N_SetSequenceIDtoADMINID_Node1{"The specific record within the
administrative table needs to be
identified"}:::decision N_SetSequenceIDtoADMINID_Node1_action["The system sets GCSTBRT-KEY-SEQID
to ADMINID"]:::main N_SetSequenceIDtoADMINID_Node1 -- Yes --> N_SetSequenceIDtoADMINID_Node1_action N_SetSequenceIDtoADMINID_Node1_action --> E_SetSequenceIDtoADMINID N_SetSequenceIDtoADMINID_Node0 -- No --> N_SetSequenceIDtoADMINID_Node1 N_SetSequenceIDtoADMINID_Node1 -- No --> E_SetSequenceIDtoADMINID
File: GCX126R.cbl
GIVEN:
The table ID has been set to admin table
WHEN:
The specific record needs to be identified
THEN:
The sequence ID is set to 'ADMINID' in GCSTBRT-KEY-SEQID
File: GCX126R.cbl
GIVEN:
The table identifier has been set to AD-TABLE-ID
WHEN:
The specific record within the administrative table needs to be identified
THEN:
The system sets GCSTBRT-KEY-SEQID to 'ADMINID'
β Consolidated Acceptance Criteria
- The database operation type needs to be specified → the function code is set to 'GU' in GCCTBIO-FUNC-CODE
- The GCCTBIO program is called with parameters CCCOM, SECOND-PCB-FLAG, UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE, GCSTBRT-LIT, GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT, and GCCTBIO-RETURN-FLAG → the admin configuration record is retrieved and stored in WS-TABLE-SEGMENT with operation status returned in GCCTBIO-RETURN-FLAG
- The system calls GCCTBIO to retrieve the administrative configuration with Table ID 'AD-TABLE-ID' and Sequence ID 'ADMINID' → if the configuration record is found (return flag equals '0'), the system extracts the Merlin user code from GCSTBRT-AD-DC-P-MERLIN-1 field and sets the admin segment found indicator to true; otherwise, the system continues without the administrative 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_CallGCCTBIOtoReadGCSTBRTTable(["Start Step"])
E_CallGCCTBIOtoReadGCSTBRTTable(["End Step"])
N_CallGCCTBIOtoReadGCSTBRTTable_Node0{"The database operation type needs
to be specified"}:::decision N_CallGCCTBIOtoReadGCSTBRTTable_Node0_action["The function code is set to GU in
GCCTBIO-FUNC-CODE"]:::main N_CallGCCTBIOtoReadGCSTBRTTable_Node0 -- Yes --> N_CallGCCTBIOtoReadGCSTBRTTable_Node0_action N_CallGCCTBIOtoReadGCSTBRTTable_Node0_action --> E_CallGCCTBIOtoReadGCSTBRTTable S_CallGCCTBIOtoReadGCSTBRTTable --> N_CallGCCTBIOtoReadGCSTBRTTable_Node0 N_CallGCCTBIOtoReadGCSTBRTTable_Node1{"The GCCTBIO program is called with
parameters CCCOM, SECOND-PCB-FLAG,
UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE,
GCSTBRT-LIT, GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT,
and GCCTBIO-RETURN-FLAG"}:::decision N_CallGCCTBIOtoReadGCSTBRTTable_Node1_action["The admin configuration record is
retrieved and stored in
WS-TABLE-SEGMENT with operation
status returned in
GCCTBIO-RETURN-FLAG"]:::main N_CallGCCTBIOtoReadGCSTBRTTable_Node1 -- Yes --> N_CallGCCTBIOtoReadGCSTBRTTable_Node1_action N_CallGCCTBIOtoReadGCSTBRTTable_Node1_action --> E_CallGCCTBIOtoReadGCSTBRTTable N_CallGCCTBIOtoReadGCSTBRTTable_Node0 -- No --> N_CallGCCTBIOtoReadGCSTBRTTable_Node1 N_CallGCCTBIOtoReadGCSTBRTTable_Node2{"The system calls GCCTBIO to
retrieve the administrative
configuration with Table ID
AD-TABLE-ID and Sequence ID ADMINID"}:::decision N_CallGCCTBIOtoReadGCSTBRTTable_Node2_action["If the configuration record is
found return flag equals 0 , the
system extracts the Merlin user code
from GCSTBRT-AD-DC-P-MERLIN-1 field
and sets the admin segment found
indicator to true otherwise, the
system continues without the
administrative configuration"]:::main N_CallGCCTBIOtoReadGCSTBRTTable_Node2 -- Yes --> N_CallGCCTBIOtoReadGCSTBRTTable_Node2_action N_CallGCCTBIOtoReadGCSTBRTTable_Node2_action --> E_CallGCCTBIOtoReadGCSTBRTTable N_CallGCCTBIOtoReadGCSTBRTTable_Node1 -- No --> N_CallGCCTBIOtoReadGCSTBRTTable_Node2 N_CallGCCTBIOtoReadGCSTBRTTable_Node2 -- No --> E_CallGCCTBIOtoReadGCSTBRTTable
to be specified"}:::decision N_CallGCCTBIOtoReadGCSTBRTTable_Node0_action["The function code is set to GU in
GCCTBIO-FUNC-CODE"]:::main N_CallGCCTBIOtoReadGCSTBRTTable_Node0 -- Yes --> N_CallGCCTBIOtoReadGCSTBRTTable_Node0_action N_CallGCCTBIOtoReadGCSTBRTTable_Node0_action --> E_CallGCCTBIOtoReadGCSTBRTTable S_CallGCCTBIOtoReadGCSTBRTTable --> N_CallGCCTBIOtoReadGCSTBRTTable_Node0 N_CallGCCTBIOtoReadGCSTBRTTable_Node1{"The GCCTBIO program is called with
parameters CCCOM, SECOND-PCB-FLAG,
UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE,
GCSTBRT-LIT, GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT,
and GCCTBIO-RETURN-FLAG"}:::decision N_CallGCCTBIOtoReadGCSTBRTTable_Node1_action["The admin configuration record is
retrieved and stored in
WS-TABLE-SEGMENT with operation
status returned in
GCCTBIO-RETURN-FLAG"]:::main N_CallGCCTBIOtoReadGCSTBRTTable_Node1 -- Yes --> N_CallGCCTBIOtoReadGCSTBRTTable_Node1_action N_CallGCCTBIOtoReadGCSTBRTTable_Node1_action --> E_CallGCCTBIOtoReadGCSTBRTTable N_CallGCCTBIOtoReadGCSTBRTTable_Node0 -- No --> N_CallGCCTBIOtoReadGCSTBRTTable_Node1 N_CallGCCTBIOtoReadGCSTBRTTable_Node2{"The system calls GCCTBIO to
retrieve the administrative
configuration with Table ID
AD-TABLE-ID and Sequence ID ADMINID"}:::decision N_CallGCCTBIOtoReadGCSTBRTTable_Node2_action["If the configuration record is
found return flag equals 0 , the
system extracts the Merlin user code
from GCSTBRT-AD-DC-P-MERLIN-1 field
and sets the admin segment found
indicator to true otherwise, the
system continues without the
administrative configuration"]:::main N_CallGCCTBIOtoReadGCSTBRTTable_Node2 -- Yes --> N_CallGCCTBIOtoReadGCSTBRTTable_Node2_action N_CallGCCTBIOtoReadGCSTBRTTable_Node2_action --> E_CallGCCTBIOtoReadGCSTBRTTable N_CallGCCTBIOtoReadGCSTBRTTable_Node1 -- No --> N_CallGCCTBIOtoReadGCSTBRTTable_Node2 N_CallGCCTBIOtoReadGCSTBRTTable_Node2 -- No --> E_CallGCCTBIOtoReadGCSTBRTTable
File: GCX126R.cbl
GIVEN:
The table and sequence identifiers are set
WHEN:
The database operation type needs to be specified
THEN:
The function code is set to 'GU' in GCCTBIO-FUNC-CODE
File: GCX126R.cbl
GIVEN:
The function code is 'GU', table ID is set to admin table identifier, sequence ID is 'ADMINID', and all access parameters are initialized
WHEN:
The GCCTBIO program is called with parameters CCCOM, SECOND-PCB-FLAG, UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE, GCSTBRT-LIT, GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT, and GCCTBIO-RETURN-FLAG
THEN:
- The admin configuration record is retrieved
- Stored in ws-table-segment with operation status returned in gcctbio-return-flag
File: GCX126R.cbl
GIVEN:
The system needs to route EDI 350 notifications to Merlin users
WHEN:
The system calls GCCTBIO to retrieve the administrative configuration with Table ID 'AD-TABLE-ID' and Sequence ID 'ADMINID'
THEN:
- If the configuration record is found (return flag equals '0'), the system extracts the merlin user code from gcstbrt-ad-dc-p-merlin-1 field
- Sets the admin segment found indicator to true; otherwise, the system continues without the administrative configuration
β Consolidated Acceptance Criteria
- The return flag is evaluated → if GCCTBIO-RETURN-FLAG equals '0', the retrieval was successful; otherwise, the retrieval failed
- The system checks the GCCTBIO-RETURN-FLAG value → if GCCTBIO-RETURN-FLAG equals '0', the retrieval was successful and processing continues to extract configuration data; otherwise, the system proceeds without administrative 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_ReturnFlag0(["Start Step"])
E_ReturnFlag0(["End Step"])
N_ReturnFlag0_Node0{"The return flag is evaluated"}:::decision
N_ReturnFlag0_Node0_action["If GCCTBIO-RETURN-FLAG equals 0 ,
the retrieval was successful
otherwise, the retrieval failed"]:::main N_ReturnFlag0_Node0 -- Yes --> N_ReturnFlag0_Node0_action N_ReturnFlag0_Node0_action --> E_ReturnFlag0 S_ReturnFlag0 --> N_ReturnFlag0_Node0 N_ReturnFlag0_Node1{"The system checks the
GCCTBIO-RETURN-FLAG value"}:::decision N_ReturnFlag0_Node1_action["If GCCTBIO-RETURN-FLAG equals 0 ,
the retrieval was successful and
processing continues to extract
configuration data otherwise, the
system proceeds without
administrative configuration"]:::main N_ReturnFlag0_Node1 -- Yes --> N_ReturnFlag0_Node1_action N_ReturnFlag0_Node1_action --> E_ReturnFlag0 N_ReturnFlag0_Node0 -- No --> N_ReturnFlag0_Node1 N_ReturnFlag0_Node1 -- No --> E_ReturnFlag0
the retrieval was successful
otherwise, the retrieval failed"]:::main N_ReturnFlag0_Node0 -- Yes --> N_ReturnFlag0_Node0_action N_ReturnFlag0_Node0_action --> E_ReturnFlag0 S_ReturnFlag0 --> N_ReturnFlag0_Node0 N_ReturnFlag0_Node1{"The system checks the
GCCTBIO-RETURN-FLAG value"}:::decision N_ReturnFlag0_Node1_action["If GCCTBIO-RETURN-FLAG equals 0 ,
the retrieval was successful and
processing continues to extract
configuration data otherwise, the
system proceeds without
administrative configuration"]:::main N_ReturnFlag0_Node1 -- Yes --> N_ReturnFlag0_Node1_action N_ReturnFlag0_Node1_action --> E_ReturnFlag0 N_ReturnFlag0_Node0 -- No --> N_ReturnFlag0_Node1 N_ReturnFlag0_Node1 -- No --> E_ReturnFlag0
File: GCX126R.cbl
GIVEN:
The GCCTBIO program has completed execution
WHEN:
The return flag is evaluated
THEN:
If GCCTBIO-RETURN-FLAG equals '0', the retrieval was successful; otherwise, the retrieval failed
File: GCX126R.cbl
GIVEN:
The GCCTBIO program has completed execution
WHEN:
The system checks the GCCTBIO-RETURN-FLAG value
THEN:
- If gcctbio-return-flag equals '0', the retrieval was successful
- Processing continues to extract configuration data; otherwise, the system proceeds without administrative configuration
β Consolidated Acceptance Criteria
- The admin segment status needs to be recorded → the condition 88-AD-SEGMENT-FOUND is set to TRUE
- The system completes the administrative configuration retrieval process → the system sets the condition name 88-AD-SEGMENT-FOUND to true, indicating that valid administrative configuration 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_SetAdminSegmentFoundFlag(["Start Step"])
E_SetAdminSegmentFoundFlag(["End Step"])
N_SetAdminSegmentFoundFlag_Node0{"The admin segment status needs to
be recorded"}:::decision N_SetAdminSegmentFoundFlag_Node0_action["The condition 88-AD-SEGMENT-FOUND
is set to TRUE"]:::main N_SetAdminSegmentFoundFlag_Node0 -- Yes --> N_SetAdminSegmentFoundFlag_Node0_action N_SetAdminSegmentFoundFlag_Node0_action --> E_SetAdminSegmentFoundFlag S_SetAdminSegmentFoundFlag --> N_SetAdminSegmentFoundFlag_Node0 N_SetAdminSegmentFoundFlag_Node1{"The system completes the
administrative configuration
retrieval process"}:::decision N_SetAdminSegmentFoundFlag_Node1_action["The system sets the condition name
88-AD-SEGMENT-FOUND to true,
indicating that valid administrative
configuration is available"]:::main N_SetAdminSegmentFoundFlag_Node1 -- Yes --> N_SetAdminSegmentFoundFlag_Node1_action N_SetAdminSegmentFoundFlag_Node1_action --> E_SetAdminSegmentFoundFlag N_SetAdminSegmentFoundFlag_Node0 -- No --> N_SetAdminSegmentFoundFlag_Node1 N_SetAdminSegmentFoundFlag_Node1 -- No --> E_SetAdminSegmentFoundFlag
be recorded"}:::decision N_SetAdminSegmentFoundFlag_Node0_action["The condition 88-AD-SEGMENT-FOUND
is set to TRUE"]:::main N_SetAdminSegmentFoundFlag_Node0 -- Yes --> N_SetAdminSegmentFoundFlag_Node0_action N_SetAdminSegmentFoundFlag_Node0_action --> E_SetAdminSegmentFoundFlag S_SetAdminSegmentFoundFlag --> N_SetAdminSegmentFoundFlag_Node0 N_SetAdminSegmentFoundFlag_Node1{"The system completes the
administrative configuration
retrieval process"}:::decision N_SetAdminSegmentFoundFlag_Node1_action["The system sets the condition name
88-AD-SEGMENT-FOUND to true,
indicating that valid administrative
configuration is available"]:::main N_SetAdminSegmentFoundFlag_Node1 -- Yes --> N_SetAdminSegmentFoundFlag_Node1_action N_SetAdminSegmentFoundFlag_Node1_action --> E_SetAdminSegmentFoundFlag N_SetAdminSegmentFoundFlag_Node0 -- No --> N_SetAdminSegmentFoundFlag_Node1 N_SetAdminSegmentFoundFlag_Node1 -- No --> E_SetAdminSegmentFoundFlag
File: GCX126R.cbl
GIVEN:
The GCCTBIO-RETURN-FLAG equals '0' indicating successful retrieval
WHEN:
The admin segment status needs to be recorded
THEN:
The condition 88-AD-SEGMENT-FOUND is set to TRUE
File: GCX126R.cbl
GIVEN:
The Merlin user code has been successfully extracted from the administrative configuration
WHEN:
The system completes the administrative configuration retrieval process
THEN:
The system sets the condition name 88-AD-SEGMENT-FOUND to true, indicating that valid administrative configuration is available
β Consolidated Acceptance Criteria
- The Merlin user code needs to be extracted → wS-TABLE-SEGMENT is moved to GCSTBRT-AD-SEGMENT and GCSTBRT-AD-DC-P-MERLIN-1 is moved to WS-EMI-TO-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_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE(["Start Step"])
E_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE(["End Step"])
N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0{"The Merlin user code needs to be
extracted"}:::decision N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0_action["WS-TABLE-SEGMENT is moved to
GCSTBRT-AD-SEGMENT and
GCSTBRT-AD-DC-P-MERLIN-1 is moved to
WS-EMI-TO-USERCODE"]:::main N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0 -- Yes --> N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0_action N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0_action --> E_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE S_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE --> N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0 N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0 -- No --> E_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE
extracted"}:::decision N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0_action["WS-TABLE-SEGMENT is moved to
GCSTBRT-AD-SEGMENT and
GCSTBRT-AD-DC-P-MERLIN-1 is moved to
WS-EMI-TO-USERCODE"]:::main N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0 -- Yes --> N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0_action N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0_action --> E_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE S_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE --> N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0 N_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE_Node0 -- No --> E_MoveMerlinUserCodefromAdminConfigtoEMITOUSERCODE
File: GCX126R.cbl
GIVEN:
The admin segment has been successfully found (88-AD-SEGMENT-FOUND is TRUE) and WS-TABLE-SEGMENT contains the retrieved data
WHEN:
The Merlin user code needs to be extracted
THEN:
- Ws-table-segment is moved to gcstbrt-ad-segment
- Gcstbrt-ad-dc-p-merlin-1 is moved to ws-emi-to-usercode
β Consolidated Acceptance Criteria
- The initialization process begins → the system sets the function code to 'GU' (Get Unique), clears all key values (GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE), clears the return flag (GCCTBIO-RETURN-FLAG), clears the segment data (GCSTBRT-AD-SEGMENT), and clears all control flags (SECOND-PCB-FLAG, UNQUAL-SSA-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_SetFunctionCodetoGUGetUnique(["Start Step"])
E_SetFunctionCodetoGUGetUnique(["End Step"])
N_SetFunctionCodetoGUGetUnique_Node0{"The initialization process begins"}:::decision
N_SetFunctionCodetoGUGetUnique_Node0_action["The system sets the function code
to GU Get Unique, clears all key
values GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, clears the return
flag GCCTBIO-RETURN-FLAG, clears the
segment data GCSTBRT-AD-SEGMENT, and
clears all control flags
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG"]:::main N_SetFunctionCodetoGUGetUnique_Node0 -- Yes --> N_SetFunctionCodetoGUGetUnique_Node0_action N_SetFunctionCodetoGUGetUnique_Node0_action --> E_SetFunctionCodetoGUGetUnique S_SetFunctionCodetoGUGetUnique --> N_SetFunctionCodetoGUGetUnique_Node0 N_SetFunctionCodetoGUGetUnique_Node0 -- No --> E_SetFunctionCodetoGUGetUnique
to GU Get Unique, clears all key
values GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, clears the return
flag GCCTBIO-RETURN-FLAG, clears the
segment data GCSTBRT-AD-SEGMENT, and
clears all control flags
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG"]:::main N_SetFunctionCodetoGUGetUnique_Node0 -- Yes --> N_SetFunctionCodetoGUGetUnique_Node0_action N_SetFunctionCodetoGUGetUnique_Node0_action --> E_SetFunctionCodetoGUGetUnique S_SetFunctionCodetoGUGetUnique --> N_SetFunctionCodetoGUGetUnique_Node0 N_SetFunctionCodetoGUGetUnique_Node0 -- No --> E_SetFunctionCodetoGUGetUnique
File: GCX126R.cbl
GIVEN:
The system is preparing to retrieve administrative configuration data
WHEN:
The initialization process begins
THEN:
The system sets the function code to 'GU' (Get Unique), clears all key values (GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE), clears the return flag (GCCTBIO-RETURN-FLAG), clears the segment data (GCSTBRT-AD-SEGMENT), and clears all control flags (SECOND-PCB-FLAG, UNQUAL-SSA-FLAG)
β Consolidated Acceptance Criteria
- The table identifier needs to be specified → the system sets GCSTBRT-KEY-TABLE-ID to the value of AD-TABLE-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_SetTableIDtoADTABLEID(["Start Step"])
E_SetTableIDtoADTABLEID(["End Step"])
N_SetTableIDtoADTABLEID_Node0{"The table identifier needs to be
specified"}:::decision N_SetTableIDtoADTABLEID_Node0_action["The system sets
GCSTBRT-KEY-TABLE-ID to the value of
AD-TABLE-ID constant"]:::main N_SetTableIDtoADTABLEID_Node0 -- Yes --> N_SetTableIDtoADTABLEID_Node0_action N_SetTableIDtoADTABLEID_Node0_action --> E_SetTableIDtoADTABLEID S_SetTableIDtoADTABLEID --> N_SetTableIDtoADTABLEID_Node0 N_SetTableIDtoADTABLEID_Node0 -- No --> E_SetTableIDtoADTABLEID
specified"}:::decision N_SetTableIDtoADTABLEID_Node0_action["The system sets
GCSTBRT-KEY-TABLE-ID to the value of
AD-TABLE-ID constant"]:::main N_SetTableIDtoADTABLEID_Node0 -- Yes --> N_SetTableIDtoADTABLEID_Node0_action N_SetTableIDtoADTABLEID_Node0_action --> E_SetTableIDtoADTABLEID S_SetTableIDtoADTABLEID --> N_SetTableIDtoADTABLEID_Node0 N_SetTableIDtoADTABLEID_Node0 -- No --> E_SetTableIDtoADTABLEID
File: GCX126R.cbl
GIVEN:
The system has initialized the table access parameters
WHEN:
The table identifier needs to be specified
THEN:
The system sets GCSTBRT-KEY-TABLE-ID to the value of AD-TABLE-ID constant
β Consolidated Acceptance Criteria
- The system calls GCCTBIO program with parameters CCCOM, SECOND-PCB-FLAG, UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE, GCSTBRT-LIT, GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT, and GCCTBIO-RETURN-FLAG → the GCCTBIO program executes the database operation and returns the result in GCCTBIO-RETURN-FLAG with the retrieved data in WS-TABLE-SEGMENT if 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_CallGCCTBIOProgram(["Start Step"])
E_CallGCCTBIOProgram(["End Step"])
N_CallGCCTBIOProgram_Node0{"The system calls GCCTBIO program
with parameters CCCOM,
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG,
GCCTBIO-FUNC-CODE, GCSTBRT-LIT,
GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT,
and GCCTBIO-RETURN-FLAG"}:::decision N_CallGCCTBIOProgram_Node0_action["The GCCTBIO program executes the
database operation and returns the
result in GCCTBIO-RETURN-FLAG with
the retrieved data in
WS-TABLE-SEGMENT if successful"]:::main N_CallGCCTBIOProgram_Node0 -- Yes --> N_CallGCCTBIOProgram_Node0_action N_CallGCCTBIOProgram_Node0_action --> E_CallGCCTBIOProgram S_CallGCCTBIOProgram --> N_CallGCCTBIOProgram_Node0 N_CallGCCTBIOProgram_Node0 -- No --> E_CallGCCTBIOProgram
with parameters CCCOM,
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG,
GCCTBIO-FUNC-CODE, GCSTBRT-LIT,
GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT,
and GCCTBIO-RETURN-FLAG"}:::decision N_CallGCCTBIOProgram_Node0_action["The GCCTBIO program executes the
database operation and returns the
result in GCCTBIO-RETURN-FLAG with
the retrieved data in
WS-TABLE-SEGMENT if successful"]:::main N_CallGCCTBIOProgram_Node0 -- Yes --> N_CallGCCTBIOProgram_Node0_action N_CallGCCTBIOProgram_Node0_action --> E_CallGCCTBIOProgram S_CallGCCTBIOProgram --> N_CallGCCTBIOProgram_Node0 N_CallGCCTBIOProgram_Node0 -- No --> E_CallGCCTBIOProgram
File: GCX126R.cbl
GIVEN:
All table access parameters have been initialized with function code 'GU', table ID 'AD-TABLE-ID', and sequence ID 'ADMINID'
WHEN:
The system calls GCCTBIO program with parameters CCCOM, SECOND-PCB-FLAG, UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE, GCSTBRT-LIT, GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT, and GCCTBIO-RETURN-FLAG
THEN:
- The gcctbio program executes the database operation
- Returns the result in gcctbio-return-flag with the retrieved data in ws-table-segment if successful
β Consolidated Acceptance Criteria
- The system processes the retrieved data → the system moves the contents of WS-TABLE-SEGMENT to GCSTBRT-AD-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_MoveTableSegmenttoGCSTBRTADSEGMENT(["Start Step"])
E_MoveTableSegmenttoGCSTBRTADSEGMENT(["End Step"])
N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0{"The system processes the retrieved
data"}:::decision N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0_action["The system moves the contents of
WS-TABLE-SEGMENT to
GCSTBRT-AD-SEGMENT"]:::main N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0 -- Yes --> N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0_action N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0_action --> E_MoveTableSegmenttoGCSTBRTADSEGMENT S_MoveTableSegmenttoGCSTBRTADSEGMENT --> N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0 N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0 -- No --> E_MoveTableSegmenttoGCSTBRTADSEGMENT
data"}:::decision N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0_action["The system moves the contents of
WS-TABLE-SEGMENT to
GCSTBRT-AD-SEGMENT"]:::main N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0 -- Yes --> N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0_action N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0_action --> E_MoveTableSegmenttoGCSTBRTADSEGMENT S_MoveTableSegmenttoGCSTBRTADSEGMENT --> N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0 N_MoveTableSegmenttoGCSTBRTADSEGMENT_Node0 -- No --> E_MoveTableSegmenttoGCSTBRTADSEGMENT
File: GCX126R.cbl
GIVEN:
The administrative configuration record was successfully retrieved (GCCTBIO-RETURN-FLAG equals '0')
WHEN:
The system processes the retrieved data
THEN:
The system moves the contents of WS-TABLE-SEGMENT to GCSTBRT-AD-SEGMENT
β Consolidated Acceptance Criteria
- The system initiates connection to the MQ Queue Manager → the system calls the MQCONNC API with the Queue Manager name and receives a connection handle and completion 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_CallMQCONNCAPIwithQueueManagerName(["Start Step"])
E_CallMQCONNCAPIwithQueueManagerName(["End Step"])
N_CallMQCONNCAPIwithQueueManagerName_Node0{"The system initiates connection to
the MQ Queue Manager"}:::decision N_CallMQCONNCAPIwithQueueManagerName_Node0_action["The system calls the MQCONNC API
with the Queue Manager name and
receives a connection handle and
completion status"]:::main N_CallMQCONNCAPIwithQueueManagerName_Node0 -- Yes --> N_CallMQCONNCAPIwithQueueManagerName_Node0_action N_CallMQCONNCAPIwithQueueManagerName_Node0_action --> E_CallMQCONNCAPIwithQueueManagerName S_CallMQCONNCAPIwithQueueManagerName --> N_CallMQCONNCAPIwithQueueManagerName_Node0 N_CallMQCONNCAPIwithQueueManagerName_Node0 -- No --> E_CallMQCONNCAPIwithQueueManagerName
the MQ Queue Manager"}:::decision N_CallMQCONNCAPIwithQueueManagerName_Node0_action["The system calls the MQCONNC API
with the Queue Manager name and
receives a connection handle and
completion status"]:::main N_CallMQCONNCAPIwithQueueManagerName_Node0 -- Yes --> N_CallMQCONNCAPIwithQueueManagerName_Node0_action N_CallMQCONNCAPIwithQueueManagerName_Node0_action --> E_CallMQCONNCAPIwithQueueManagerName S_CallMQCONNCAPIwithQueueManagerName --> N_CallMQCONNCAPIwithQueueManagerName_Node0 N_CallMQCONNCAPIwithQueueManagerName_Node0 -- No --> E_CallMQCONNCAPIwithQueueManagerName
File: GCX126R.cbl
GIVEN:
The system needs to process EDI 350 customs messages from the message queue
WHEN:
The system initiates connection to the MQ Queue Manager
THEN:
- The system calls the mqconnc api with the queue manager name
- Receives a connection handle
- Completion status
β Consolidated Acceptance Criteria
- The system receives the completion code from the MQCONNC API → the system checks if the completion code equals MQCC-OK to determine connection success
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MQCompletionCodeOK(["Start Step"])
E_MQCompletionCodeOK(["End Step"])
N_MQCompletionCodeOK_Node0{"The system receives the completion
code from the MQCONNC API"}:::decision N_MQCompletionCodeOK_Node0_action["The system checks if the completion
code equals MQCC-OK to determine
connection success"]:::main N_MQCompletionCodeOK_Node0 -- Yes --> N_MQCompletionCodeOK_Node0_action N_MQCompletionCodeOK_Node0_action --> E_MQCompletionCodeOK S_MQCompletionCodeOK --> N_MQCompletionCodeOK_Node0 N_MQCompletionCodeOK_Node0 -- No --> E_MQCompletionCodeOK
code from the MQCONNC API"}:::decision N_MQCompletionCodeOK_Node0_action["The system checks if the completion
code equals MQCC-OK to determine
connection success"]:::main N_MQCompletionCodeOK_Node0 -- Yes --> N_MQCompletionCodeOK_Node0_action N_MQCompletionCodeOK_Node0_action --> E_MQCompletionCodeOK S_MQCompletionCodeOK --> N_MQCompletionCodeOK_Node0 N_MQCompletionCodeOK_Node0 -- No --> E_MQCompletionCodeOK
File: GCX126R.cbl
GIVEN:
The MQCONNC API has been called to establish connection to the Queue Manager
WHEN:
The system receives the completion code from the MQCONNC API
THEN:
The system checks if the completion code equals MQCC-OK to determine connection success
β Consolidated Acceptance Criteria
- The system needs to identify the specific cause of connection failure → the system retrieves the MQ reason code from the connection 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_RetrieveMQReasonCode(["Start Step"])
E_RetrieveMQReasonCode(["End Step"])
N_RetrieveMQReasonCode_Node0{"The system needs to identify the
specific cause of connection failure"}:::decision N_RetrieveMQReasonCode_Node0_action["The system retrieves the MQ reason
code from the connection response"]:::main N_RetrieveMQReasonCode_Node0 -- Yes --> N_RetrieveMQReasonCode_Node0_action N_RetrieveMQReasonCode_Node0_action --> E_RetrieveMQReasonCode S_RetrieveMQReasonCode --> N_RetrieveMQReasonCode_Node0 N_RetrieveMQReasonCode_Node0 -- No --> E_RetrieveMQReasonCode
specific cause of connection failure"}:::decision N_RetrieveMQReasonCode_Node0_action["The system retrieves the MQ reason
code from the connection response"]:::main N_RetrieveMQReasonCode_Node0 -- Yes --> N_RetrieveMQReasonCode_Node0_action N_RetrieveMQReasonCode_Node0_action --> E_RetrieveMQReasonCode S_RetrieveMQReasonCode --> N_RetrieveMQReasonCode_Node0 N_RetrieveMQReasonCode_Node0 -- No --> E_RetrieveMQReasonCode
File: GCX126R.cbl
GIVEN:
The MQ connection completion code indicates failure (not equal to MQCC-OK)
WHEN:
The system needs to identify the specific cause of connection failure
THEN:
The system retrieves the MQ reason code from the connection response
β Consolidated Acceptance Criteria
- The system needs to provide a descriptive error message for the failure → the system calls the GCCMQERR program with the reason code and receives the corresponding error message text
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCMQERRtoGetErrorMessageText(["Start Step"])
E_CallGCCMQERRtoGetErrorMessageText(["End Step"])
N_CallGCCMQERRtoGetErrorMessageText_Node0{"The system needs to provide a
descriptive error message for the
failure"}:::decision N_CallGCCMQERRtoGetErrorMessageText_Node0_action["The system calls the GCCMQERR
program with the reason code and
receives the corresponding error
message text"]:::exclusion N_CallGCCMQERRtoGetErrorMessageText_Node0 -- Yes -->|Alternative| N_CallGCCMQERRtoGetErrorMessageText_Node0_action N_CallGCCMQERRtoGetErrorMessageText_Node0_action --> E_CallGCCMQERRtoGetErrorMessageText S_CallGCCMQERRtoGetErrorMessageText --> N_CallGCCMQERRtoGetErrorMessageText_Node0 N_CallGCCMQERRtoGetErrorMessageText_Node0 -- No --> E_CallGCCMQERRtoGetErrorMessageText
descriptive error message for the
failure"}:::decision N_CallGCCMQERRtoGetErrorMessageText_Node0_action["The system calls the GCCMQERR
program with the reason code and
receives the corresponding error
message text"]:::exclusion N_CallGCCMQERRtoGetErrorMessageText_Node0 -- Yes -->|Alternative| N_CallGCCMQERRtoGetErrorMessageText_Node0_action N_CallGCCMQERRtoGetErrorMessageText_Node0_action --> E_CallGCCMQERRtoGetErrorMessageText S_CallGCCMQERRtoGetErrorMessageText --> N_CallGCCMQERRtoGetErrorMessageText_Node0 N_CallGCCMQERRtoGetErrorMessageText_Node0 -- No --> E_CallGCCMQERRtoGetErrorMessageText
File: GCX126R.cbl
GIVEN:
An MQ reason code has been retrieved indicating connection failure
WHEN:
The system needs to provide a descriptive error message for the failure
THEN:
- The system calls the gccmqerr program with the reason code
- Receives the corresponding error message text
β Consolidated Acceptance Criteria
- The system prepares to report the connection failure → the system builds an error message containing: the MQ reason code concatenated with the error message text, transaction set value '355', and error type 'CONN 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_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED(["Start Step"])
E_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED(["End Step"])
N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0{"The system prepares to report the
connection failure"}:::decision N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0_action["The system builds an error message
containing: the MQ reason code
concatenated with the error message
text, transaction set value 355 ,
and error type CONN FAILED"]:::main N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0 -- Yes --> N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0_action N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0_action --> E_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED S_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED --> N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0 N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0 -- No --> E_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED
connection failure"}:::decision N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0_action["The system builds an error message
containing: the MQ reason code
concatenated with the error message
text, transaction set value 355 ,
and error type CONN FAILED"]:::main N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0 -- Yes --> N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0_action N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0_action --> E_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED S_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED --> N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0 N_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED_Node0 -- No --> E_BuildErrorMessageReasonCodeErrorTextTransactionSet355ErrorTypeCONNFAILED
File: GCX126R.cbl
GIVEN:
The MQ connection has failed and the reason code and error text have been retrieved
WHEN:
The system prepares to report the connection failure
THEN:
The system builds an error message containing: the MQ reason code concatenated with the error message text, transaction set value '355', and error type 'CONN FAILED'
β Consolidated Acceptance Criteria
- The system cannot proceed without a valid MQ connection → the system abends the program with the error message containing the reason code, error text, transaction set '355', and error type 'CONN 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_AbendProgramwithErrorMessage(["Start Step"])
E_AbendProgramwithErrorMessage(["End Step"])
N_AbendProgramwithErrorMessage_Node0{"The system cannot proceed without a
valid MQ connection"}:::decision N_AbendProgramwithErrorMessage_Node0_action["The system abends the program with
the error message containing the
reason code, error text, transaction
set 355 , and error type CONN FAILED"]:::main N_AbendProgramwithErrorMessage_Node0 -- Yes --> N_AbendProgramwithErrorMessage_Node0_action N_AbendProgramwithErrorMessage_Node0_action --> E_AbendProgramwithErrorMessage S_AbendProgramwithErrorMessage --> N_AbendProgramwithErrorMessage_Node0 N_AbendProgramwithErrorMessage_Node0 -- No --> E_AbendProgramwithErrorMessage
valid MQ connection"}:::decision N_AbendProgramwithErrorMessage_Node0_action["The system abends the program with
the error message containing the
reason code, error text, transaction
set 355 , and error type CONN FAILED"]:::main N_AbendProgramwithErrorMessage_Node0 -- Yes --> N_AbendProgramwithErrorMessage_Node0_action N_AbendProgramwithErrorMessage_Node0_action --> E_AbendProgramwithErrorMessage S_AbendProgramwithErrorMessage --> N_AbendProgramwithErrorMessage_Node0 N_AbendProgramwithErrorMessage_Node0 -- No --> E_AbendProgramwithErrorMessage
File: GCX126R.cbl
GIVEN:
The MQ connection has failed and a comprehensive error message has been constructed
WHEN:
The system cannot proceed without a valid MQ connection
THEN:
The system abends the program with the error message containing the reason code, error text, transaction set '355', and error type 'CONN FAILED'
β Consolidated Acceptance Criteria
- The completion code returned equals MQCC-OK → the system confirms the connection is established successfully and proceeds with message processing 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_ConnectionEstablishedSuccessfully(["Start Step"])
E_ConnectionEstablishedSuccessfully(["End Step"])
N_ConnectionEstablishedSuccessfully_Node0{"The completion code returned equals
MQCC-OK"}:::decision N_ConnectionEstablishedSuccessfully_Node0_action["The system confirms the connection
is established successfully and
proceeds with message processing
operations"]:::main N_ConnectionEstablishedSuccessfully_Node0 -- Yes --> N_ConnectionEstablishedSuccessfully_Node0_action N_ConnectionEstablishedSuccessfully_Node0_action --> E_ConnectionEstablishedSuccessfully S_ConnectionEstablishedSuccessfully --> N_ConnectionEstablishedSuccessfully_Node0 N_ConnectionEstablishedSuccessfully_Node0 -- No --> E_ConnectionEstablishedSuccessfully
MQCC-OK"}:::decision N_ConnectionEstablishedSuccessfully_Node0_action["The system confirms the connection
is established successfully and
proceeds with message processing
operations"]:::main N_ConnectionEstablishedSuccessfully_Node0 -- Yes --> N_ConnectionEstablishedSuccessfully_Node0_action N_ConnectionEstablishedSuccessfully_Node0_action --> E_ConnectionEstablishedSuccessfully S_ConnectionEstablishedSuccessfully --> N_ConnectionEstablishedSuccessfully_Node0 N_ConnectionEstablishedSuccessfully_Node0 -- No --> E_ConnectionEstablishedSuccessfully
File: GCX126R.cbl
GIVEN:
The MQCONNC API has been called to connect to the Queue Manager
WHEN:
The completion code returned equals MQCC-OK
THEN:
- The system confirms the connection is established successfully
- Proceeds with message processing operations
β Consolidated Acceptance Criteria
- The system attempts to connect to the MQ Queue Manager → if connection is successful, proceed to open the queue; If connection fails, generate error message with reason code and abort processing with message 'CONN FAILED' for transaction set '355'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConnecttoMQQueueManager(["Start Step"])
E_ConnecttoMQQueueManager(["End Step"])
N_ConnecttoMQQueueManager_Node0{"The system attempts to connect to
the MQ Queue Manager"}:::decision N_ConnecttoMQQueueManager_Node0_action["If connection is successful,
proceed to open the queue If
connection fails, generate error
message with reason code and abort
processing with message CONN FAILED
for transaction set 355"]:::exclusion N_ConnecttoMQQueueManager_Node0 -- Yes -->|Alternative| N_ConnecttoMQQueueManager_Node0_action N_ConnecttoMQQueueManager_Node0_action --> E_ConnecttoMQQueueManager S_ConnecttoMQQueueManager --> N_ConnecttoMQQueueManager_Node0 N_ConnecttoMQQueueManager_Node0 -- No --> E_ConnecttoMQQueueManager
the MQ Queue Manager"}:::decision N_ConnecttoMQQueueManager_Node0_action["If connection is successful,
proceed to open the queue If
connection fails, generate error
message with reason code and abort
processing with message CONN FAILED
for transaction set 355"]:::exclusion N_ConnecttoMQQueueManager_Node0 -- Yes -->|Alternative| N_ConnecttoMQQueueManager_Node0_action N_ConnecttoMQQueueManager_Node0_action --> E_ConnecttoMQQueueManager S_ConnecttoMQQueueManager --> N_ConnecttoMQQueueManager_Node0 N_ConnecttoMQQueueManager_Node0 -- No --> E_ConnecttoMQQueueManager
File: GCX126R.cbl
GIVEN:
The program needs to process EDI 350 messages from the message queue
WHEN:
The system attempts to connect to the MQ Queue Manager
THEN:
- If connection is successful, proceed to open the queue; if connection fails, generate error message with reason code
- Abort processing with message 'conn failed' for transaction set '355'
β Consolidated Acceptance Criteria
- The system attempts to open the queue with input-as-queue-defined option → if open is successful, proceed to retrieve messages; If open fails, generate error message with reason code and abort processing with message 'OPEN FAILED' for transaction set '355'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OpenMQQueueforReading(["Start Step"])
E_OpenMQQueueforReading(["End Step"])
N_OpenMQQueueforReading_Node0{"The system attempts to open the
queue with input-as-queue-defined
option"}:::decision N_OpenMQQueueforReading_Node0_action["If open is successful, proceed to
retrieve messages If open fails,
generate error message with reason
code and abort processing with
message OPEN FAILED for transaction
set 355"]:::exclusion N_OpenMQQueueforReading_Node0 -- Yes -->|Alternative| N_OpenMQQueueforReading_Node0_action N_OpenMQQueueforReading_Node0_action --> E_OpenMQQueueforReading S_OpenMQQueueforReading --> N_OpenMQQueueforReading_Node0 N_OpenMQQueueforReading_Node0 -- No --> E_OpenMQQueueforReading
queue with input-as-queue-defined
option"}:::decision N_OpenMQQueueforReading_Node0_action["If open is successful, proceed to
retrieve messages If open fails,
generate error message with reason
code and abort processing with
message OPEN FAILED for transaction
set 355"]:::exclusion N_OpenMQQueueforReading_Node0 -- Yes -->|Alternative| N_OpenMQQueueforReading_Node0_action N_OpenMQQueueforReading_Node0_action --> E_OpenMQQueueforReading S_OpenMQQueueforReading --> N_OpenMQQueueforReading_Node0 N_OpenMQQueueforReading_Node0 -- No --> E_OpenMQQueueforReading
File: GCX126R.cbl
GIVEN:
Connection to MQ Queue Manager is established and queue name is defined
WHEN:
The system attempts to open the queue with input-as-queue-defined option
THEN:
- If open is successful, proceed to retrieve messages; if open fails, generate error message with reason code
- Abort processing with message 'open failed' for transaction set '355'
β Consolidated Acceptance Criteria
- The system executes MQGET operation with message buffer length set to the size of MQS-MESSAGE → the message is retrieved into MQS-MESSAGE buffer with actual data length returned in W03-DATALEN, and completion code and reason code are set to indicate 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_RetrieveMessagefromQueue(["Start Step"])
E_RetrieveMessagefromQueue(["End Step"])
N_RetrieveMessagefromQueue_Node0{"The system executes MQGET operation
with message buffer length set to
the size of MQS-MESSAGE"}:::decision N_RetrieveMessagefromQueue_Node0_action["The message is retrieved into
MQS-MESSAGE buffer with actual data
length returned in W03-DATALEN, and
completion code and reason code are
set to indicate operation status"]:::main N_RetrieveMessagefromQueue_Node0 -- Yes --> N_RetrieveMessagefromQueue_Node0_action N_RetrieveMessagefromQueue_Node0_action --> E_RetrieveMessagefromQueue S_RetrieveMessagefromQueue --> N_RetrieveMessagefromQueue_Node0 N_RetrieveMessagefromQueue_Node0 -- No --> E_RetrieveMessagefromQueue
with message buffer length set to
the size of MQS-MESSAGE"}:::decision N_RetrieveMessagefromQueue_Node0_action["The message is retrieved into
MQS-MESSAGE buffer with actual data
length returned in W03-DATALEN, and
completion code and reason code are
set to indicate operation status"]:::main N_RetrieveMessagefromQueue_Node0 -- Yes --> N_RetrieveMessagefromQueue_Node0_action N_RetrieveMessagefromQueue_Node0_action --> E_RetrieveMessagefromQueue S_RetrieveMessagefromQueue --> N_RetrieveMessagefromQueue_Node0 N_RetrieveMessagefromQueue_Node0 -- No --> E_RetrieveMessagefromQueue
File: GCX126R.cbl
GIVEN:
MQ queue is open and ready for message retrieval
WHEN:
The system executes MQGET operation with message buffer length set to the size of MQS-MESSAGE
THEN:
- The message is retrieved into mqs-message buffer with actual data length returned in w03-datalen, and completion code
- Reason code are set to indicate operation status
β Consolidated Acceptance Criteria
- If the completion code → if completion code equals MQCC-OK, proceed to check message status; If completion code equals MQCC-FAILED and reason equals MQRC-NO-MSG-AVAILABLE, set message not available flag; For any other completion code, set end of queue flag and prepare 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_MQOperationSuccessful(["Start Step"])
E_MQOperationSuccessful(["End Step"])
N_MQOperationSuccessful_Node0{"The system evaluates the completion
code"}:::decision N_MQOperationSuccessful_Node0_action["If completion code equals MQCC-OK,
proceed to check message status If
completion code equals MQCC-FAILED
and reason equals
MQRC-NO-MSG-AVAILABLE, set message
not available flag For any other
completion code, set end of queue
flag and prepare error message"]:::main N_MQOperationSuccessful_Node0 -- Yes --> N_MQOperationSuccessful_Node0_action N_MQOperationSuccessful_Node0_action --> E_MQOperationSuccessful S_MQOperationSuccessful --> N_MQOperationSuccessful_Node0 N_MQOperationSuccessful_Node0 -- No --> E_MQOperationSuccessful
code"}:::decision N_MQOperationSuccessful_Node0_action["If completion code equals MQCC-OK,
proceed to check message status If
completion code equals MQCC-FAILED
and reason equals
MQRC-NO-MSG-AVAILABLE, set message
not available flag For any other
completion code, set end of queue
flag and prepare error message"]:::main N_MQOperationSuccessful_Node0 -- Yes --> N_MQOperationSuccessful_Node0_action N_MQOperationSuccessful_Node0_action --> E_MQOperationSuccessful S_MQOperationSuccessful --> N_MQOperationSuccessful_Node0 N_MQOperationSuccessful_Node0 -- No --> E_MQOperationSuccessful
File: GCX126R.cbl
GIVEN:
MQGET operation has completed and returned completion code in W03-COMPCODE
WHEN:
The system evaluates the completion code
THEN:
- If completion code equals mqcc-ok, proceed to check message status; if completion code equals mqcc-failed
- Reason equals mqrc-no-msg-available, set message not available flag; for any other completion code, set end of queue flag
- Prepare error message
β Consolidated Acceptance Criteria
- The system processes the no message available condition → set MSG-NOT-AVAILABLE flag to TRUE and exit message retrieval process 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_SetMessageNotAvailableFlag(["Start Step"])
E_SetMessageNotAvailableFlag(["End Step"])
N_SetMessageNotAvailableFlag_Node0{"The system processes the no message
available condition"}:::decision N_SetMessageNotAvailableFlag_Node0_action["Set MSG-NOT-AVAILABLE flag to TRUE
and exit message retrieval process
without error"]:::main N_SetMessageNotAvailableFlag_Node0 -- Yes --> N_SetMessageNotAvailableFlag_Node0_action N_SetMessageNotAvailableFlag_Node0_action --> E_SetMessageNotAvailableFlag S_SetMessageNotAvailableFlag --> N_SetMessageNotAvailableFlag_Node0 N_SetMessageNotAvailableFlag_Node0 -- No --> E_SetMessageNotAvailableFlag
available condition"}:::decision N_SetMessageNotAvailableFlag_Node0_action["Set MSG-NOT-AVAILABLE flag to TRUE
and exit message retrieval process
without error"]:::main N_SetMessageNotAvailableFlag_Node0 -- Yes --> N_SetMessageNotAvailableFlag_Node0_action N_SetMessageNotAvailableFlag_Node0_action --> E_SetMessageNotAvailableFlag S_SetMessageNotAvailableFlag --> N_SetMessageNotAvailableFlag_Node0 N_SetMessageNotAvailableFlag_Node0 -- No --> E_SetMessageNotAvailableFlag
File: GCX126R.cbl
GIVEN:
MQ GET operation returned completion code MQCC-FAILED with reason code MQRC-NO-MSG-AVAILABLE (2033)
WHEN:
The system processes the no message available condition
THEN:
- Set msg-not-available flag to true
- Exit message retrieval process without error
β Consolidated Acceptance Criteria
- The system checks if MQMD-BACKOUTCOUNT is not equal to 0 → if backout count is not equal to 0, set SKIP-MSG-FOUND flag to TRUE; If backout count equals 0, proceed to validate message 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_BackoutCount0(["Start Step"])
E_BackoutCount0(["End Step"])
N_BackoutCount0_Node0{"The system checks if
MQMD-BACKOUTCOUNT is not equal to 0"}:::decision N_BackoutCount0_Node0_action["If backout count is not equal to 0,
set SKIP-MSG-FOUND flag to TRUE If
backout count equals 0, proceed to
validate message length"]:::main N_BackoutCount0_Node0 -- Yes --> N_BackoutCount0_Node0_action N_BackoutCount0_Node0_action --> E_BackoutCount0 S_BackoutCount0 --> N_BackoutCount0_Node0 N_BackoutCount0_Node0 -- No --> E_BackoutCount0
MQMD-BACKOUTCOUNT is not equal to 0"}:::decision N_BackoutCount0_Node0_action["If backout count is not equal to 0,
set SKIP-MSG-FOUND flag to TRUE If
backout count equals 0, proceed to
validate message length"]:::main N_BackoutCount0_Node0 -- Yes --> N_BackoutCount0_Node0_action N_BackoutCount0_Node0_action --> E_BackoutCount0 S_BackoutCount0 --> N_BackoutCount0_Node0 N_BackoutCount0_Node0 -- No --> E_BackoutCount0
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Message was successfully retrieved with completion code MQCC-OK and backout count is available in MQMD-BACKOUTCOUNT
WHEN:
The system checks if MQMD-BACKOUTCOUNT is not equal to 0
THEN:
If backout count is not equal to 0, set SKIP-MSG-FOUND flag to TRUE; If backout count equals 0, proceed to validate message length
β Consolidated Acceptance Criteria
- The system identifies a previously failed message → set SKIP-MSG-FOUND flag to TRUE and exit message retrieval process without 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_SetSkipMessageFlag(["Start Step"])
E_SetSkipMessageFlag(["End Step"])
N_SetSkipMessageFlag_Node0{"The system identifies a previously
failed message"}:::decision N_SetSkipMessageFlag_Node0_action["Set SKIP-MSG-FOUND flag to TRUE and
exit message retrieval process
without further processing"]:::exclusion N_SetSkipMessageFlag_Node0 -- Yes -->|Alternative| N_SetSkipMessageFlag_Node0_action N_SetSkipMessageFlag_Node0_action --> E_SetSkipMessageFlag S_SetSkipMessageFlag --> N_SetSkipMessageFlag_Node0 N_SetSkipMessageFlag_Node0 -- No --> E_SetSkipMessageFlag
failed message"}:::decision N_SetSkipMessageFlag_Node0_action["Set SKIP-MSG-FOUND flag to TRUE and
exit message retrieval process
without further processing"]:::exclusion N_SetSkipMessageFlag_Node0 -- Yes -->|Alternative| N_SetSkipMessageFlag_Node0_action N_SetSkipMessageFlag_Node0_action --> E_SetSkipMessageFlag S_SetSkipMessageFlag --> N_SetSkipMessageFlag_Node0 N_SetSkipMessageFlag_Node0 -- No --> E_SetSkipMessageFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Message has completion code MQCC-OK and MQMD-BACKOUTCOUNT is not equal to 0
WHEN:
The system identifies a previously failed message
THEN:
- Set skip-msg-found flag to true
- Exit message retrieval process without further processing
β Consolidated Acceptance Criteria
- The system calculates WS-MAX-MQS-ENTRIES by subtracting header length from total data length and dividing by entry length, and checks if result is less than 1 → if WS-MAX-MQS-ENTRIES is less than 1, prepare error message 'USER ABEND 350 MESSAGE TOO SHORT' and abort processing; If WS-MAX-MQS-ENTRIES is 1 or greater, set GOOD-MSG-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_MessageLengthValid(["Start Step"])
E_MessageLengthValid(["End Step"])
N_MessageLengthValid_Node0{"The system calculates
WS-MAX-MQS-ENTRIES by subtracting
header length from total data length
and dividing by entry length, and
checks if result is less than 1"}:::decision N_MessageLengthValid_Node0_action["If WS-MAX-MQS-ENTRIES is less than
1, prepare error message USER ABEND
350 MESSAGE TOO SHORT and abort
processing If WS-MAX-MQS-ENTRIES is
1 or greater, set GOOD-MSG-FOUND
flag to TRUE"]:::exclusion N_MessageLengthValid_Node0 -- Yes -->|Alternative| N_MessageLengthValid_Node0_action N_MessageLengthValid_Node0_action --> E_MessageLengthValid S_MessageLengthValid --> N_MessageLengthValid_Node0 N_MessageLengthValid_Node0 -- No --> E_MessageLengthValid
WS-MAX-MQS-ENTRIES by subtracting
header length from total data length
and dividing by entry length, and
checks if result is less than 1"}:::decision N_MessageLengthValid_Node0_action["If WS-MAX-MQS-ENTRIES is less than
1, prepare error message USER ABEND
350 MESSAGE TOO SHORT and abort
processing If WS-MAX-MQS-ENTRIES is
1 or greater, set GOOD-MSG-FOUND
flag to TRUE"]:::exclusion N_MessageLengthValid_Node0 -- Yes -->|Alternative| N_MessageLengthValid_Node0_action N_MessageLengthValid_Node0_action --> E_MessageLengthValid S_MessageLengthValid --> N_MessageLengthValid_Node0 N_MessageLengthValid_Node0 -- No --> E_MessageLengthValid
File: GCX126R.cbl
GIVEN:
Message was successfully retrieved with completion code MQCC-OK and backout count equals 0
WHEN:
- The system calculates ws-max-mqs-entries by subtracting header length from total data length
- Dividing by entry length, and checks if result is less than 1
THEN:
If WS-MAX-MQS-ENTRIES is less than 1, prepare error message 'USER ABEND 350 MESSAGE TOO SHORT' and abort processing; If WS-MAX-MQS-ENTRIES is 1 or greater, set GOOD-MSG-FOUND flag to TRUE
β Consolidated Acceptance Criteria
- All message validation checks pass successfully → set GOOD-MSG-FOUND flag to TRUE and proceed to calculate number of EDI 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_SetGoodMessageFoundFlag(["Start Step"])
E_SetGoodMessageFoundFlag(["End Step"])
N_SetGoodMessageFoundFlag_Node0{"All message validation checks pass
successfully"}:::decision N_SetGoodMessageFoundFlag_Node0_action["Set GOOD-MSG-FOUND flag to TRUE and
proceed to calculate number of EDI
segments"]:::main N_SetGoodMessageFoundFlag_Node0 -- Yes --> N_SetGoodMessageFoundFlag_Node0_action N_SetGoodMessageFoundFlag_Node0_action --> E_SetGoodMessageFoundFlag S_SetGoodMessageFoundFlag --> N_SetGoodMessageFoundFlag_Node0 N_SetGoodMessageFoundFlag_Node0 -- No --> E_SetGoodMessageFoundFlag
successfully"}:::decision N_SetGoodMessageFoundFlag_Node0_action["Set GOOD-MSG-FOUND flag to TRUE and
proceed to calculate number of EDI
segments"]:::main N_SetGoodMessageFoundFlag_Node0 -- Yes --> N_SetGoodMessageFoundFlag_Node0_action N_SetGoodMessageFoundFlag_Node0_action --> E_SetGoodMessageFoundFlag S_SetGoodMessageFoundFlag --> N_SetGoodMessageFoundFlag_Node0 N_SetGoodMessageFoundFlag_Node0 -- No --> E_SetGoodMessageFoundFlag
File: GCX126R.cbl
GIVEN:
Message has completion code MQCC-OK, backout count equals 0, and calculated segment count is valid
WHEN:
All message validation checks pass successfully
THEN:
- Set good-msg-found flag to true
- Proceed to calculate number of edi segments
β Consolidated Acceptance Criteria
- The system computes WS-MAX-MQS-ENTRIES as ((W03-DATALEN minus WS-MQS-LEN-HEADER) divided by WS-MQS-LEN-OF-1-ENTRY) rounded → if calculated WS-MAX-MQS-ENTRIES exceeds CST-MAX-MQS-ENTRIES, set WS-MAX-MQS-ENTRIES to CST-MAX-MQS-ENTRIES; Otherwise, use calculated value for segment 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_CalculateNumberofEDISegments(["Start Step"])
E_CalculateNumberofEDISegments(["End Step"])
N_CalculateNumberofEDISegments_Node0{"The system computes
WS-MAX-MQS-ENTRIES as W03-DATALEN
minus WS-MQS-LEN-HEADER divided by
WS-MQS-LEN-OF-1-ENTRY rounded"}:::decision N_CalculateNumberofEDISegments_Node0_action["If calculated WS-MAX-MQS-ENTRIES
exceeds CST-MAX-MQS-ENTRIES, set
WS-MAX-MQS-ENTRIES to
CST-MAX-MQS-ENTRIES Otherwise, use
calculated value for segment count"]:::main N_CalculateNumberofEDISegments_Node0 -- Yes --> N_CalculateNumberofEDISegments_Node0_action N_CalculateNumberofEDISegments_Node0_action --> E_CalculateNumberofEDISegments S_CalculateNumberofEDISegments --> N_CalculateNumberofEDISegments_Node0 N_CalculateNumberofEDISegments_Node0 -- No --> E_CalculateNumberofEDISegments
WS-MAX-MQS-ENTRIES as W03-DATALEN
minus WS-MQS-LEN-HEADER divided by
WS-MQS-LEN-OF-1-ENTRY rounded"}:::decision N_CalculateNumberofEDISegments_Node0_action["If calculated WS-MAX-MQS-ENTRIES
exceeds CST-MAX-MQS-ENTRIES, set
WS-MAX-MQS-ENTRIES to
CST-MAX-MQS-ENTRIES Otherwise, use
calculated value for segment count"]:::main N_CalculateNumberofEDISegments_Node0 -- Yes --> N_CalculateNumberofEDISegments_Node0_action N_CalculateNumberofEDISegments_Node0_action --> E_CalculateNumberofEDISegments S_CalculateNumberofEDISegments --> N_CalculateNumberofEDISegments_Node0 N_CalculateNumberofEDISegments_Node0 -- No --> E_CalculateNumberofEDISegments
File: GCX126R.cbl
GIVEN:
Valid message is retrieved with data length in W03-DATALEN, header length in WS-MQS-LEN-HEADER, and entry length in WS-MQS-LEN-OF-1-ENTRY
WHEN:
The system computes WS-MAX-MQS-ENTRIES as ((W03-DATALEN minus WS-MQS-LEN-HEADER) divided by WS-MQS-LEN-OF-1-ENTRY) rounded
THEN:
If calculated WS-MAX-MQS-ENTRIES exceeds CST-MAX-MQS-ENTRIES, set WS-MAX-MQS-ENTRIES to CST-MAX-MQS-ENTRIES; Otherwise, use calculated value for segment count
β Consolidated Acceptance Criteria
- The system encounters an unexpected MQ error condition → set END-OF-MQUEUE flag to TRUE and proceed to prepare error message with reason 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_SetEndofQueueFlag(["Start Step"])
E_SetEndofQueueFlag(["End Step"])
N_SetEndofQueueFlag_Node0{"The system encounters an unexpected
MQ error condition"}:::decision N_SetEndofQueueFlag_Node0_action["Set END-OF-MQUEUE flag to TRUE and
proceed to prepare error message
with reason code"]:::exclusion N_SetEndofQueueFlag_Node0 -- Yes -->|Alternative| N_SetEndofQueueFlag_Node0_action N_SetEndofQueueFlag_Node0_action --> E_SetEndofQueueFlag S_SetEndofQueueFlag --> N_SetEndofQueueFlag_Node0 N_SetEndofQueueFlag_Node0 -- No --> E_SetEndofQueueFlag
MQ error condition"}:::decision N_SetEndofQueueFlag_Node0_action["Set END-OF-MQUEUE flag to TRUE and
proceed to prepare error message
with reason code"]:::exclusion N_SetEndofQueueFlag_Node0 -- Yes -->|Alternative| N_SetEndofQueueFlag_Node0_action N_SetEndofQueueFlag_Node0_action --> E_SetEndofQueueFlag S_SetEndofQueueFlag --> N_SetEndofQueueFlag_Node0 N_SetEndofQueueFlag_Node0 -- No --> E_SetEndofQueueFlag
File: GCX126R.cbl
GIVEN:
MQ GET operation returned completion code other than MQCC-OK or returned MQCC-FAILED with reason other than MQRC-NO-MSG-AVAILABLE
WHEN:
The system encounters an unexpected MQ error condition
THEN:
- Set end-of-mqueue flag to true
- Proceed to prepare error message with reason code
β Consolidated Acceptance Criteria
- The system needs to report the MQ failure → move W03-REASON to W03-REASON-CODE, call GCCMQERR to get error description into OUTPUT-MESSAGE-TEXT, move error text to MQ-ERROR-TEXT, set MQ-TRANS-SET to '350' or '355', set PGM-ERROR-TEXT to 'OPEN FAILED', 'CLOSE FAILED', 'DISC FAILED', or 'CONN FAILED' as appropriate, and move complete error message to CC-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_PrepareErrorMessage(["Start Step"])
E_PrepareErrorMessage(["End Step"])
N_PrepareErrorMessage_Node0{"The system needs to report the MQ
failure"}:::decision N_PrepareErrorMessage_Node0_action["Move W03-REASON to W03-REASON-CODE,
call GCCMQERR to get error
description into
OUTPUT-MESSAGE-TEXT, move error text
to MQ-ERROR-TEXT, set MQ-TRANS-SET
to 350 or 355 , set PGM-ERROR-TEXT
to OPEN FAILED , CLOSE FAILED , DISC
FAILED , or CONN FAILED as
appropriate, and move complete error
message to CC-ERROR-MESSAGE"]:::main N_PrepareErrorMessage_Node0 -- Yes --> N_PrepareErrorMessage_Node0_action N_PrepareErrorMessage_Node0_action --> E_PrepareErrorMessage S_PrepareErrorMessage --> N_PrepareErrorMessage_Node0 N_PrepareErrorMessage_Node0 -- No --> E_PrepareErrorMessage
failure"}:::decision N_PrepareErrorMessage_Node0_action["Move W03-REASON to W03-REASON-CODE,
call GCCMQERR to get error
description into
OUTPUT-MESSAGE-TEXT, move error text
to MQ-ERROR-TEXT, set MQ-TRANS-SET
to 350 or 355 , set PGM-ERROR-TEXT
to OPEN FAILED , CLOSE FAILED , DISC
FAILED , or CONN FAILED as
appropriate, and move complete error
message to CC-ERROR-MESSAGE"]:::main N_PrepareErrorMessage_Node0 -- Yes --> N_PrepareErrorMessage_Node0_action N_PrepareErrorMessage_Node0_action --> E_PrepareErrorMessage S_PrepareErrorMessage --> N_PrepareErrorMessage_Node0 N_PrepareErrorMessage_Node0 -- No --> E_PrepareErrorMessage
File: GCX126R.cbl
GIVEN:
MQ operation failed with reason code in W03-REASON
WHEN:
The system needs to report the MQ failure
THEN:
Move W03-REASON to W03-REASON-CODE, call GCCMQERR to get error description into OUTPUT-MESSAGE-TEXT, move error text to MQ-ERROR-TEXT, set MQ-TRANS-SET to '350' or '355', set PGM-ERROR-TEXT to 'OPEN FAILED', 'CLOSE FAILED', 'DISC FAILED', or 'CONN FAILED' as appropriate, and move complete error message to CC-ERROR-MESSAGE
β Consolidated Acceptance Criteria
- The system determines processing cannot continue → call CERR program with CCCOM to abort processing and terminate program 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_AbortProcessing(["Start Step"])
E_AbortProcessing(["End Step"])
N_AbortProcessing_Node0{"The system determines processing
cannot continue"}:::decision N_AbortProcessing_Node0_action["Call CERR program with CCCOM to
abort processing and terminate
program execution"]:::exclusion N_AbortProcessing_Node0 -- Yes -->|Alternative| N_AbortProcessing_Node0_action N_AbortProcessing_Node0_action --> E_AbortProcessing S_AbortProcessing --> N_AbortProcessing_Node0 N_AbortProcessing_Node0 -- No --> E_AbortProcessing
cannot continue"}:::decision N_AbortProcessing_Node0_action["Call CERR program with CCCOM to
abort processing and terminate
program execution"]:::exclusion N_AbortProcessing_Node0 -- Yes -->|Alternative| N_AbortProcessing_Node0_action N_AbortProcessing_Node0_action --> E_AbortProcessing S_AbortProcessing --> N_AbortProcessing_Node0 N_AbortProcessing_Node0 -- No --> E_AbortProcessing
File: GCX126R.cbl
GIVEN:
Error message has been prepared for MQ failure condition
WHEN:
The system determines processing cannot continue
THEN:
- Call cerr program with cccom to abort processing
- Terminate program execution
β Consolidated Acceptance Criteria
- ['The system calculates the number of segments'] → ['Subtract the header length from the total message data length to get net data length', 'Divide the net data length by the single entry length', 'Round the result to get the number of complete segments', 'Store the calculated value in WS-MAX-MQS-ENTRIES']
- The system calculates the number of message segments → the number of segments (WS-MAX-MQS-ENTRIES) is calculated as: (Data Length minus Header Length) divided by Entry Length, rounded to the nearest whole 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_CalculateSegmentsDataLengthHeaderLengthEntryLength(["Start Step"])
E_CalculateSegmentsDataLengthHeaderLengthEntryLength(["End Step"])
N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0{"The system calculates the number of
segments"}:::decision N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0_action["Subtract the header length from the
total message data length to get net
data length , Divide the net data
length by the single entry length ,
Round the result to get the number
of complete segments , Store the
calculated value in
WS-MAX-MQS-ENTRIES"]:::main N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0 -- Yes --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0_action N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0_action --> E_CalculateSegmentsDataLengthHeaderLengthEntryLength S_CalculateSegmentsDataLengthHeaderLengthEntryLength --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0 N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1{"The system calculates the number of
message segments"}:::decision N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1_action["The number of segments
WS-MAX-MQS-ENTRIES is calculated as:
Data Length minus Header Length
divided by Entry Length, rounded to
the nearest whole number"]:::main N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1 -- Yes --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1_action N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1_action --> E_CalculateSegmentsDataLengthHeaderLengthEntryLength N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0 -- No --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1 N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1 -- No --> E_CalculateSegmentsDataLengthHeaderLengthEntryLength
segments"}:::decision N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0_action["Subtract the header length from the
total message data length to get net
data length , Divide the net data
length by the single entry length ,
Round the result to get the number
of complete segments , Store the
calculated value in
WS-MAX-MQS-ENTRIES"]:::main N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0 -- Yes --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0_action N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0_action --> E_CalculateSegmentsDataLengthHeaderLengthEntryLength S_CalculateSegmentsDataLengthHeaderLengthEntryLength --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0 N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1{"The system calculates the number of
message segments"}:::decision N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1_action["The number of segments
WS-MAX-MQS-ENTRIES is calculated as:
Data Length minus Header Length
divided by Entry Length, rounded to
the nearest whole number"]:::main N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1 -- Yes --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1_action N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1_action --> E_CalculateSegmentsDataLengthHeaderLengthEntryLength N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node0 -- No --> N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1 N_CalculateSegmentsDataLengthHeaderLengthEntryLength_Node1 -- No --> E_CalculateSegmentsDataLengthHeaderLengthEntryLength
File: GCX126R.cbl
GIVEN:
['An EDI 350 message has been retrieved from the MQ queue', 'The message data length (W03-DATALEN) is available from the MQ GET operation', 'The message header length (WS-MQS-LEN-HEADER) equals the length of MQS-MESSAGE-HEADER structure', 'The single entry length (WS-MQS-LEN-OF-1-ENTRY) equals the length of one MQS-TABLE-ENTRY']
WHEN:
['The system calculates the number of segments']
THEN:
['Subtract the header length from the total message data length to get net data length', 'Divide the net data length by the single entry length', 'Round the result to get the number of complete segments', 'Store the calculated value in WS-MAX-MQS-ENTRIES']
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been retrieved from the MQ queue with a specific data length (W03-DATALEN), a known message header length (WS-MQS-LEN-HEADER), and a known single entry length (WS-MQS-LEN-OF-1-ENTRY)
WHEN:
The system calculates the number of message segments
THEN:
The number of segments (WS-MAX-MQS-ENTRIES) is calculated as: (Data Length minus Header Length) divided by Entry Length, rounded to the nearest whole number
β Consolidated Acceptance Criteria
- ['The calculated number of segments (WS-MAX-MQS-ENTRIES) exceeds the maximum allowed (CST-MAX-MQS-ENTRIES)'] → ['Set WS-MAX-MQS-ENTRIES to the maximum allowed value CST-MAX-MQS-ENTRIES', 'Discard any segments beyond the maximum limit']
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculatedSegmentsMaximumAllowed(["Start Step"])
E_CalculatedSegmentsMaximumAllowed(["End Step"])
N_CalculatedSegmentsMaximumAllowed_Node0{"The calculated number of segments
WS-MAX-MQS-ENTRIES exceeds the
maximum allowed CST-MAX-MQS-ENTRIES"}:::decision N_CalculatedSegmentsMaximumAllowed_Node0_action["Set WS-MAX-MQS-ENTRIES to the
maximum allowed value
CST-MAX-MQS-ENTRIES , Discard any
segments beyond the maximum limit"]:::main N_CalculatedSegmentsMaximumAllowed_Node0 -- Yes --> N_CalculatedSegmentsMaximumAllowed_Node0_action N_CalculatedSegmentsMaximumAllowed_Node0_action --> E_CalculatedSegmentsMaximumAllowed S_CalculatedSegmentsMaximumAllowed --> N_CalculatedSegmentsMaximumAllowed_Node0 N_CalculatedSegmentsMaximumAllowed_Node0 -- No --> E_CalculatedSegmentsMaximumAllowed
WS-MAX-MQS-ENTRIES exceeds the
maximum allowed CST-MAX-MQS-ENTRIES"}:::decision N_CalculatedSegmentsMaximumAllowed_Node0_action["Set WS-MAX-MQS-ENTRIES to the
maximum allowed value
CST-MAX-MQS-ENTRIES , Discard any
segments beyond the maximum limit"]:::main N_CalculatedSegmentsMaximumAllowed_Node0 -- Yes --> N_CalculatedSegmentsMaximumAllowed_Node0_action N_CalculatedSegmentsMaximumAllowed_Node0_action --> E_CalculatedSegmentsMaximumAllowed S_CalculatedSegmentsMaximumAllowed --> N_CalculatedSegmentsMaximumAllowed_Node0 N_CalculatedSegmentsMaximumAllowed_Node0 -- No --> E_CalculatedSegmentsMaximumAllowed
File: GCX126R.cbl
GIVEN:
['The number of segments has been calculated and stored in WS-MAX-MQS-ENTRIES', 'A maximum allowed segment count is defined as CST-MAX-MQS-ENTRIES']
WHEN:
['The calculated number of segments (WS-MAX-MQS-ENTRIES) exceeds the maximum allowed (CST-MAX-MQS-ENTRIES)']
THEN:
['Set WS-MAX-MQS-ENTRIES to the maximum allowed value CST-MAX-MQS-ENTRIES', 'Discard any segments beyond the maximum limit']
β Consolidated Acceptance Criteria
- ['The system initializes message processing parameters'] → ['Set WS-MQS-LEN-HEADER to the length of MQS-MESSAGE-HEADER structure', 'This value will be used to subtract header length from total message length']
- Initializing message processing parameters → the header length (WS-MQS-LEN-HEADER) is set to the length of the MQS-MESSAGE-HEADER 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_GetHeaderLength(["Start Step"])
E_GetHeaderLength(["End Step"])
N_GetHeaderLength_Node0{"The system initializes message
processing parameters"}:::decision N_GetHeaderLength_Node0_action["Set WS-MQS-LEN-HEADER to the length
of MQS-MESSAGE-HEADER structure ,
This value will be used to subtract
header length from total message
length"]:::main N_GetHeaderLength_Node0 -- Yes --> N_GetHeaderLength_Node0_action N_GetHeaderLength_Node0_action --> E_GetHeaderLength S_GetHeaderLength --> N_GetHeaderLength_Node0 N_GetHeaderLength_Node1{"Initializing message processing
parameters"}:::decision N_GetHeaderLength_Node1_action["The header length WS-MQS-LEN-HEADER
is set to the length of the
MQS-MESSAGE-HEADER structure"]:::main N_GetHeaderLength_Node1 -- Yes --> N_GetHeaderLength_Node1_action N_GetHeaderLength_Node1_action --> E_GetHeaderLength N_GetHeaderLength_Node0 -- No --> N_GetHeaderLength_Node1 N_GetHeaderLength_Node1 -- No --> E_GetHeaderLength
processing parameters"}:::decision N_GetHeaderLength_Node0_action["Set WS-MQS-LEN-HEADER to the length
of MQS-MESSAGE-HEADER structure ,
This value will be used to subtract
header length from total message
length"]:::main N_GetHeaderLength_Node0 -- Yes --> N_GetHeaderLength_Node0_action N_GetHeaderLength_Node0_action --> E_GetHeaderLength S_GetHeaderLength --> N_GetHeaderLength_Node0 N_GetHeaderLength_Node1{"Initializing message processing
parameters"}:::decision N_GetHeaderLength_Node1_action["The header length WS-MQS-LEN-HEADER
is set to the length of the
MQS-MESSAGE-HEADER structure"]:::main N_GetHeaderLength_Node1 -- Yes --> N_GetHeaderLength_Node1_action N_GetHeaderLength_Node1_action --> E_GetHeaderLength N_GetHeaderLength_Node0 -- No --> N_GetHeaderLength_Node1 N_GetHeaderLength_Node1 -- No --> E_GetHeaderLength
File: GCX126R.cbl
GIVEN:
['The EDI message structure includes a fixed-length header (MQS-MESSAGE-HEADER)', 'The system needs to calculate net data length for segment counting']
WHEN:
['The system initializes message processing parameters']
THEN:
['Set WS-MQS-LEN-HEADER to the length of MQS-MESSAGE-HEADER structure', 'This value will be used to subtract header length from total message length']
File: GCX126R.cbl
GIVEN:
The system needs to process an EDI 350 message structure
WHEN:
Initializing message processing parameters
THEN:
The header length (WS-MQS-LEN-HEADER) is set to the length of the MQS-MESSAGE-HEADER structure
β Consolidated Acceptance Criteria
- ['The system initializes message processing parameters'] → ['Set WS-MQS-LEN-OF-1-ENTRY to the length of one MQS-TABLE-ENTRY structure', 'This value will be used as the divisor to calculate segment count']
- Initializing message processing parameters → the single entry length (WS-MQS-LEN-OF-1-ENTRY) is set to the length of one MQS-TABLE-ENTRY 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_GetSingleEntryLength(["Start Step"])
E_GetSingleEntryLength(["End Step"])
N_GetSingleEntryLength_Node0{"The system initializes message
processing parameters"}:::decision N_GetSingleEntryLength_Node0_action["Set WS-MQS-LEN-OF-1-ENTRY to the
length of one MQS-TABLE-ENTRY
structure , This value will be used
as the divisor to calculate segment
count"]:::main N_GetSingleEntryLength_Node0 -- Yes --> N_GetSingleEntryLength_Node0_action N_GetSingleEntryLength_Node0_action --> E_GetSingleEntryLength S_GetSingleEntryLength --> N_GetSingleEntryLength_Node0 N_GetSingleEntryLength_Node1{"Initializing message processing
parameters"}:::decision N_GetSingleEntryLength_Node1_action["The single entry length
WS-MQS-LEN-OF-1-ENTRY is set to the
length of one MQS-TABLE-ENTRY
structure"]:::main N_GetSingleEntryLength_Node1 -- Yes --> N_GetSingleEntryLength_Node1_action N_GetSingleEntryLength_Node1_action --> E_GetSingleEntryLength N_GetSingleEntryLength_Node0 -- No --> N_GetSingleEntryLength_Node1 N_GetSingleEntryLength_Node1 -- No --> E_GetSingleEntryLength
processing parameters"}:::decision N_GetSingleEntryLength_Node0_action["Set WS-MQS-LEN-OF-1-ENTRY to the
length of one MQS-TABLE-ENTRY
structure , This value will be used
as the divisor to calculate segment
count"]:::main N_GetSingleEntryLength_Node0 -- Yes --> N_GetSingleEntryLength_Node0_action N_GetSingleEntryLength_Node0_action --> E_GetSingleEntryLength S_GetSingleEntryLength --> N_GetSingleEntryLength_Node0 N_GetSingleEntryLength_Node1{"Initializing message processing
parameters"}:::decision N_GetSingleEntryLength_Node1_action["The single entry length
WS-MQS-LEN-OF-1-ENTRY is set to the
length of one MQS-TABLE-ENTRY
structure"]:::main N_GetSingleEntryLength_Node1 -- Yes --> N_GetSingleEntryLength_Node1_action N_GetSingleEntryLength_Node1_action --> E_GetSingleEntryLength N_GetSingleEntryLength_Node0 -- No --> N_GetSingleEntryLength_Node1 N_GetSingleEntryLength_Node1 -- No --> E_GetSingleEntryLength
File: GCX126R.cbl
GIVEN:
['Each EDI segment in the message has a fixed structure (MQS-TABLE-ENTRY)', 'The system needs to calculate how many segments fit in the net data length']
WHEN:
['The system initializes message processing parameters']
THEN:
['Set WS-MQS-LEN-OF-1-ENTRY to the length of one MQS-TABLE-ENTRY structure', 'This value will be used as the divisor to calculate segment count']
File: GCX126R.cbl
GIVEN:
The system needs to process an EDI 350 message with multiple data entries
WHEN:
Initializing message processing parameters
THEN:
The single entry length (WS-MQS-LEN-OF-1-ENTRY) is set to the length of one MQS-TABLE-ENTRY structure
β Consolidated Acceptance Criteria
- ['The MQGET call completes successfully'] → ['The actual data length of the retrieved message is returned in W03-DATALEN', 'This length includes both the message header and all segment entries', 'W03-DATALEN will be used to calculate the number of segments in 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_GetMessageDataLengthfromMQ(["Start Step"])
E_GetMessageDataLengthfromMQ(["End Step"])
N_GetMessageDataLengthfromMQ_Node0{"The MQGET call completes
successfully"}:::decision N_GetMessageDataLengthfromMQ_Node0_action["The actual data length of the
retrieved message is returned in
W03-DATALEN , This length includes
both the message header and all
segment entries , W03-DATALEN will
be used to calculate the number of
segments in the message"]:::main N_GetMessageDataLengthfromMQ_Node0 -- Yes --> N_GetMessageDataLengthfromMQ_Node0_action N_GetMessageDataLengthfromMQ_Node0_action --> E_GetMessageDataLengthfromMQ S_GetMessageDataLengthfromMQ --> N_GetMessageDataLengthfromMQ_Node0 N_GetMessageDataLengthfromMQ_Node0 -- No --> E_GetMessageDataLengthfromMQ
successfully"}:::decision N_GetMessageDataLengthfromMQ_Node0_action["The actual data length of the
retrieved message is returned in
W03-DATALEN , This length includes
both the message header and all
segment entries , W03-DATALEN will
be used to calculate the number of
segments in the message"]:::main N_GetMessageDataLengthfromMQ_Node0 -- Yes --> N_GetMessageDataLengthfromMQ_Node0_action N_GetMessageDataLengthfromMQ_Node0_action --> E_GetMessageDataLengthfromMQ S_GetMessageDataLengthfromMQ --> N_GetMessageDataLengthfromMQ_Node0 N_GetMessageDataLengthfromMQ_Node0 -- No --> E_GetMessageDataLengthfromMQ
File: GCX126R.cbl
GIVEN:
['An EDI 350 message exists in the MQ queue', 'The MQ GET operation has been invoked with buffer length set to the length of MQS-MESSAGE']
WHEN:
['The MQGET call completes successfully']
THEN:
- ['the actual data length of the retrieved message is returned in w03-datalen', 'this length includes both the message header
- All segment entries', 'w03-datalen will be used to calculate the number of segments in the message']
β Consolidated Acceptance Criteria
- The calculated number of segments exceeds the maximum allowed segment count → the number of segments to process (WS-MAX-MQS-ENTRIES) is set to the maximum allowed value (CST-MAX-MQS-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_SegmentsMaximumAllowed(["Start Step"])
E_SegmentsMaximumAllowed(["End Step"])
N_SegmentsMaximumAllowed_Node0{"The calculated number of segments
exceeds the maximum allowed segment
count"}:::decision N_SegmentsMaximumAllowed_Node0_action["The number of segments to process
WS-MAX-MQS-ENTRIES is set to the
maximum allowed value
CST-MAX-MQS-ENTRIES"]:::main N_SegmentsMaximumAllowed_Node0 -- Yes --> N_SegmentsMaximumAllowed_Node0_action N_SegmentsMaximumAllowed_Node0_action --> E_SegmentsMaximumAllowed S_SegmentsMaximumAllowed --> N_SegmentsMaximumAllowed_Node0 N_SegmentsMaximumAllowed_Node0 -- No --> E_SegmentsMaximumAllowed
exceeds the maximum allowed segment
count"}:::decision N_SegmentsMaximumAllowed_Node0_action["The number of segments to process
WS-MAX-MQS-ENTRIES is set to the
maximum allowed value
CST-MAX-MQS-ENTRIES"]:::main N_SegmentsMaximumAllowed_Node0 -- Yes --> N_SegmentsMaximumAllowed_Node0_action N_SegmentsMaximumAllowed_Node0_action --> E_SegmentsMaximumAllowed S_SegmentsMaximumAllowed --> N_SegmentsMaximumAllowed_Node0 N_SegmentsMaximumAllowed_Node0 -- No --> E_SegmentsMaximumAllowed
File: GCX126R.cbl
GIVEN:
The calculated number of message segments (WS-MAX-MQS-ENTRIES) has been determined and a maximum allowed segment count (CST-MAX-MQS-ENTRIES) is defined
WHEN:
The calculated number of segments exceeds the maximum allowed segment count
THEN:
The number of segments to process (WS-MAX-MQS-ENTRIES) is set to the maximum allowed value (CST-MAX-MQS-ENTRIES)
β Consolidated Acceptance Criteria
- The first 10 characters of MQS-XWAY-HDR equal '+++3505040' → set the message type indicator WS-CONV-350 to TRUE to identify this as a Conveyance EDI 350 message
- The first 10 characters of MQS-XWAY-HDR do NOT equal '+++3505040' → set the message type indicator WS-CARGO-350 to TRUE to identify this as a Cargo EDI 350 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_First10Characters3505040(["Start Step"])
E_First10Characters3505040(["End Step"])
N_First10Characters3505040_Node0{"The first 10 characters of
MQS-XWAY-HDR equal 3505040"}:::decision N_First10Characters3505040_Node0_action["Set the message type indicator
WS-CONV-350 to TRUE to identify this
as a Conveyance EDI 350 message"]:::main N_First10Characters3505040_Node0 -- Yes --> N_First10Characters3505040_Node0_action N_First10Characters3505040_Node0_action --> E_First10Characters3505040 S_First10Characters3505040 --> N_First10Characters3505040_Node0 N_First10Characters3505040_Node1{"The first 10 characters of
MQS-XWAY-HDR do NOT equal 3505040"}:::decision N_First10Characters3505040_Node1_action["Set the message type indicator
WS-CARGO-350 to TRUE to identify
this as a Cargo EDI 350 message"]:::main N_First10Characters3505040_Node1 -- Yes --> N_First10Characters3505040_Node1_action N_First10Characters3505040_Node1_action --> E_First10Characters3505040 N_First10Characters3505040_Node0 -- No --> N_First10Characters3505040_Node1 N_First10Characters3505040_Node1 -- No --> E_First10Characters3505040
MQS-XWAY-HDR equal 3505040"}:::decision N_First10Characters3505040_Node0_action["Set the message type indicator
WS-CONV-350 to TRUE to identify this
as a Conveyance EDI 350 message"]:::main N_First10Characters3505040_Node0 -- Yes --> N_First10Characters3505040_Node0_action N_First10Characters3505040_Node0_action --> E_First10Characters3505040 S_First10Characters3505040 --> N_First10Characters3505040_Node0 N_First10Characters3505040_Node1{"The first 10 characters of
MQS-XWAY-HDR do NOT equal 3505040"}:::decision N_First10Characters3505040_Node1_action["Set the message type indicator
WS-CARGO-350 to TRUE to identify
this as a Cargo EDI 350 message"]:::main N_First10Characters3505040_Node1 -- Yes --> N_First10Characters3505040_Node1_action N_First10Characters3505040_Node1_action --> E_First10Characters3505040 N_First10Characters3505040_Node0 -- No --> N_First10Characters3505040_Node1 N_First10Characters3505040_Node1 -- No --> E_First10Characters3505040
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been retrieved from the MQ queue with a message header field MQS-XWAY-HDR
WHEN:
The first 10 characters of MQS-XWAY-HDR equal '+++3505040'
THEN:
Set the message type indicator WS-CONV-350 to TRUE to identify this as a Conveyance EDI 350 message
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message has been retrieved from the MQ queue with a message header field MQS-XWAY-HDR
WHEN:
The first 10 characters of MQS-XWAY-HDR do NOT equal '+++3505040'
THEN:
Set the message type indicator WS-CARGO-350 to TRUE to identify this as a Cargo EDI 350 message
β Consolidated Acceptance Criteria
- The current segment table ID equals 'ST ' → set the header found flag to TRUE and set the first X4 segment flag to TRUE to indicate the start of a new transaction 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_STTransactionSetHeaderSetHeaderFoundFlag(["Start Step"])
E_STTransactionSetHeaderSetHeaderFoundFlag(["End Step"])
N_STTransactionSetHeaderSetHeaderFoundFlag_Node0{"The current segment table ID equals
ST"}:::decision N_STTransactionSetHeaderSetHeaderFoundFlag_Node0_action["Set the header found flag to TRUE
and set the first X4 segment flag to
TRUE to indicate the start of a new
transaction set"]:::main N_STTransactionSetHeaderSetHeaderFoundFlag_Node0 -- Yes --> N_STTransactionSetHeaderSetHeaderFoundFlag_Node0_action N_STTransactionSetHeaderSetHeaderFoundFlag_Node0_action --> E_STTransactionSetHeaderSetHeaderFoundFlag S_STTransactionSetHeaderSetHeaderFoundFlag --> N_STTransactionSetHeaderSetHeaderFoundFlag_Node0 N_STTransactionSetHeaderSetHeaderFoundFlag_Node0 -- No --> E_STTransactionSetHeaderSetHeaderFoundFlag
ST"}:::decision N_STTransactionSetHeaderSetHeaderFoundFlag_Node0_action["Set the header found flag to TRUE
and set the first X4 segment flag to
TRUE to indicate the start of a new
transaction set"]:::main N_STTransactionSetHeaderSetHeaderFoundFlag_Node0 -- Yes --> N_STTransactionSetHeaderSetHeaderFoundFlag_Node0_action N_STTransactionSetHeaderSetHeaderFoundFlag_Node0_action --> E_STTransactionSetHeaderSetHeaderFoundFlag S_STTransactionSetHeaderSetHeaderFoundFlag --> N_STTransactionSetHeaderSetHeaderFoundFlag_Node0 N_STTransactionSetHeaderSetHeaderFoundFlag_Node0 -- No --> E_STTransactionSetHeaderSetHeaderFoundFlag
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed segment by segment
WHEN:
The current segment table ID equals 'ST '
THEN:
- Set the header found flag to true
- Set the first x4 segment flag to true to indicate the start of a new transaction set
β Consolidated Acceptance Criteria
- The current segment table ID equals 'M10' → set the M10 segment found flag to TRUE, initialize the M10 segment structure, and move the entire M10 table entry data into the M10 segment structure 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_M10NoticeReferenceExtractCCNandNoticeInfo(["Start Step"])
E_M10NoticeReferenceExtractCCNandNoticeInfo(["End Step"])
N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0{"The current segment table ID equals
M10"}:::decision N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0_action["Set the M10 segment found flag to
TRUE, initialize the M10 segment
structure, and move the entire M10
table entry data into the M10
segment structure for subsequent
processing"]:::main N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0 -- Yes --> N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0_action N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0_action --> E_M10NoticeReferenceExtractCCNandNoticeInfo S_M10NoticeReferenceExtractCCNandNoticeInfo --> N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0 N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0 -- No --> E_M10NoticeReferenceExtractCCNandNoticeInfo
M10"}:::decision N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0_action["Set the M10 segment found flag to
TRUE, initialize the M10 segment
structure, and move the entire M10
table entry data into the M10
segment structure for subsequent
processing"]:::main N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0 -- Yes --> N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0_action N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0_action --> E_M10NoticeReferenceExtractCCNandNoticeInfo S_M10NoticeReferenceExtractCCNandNoticeInfo --> N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0 N_M10NoticeReferenceExtractCCNandNoticeInfo_Node0 -- No --> E_M10NoticeReferenceExtractCCNandNoticeInfo
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and an M10 segment is encountered
WHEN:
The current segment table ID equals 'M10'
THEN:
Set the M10 segment found flag to TRUE, initialize the M10 segment structure, and move the entire M10 table entry data into the M10 segment structure for subsequent processing
β Consolidated Acceptance Criteria
- The current segment table ID equals 'P4 ' → set the P4 segment found flag to TRUE, initialize the P4 segment structure, and move the entire P4 table entry data into the P4 segment structure 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_P4PortLocationExtractPortCodeandSubLocation(["Start Step"])
E_P4PortLocationExtractPortCodeandSubLocation(["End Step"])
N_P4PortLocationExtractPortCodeandSubLocation_Node0{"The current segment table ID equals
P4"}:::decision N_P4PortLocationExtractPortCodeandSubLocation_Node0_action["Set the P4 segment found flag to
TRUE, initialize the P4 segment
structure, and move the entire P4
table entry data into the P4 segment
structure for subsequent processing"]:::main N_P4PortLocationExtractPortCodeandSubLocation_Node0 -- Yes --> N_P4PortLocationExtractPortCodeandSubLocation_Node0_action N_P4PortLocationExtractPortCodeandSubLocation_Node0_action --> E_P4PortLocationExtractPortCodeandSubLocation S_P4PortLocationExtractPortCodeandSubLocation --> N_P4PortLocationExtractPortCodeandSubLocation_Node0 N_P4PortLocationExtractPortCodeandSubLocation_Node0 -- No --> E_P4PortLocationExtractPortCodeandSubLocation
P4"}:::decision N_P4PortLocationExtractPortCodeandSubLocation_Node0_action["Set the P4 segment found flag to
TRUE, initialize the P4 segment
structure, and move the entire P4
table entry data into the P4 segment
structure for subsequent processing"]:::main N_P4PortLocationExtractPortCodeandSubLocation_Node0 -- Yes --> N_P4PortLocationExtractPortCodeandSubLocation_Node0_action N_P4PortLocationExtractPortCodeandSubLocation_Node0_action --> E_P4PortLocationExtractPortCodeandSubLocation S_P4PortLocationExtractPortCodeandSubLocation --> N_P4PortLocationExtractPortCodeandSubLocation_Node0 N_P4PortLocationExtractPortCodeandSubLocation_Node0 -- No --> E_P4PortLocationExtractPortCodeandSubLocation
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and a P4 segment is encountered
WHEN:
The current segment table ID equals 'P4 '
THEN:
Set the P4 segment found flag to TRUE, initialize the P4 segment structure, and move the entire P4 table entry data into the P4 segment structure for subsequent processing
β Consolidated Acceptance Criteria
- The current segment table ID equals 'V9 ' → set the V9 segment found flag to TRUE, initialize the V9 segment structure, and move the entire V9 table entry data into the V9 segment structure 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_V9NoticeReasonExtractNoticeReasonCode(["Start Step"])
E_V9NoticeReasonExtractNoticeReasonCode(["End Step"])
N_V9NoticeReasonExtractNoticeReasonCode_Node0{"The current segment table ID equals
V9"}:::decision N_V9NoticeReasonExtractNoticeReasonCode_Node0_action["Set the V9 segment found flag to
TRUE, initialize the V9 segment
structure, and move the entire V9
table entry data into the V9 segment
structure for subsequent processing"]:::main N_V9NoticeReasonExtractNoticeReasonCode_Node0 -- Yes --> N_V9NoticeReasonExtractNoticeReasonCode_Node0_action N_V9NoticeReasonExtractNoticeReasonCode_Node0_action --> E_V9NoticeReasonExtractNoticeReasonCode S_V9NoticeReasonExtractNoticeReasonCode --> N_V9NoticeReasonExtractNoticeReasonCode_Node0 N_V9NoticeReasonExtractNoticeReasonCode_Node0 -- No --> E_V9NoticeReasonExtractNoticeReasonCode
V9"}:::decision N_V9NoticeReasonExtractNoticeReasonCode_Node0_action["Set the V9 segment found flag to
TRUE, initialize the V9 segment
structure, and move the entire V9
table entry data into the V9 segment
structure for subsequent processing"]:::main N_V9NoticeReasonExtractNoticeReasonCode_Node0 -- Yes --> N_V9NoticeReasonExtractNoticeReasonCode_Node0_action N_V9NoticeReasonExtractNoticeReasonCode_Node0_action --> E_V9NoticeReasonExtractNoticeReasonCode S_V9NoticeReasonExtractNoticeReasonCode --> N_V9NoticeReasonExtractNoticeReasonCode_Node0 N_V9NoticeReasonExtractNoticeReasonCode_Node0 -- No --> E_V9NoticeReasonExtractNoticeReasonCode
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and a V9 segment is encountered
WHEN:
The current segment table ID equals 'V9 '
THEN:
Set the V9 segment found flag to TRUE, initialize the V9 segment structure, and move the entire V9 table entry data into the V9 segment structure for subsequent processing
β Consolidated Acceptance Criteria
- The current segment table ID equals 'VID' → continue to the next segment without performing any processing or data 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_VIDVehicleIDSkipProcessing(["Start Step"])
E_VIDVehicleIDSkipProcessing(["End Step"])
N_VIDVehicleIDSkipProcessing_Node0{"The current segment table ID equals
VID"}:::decision N_VIDVehicleIDSkipProcessing_Node0_action["Continue to the next segment
without performing any processing or
data extraction"]:::main N_VIDVehicleIDSkipProcessing_Node0 -- Yes --> N_VIDVehicleIDSkipProcessing_Node0_action N_VIDVehicleIDSkipProcessing_Node0_action --> E_VIDVehicleIDSkipProcessing S_VIDVehicleIDSkipProcessing --> N_VIDVehicleIDSkipProcessing_Node0 N_VIDVehicleIDSkipProcessing_Node0 -- No --> E_VIDVehicleIDSkipProcessing
VID"}:::decision N_VIDVehicleIDSkipProcessing_Node0_action["Continue to the next segment
without performing any processing or
data extraction"]:::main N_VIDVehicleIDSkipProcessing_Node0 -- Yes --> N_VIDVehicleIDSkipProcessing_Node0_action N_VIDVehicleIDSkipProcessing_Node0_action --> E_VIDVehicleIDSkipProcessing S_VIDVehicleIDSkipProcessing --> N_VIDVehicleIDSkipProcessing_Node0 N_VIDVehicleIDSkipProcessing_Node0 -- No --> E_VIDVehicleIDSkipProcessing
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and a VID segment is encountered
WHEN:
The current segment table ID equals 'VID'
THEN:
Continue to the next segment without performing any processing or data extraction
β Consolidated Acceptance Criteria
- The current segment table ID equals 'K1 ' and the remark index is less than or equal to the maximum of 50 → set the K1 segment found flag to TRUE, initialize the K1 segment structure, move the K1 table entry data into the K1 segment structure, increment the remark index by 1, and store the K1 segment in the remark array at the current index position. If the remark index exceeds 50, set it to 50 and overwrite the last remark
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_K1RemarksStoreFreeFormMessageIncrementRemarkIndex(["Start Step"])
E_K1RemarksStoreFreeFormMessageIncrementRemarkIndex(["End Step"])
N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0{"The current segment table ID equals
K1 and the remark index is less than
or equal to the maximum of 50"}:::decision N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0_action["Set the K1 segment found flag to
TRUE, initialize the K1 segment
structure, move the K1 table entry
data into the K1 segment structure,
increment the remark index by 1, and
store the K1 segment in the remark
array at the current index position.
If the remark index exceeds 50, set
it to 50 and overwrite the last
remark"]:::main N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0 -- Yes --> N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0_action N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0_action --> E_K1RemarksStoreFreeFormMessageIncrementRemarkIndex S_K1RemarksStoreFreeFormMessageIncrementRemarkIndex --> N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0 N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0 -- No --> E_K1RemarksStoreFreeFormMessageIncrementRemarkIndex
K1 and the remark index is less than
or equal to the maximum of 50"}:::decision N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0_action["Set the K1 segment found flag to
TRUE, initialize the K1 segment
structure, move the K1 table entry
data into the K1 segment structure,
increment the remark index by 1, and
store the K1 segment in the remark
array at the current index position.
If the remark index exceeds 50, set
it to 50 and overwrite the last
remark"]:::main N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0 -- Yes --> N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0_action N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0_action --> E_K1RemarksStoreFreeFormMessageIncrementRemarkIndex S_K1RemarksStoreFreeFormMessageIncrementRemarkIndex --> N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0 N_K1RemarksStoreFreeFormMessageIncrementRemarkIndex_Node0 -- No --> E_K1RemarksStoreFreeFormMessageIncrementRemarkIndex
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and a K1 segment is encountered
WHEN:
The current segment table ID equals 'K1 ' and the remark index is less than or equal to the maximum of 50
THEN:
- Set the k1 segment found flag to true, initialize the k1 segment structure, move the k1 table entry data into the k1 segment structure, increment the remark index by 1, and store the k1 segment in the remark array at the current index position. if the remark index exceeds 50, set it to 50
- Overwrite the last remark
β Consolidated Acceptance Criteria
- The current segment table ID equals 'X4 ' → initialize the K1 comments structure, initialize the X4 segment structure, move the X4 table entry data into the X4 segment structure, and set the X4 segment found flag to TRUE for subsequent processing
- The related document ID (CRN) in positions 1-25 is different from the previous CRN → move the related document ID to the train key value and the previous CRN field, perform train lookup by CRN. If train is not found, prepare an unknown train notification message with the CRN and send it. If train is found, log the arrival acknowledgment at border message, create a log entry with action code 'ZZZ', train CRN, and message '350 ACK - ARRIVAL ACK AT BORDER', and spawn the log entry. Then move the CBSA release reference ID to the cargo key value and perform cargo border update processing. If the cargo is a master manifest, retrieve all follower manifests (maximum 100) linked to the master and update each follower with border arrival acknowledgment
- The related document ID (CRN) in positions 1-25 equals the previous CRN → continue to the next segment without performing any train or cargo processing
- The entry type code is not equal to '992' OR the message type is not conventional 350 → set the segment previous X4 flag to TRUE and set the X4 segment 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_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime(["Start Step"])
E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime(["End Step"])
N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0{"The current segment table ID equals
X4"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0_action["Initialize the K1 comments
structure, initialize the X4 segment
structure, move the X4 table entry
data into the X4 segment structure,
and set the X4 segment found flag to
TRUE for subsequent processing"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime S_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1{"The related document ID CRN in
positions 1-25 is different from the
previous CRN"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1_action["Move the related document ID to the
train key value and the previous CRN
field, perform train lookup by CRN.
If train is not found, prepare an
unknown train notification message
with the CRN and send it. If train
is found, log the arrival
acknowledgment at border message,
create a log entry with action code
ZZZ , train CRN, and message 350 ACK
- ARRIVAL ACK AT BORDER , and spawn
the log entry. Then move the CBSA
release reference ID to the cargo
key value and perform cargo border
update processing. If the cargo is a
master manifest, retrieve all
follower manifests maximum 100
linked to the master and update each
follower with border arrival
acknowledgment"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0 -- No --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2{"The related document ID CRN in
positions 1-25 equals the previous
CRN"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2_action["Continue to the next segment
without performing any train or
cargo processing"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1 -- No --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3{"The entry type code is not equal to
992 OR the message type is not
conventional 350"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3_action["Set the segment previous X4 flag to
TRUE and set the X4 segment found
flag to TRUE"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2 -- No --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3 -- No --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime
X4"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0_action["Initialize the K1 comments
structure, initialize the X4 segment
structure, move the X4 table entry
data into the X4 segment structure,
and set the X4 segment found flag to
TRUE for subsequent processing"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime S_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1{"The related document ID CRN in
positions 1-25 is different from the
previous CRN"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1_action["Move the related document ID to the
train key value and the previous CRN
field, perform train lookup by CRN.
If train is not found, prepare an
unknown train notification message
with the CRN and send it. If train
is found, log the arrival
acknowledgment at border message,
create a log entry with action code
ZZZ , train CRN, and message 350 ACK
- ARRIVAL ACK AT BORDER , and spawn
the log entry. Then move the CBSA
release reference ID to the cargo
key value and perform cargo border
update processing. If the cargo is a
master manifest, retrieve all
follower manifests maximum 100
linked to the master and update each
follower with border arrival
acknowledgment"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node0 -- No --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2{"The related document ID CRN in
positions 1-25 equals the previous
CRN"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2_action["Continue to the next segment
without performing any train or
cargo processing"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node1 -- No --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3{"The entry type code is not equal to
992 OR the message type is not
conventional 350"}:::decision N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3_action["Set the segment previous X4 flag to
TRUE and set the X4 segment found
flag to TRUE"]:::main N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3 -- Yes --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3_action N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3_action --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node2 -- No --> N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3 N_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime_Node3 -- No --> E_X4ReleaseDispositionExtractReleaseReferenceExtractDateandTime
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and an X4 segment is encountered
WHEN:
The current segment table ID equals 'X4 '
THEN:
Initialize the K1 comments structure, initialize the X4 segment structure, move the X4 table entry data into the X4 segment structure, and set the X4 segment found flag to TRUE for subsequent processing
File: GCX126R.cbl
GIVEN:
An X4 segment is being processed with entry type code equal to '992' and the message type is conventional 350
WHEN:
The related document ID (CRN) in positions 1-25 is different from the previous CRN
THEN:
- Move the related document id to the train key value
- The previous crn field, perform train lookup by crn. if train is not found, prepare an unknown train notification message with the crn
- Send it. if train is found, log the arrival acknowledgment at border message, create a log entry with action code 'zzz', train crn, and message '350 ack - arrival ack at border', and spawn the log entry. then move the cbsa release reference id to the cargo key value
- Perform cargo border update processing. if the cargo is a master manifest, retrieve all follower manifests (maximum 100) linked to the master
- Update each follower with border arrival acknowledgment
File: GCX126R.cbl
GIVEN:
An X4 segment is being processed with entry type code equal to '992' and the message type is conventional 350
WHEN:
The related document ID (CRN) in positions 1-25 equals the previous CRN
THEN:
Continue to the next segment without performing any train or cargo processing
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An X4 segment is being processed
WHEN:
The entry type code is not equal to '992' OR the message type is not conventional 350
THEN:
- Set the segment previous x4 flag to true
- Set the x4 segment found flag to true
β Consolidated Acceptance Criteria
- The current segment table ID equals 'N7 ' and the equipment number field is not spaces → set the N7 segment found flag to TRUE, initialize the N7 segment structure, move the N7 table entry data into the N7 segment structure, move the equipment number to the log data array at the current log index position with log type 'EDI 350 EQP#:', and increment the log index 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_N7EquipmentExtractEquipmentNumberStoreinLogArray(["Start Step"])
E_N7EquipmentExtractEquipmentNumberStoreinLogArray(["End Step"])
N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0{"The current segment table ID equals
N7 and the equipment number field is
not spaces"}:::decision N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0_action["Set the N7 segment found flag to
TRUE, initialize the N7 segment
structure, move the N7 table entry
data into the N7 segment structure,
move the equipment number to the log
data array at the current log index
position with log type EDI 350 EQP:
, and increment the log index by 1"]:::main N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0 -- Yes --> N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0_action N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0_action --> E_N7EquipmentExtractEquipmentNumberStoreinLogArray S_N7EquipmentExtractEquipmentNumberStoreinLogArray --> N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0 N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0 -- No --> E_N7EquipmentExtractEquipmentNumberStoreinLogArray
N7 and the equipment number field is
not spaces"}:::decision N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0_action["Set the N7 segment found flag to
TRUE, initialize the N7 segment
structure, move the N7 table entry
data into the N7 segment structure,
move the equipment number to the log
data array at the current log index
position with log type EDI 350 EQP:
, and increment the log index by 1"]:::main N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0 -- Yes --> N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0_action N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0_action --> E_N7EquipmentExtractEquipmentNumberStoreinLogArray S_N7EquipmentExtractEquipmentNumberStoreinLogArray --> N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0 N_N7EquipmentExtractEquipmentNumberStoreinLogArray_Node0 -- No --> E_N7EquipmentExtractEquipmentNumberStoreinLogArray
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is being parsed and an N7 segment is encountered
WHEN:
The current segment table ID equals 'N7 ' and the equipment number field is not spaces
THEN:
Set the N7 segment found flag to TRUE, initialize the N7 segment structure, move the N7 table entry data into the N7 segment structure, move the equipment number to the log data array at the current log index position with log type 'EDI 350 EQP#:', and increment the log index by 1
β Consolidated Acceptance Criteria
- The current segment table ID equals 'SE ' → set the trailer found flag to TRUE, set the end found flag to TRUE, and perform the rest of message processing which includes logging all K1 remarks and N7 equipment numbers to the cargo information message log
- The remark index is greater than 0 and there are K1 remarks stored in the remark array → for each remark from index 1 to the remark index, if the remark is not spaces, initialize the K1 segment structure, move the remark to the K1 segment, initialize the information message field, concatenate 'EDI 350 K1: ' with the first free-form message field and move to the information message field, and log the cargo information message. If the second free-form message field is not spaces, initialize the information message field, concatenate 'EDI 350 K1: ' with the second free-form message field and move to the information message field, and log the cargo information message
- There are log entries in the log array from index 1 to 50 → for each log line from index 1 until the log line is spaces or index exceeds 50, initialize the information message field, move the log line to the information message field, and log the cargo information 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_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag(["Start Step"])
E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag(["End Step"])
N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0{"The current segment table ID equals
SE"}:::decision N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0_action["Set the trailer found flag to TRUE,
set the end found flag to TRUE, and
perform the rest of message
processing which includes logging
all K1 remarks and N7 equipment
numbers to the cargo information
message log"]:::main N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0 -- Yes --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0_action N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0_action --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag S_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0 N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1{"The remark index is greater than 0
and there are K1 remarks stored in
the remark array"}:::decision N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1_action["For each remark from index 1 to the
remark index, if the remark is not
spaces, initialize the K1 segment
structure, move the remark to the K1
segment, initialize the information
message field, concatenate EDI 350
K1: with the first free-form message
field and move to the information
message field, and log the cargo
information message. If the second
free-form message field is not
spaces, initialize the information
message field, concatenate EDI 350
K1: with the second free-form
message field and move to the
information message field, and log
the cargo information message"]:::main N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1 -- Yes --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1_action N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1_action --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0 -- No --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1 N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2{"There are log entries in the log
array from index 1 to 50"}:::decision N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2_action["For each log line from index 1
until the log line is spaces or
index exceeds 50, initialize the
information message field, move the
log line to the information message
field, and log the cargo information
message"]:::main N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2 -- Yes --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2_action N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2_action --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1 -- No --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2 N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2 -- No --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag
SE"}:::decision N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0_action["Set the trailer found flag to TRUE,
set the end found flag to TRUE, and
perform the rest of message
processing which includes logging
all K1 remarks and N7 equipment
numbers to the cargo information
message log"]:::main N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0 -- Yes --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0_action N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0_action --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag S_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0 N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1{"The remark index is greater than 0
and there are K1 remarks stored in
the remark array"}:::decision N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1_action["For each remark from index 1 to the
remark index, if the remark is not
spaces, initialize the K1 segment
structure, move the remark to the K1
segment, initialize the information
message field, concatenate EDI 350
K1: with the first free-form message
field and move to the information
message field, and log the cargo
information message. If the second
free-form message field is not
spaces, initialize the information
message field, concatenate EDI 350
K1: with the second free-form
message field and move to the
information message field, and log
the cargo information message"]:::main N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1 -- Yes --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1_action N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1_action --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node0 -- No --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1 N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2{"There are log entries in the log
array from index 1 to 50"}:::decision N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2_action["For each log line from index 1
until the log line is spaces or
index exceeds 50, initialize the
information message field, move the
log line to the information message
field, and log the cargo information
message"]:::main N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2 -- Yes --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2_action N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2_action --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node1 -- No --> N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2 N_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag_Node2 -- No --> E_SETransactionSetTrailerSetTrailerFoundFlagSetEndFoundFlag
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being parsed and an SE segment is encountered
WHEN:
The current segment table ID equals 'SE '
THEN:
- Set the trailer found flag to true, set the end found flag to true, and perform the rest of message processing which includes logging all k1 remarks
- N7 equipment numbers to the cargo information message log
File: GCX126R.cbl
GIVEN:
The SE segment is being processed and the K1 segment found flag is TRUE
WHEN:
- The remark index is greater than 0
- There are k1 remarks stored in the remark array
THEN:
- For each remark from index 1 to the remark index, if the remark is not spaces, initialize the k1 segment structure, move the remark to the k1 segment, initialize the information message field, concatenate 'edi 350 k1: ' with the first free-form message field
- Move to the information message field, and log the cargo information message. if the second free-form message field is not spaces, initialize the information message field, concatenate 'edi 350 k1: ' with the second free-form message field
- Move to the information message field, and log the cargo information message
File: GCX126R.cbl
GIVEN:
The SE segment is being processed and the N7 segment found flag is TRUE
WHEN:
There are log entries in the log array from index 1 to 50
THEN:
For each log line from index 1 until the log line is spaces or index exceeds 50, initialize the information message field, move the log line to the information message field, and log the cargo information message
β Consolidated Acceptance Criteria
- The X4 segment found flag is TRUE and the V9 segment found flag is TRUE and the first X4 flag is TRUE → set the first X4 flag to FALSE (not first X4) and perform the 350 message processing routine which evaluates the V9 notice reason code and updates cargo records based on the customs action type
- The V9 segment found flag is TRUE and the first X4 flag is TRUE and the end found flag is TRUE → set the first X4 flag to FALSE (not first X4) and perform the 350 message processing routine which evaluates the V9 notice reason code and updates cargo records based on the customs 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_Trigger350MessageProcessing(["Start Step"])
E_Trigger350MessageProcessing(["End Step"])
N_Trigger350MessageProcessing_Node0{"The X4 segment found flag is TRUE
and the V9 segment found flag is
TRUE and the first X4 flag is TRUE"}:::decision N_Trigger350MessageProcessing_Node0_action["Set the first X4 flag to FALSE not
first X4 and perform the 350 message
processing routine which evaluates
the V9 notice reason code and
updates cargo records based on the
customs action type"]:::main N_Trigger350MessageProcessing_Node0 -- Yes --> N_Trigger350MessageProcessing_Node0_action N_Trigger350MessageProcessing_Node0_action --> E_Trigger350MessageProcessing S_Trigger350MessageProcessing --> N_Trigger350MessageProcessing_Node0 N_Trigger350MessageProcessing_Node1{"The V9 segment found flag is TRUE
and the first X4 flag is TRUE and
the end found flag is TRUE"}:::decision N_Trigger350MessageProcessing_Node1_action["Set the first X4 flag to FALSE not
first X4 and perform the 350 message
processing routine which evaluates
the V9 notice reason code and
updates cargo records based on the
customs action type"]:::main N_Trigger350MessageProcessing_Node1 -- Yes --> N_Trigger350MessageProcessing_Node1_action N_Trigger350MessageProcessing_Node1_action --> E_Trigger350MessageProcessing N_Trigger350MessageProcessing_Node0 -- No --> N_Trigger350MessageProcessing_Node1 N_Trigger350MessageProcessing_Node1 -- No --> E_Trigger350MessageProcessing
and the V9 segment found flag is
TRUE and the first X4 flag is TRUE"}:::decision N_Trigger350MessageProcessing_Node0_action["Set the first X4 flag to FALSE not
first X4 and perform the 350 message
processing routine which evaluates
the V9 notice reason code and
updates cargo records based on the
customs action type"]:::main N_Trigger350MessageProcessing_Node0 -- Yes --> N_Trigger350MessageProcessing_Node0_action N_Trigger350MessageProcessing_Node0_action --> E_Trigger350MessageProcessing S_Trigger350MessageProcessing --> N_Trigger350MessageProcessing_Node0 N_Trigger350MessageProcessing_Node1{"The V9 segment found flag is TRUE
and the first X4 flag is TRUE and
the end found flag is TRUE"}:::decision N_Trigger350MessageProcessing_Node1_action["Set the first X4 flag to FALSE not
first X4 and perform the 350 message
processing routine which evaluates
the V9 notice reason code and
updates cargo records based on the
customs action type"]:::main N_Trigger350MessageProcessing_Node1 -- Yes --> N_Trigger350MessageProcessing_Node1_action N_Trigger350MessageProcessing_Node1_action --> E_Trigger350MessageProcessing N_Trigger350MessageProcessing_Node0 -- No --> N_Trigger350MessageProcessing_Node1 N_Trigger350MessageProcessing_Node1 -- No --> E_Trigger350MessageProcessing
File: GCX126R.cbl
GIVEN:
EDI segments are being parsed and both X4 and V9 segments have been successfully processed
WHEN:
- The x4 segment found flag is true
- The v9 segment found flag is true
- The first x4 flag is true
THEN:
- Set the first x4 flag to false (not first x4) and perform the 350 message processing routine which evaluates the v9 notice reason code
- Updates cargo records based on the customs action type
File: GCX126R.cbl
GIVEN:
EDI segments are being parsed and the V9 segment has been processed and the SE segment has been encountered
WHEN:
- The v9 segment found flag is true
- The first x4 flag is true
- The end found flag is true
THEN:
- Set the first x4 flag to false (not first x4) and perform the 350 message processing routine which evaluates the v9 notice reason code
- Updates cargo records based on the customs action type
β Consolidated Acceptance Criteria
- The current segment processing is complete → increment the line counter by 1 and continue the segment processing loop until the line counter exceeds the maximum number of message queue entries or the end 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_MovetoNextSegment(["Start Step"])
E_MovetoNextSegment(["End Step"])
N_MovetoNextSegment_Node0{"The current segment processing is
complete"}:::decision N_MovetoNextSegment_Node0_action["Increment the line counter by 1 and
continue the segment processing loop
until the line counter exceeds the
maximum number of message queue
entries or the end found flag is set
to TRUE"]:::main N_MovetoNextSegment_Node0 -- Yes --> N_MovetoNextSegment_Node0_action N_MovetoNextSegment_Node0_action --> E_MovetoNextSegment S_MovetoNextSegment --> N_MovetoNextSegment_Node0 N_MovetoNextSegment_Node0 -- No --> E_MovetoNextSegment
complete"}:::decision N_MovetoNextSegment_Node0_action["Increment the line counter by 1 and
continue the segment processing loop
until the line counter exceeds the
maximum number of message queue
entries or the end found flag is set
to TRUE"]:::main N_MovetoNextSegment_Node0 -- Yes --> N_MovetoNextSegment_Node0_action N_MovetoNextSegment_Node0_action --> E_MovetoNextSegment S_MovetoNextSegment --> N_MovetoNextSegment_Node0 N_MovetoNextSegment_Node0 -- No --> E_MovetoNextSegment
File: GCX126R.cbl
GIVEN:
A segment has been processed in the EDI 350 message
WHEN:
The current segment processing is complete
THEN:
- Increment the line counter by 1
- Continue the segment processing loop until the line counter exceeds the maximum number of message queue entries or the end found flag is set to true
β Consolidated Acceptance Criteria
- The message type is Conveyance 350 (WS-CONV-350 is true) AND the X4 entry type code (X4-03-ENTRY-TYP-CDE) equals '992' → process as train arrival acknowledgment at border, otherwise process as cargo release segment and set X4 segment found flag for 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_IsConveyance350ANDEntryType992(["Start Step"])
E_IsConveyance350ANDEntryType992(["End Step"])
N_IsConveyance350ANDEntryType992_Node0{"The message type is Conveyance 350
WS-CONV-350 is true AND the X4 entry
type code X4-03-ENTRY-TYP-CDE equals
992"}:::decision N_IsConveyance350ANDEntryType992_Node0_action["Process as train arrival
acknowledgment at border, otherwise
process as cargo release segment and
set X4 segment found flag for cargo
processing"]:::main N_IsConveyance350ANDEntryType992_Node0 -- Yes --> N_IsConveyance350ANDEntryType992_Node0_action N_IsConveyance350ANDEntryType992_Node0_action --> E_IsConveyance350ANDEntryType992 S_IsConveyance350ANDEntryType992 --> N_IsConveyance350ANDEntryType992_Node0 N_IsConveyance350ANDEntryType992_Node0 -- No --> E_IsConveyance350ANDEntryType992
WS-CONV-350 is true AND the X4 entry
type code X4-03-ENTRY-TYP-CDE equals
992"}:::decision N_IsConveyance350ANDEntryType992_Node0_action["Process as train arrival
acknowledgment at border, otherwise
process as cargo release segment and
set X4 segment found flag for cargo
processing"]:::main N_IsConveyance350ANDEntryType992_Node0 -- Yes --> N_IsConveyance350ANDEntryType992_Node0_action N_IsConveyance350ANDEntryType992_Node0_action --> E_IsConveyance350ANDEntryType992 S_IsConveyance350ANDEntryType992 --> N_IsConveyance350ANDEntryType992_Node0 N_IsConveyance350ANDEntryType992_Node0 -- No --> E_IsConveyance350ANDEntryType992
File: GCX126R.cbl
GIVEN:
An X4 segment is being processed from an EDI 350 message
WHEN:
The message type is Conveyance 350 (WS-CONV-350 is true) AND the X4 entry type code (X4-03-ENTRY-TYP-CDE) equals '992'
THEN:
- Process as train arrival acknowledgment at border, otherwise process as cargo release segment
- Set x4 segment found flag for cargo processing
β Consolidated Acceptance Criteria
- The train release document ID from X4-04-REL-DOC-ID (first 25 characters) equals the previously processed CRN stored in WS-PREV-CRN → skip processing this X4 segment and continue to next segment, otherwise proceed with train verification
- The first 25 characters of X4-04-REL-DOC-ID equal the value stored in WS-PREV-CRN → skip processing and continue to the next segment without any 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_IsTrainIDSameasPrevious(["Start Step"])
E_IsTrainIDSameasPrevious(["End Step"])
N_IsTrainIDSameasPrevious_Node0{"The train release document ID from
X4-04-REL-DOC-ID first 25 characters
equals the previously processed CRN
stored in WS-PREV-CRN"}:::decision N_IsTrainIDSameasPrevious_Node0_action["Skip processing this X4 segment and
continue to next segment, otherwise
proceed with train verification"]:::main N_IsTrainIDSameasPrevious_Node0 -- Yes --> N_IsTrainIDSameasPrevious_Node0_action N_IsTrainIDSameasPrevious_Node0_action --> E_IsTrainIDSameasPrevious S_IsTrainIDSameasPrevious --> N_IsTrainIDSameasPrevious_Node0 N_IsTrainIDSameasPrevious_Node1{"The first 25 characters of
X4-04-REL-DOC-ID equal the value
stored in WS-PREV-CRN"}:::decision N_IsTrainIDSameasPrevious_Node1_action["Skip processing and continue to the
next segment without any updates"]:::main N_IsTrainIDSameasPrevious_Node1 -- Yes --> N_IsTrainIDSameasPrevious_Node1_action N_IsTrainIDSameasPrevious_Node1_action --> E_IsTrainIDSameasPrevious N_IsTrainIDSameasPrevious_Node0 -- No --> N_IsTrainIDSameasPrevious_Node1 N_IsTrainIDSameasPrevious_Node1 -- No --> E_IsTrainIDSameasPrevious
X4-04-REL-DOC-ID first 25 characters
equals the previously processed CRN
stored in WS-PREV-CRN"}:::decision N_IsTrainIDSameasPrevious_Node0_action["Skip processing this X4 segment and
continue to next segment, otherwise
proceed with train verification"]:::main N_IsTrainIDSameasPrevious_Node0 -- Yes --> N_IsTrainIDSameasPrevious_Node0_action N_IsTrainIDSameasPrevious_Node0_action --> E_IsTrainIDSameasPrevious S_IsTrainIDSameasPrevious --> N_IsTrainIDSameasPrevious_Node0 N_IsTrainIDSameasPrevious_Node1{"The first 25 characters of
X4-04-REL-DOC-ID equal the value
stored in WS-PREV-CRN"}:::decision N_IsTrainIDSameasPrevious_Node1_action["Skip processing and continue to the
next segment without any updates"]:::main N_IsTrainIDSameasPrevious_Node1 -- Yes --> N_IsTrainIDSameasPrevious_Node1_action N_IsTrainIDSameasPrevious_Node1_action --> E_IsTrainIDSameasPrevious N_IsTrainIDSameasPrevious_Node0 -- No --> N_IsTrainIDSameasPrevious_Node1 N_IsTrainIDSameasPrevious_Node1 -- No --> E_IsTrainIDSameasPrevious
File: GCX126R.cbl
GIVEN:
A conveyance 350 message with entry type 992 is being processed
WHEN:
The train release document ID from X4-04-REL-DOC-ID (first 25 characters) equals the previously processed CRN stored in WS-PREV-CRN
THEN:
- Skip processing this x4 segment
- Continue to next segment, otherwise proceed with train verification
File: GCX126R.cbl
GIVEN:
A conveyance 350 message with entry type '992' is being processed AND a train ID exists in X4-04-REL-DOC-ID (first 25 characters)
WHEN:
The first 25 characters of X4-04-REL-DOC-ID equal the value stored in WS-PREV-CRN
THEN:
- Skip processing
- Continue to the next segment without any updates
β Consolidated Acceptance Criteria
- The X4-04-REL-DOC-ID (first 25 characters) is different from the previous CRN → move X4-04-REL-DOC-ID (first 25 characters) to B4-KEY-VALUE for train lookup and to WS-PREV-CRN for duplicate 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_ExtractTrainIDfromX404RELDOCID(["Start Step"])
E_ExtractTrainIDfromX404RELDOCID(["End Step"])
N_ExtractTrainIDfromX404RELDOCID_Node0{"The X4-04-REL-DOC-ID first 25
characters is different from the
previous CRN"}:::decision N_ExtractTrainIDfromX404RELDOCID_Node0_action["Move X4-04-REL-DOC-ID first 25
characters to B4-KEY-VALUE for train
lookup and to WS-PREV-CRN for
duplicate tracking"]:::main N_ExtractTrainIDfromX404RELDOCID_Node0 -- Yes --> N_ExtractTrainIDfromX404RELDOCID_Node0_action N_ExtractTrainIDfromX404RELDOCID_Node0_action --> E_ExtractTrainIDfromX404RELDOCID S_ExtractTrainIDfromX404RELDOCID --> N_ExtractTrainIDfromX404RELDOCID_Node0 N_ExtractTrainIDfromX404RELDOCID_Node0 -- No --> E_ExtractTrainIDfromX404RELDOCID
characters is different from the
previous CRN"}:::decision N_ExtractTrainIDfromX404RELDOCID_Node0_action["Move X4-04-REL-DOC-ID first 25
characters to B4-KEY-VALUE for train
lookup and to WS-PREV-CRN for
duplicate tracking"]:::main N_ExtractTrainIDfromX404RELDOCID_Node0 -- Yes --> N_ExtractTrainIDfromX404RELDOCID_Node0_action N_ExtractTrainIDfromX404RELDOCID_Node0_action --> E_ExtractTrainIDfromX404RELDOCID S_ExtractTrainIDfromX404RELDOCID --> N_ExtractTrainIDfromX404RELDOCID_Node0 N_ExtractTrainIDfromX404RELDOCID_Node0 -- No --> E_ExtractTrainIDfromX404RELDOCID
File: GCX126R.cbl
GIVEN:
A new train release number is identified in the X4 segment
WHEN:
The X4-04-REL-DOC-ID (first 25 characters) is different from the previous CRN
THEN:
- Move x4-04-rel-doc-id (first 25 characters) to b4-key-value for train lookup
- To ws-prev-crn for duplicate tracking
β Consolidated Acceptance Criteria
- The system performs a database lookup using the CRN as the key value in the train root segment (B4RT) → return the train record if found, otherwise return a not found status code in CC-STATUS-CODE
- The related document ID (positions 1-25) matches the previously processed train ID stored in WS-PREV-CRN → the system skips all train verification and processing steps and continues to the next 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_VerifyTrainExistsinSystem(["Start Step"])
E_VerifyTrainExistsinSystem(["End Step"])
N_VerifyTrainExistsinSystem_Node0{"The system performs a database
lookup using the CRN as the key
value in the train root segment B4RT"}:::decision N_VerifyTrainExistsinSystem_Node0_action["Return the train record if found,
otherwise return a not found status
code in CC-STATUS-CODE"]:::main N_VerifyTrainExistsinSystem_Node0 -- Yes --> N_VerifyTrainExistsinSystem_Node0_action N_VerifyTrainExistsinSystem_Node0_action --> E_VerifyTrainExistsinSystem S_VerifyTrainExistsinSystem --> N_VerifyTrainExistsinSystem_Node0 N_VerifyTrainExistsinSystem_Node1{"The related document ID positions
1-25 matches the previously
processed train ID stored in
WS-PREV-CRN"}:::decision N_VerifyTrainExistsinSystem_Node1_action["The system skips all train
verification and processing steps
and continues to the next segment"]:::main N_VerifyTrainExistsinSystem_Node1 -- Yes --> N_VerifyTrainExistsinSystem_Node1_action N_VerifyTrainExistsinSystem_Node1_action --> E_VerifyTrainExistsinSystem N_VerifyTrainExistsinSystem_Node0 -- No --> N_VerifyTrainExistsinSystem_Node1 N_VerifyTrainExistsinSystem_Node1 -- No --> E_VerifyTrainExistsinSystem
lookup using the CRN as the key
value in the train root segment B4RT"}:::decision N_VerifyTrainExistsinSystem_Node0_action["Return the train record if found,
otherwise return a not found status
code in CC-STATUS-CODE"]:::main N_VerifyTrainExistsinSystem_Node0 -- Yes --> N_VerifyTrainExistsinSystem_Node0_action N_VerifyTrainExistsinSystem_Node0_action --> E_VerifyTrainExistsinSystem S_VerifyTrainExistsinSystem --> N_VerifyTrainExistsinSystem_Node0 N_VerifyTrainExistsinSystem_Node1{"The related document ID positions
1-25 matches the previously
processed train ID stored in
WS-PREV-CRN"}:::decision N_VerifyTrainExistsinSystem_Node1_action["The system skips all train
verification and processing steps
and continues to the next segment"]:::main N_VerifyTrainExistsinSystem_Node1 -- Yes --> N_VerifyTrainExistsinSystem_Node1_action N_VerifyTrainExistsinSystem_Node1_action --> E_VerifyTrainExistsinSystem N_VerifyTrainExistsinSystem_Node0 -- No --> N_VerifyTrainExistsinSystem_Node1 N_VerifyTrainExistsinSystem_Node1 -- No --> E_VerifyTrainExistsinSystem
File: GCX126R.cbl
GIVEN:
A train release number (CRN) has been extracted from the X4 segment
WHEN:
The system performs a database lookup using the CRN as the key value in the train root segment (B4RT)
THEN:
Return the train record if found, otherwise return a not found status code in CC-STATUS-CODE
File: GCX126R.cbl
GIVEN:
An X4 segment with entry type '992' is being processed in a CONVENTIONAL 350 message
WHEN:
The related document ID (positions 1-25) matches the previously processed train ID stored in WS-PREV-CRN
THEN:
- The system skips all train verification
- Processing steps
- Continues to the next segment
β Consolidated Acceptance Criteria
- The train is not found (CC-STATUS-CODE is not spaces) → prepare error message 'UNKNOWN TRAIN ENTRY IN EDI 350' concatenated with the CRN in detail line 1, add message 'THIS CRN WAS NOT FOUND.' in detail line 3, set message line count to 4, and set message type to unknown
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350(["Start Step"])
E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350(["End Step"])
N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0{"The train is not found
CC-STATUS-CODE is not spaces"}:::decision N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0_action["Prepare error message UNKNOWN TRAIN
ENTRY IN EDI 350 concatenated with
the CRN in detail line 1, add
message THIS CRN WAS NOT FOUND. in
detail line 3, set message line
count to 4, and set message type to
unknown"]:::main N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0 -- Yes --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0_action N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0_action --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350 S_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350 --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0 N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0 -- No --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350
CC-STATUS-CODE is not spaces"}:::decision N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0_action["Prepare error message UNKNOWN TRAIN
ENTRY IN EDI 350 concatenated with
the CRN in detail line 1, add
message THIS CRN WAS NOT FOUND. in
detail line 3, set message line
count to 4, and set message type to
unknown"]:::main N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0 -- Yes --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0_action N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0_action --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350 S_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350 --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0 N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350_Node0 -- No --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A train lookup has been performed using the CRN from X4-04-REL-DOC-ID
WHEN:
The train is not found (CC-STATUS-CODE is not spaces)
THEN:
Prepare error message 'UNKNOWN TRAIN ENTRY IN EDI 350' concatenated with the CRN in detail line 1, add message 'THIS CRN WAS NOT FOUND.' in detail line 3, set message line count to 4, and set message type to unknown
β Consolidated Acceptance Criteria
- The error preparation is complete → invoke the Merlin email send process (Z110-PREP-EMCSEND) to transmit the error notification to the configured 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_SendErrortoMerlin(["Start Step"])
E_SendErrortoMerlin(["End Step"])
N_SendErrortoMerlin_Node0{"The error preparation is complete"}:::decision
N_SendErrortoMerlin_Node0_action["Invoke the Merlin email send
process Z110-PREP-EMCSEND to
transmit the error notification to
the configured recipients"]:::exclusion N_SendErrortoMerlin_Node0 -- Yes -->|Alternative| N_SendErrortoMerlin_Node0_action N_SendErrortoMerlin_Node0_action --> E_SendErrortoMerlin S_SendErrortoMerlin --> N_SendErrortoMerlin_Node0 N_SendErrortoMerlin_Node0 -- No --> E_SendErrortoMerlin
process Z110-PREP-EMCSEND to
transmit the error notification to
the configured recipients"]:::exclusion N_SendErrortoMerlin_Node0 -- Yes -->|Alternative| N_SendErrortoMerlin_Node0_action N_SendErrortoMerlin_Node0_action --> E_SendErrortoMerlin S_SendErrortoMerlin --> N_SendErrortoMerlin_Node0 N_SendErrortoMerlin_Node0 -- No --> E_SendErrortoMerlin
File: GCX126R.cbl
GIVEN:
An unknown train error message has been prepared with CRN details
WHEN:
The error preparation is complete
THEN:
Invoke the Merlin email send process (Z110-PREP-EMCSEND) to transmit the error notification to the configured recipients
β Consolidated Acceptance Criteria
- The train record exists (CC-STATUS-CODE equals spaces) → create a log entry with current machine date in GCX105-DATE, current machine time in GCX105-TIME, action code 'ZZZ' in GCX105-ACTION-CODE, the CRN (first 25 characters of X4-04-REL-DOC-ID) in GCX105-TRAIN-OR-US-CCN, set cargo type to Canadian train (GCX105-CA-TRAIN), message '350 ACK - ARRIVAL ACK AT BORDER' in GCX105-MESSAGE, and spawn the log entry process (Z300-SPAWN-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_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER(["Start Step"])
E_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER(["End Step"])
N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0{"The train record exists
CC-STATUS-CODE equals spaces"}:::decision N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0_action["Create a log entry with current
machine date in GCX105-DATE, current
machine time in GCX105-TIME, action
code ZZZ in GCX105-ACTION-CODE, the
CRN first 25 characters of
X4-04-REL-DOC-ID in
GCX105-TRAIN-OR-US-CCN, set cargo
type to Canadian train
GCX105-CA-TRAIN, message 350 ACK -
ARRIVAL ACK AT BORDER in
GCX105-MESSAGE, and spawn the log
entry process Z300-SPAWN-GCT1051E"]:::main N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0_action N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER S_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER --> N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0 N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0 -- No --> E_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER
CC-STATUS-CODE equals spaces"}:::decision N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0_action["Create a log entry with current
machine date in GCX105-DATE, current
machine time in GCX105-TIME, action
code ZZZ in GCX105-ACTION-CODE, the
CRN first 25 characters of
X4-04-REL-DOC-ID in
GCX105-TRAIN-OR-US-CCN, set cargo
type to Canadian train
GCX105-CA-TRAIN, message 350 ACK -
ARRIVAL ACK AT BORDER in
GCX105-MESSAGE, and spawn the log
entry process Z300-SPAWN-GCT1051E"]:::main N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0_action N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER S_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER --> N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0 N_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER_Node0 -- No --> E_LogTrainArrivalActionCodeZZZMessage350ACKARRIVALACKATBORDER
File: GCX126R.cbl
GIVEN:
A train has been successfully verified in the system using the CRN
WHEN:
The train record exists (CC-STATUS-CODE equals spaces)
THEN:
Create a log entry with current machine date in GCX105-DATE, current machine time in GCX105-TIME, action code 'ZZZ' in GCX105-ACTION-CODE, the CRN (first 25 characters of X4-04-REL-DOC-ID) in GCX105-TRAIN-OR-US-CCN, set cargo type to Canadian train (GCX105-CA-TRAIN), message '350 ACK - ARRIVAL ACK AT BORDER' in GCX105-MESSAGE, and spawn the log entry process (Z300-SPAWN-GCT1051E)
β Consolidated Acceptance Criteria
- The cargo is found using X4-01-CBSA-REL-REF-ID (first 25 characters) as the CCN key → log the message '350 ACK - ARRIVAL ACK AT BORDER' to cargo information, set the cargo border arrival acknowledgment flag (GCCC-BORDER-ARRIVAL-ACK) to true, and replace the cargo record in the database
- The cargo border arrival status needs to be updated → set KEY-VALUE of CCRT-SSAQ to X4-01-CBSA-REL-REF-ID (first 25 characters) AND set KEY-VALUE of A2RT-SSAQ to X4-01-CBSA-REL-REF-ID (first 25 characters) AND perform A351-UPDATE-CARGO-BORDER process to retrieve cargo, set border arrival acknowledgment flag, 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_UpdateCargoBorderArrivalStatus(["Start Step"])
E_UpdateCargoBorderArrivalStatus(["End Step"])
N_UpdateCargoBorderArrivalStatus_Node0{"The cargo is found using
X4-01-CBSA-REL-REF-ID first 25
characters as the CCN key"}:::decision N_UpdateCargoBorderArrivalStatus_Node0_action["Log the message 350 ACK - ARRIVAL
ACK AT BORDER to cargo information,
set the cargo border arrival
acknowledgment flag
GCCC-BORDER-ARRIVAL-ACK to true, and
replace the cargo record in the
database"]:::main N_UpdateCargoBorderArrivalStatus_Node0 -- Yes --> N_UpdateCargoBorderArrivalStatus_Node0_action N_UpdateCargoBorderArrivalStatus_Node0_action --> E_UpdateCargoBorderArrivalStatus S_UpdateCargoBorderArrivalStatus --> N_UpdateCargoBorderArrivalStatus_Node0 N_UpdateCargoBorderArrivalStatus_Node1{"The cargo border arrival status
needs to be updated"}:::decision N_UpdateCargoBorderArrivalStatus_Node1_action["Set KEY-VALUE of CCRT-SSAQ to
X4-01-CBSA-REL-REF-ID first 25
characters AND set KEY-VALUE of
A2RT-SSAQ to X4-01-CBSA-REL-REF-ID
first 25 characters AND perform
A351-UPDATE-CARGO-BORDER process to
retrieve cargo, set border arrival
acknowledgment flag, and replace the
cargo record"]:::main N_UpdateCargoBorderArrivalStatus_Node1 -- Yes --> N_UpdateCargoBorderArrivalStatus_Node1_action N_UpdateCargoBorderArrivalStatus_Node1_action --> E_UpdateCargoBorderArrivalStatus N_UpdateCargoBorderArrivalStatus_Node0 -- No --> N_UpdateCargoBorderArrivalStatus_Node1 N_UpdateCargoBorderArrivalStatus_Node1 -- No --> E_UpdateCargoBorderArrivalStatus
X4-01-CBSA-REL-REF-ID first 25
characters as the CCN key"}:::decision N_UpdateCargoBorderArrivalStatus_Node0_action["Log the message 350 ACK - ARRIVAL
ACK AT BORDER to cargo information,
set the cargo border arrival
acknowledgment flag
GCCC-BORDER-ARRIVAL-ACK to true, and
replace the cargo record in the
database"]:::main N_UpdateCargoBorderArrivalStatus_Node0 -- Yes --> N_UpdateCargoBorderArrivalStatus_Node0_action N_UpdateCargoBorderArrivalStatus_Node0_action --> E_UpdateCargoBorderArrivalStatus S_UpdateCargoBorderArrivalStatus --> N_UpdateCargoBorderArrivalStatus_Node0 N_UpdateCargoBorderArrivalStatus_Node1{"The cargo border arrival status
needs to be updated"}:::decision N_UpdateCargoBorderArrivalStatus_Node1_action["Set KEY-VALUE of CCRT-SSAQ to
X4-01-CBSA-REL-REF-ID first 25
characters AND set KEY-VALUE of
A2RT-SSAQ to X4-01-CBSA-REL-REF-ID
first 25 characters AND perform
A351-UPDATE-CARGO-BORDER process to
retrieve cargo, set border arrival
acknowledgment flag, and replace the
cargo record"]:::main N_UpdateCargoBorderArrivalStatus_Node1 -- Yes --> N_UpdateCargoBorderArrivalStatus_Node1_action N_UpdateCargoBorderArrivalStatus_Node1_action --> E_UpdateCargoBorderArrivalStatus N_UpdateCargoBorderArrivalStatus_Node0 -- No --> N_UpdateCargoBorderArrivalStatus_Node1 N_UpdateCargoBorderArrivalStatus_Node1 -- No --> E_UpdateCargoBorderArrivalStatus
File: GCX126R.cbl
GIVEN:
A valid train arrival has been logged and cargo exists for the release reference ID
WHEN:
The cargo is found using X4-01-CBSA-REL-REF-ID (first 25 characters) as the CCN key
THEN:
Log the message '350 ACK - ARRIVAL ACK AT BORDER' to cargo information, set the cargo border arrival acknowledgment flag (GCCC-BORDER-ARRIVAL-ACK) to true, and replace the cargo record in the database
File: GCX126R.cbl
GIVEN:
A train arrival has been logged successfully AND the cargo control number is available in X4-01-CBSA-REL-REF-ID (first 25 characters)
WHEN:
The cargo border arrival status needs to be updated
THEN:
Set KEY-VALUE of CCRT-SSAQ to X4-01-CBSA-REL-REF-ID (first 25 characters) AND set KEY-VALUE of A2RT-SSAQ to X4-01-CBSA-REL-REF-ID (first 25 characters) AND perform A351-UPDATE-CARGO-BORDER process to retrieve cargo, set border arrival acknowledgment flag, and replace the cargo record
β Consolidated Acceptance Criteria
- The cargo master manifest indicator (GCCC-MASTER-MFST) is true → proceed to retrieve and update all follower manifests, otherwise skip follower processing and continue to next segment
- If the manifest type → if the cargo is a master manifest, proceed to retrieve and update all associated follower manifests; otherwise, complete the process
- The system checks the manifest type → if GCCC-MASTER-MFST indicator is true, proceed to update follower manifests, otherwise continue to next segment
- The system checks the cargo type → if the cargo master manifest indicator is true, then proceed to process follower manifests, otherwise end the release process
- The system checks the manifest type → if GCCC-MASTER-MFST is true, proceed to process follower manifests; otherwise, end deconsolidation processing
- The system checks if the cargo record is identified as a master manifest → if it is a master manifest, skip this record and continue to the next; if not, check if it is a follower 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_IsMasterManifest(["Start Step"])
E_IsMasterManifest(["End Step"])
N_IsMasterManifest_Node0{"The cargo master manifest indicator
GCCC-MASTER-MFST is true"}:::decision N_IsMasterManifest_Node0_action["Proceed to retrieve and update all
follower manifests, otherwise skip
follower processing and continue to
next segment"]:::main N_IsMasterManifest_Node0 -- Yes --> N_IsMasterManifest_Node0_action N_IsMasterManifest_Node0_action --> E_IsMasterManifest S_IsMasterManifest --> N_IsMasterManifest_Node0 N_IsMasterManifest_Node1{"The system evaluates the manifest
type"}:::decision N_IsMasterManifest_Node1_action["If the cargo is a master manifest,
proceed to retrieve and update all
associated follower manifests
otherwise, complete the process"]:::main N_IsMasterManifest_Node1 -- Yes --> N_IsMasterManifest_Node1_action N_IsMasterManifest_Node1_action --> E_IsMasterManifest N_IsMasterManifest_Node0 -- No --> N_IsMasterManifest_Node1 N_IsMasterManifest_Node2{"The system checks the manifest type"}:::decision N_IsMasterManifest_Node2_action["If GCCC-MASTER-MFST indicator is
true, proceed to update follower
manifests, otherwise continue to
next segment"]:::main N_IsMasterManifest_Node2 -- Yes --> N_IsMasterManifest_Node2_action N_IsMasterManifest_Node2_action --> E_IsMasterManifest N_IsMasterManifest_Node1 -- No --> N_IsMasterManifest_Node2 N_IsMasterManifest_Node3{"The system checks the cargo type"}:::decision N_IsMasterManifest_Node3_action["If the cargo master manifest
indicator is true, then proceed to
process follower manifests,
otherwise end the release process"]:::main N_IsMasterManifest_Node3 -- Yes --> N_IsMasterManifest_Node3_action N_IsMasterManifest_Node3_action --> E_IsMasterManifest N_IsMasterManifest_Node2 -- No --> N_IsMasterManifest_Node3 N_IsMasterManifest_Node4{"The system checks the manifest type"}:::decision N_IsMasterManifest_Node4_action["If GCCC-MASTER-MFST is true,
proceed to process follower
manifests otherwise, end
deconsolidation processing"]:::main N_IsMasterManifest_Node4 -- Yes --> N_IsMasterManifest_Node4_action N_IsMasterManifest_Node4_action --> E_IsMasterManifest N_IsMasterManifest_Node3 -- No --> N_IsMasterManifest_Node4 N_IsMasterManifest_Node5{"The system checks if the cargo
record is identified as a master
manifest"}:::decision N_IsMasterManifest_Node5_action["If it is a master manifest, skip
this record and continue to the next
if not, check if it is a follower
manifest"]:::main N_IsMasterManifest_Node5 -- Yes --> N_IsMasterManifest_Node5_action N_IsMasterManifest_Node5_action --> E_IsMasterManifest N_IsMasterManifest_Node4 -- No --> N_IsMasterManifest_Node5 N_IsMasterManifest_Node5 -- No --> E_IsMasterManifest
GCCC-MASTER-MFST is true"}:::decision N_IsMasterManifest_Node0_action["Proceed to retrieve and update all
follower manifests, otherwise skip
follower processing and continue to
next segment"]:::main N_IsMasterManifest_Node0 -- Yes --> N_IsMasterManifest_Node0_action N_IsMasterManifest_Node0_action --> E_IsMasterManifest S_IsMasterManifest --> N_IsMasterManifest_Node0 N_IsMasterManifest_Node1{"The system evaluates the manifest
type"}:::decision N_IsMasterManifest_Node1_action["If the cargo is a master manifest,
proceed to retrieve and update all
associated follower manifests
otherwise, complete the process"]:::main N_IsMasterManifest_Node1 -- Yes --> N_IsMasterManifest_Node1_action N_IsMasterManifest_Node1_action --> E_IsMasterManifest N_IsMasterManifest_Node0 -- No --> N_IsMasterManifest_Node1 N_IsMasterManifest_Node2{"The system checks the manifest type"}:::decision N_IsMasterManifest_Node2_action["If GCCC-MASTER-MFST indicator is
true, proceed to update follower
manifests, otherwise continue to
next segment"]:::main N_IsMasterManifest_Node2 -- Yes --> N_IsMasterManifest_Node2_action N_IsMasterManifest_Node2_action --> E_IsMasterManifest N_IsMasterManifest_Node1 -- No --> N_IsMasterManifest_Node2 N_IsMasterManifest_Node3{"The system checks the cargo type"}:::decision N_IsMasterManifest_Node3_action["If the cargo master manifest
indicator is true, then proceed to
process follower manifests,
otherwise end the release process"]:::main N_IsMasterManifest_Node3 -- Yes --> N_IsMasterManifest_Node3_action N_IsMasterManifest_Node3_action --> E_IsMasterManifest N_IsMasterManifest_Node2 -- No --> N_IsMasterManifest_Node3 N_IsMasterManifest_Node4{"The system checks the manifest type"}:::decision N_IsMasterManifest_Node4_action["If GCCC-MASTER-MFST is true,
proceed to process follower
manifests otherwise, end
deconsolidation processing"]:::main N_IsMasterManifest_Node4 -- Yes --> N_IsMasterManifest_Node4_action N_IsMasterManifest_Node4_action --> E_IsMasterManifest N_IsMasterManifest_Node3 -- No --> N_IsMasterManifest_Node4 N_IsMasterManifest_Node5{"The system checks if the cargo
record is identified as a master
manifest"}:::decision N_IsMasterManifest_Node5_action["If it is a master manifest, skip
this record and continue to the next
if not, check if it is a follower
manifest"]:::main N_IsMasterManifest_Node5 -- Yes --> N_IsMasterManifest_Node5_action N_IsMasterManifest_Node5_action --> E_IsMasterManifest N_IsMasterManifest_Node4 -- No --> N_IsMasterManifest_Node5 N_IsMasterManifest_Node5 -- No --> E_IsMasterManifest
File: GCX126R.cbl
GIVEN:
A cargo record has been updated with border arrival acknowledgment
WHEN:
The cargo master manifest indicator (GCCC-MASTER-MFST) is true
THEN:
- Proceed to retrieve
- Update all follower manifests, otherwise skip follower processing
- Continue to next segment
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully updated with border arrival acknowledgment
WHEN:
The system evaluates the manifest type
THEN:
- If the cargo is a master manifest, proceed to retrieve
- Update all associated follower manifests; otherwise, complete the process
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and updated with border arrival acknowledgment
WHEN:
The system checks the manifest type
THEN:
If GCCC-MASTER-MFST indicator is true, proceed to update follower manifests, otherwise continue to next segment
File: GCX126R.cbl
GIVEN:
A cargo record has been released
WHEN:
The system checks the cargo type
THEN:
If the cargo master manifest indicator is true, then proceed to process follower manifests, otherwise end the release process
File: GCX126R.cbl
GIVEN:
A cargo record has been updated with deconsolidation release information
WHEN:
The system checks the manifest type
THEN:
If GCCC-MASTER-MFST is true, proceed to process follower manifests; otherwise, end deconsolidation processing
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved that belongs to the same master manifest CCN
WHEN:
The system checks if the cargo record is identified as a master manifest
THEN:
- If it is a master manifest, skip this record
- Continue to the next; if not, check if it is a follower manifest
β Consolidated Acceptance Criteria
- The system performs sequential reads of cargo records using the master CCN as parent key (GCCC-MASTER-MFST-CCN) → collect all follower manifest CCN keys (where GCCC-FOLLOWER-MFST is true and master CCN matches X4-01-CBSA-REL-REF-ID first 25 characters) into WS-FOLLOWER-MANI array up to a maximum of 100 entries, stopping when no more followers are found or 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_RetrieveAllFollowerManifestsforMasterupto100(["Start Step"])
E_RetrieveAllFollowerManifestsforMasterupto100(["End Step"])
N_RetrieveAllFollowerManifestsforMasterupto100_Node0{"The system performs sequential
reads of cargo records using the
master CCN as parent key
GCCC-MASTER-MFST-CCN"}:::decision N_RetrieveAllFollowerManifestsforMasterupto100_Node0_action["Collect all follower manifest CCN
keys where GCCC-FOLLOWER-MFST is
true and master CCN matches
X4-01-CBSA-REL-REF-ID first 25
characters into WS-FOLLOWER-MANI
array up to a maximum of 100
entries, stopping when no more
followers are found or limit is
reached"]:::main N_RetrieveAllFollowerManifestsforMasterupto100_Node0 -- Yes --> N_RetrieveAllFollowerManifestsforMasterupto100_Node0_action N_RetrieveAllFollowerManifestsforMasterupto100_Node0_action --> E_RetrieveAllFollowerManifestsforMasterupto100 S_RetrieveAllFollowerManifestsforMasterupto100 --> N_RetrieveAllFollowerManifestsforMasterupto100_Node0 N_RetrieveAllFollowerManifestsforMasterupto100_Node0 -- No --> E_RetrieveAllFollowerManifestsforMasterupto100
reads of cargo records using the
master CCN as parent key
GCCC-MASTER-MFST-CCN"}:::decision N_RetrieveAllFollowerManifestsforMasterupto100_Node0_action["Collect all follower manifest CCN
keys where GCCC-FOLLOWER-MFST is
true and master CCN matches
X4-01-CBSA-REL-REF-ID first 25
characters into WS-FOLLOWER-MANI
array up to a maximum of 100
entries, stopping when no more
followers are found or limit is
reached"]:::main N_RetrieveAllFollowerManifestsforMasterupto100_Node0 -- Yes --> N_RetrieveAllFollowerManifestsforMasterupto100_Node0_action N_RetrieveAllFollowerManifestsforMasterupto100_Node0_action --> E_RetrieveAllFollowerManifestsforMasterupto100 S_RetrieveAllFollowerManifestsforMasterupto100 --> N_RetrieveAllFollowerManifestsforMasterupto100_Node0 N_RetrieveAllFollowerManifestsforMasterupto100_Node0 -- No --> E_RetrieveAllFollowerManifestsforMasterupto100
File: GCX126R.cbl
GIVEN:
A master manifest has been identified with CCN key stored in GCCC-CCN-KEY
WHEN:
The system performs sequential reads of cargo records using the master CCN as parent key (GCCC-MASTER-MFST-CCN)
THEN:
- Collect all follower manifest ccn keys (where gccc-follower-mfst is true
- Master ccn matches x4-01-cbsa-rel-ref-id first 25 characters) into ws-follower-mani array up to a maximum of 100 entries, stopping when no more followers are found or limit is reached
β Consolidated Acceptance Criteria
- Processing each follower CCN from index 1 to the count of followers found → for each follower CCN: retrieve the cargo record using the CCN as key, if cargo is found then log message '350 ACK - ARRIVAL ACK AT BORDER', set the border arrival acknowledgment flag (GCCC-BORDER-ARRIVAL-ACK) to true, 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_UpdateBorderArrivalforEachFollower(["Start Step"])
E_UpdateBorderArrivalforEachFollower(["End Step"])
N_UpdateBorderArrivalforEachFollower_Node0{"Processing each follower CCN from
index 1 to the count of followers
found"}:::decision N_UpdateBorderArrivalforEachFollower_Node0_action["For each follower CCN: retrieve the
cargo record using the CCN as key,
if cargo is found then log message
350 ACK - ARRIVAL ACK AT BORDER ,
set the border arrival
acknowledgment flag
GCCC-BORDER-ARRIVAL-ACK to true, and
replace the cargo record"]:::main N_UpdateBorderArrivalforEachFollower_Node0 -- Yes --> N_UpdateBorderArrivalforEachFollower_Node0_action N_UpdateBorderArrivalforEachFollower_Node0_action --> E_UpdateBorderArrivalforEachFollower S_UpdateBorderArrivalforEachFollower --> N_UpdateBorderArrivalforEachFollower_Node0 N_UpdateBorderArrivalforEachFollower_Node0 -- No --> E_UpdateBorderArrivalforEachFollower
index 1 to the count of followers
found"}:::decision N_UpdateBorderArrivalforEachFollower_Node0_action["For each follower CCN: retrieve the
cargo record using the CCN as key,
if cargo is found then log message
350 ACK - ARRIVAL ACK AT BORDER ,
set the border arrival
acknowledgment flag
GCCC-BORDER-ARRIVAL-ACK to true, and
replace the cargo record"]:::main N_UpdateBorderArrivalforEachFollower_Node0 -- Yes --> N_UpdateBorderArrivalforEachFollower_Node0_action N_UpdateBorderArrivalforEachFollower_Node0_action --> E_UpdateBorderArrivalforEachFollower S_UpdateBorderArrivalforEachFollower --> N_UpdateBorderArrivalforEachFollower_Node0 N_UpdateBorderArrivalforEachFollower_Node0 -- No --> E_UpdateBorderArrivalforEachFollower
File: GCX126R.cbl
GIVEN:
A list of follower manifest CCN keys has been retrieved and stored in WS-FOLLOWER-MANI array
WHEN:
Processing each follower CCN from index 1 to the count of followers found
THEN:
For each follower CCN: retrieve the cargo record using the CCN as key, if cargo is found then log message '350 ACK - ARRIVAL ACK AT BORDER', set the border arrival acknowledgment flag (GCCC-BORDER-ARRIVAL-ACK) to true, and replace the cargo record
β Consolidated Acceptance Criteria
- The message is not a conveyance 350 (WS-CONV-350 is false) OR the entry type code is not '992' → set the previous X4 segment indicator (WS-SEGMENT-PREV-X4) to true and set the X4 segment found flag (WS-X4-SEGMENT-FOUND) to true to enable cargo release processing in subsequent 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_SetX4SegmentFoundFlagforCargoProcessing(["Start Step"])
E_SetX4SegmentFoundFlagforCargoProcessing(["End Step"])
N_SetX4SegmentFoundFlagforCargoProcessing_Node0{"The message is not a conveyance 350
WS-CONV-350 is false OR the entry
type code is not 992"}:::decision N_SetX4SegmentFoundFlagforCargoProcessing_Node0_action["Set the previous X4 segment
indicator WS-SEGMENT-PREV-X4 to true
and set the X4 segment found flag
WS-X4-SEGMENT-FOUND to true to
enable cargo release processing in
subsequent steps"]:::main N_SetX4SegmentFoundFlagforCargoProcessing_Node0 -- Yes --> N_SetX4SegmentFoundFlagforCargoProcessing_Node0_action N_SetX4SegmentFoundFlagforCargoProcessing_Node0_action --> E_SetX4SegmentFoundFlagforCargoProcessing S_SetX4SegmentFoundFlagforCargoProcessing --> N_SetX4SegmentFoundFlagforCargoProcessing_Node0 N_SetX4SegmentFoundFlagforCargoProcessing_Node0 -- No --> E_SetX4SegmentFoundFlagforCargoProcessing
WS-CONV-350 is false OR the entry
type code is not 992"}:::decision N_SetX4SegmentFoundFlagforCargoProcessing_Node0_action["Set the previous X4 segment
indicator WS-SEGMENT-PREV-X4 to true
and set the X4 segment found flag
WS-X4-SEGMENT-FOUND to true to
enable cargo release processing in
subsequent steps"]:::main N_SetX4SegmentFoundFlagforCargoProcessing_Node0 -- Yes --> N_SetX4SegmentFoundFlagforCargoProcessing_Node0_action N_SetX4SegmentFoundFlagforCargoProcessing_Node0_action --> E_SetX4SegmentFoundFlagforCargoProcessing S_SetX4SegmentFoundFlagforCargoProcessing --> N_SetX4SegmentFoundFlagforCargoProcessing_Node0 N_SetX4SegmentFoundFlagforCargoProcessing_Node0 -- No --> E_SetX4SegmentFoundFlagforCargoProcessing
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An X4 segment is being processed
WHEN:
The message is not a conveyance 350 (WS-CONV-350 is false) OR the entry type code is not '992'
THEN:
- Set the previous x4 segment indicator (ws-segment-prev-x4) to true
- Set the x4 segment found flag (ws-x4-segment-found) to true to enable cargo release processing in subsequent steps
β Consolidated Acceptance Criteria
- The system extracts the related document ID from position 1 to 25 of the X4-04-REL-DOC-ID field → the extracted train ID is stored as the search key for train record 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_ReceiveTrainIDfromX4Segment(["Start Step"])
E_ReceiveTrainIDfromX4Segment(["End Step"])
N_ReceiveTrainIDfromX4Segment_Node0{"The system extracts the related
document ID from position 1 to 25 of
the X4-04-REL-DOC-ID field"}:::decision N_ReceiveTrainIDfromX4Segment_Node0_action["The extracted train ID is stored as
the search key for train record
lookup"]:::main N_ReceiveTrainIDfromX4Segment_Node0 -- Yes --> N_ReceiveTrainIDfromX4Segment_Node0_action N_ReceiveTrainIDfromX4Segment_Node0_action --> E_ReceiveTrainIDfromX4Segment S_ReceiveTrainIDfromX4Segment --> N_ReceiveTrainIDfromX4Segment_Node0 N_ReceiveTrainIDfromX4Segment_Node0 -- No --> E_ReceiveTrainIDfromX4Segment
document ID from position 1 to 25 of
the X4-04-REL-DOC-ID field"}:::decision N_ReceiveTrainIDfromX4Segment_Node0_action["The extracted train ID is stored as
the search key for train record
lookup"]:::main N_ReceiveTrainIDfromX4Segment_Node0 -- Yes --> N_ReceiveTrainIDfromX4Segment_Node0_action N_ReceiveTrainIDfromX4Segment_Node0_action --> E_ReceiveTrainIDfromX4Segment S_ReceiveTrainIDfromX4Segment --> N_ReceiveTrainIDfromX4Segment_Node0 N_ReceiveTrainIDfromX4Segment_Node0 -- No --> E_ReceiveTrainIDfromX4Segment
File: GCX126R.cbl
GIVEN:
An X4 segment is being processed with entry type code '992' in a CONVENTIONAL 350 message
WHEN:
The system extracts the related document ID from position 1 to 25 of the X4-04-REL-DOC-ID field
THEN:
The extracted train ID is stored as the search key for train record lookup
β Consolidated Acceptance Criteria
- The system prepares to search for the train record in the database → the train ID is moved to the B4-KEY-VALUE field for database query
- The system prepares to query the train database → the system sets the train database search key (B4-KEY-VALUE) to the value from X4 related document ID positions 1-25 AND stores this value as the previous CRN (WS-PREV-CRN) for 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_SetTrainIDasSearchKey(["Start Step"])
E_SetTrainIDasSearchKey(["End Step"])
N_SetTrainIDasSearchKey_Node0{"The system prepares to search for
the train record in the database"}:::decision N_SetTrainIDasSearchKey_Node0_action["The train ID is moved to the
B4-KEY-VALUE field for database
query"]:::main N_SetTrainIDasSearchKey_Node0 -- Yes --> N_SetTrainIDasSearchKey_Node0_action N_SetTrainIDasSearchKey_Node0_action --> E_SetTrainIDasSearchKey S_SetTrainIDasSearchKey --> N_SetTrainIDasSearchKey_Node0 N_SetTrainIDasSearchKey_Node1{"The system prepares to query the
train database"}:::decision N_SetTrainIDasSearchKey_Node1_action["The system sets the train database
search key B4-KEY-VALUE to the value
from X4 related document ID
positions 1-25 AND stores this value
as the previous CRN WS-PREV-CRN for
duplicate checking"]:::main N_SetTrainIDasSearchKey_Node1 -- Yes --> N_SetTrainIDasSearchKey_Node1_action N_SetTrainIDasSearchKey_Node1_action --> E_SetTrainIDasSearchKey N_SetTrainIDasSearchKey_Node0 -- No --> N_SetTrainIDasSearchKey_Node1 N_SetTrainIDasSearchKey_Node1 -- No --> E_SetTrainIDasSearchKey
the train record in the database"}:::decision N_SetTrainIDasSearchKey_Node0_action["The train ID is moved to the
B4-KEY-VALUE field for database
query"]:::main N_SetTrainIDasSearchKey_Node0 -- Yes --> N_SetTrainIDasSearchKey_Node0_action N_SetTrainIDasSearchKey_Node0_action --> E_SetTrainIDasSearchKey S_SetTrainIDasSearchKey --> N_SetTrainIDasSearchKey_Node0 N_SetTrainIDasSearchKey_Node1{"The system prepares to query the
train database"}:::decision N_SetTrainIDasSearchKey_Node1_action["The system sets the train database
search key B4-KEY-VALUE to the value
from X4 related document ID
positions 1-25 AND stores this value
as the previous CRN WS-PREV-CRN for
duplicate checking"]:::main N_SetTrainIDasSearchKey_Node1 -- Yes --> N_SetTrainIDasSearchKey_Node1_action N_SetTrainIDasSearchKey_Node1_action --> E_SetTrainIDasSearchKey N_SetTrainIDasSearchKey_Node0 -- No --> N_SetTrainIDasSearchKey_Node1 N_SetTrainIDasSearchKey_Node1 -- No --> E_SetTrainIDasSearchKey
File: GCX126R.cbl
GIVEN:
A train ID has been extracted from the X4 segment related document ID (positions 1-25)
WHEN:
The system prepares to search for the train record in the database
THEN:
The train ID is moved to the B4-KEY-VALUE field for database query
File: GCX126R.cbl
GIVEN:
The X4 segment has been parsed from the EDI 350 message AND the related document ID field contains the Consist Release Number in positions 1-25
WHEN:
The system prepares to query the train database
THEN:
- The system sets the train database search key (b4-key-value) to the value from x4 related document id positions 1-25
- Stores this value as the previous crn (ws-prev-crn) for duplicate checking
β Consolidated Acceptance Criteria
- The system executes the Z5000-GU-B4-TRAIN procedure → a database GET UNIQUE operation is performed on the train root segment using the provided 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_CallDatabasetoRetrieveTrainRecord(["Start Step"])
E_CallDatabasetoRetrieveTrainRecord(["End Step"])
N_CallDatabasetoRetrieveTrainRecord_Node0{"The system executes the
Z5000-GU-B4-TRAIN procedure"}:::decision N_CallDatabasetoRetrieveTrainRecord_Node0_action["A database GET UNIQUE operation is
performed on the train root segment
using the provided train ID"]:::main N_CallDatabasetoRetrieveTrainRecord_Node0 -- Yes --> N_CallDatabasetoRetrieveTrainRecord_Node0_action N_CallDatabasetoRetrieveTrainRecord_Node0_action --> E_CallDatabasetoRetrieveTrainRecord S_CallDatabasetoRetrieveTrainRecord --> N_CallDatabasetoRetrieveTrainRecord_Node0 N_CallDatabasetoRetrieveTrainRecord_Node0 -- No --> E_CallDatabasetoRetrieveTrainRecord
Z5000-GU-B4-TRAIN procedure"}:::decision N_CallDatabasetoRetrieveTrainRecord_Node0_action["A database GET UNIQUE operation is
performed on the train root segment
using the provided train ID"]:::main N_CallDatabasetoRetrieveTrainRecord_Node0 -- Yes --> N_CallDatabasetoRetrieveTrainRecord_Node0_action N_CallDatabasetoRetrieveTrainRecord_Node0_action --> E_CallDatabasetoRetrieveTrainRecord S_CallDatabasetoRetrieveTrainRecord --> N_CallDatabasetoRetrieveTrainRecord_Node0 N_CallDatabasetoRetrieveTrainRecord_Node0 -- No --> E_CallDatabasetoRetrieveTrainRecord
File: GCX126R.cbl
GIVEN:
The B4-KEY-VALUE contains a valid train ID from the X4 segment
WHEN:
The system executes the Z5000-GU-B4-TRAIN procedure
THEN:
A database GET UNIQUE operation is performed on the train root segment using the provided train ID
β Consolidated Acceptance Criteria
- The system checks the status code returned from the database operation → if the status code is blank (spaces), the train record is found; otherwise, the train record is not found
- If the database status code → iF the status code is blank (spaces) THEN the train record was successfully found and exists in the system ELSE IF the status code is not blank (contains any value) THEN the train record was not found and does not exist in the 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_TrainRecordFound(["Start Step"])
E_TrainRecordFound(["End Step"])
N_TrainRecordFound_Node0{"The system checks the status code
returned from the database operation"}:::decision N_TrainRecordFound_Node0_action["If the status code is blank spaces,
the train record is found otherwise,
the train record is not found"]:::main N_TrainRecordFound_Node0 -- Yes --> N_TrainRecordFound_Node0_action N_TrainRecordFound_Node0_action --> E_TrainRecordFound S_TrainRecordFound --> N_TrainRecordFound_Node0 N_TrainRecordFound_Node1{"The system evaluates the database
status code"}:::decision N_TrainRecordFound_Node1_action["IF the status code is blank spaces
THEN the train record was
successfully found and exists in the
system ELSE IF the status code is
not blank contains any value THEN
the train record was not found and
does not exist in the system"]:::main N_TrainRecordFound_Node1 -- Yes --> N_TrainRecordFound_Node1_action N_TrainRecordFound_Node1_action --> E_TrainRecordFound N_TrainRecordFound_Node0 -- No --> N_TrainRecordFound_Node1 N_TrainRecordFound_Node1 -- No --> E_TrainRecordFound
returned from the database operation"}:::decision N_TrainRecordFound_Node0_action["If the status code is blank spaces,
the train record is found otherwise,
the train record is not found"]:::main N_TrainRecordFound_Node0 -- Yes --> N_TrainRecordFound_Node0_action N_TrainRecordFound_Node0_action --> E_TrainRecordFound S_TrainRecordFound --> N_TrainRecordFound_Node0 N_TrainRecordFound_Node1{"The system evaluates the database
status code"}:::decision N_TrainRecordFound_Node1_action["IF the status code is blank spaces
THEN the train record was
successfully found and exists in the
system ELSE IF the status code is
not blank contains any value THEN
the train record was not found and
does not exist in the system"]:::main N_TrainRecordFound_Node1 -- Yes --> N_TrainRecordFound_Node1_action N_TrainRecordFound_Node1_action --> E_TrainRecordFound N_TrainRecordFound_Node0 -- No --> N_TrainRecordFound_Node1 N_TrainRecordFound_Node1 -- No --> E_TrainRecordFound
File: GCX126R.cbl
GIVEN:
A database retrieval operation has been executed for a train ID
WHEN:
The system checks the status code returned from the database operation
THEN:
If the status code is blank (spaces), the train record is found; otherwise, the train record is not found
File: GCX126R.cbl
GIVEN:
The database retrieval operation has been executed for the train record
WHEN:
The system evaluates the database status code
THEN:
- If the status code is blank (spaces) then the train record was successfully found
- Exists in the system else if the status code is not blank (contains any value) then the train record was not found
- Does not exist in the system
β Consolidated Acceptance Criteria
- The system processes the found train record → the system logs an arrival acknowledgment message with action code 'ZZZ', the train ID, and the message '350 ACK - ARRIVAL ACK AT BORDER' by spawning the GCT1051E 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_SetTrainFoundStatus(["Start Step"])
E_SetTrainFoundStatus(["End Step"])
N_SetTrainFoundStatus_Node0{"The system processes the found
train record"}:::decision N_SetTrainFoundStatus_Node0_action["The system logs an arrival
acknowledgment message with action
code ZZZ , the train ID, and the
message 350 ACK - ARRIVAL ACK AT
BORDER by spawning the GCT1051E
process"]:::main N_SetTrainFoundStatus_Node0 -- Yes --> N_SetTrainFoundStatus_Node0_action N_SetTrainFoundStatus_Node0_action --> E_SetTrainFoundStatus S_SetTrainFoundStatus --> N_SetTrainFoundStatus_Node0 N_SetTrainFoundStatus_Node0 -- No --> E_SetTrainFoundStatus
train record"}:::decision N_SetTrainFoundStatus_Node0_action["The system logs an arrival
acknowledgment message with action
code ZZZ , the train ID, and the
message 350 ACK - ARRIVAL ACK AT
BORDER by spawning the GCT1051E
process"]:::main N_SetTrainFoundStatus_Node0 -- Yes --> N_SetTrainFoundStatus_Node0_action N_SetTrainFoundStatus_Node0_action --> E_SetTrainFoundStatus S_SetTrainFoundStatus --> N_SetTrainFoundStatus_Node0 N_SetTrainFoundStatus_Node0 -- No --> E_SetTrainFoundStatus
File: GCX126R.cbl
GIVEN:
A train record has been successfully retrieved from the database with a blank status code
WHEN:
The system processes the found train record
THEN:
The system logs an arrival acknowledgment message with action code 'ZZZ', the train ID, and the message '350 ACK - ARRIVAL ACK AT BORDER' by spawning the GCT1051E process
β Consolidated Acceptance Criteria
- The status code returned from the database operation is not blank (not spaces) → the system determines that the train record does not exist and proceeds to 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_SetTrainNotFoundStatus(["Start Step"])
E_SetTrainNotFoundStatus(["End Step"])
N_SetTrainNotFoundStatus_Node0{"The status code returned from the
database operation is not blank not
spaces"}:::decision N_SetTrainNotFoundStatus_Node0_action["The system determines that the
train record does not exist and
proceeds to error handling"]:::main N_SetTrainNotFoundStatus_Node0 -- Yes --> N_SetTrainNotFoundStatus_Node0_action N_SetTrainNotFoundStatus_Node0_action --> E_SetTrainNotFoundStatus S_SetTrainNotFoundStatus --> N_SetTrainNotFoundStatus_Node0 N_SetTrainNotFoundStatus_Node0 -- No --> E_SetTrainNotFoundStatus
database operation is not blank not
spaces"}:::decision N_SetTrainNotFoundStatus_Node0_action["The system determines that the
train record does not exist and
proceeds to error handling"]:::main N_SetTrainNotFoundStatus_Node0 -- Yes --> N_SetTrainNotFoundStatus_Node0_action N_SetTrainNotFoundStatus_Node0_action --> E_SetTrainNotFoundStatus S_SetTrainNotFoundStatus --> N_SetTrainNotFoundStatus_Node0 N_SetTrainNotFoundStatus_Node0 -- No --> E_SetTrainNotFoundStatus
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database retrieval operation has been executed for a train ID
WHEN:
The status code returned from the database operation is not blank (not spaces)
THEN:
- The system determines that the train record does not exist
- Proceeds to error handling
β Consolidated Acceptance Criteria
- The system begins error notification preparation → the first detail line of the Merlin report is cleared to spaces to prepare for the error message
- The system prepares to send an error notification → the system initializes the Merlin report structure (MRLN-350-REPORT) 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_PrepareErrorReport(["Start Step"])
E_PrepareErrorReport(["End Step"])
N_PrepareErrorReport_Node0{"The system begins error
notification preparation"}:::decision N_PrepareErrorReport_Node0_action["The first detail line of the Merlin
report is cleared to spaces to
prepare for the error message"]:::exclusion N_PrepareErrorReport_Node0 -- Yes -->|Alternative| N_PrepareErrorReport_Node0_action N_PrepareErrorReport_Node0_action --> E_PrepareErrorReport S_PrepareErrorReport --> N_PrepareErrorReport_Node0 N_PrepareErrorReport_Node1{"The system prepares to send an
error notification"}:::decision N_PrepareErrorReport_Node1_action["The system initializes the Merlin
report structure MRLN-350-REPORT
with spaces"]:::exclusion N_PrepareErrorReport_Node1 -- Yes -->|Alternative| N_PrepareErrorReport_Node1_action N_PrepareErrorReport_Node1_action --> E_PrepareErrorReport N_PrepareErrorReport_Node0 -- No --> N_PrepareErrorReport_Node1 N_PrepareErrorReport_Node1 -- No --> E_PrepareErrorReport
notification preparation"}:::decision N_PrepareErrorReport_Node0_action["The first detail line of the Merlin
report is cleared to spaces to
prepare for the error message"]:::exclusion N_PrepareErrorReport_Node0 -- Yes -->|Alternative| N_PrepareErrorReport_Node0_action N_PrepareErrorReport_Node0_action --> E_PrepareErrorReport S_PrepareErrorReport --> N_PrepareErrorReport_Node0 N_PrepareErrorReport_Node1{"The system prepares to send an
error notification"}:::decision N_PrepareErrorReport_Node1_action["The system initializes the Merlin
report structure MRLN-350-REPORT
with spaces"]:::exclusion N_PrepareErrorReport_Node1 -- Yes -->|Alternative| N_PrepareErrorReport_Node1_action N_PrepareErrorReport_Node1_action --> E_PrepareErrorReport N_PrepareErrorReport_Node0 -- No --> N_PrepareErrorReport_Node1 N_PrepareErrorReport_Node1 -- No --> E_PrepareErrorReport
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A train record was not found in the database
WHEN:
The system begins error notification preparation
THEN:
The first detail line of the Merlin report is cleared to spaces to prepare for the error message
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is not found and notice reason is RELEASED
WHEN:
The system prepares to send an error notification
THEN:
The system initializes the Merlin report structure (MRLN-350-REPORT) with spaces
β Consolidated Acceptance Criteria
- The system constructs the error message → the message 'UNKNOWN TRAIN ENTRY IN EDI 350 ' concatenated with the train ID (positions 1-25 of X4-04-REL-DOC-ID) is placed in the first detail line of the Merlin 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_AddTrainIDtoErrorMessage(["Start Step"])
E_AddTrainIDtoErrorMessage(["End Step"])
N_AddTrainIDtoErrorMessage_Node0{"The system constructs the error
message"}:::decision N_AddTrainIDtoErrorMessage_Node0_action["The message UNKNOWN TRAIN ENTRY IN
EDI 350 concatenated with the train
ID positions 1-25 of
X4-04-REL-DOC-ID is placed in the
first detail line of the Merlin
report"]:::exclusion N_AddTrainIDtoErrorMessage_Node0 -- Yes -->|Alternative| N_AddTrainIDtoErrorMessage_Node0_action N_AddTrainIDtoErrorMessage_Node0_action --> E_AddTrainIDtoErrorMessage S_AddTrainIDtoErrorMessage --> N_AddTrainIDtoErrorMessage_Node0 N_AddTrainIDtoErrorMessage_Node0 -- No --> E_AddTrainIDtoErrorMessage
message"}:::decision N_AddTrainIDtoErrorMessage_Node0_action["The message UNKNOWN TRAIN ENTRY IN
EDI 350 concatenated with the train
ID positions 1-25 of
X4-04-REL-DOC-ID is placed in the
first detail line of the Merlin
report"]:::exclusion N_AddTrainIDtoErrorMessage_Node0 -- Yes -->|Alternative| N_AddTrainIDtoErrorMessage_Node0_action N_AddTrainIDtoErrorMessage_Node0_action --> E_AddTrainIDtoErrorMessage S_AddTrainIDtoErrorMessage --> N_AddTrainIDtoErrorMessage_Node0 N_AddTrainIDtoErrorMessage_Node0 -- No --> E_AddTrainIDtoErrorMessage
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An error report is being prepared for a train not found in the system
WHEN:
The system constructs the error message
THEN:
The message 'UNKNOWN TRAIN ENTRY IN EDI 350 ' concatenated with the train ID (positions 1-25 of X4-04-REL-DOC-ID) is placed in the first detail line of the Merlin report
β Consolidated Acceptance Criteria
- The system adds supplementary error information → the message 'THIS CRN WAS NOT FOUND.' is placed in the third detail line of the Merlin report and the line counter is set 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_AddTrainNotFoundMessage(["Start Step"])
E_AddTrainNotFoundMessage(["End Step"])
N_AddTrainNotFoundMessage_Node0{"The system adds supplementary error
information"}:::decision N_AddTrainNotFoundMessage_Node0_action["The message THIS CRN WAS NOT FOUND.
is placed in the third detail line
of the Merlin report and the line
counter is set to 4"]:::exclusion N_AddTrainNotFoundMessage_Node0 -- Yes -->|Alternative| N_AddTrainNotFoundMessage_Node0_action N_AddTrainNotFoundMessage_Node0_action --> E_AddTrainNotFoundMessage S_AddTrainNotFoundMessage --> N_AddTrainNotFoundMessage_Node0 N_AddTrainNotFoundMessage_Node0 -- No --> E_AddTrainNotFoundMessage
information"}:::decision N_AddTrainNotFoundMessage_Node0_action["The message THIS CRN WAS NOT FOUND.
is placed in the third detail line
of the Merlin report and the line
counter is set to 4"]:::exclusion N_AddTrainNotFoundMessage_Node0 -- Yes -->|Alternative| N_AddTrainNotFoundMessage_Node0_action N_AddTrainNotFoundMessage_Node0_action --> E_AddTrainNotFoundMessage S_AddTrainNotFoundMessage --> N_AddTrainNotFoundMessage_Node0 N_AddTrainNotFoundMessage_Node0 -- No --> E_AddTrainNotFoundMessage
File: GCX126R.cbl
GIVEN:
The primary error message with the train ID has been constructed
WHEN:
The system adds supplementary error information
THEN:
- The message 'this crn was not found.' is placed in the third detail line of the merlin report
- The line counter is set to 4
β Consolidated Acceptance Criteria
- The system routes the error notification → the error type is set to 'UNKNOWN', and the Z110-PREP-EMCSEND procedure is executed to send the notification to the Merlin 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_RouteErrortoMerlinSystem(["Start Step"])
E_RouteErrortoMerlinSystem(["End Step"])
N_RouteErrortoMerlinSystem_Node0{"The system routes the error
notification"}:::decision N_RouteErrortoMerlinSystem_Node0_action["The error type is set to UNKNOWN ,
and the Z110-PREP-EMCSEND procedure
is executed to send the notification
to the Merlin system"]:::exclusion N_RouteErrortoMerlinSystem_Node0 -- Yes -->|Alternative| N_RouteErrortoMerlinSystem_Node0_action N_RouteErrortoMerlinSystem_Node0_action --> E_RouteErrortoMerlinSystem S_RouteErrortoMerlinSystem --> N_RouteErrortoMerlinSystem_Node0 N_RouteErrortoMerlinSystem_Node0 -- No --> E_RouteErrortoMerlinSystem
notification"}:::decision N_RouteErrortoMerlinSystem_Node0_action["The error type is set to UNKNOWN ,
and the Z110-PREP-EMCSEND procedure
is executed to send the notification
to the Merlin system"]:::exclusion N_RouteErrortoMerlinSystem_Node0 -- Yes -->|Alternative| N_RouteErrortoMerlinSystem_Node0_action N_RouteErrortoMerlinSystem_Node0_action --> E_RouteErrortoMerlinSystem S_RouteErrortoMerlinSystem --> N_RouteErrortoMerlinSystem_Node0 N_RouteErrortoMerlinSystem_Node0 -- No --> E_RouteErrortoMerlinSystem
File: GCX126R.cbl
GIVEN:
An error report has been prepared with the unknown train details
WHEN:
The system routes the error notification
THEN:
The error type is set to 'UNKNOWN', and the Z110-PREP-EMCSEND procedure is executed to send the notification to the Merlin system
β Consolidated Acceptance Criteria
- The system processes the X4 segment for border arrival acknowledgment → the system retrieves the cargo record using the CBSA Release Reference ID as the 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_RetrieveCargoRecordbyCCNfromX4Segment(["Start Step"])
E_RetrieveCargoRecordbyCCNfromX4Segment(["End Step"])
N_RetrieveCargoRecordbyCCNfromX4Segment_Node0{"The system processes the X4 segment
for border arrival acknowledgment"}:::decision N_RetrieveCargoRecordbyCCNfromX4Segment_Node0_action["The system retrieves the cargo
record using the CBSA Release
Reference ID as the CCN key"]:::main N_RetrieveCargoRecordbyCCNfromX4Segment_Node0 -- Yes --> N_RetrieveCargoRecordbyCCNfromX4Segment_Node0_action N_RetrieveCargoRecordbyCCNfromX4Segment_Node0_action --> E_RetrieveCargoRecordbyCCNfromX4Segment S_RetrieveCargoRecordbyCCNfromX4Segment --> N_RetrieveCargoRecordbyCCNfromX4Segment_Node0 N_RetrieveCargoRecordbyCCNfromX4Segment_Node0 -- No --> E_RetrieveCargoRecordbyCCNfromX4Segment
for border arrival acknowledgment"}:::decision N_RetrieveCargoRecordbyCCNfromX4Segment_Node0_action["The system retrieves the cargo
record using the CBSA Release
Reference ID as the CCN key"]:::main N_RetrieveCargoRecordbyCCNfromX4Segment_Node0 -- Yes --> N_RetrieveCargoRecordbyCCNfromX4Segment_Node0_action N_RetrieveCargoRecordbyCCNfromX4Segment_Node0_action --> E_RetrieveCargoRecordbyCCNfromX4Segment S_RetrieveCargoRecordbyCCNfromX4Segment --> N_RetrieveCargoRecordbyCCNfromX4Segment_Node0 N_RetrieveCargoRecordbyCCNfromX4Segment_Node0 -- No --> E_RetrieveCargoRecordbyCCNfromX4Segment
File: GCX126R.cbl
GIVEN:
An X4 segment contains a CBSA Release Reference ID in position 1-25
WHEN:
The system processes the X4 segment for border arrival acknowledgment
THEN:
The system retrieves the cargo record using the CBSA Release Reference ID as the CCN key
β Consolidated Acceptance Criteria
- The system checks the cargo record status → if cargo is found and not deleted, proceed with border arrival update; otherwise, skip the update process
- If the retrieval result → if the cargo record is found (cargo-found flag is true), the system proceeds to update the border arrival acknowledgment; otherwise, the system skips to the next follower manifest
- If the cargo status switches after the database call → if WS-CARGO-FOUND is true, the system proceeds with border arrival updates; otherwise, the process terminates without updates
- The system checks if the cargo record was found → if the cargo record is found, the system proceeds with logging and updating; if not found, the system skips to the next follower in the collection
- The system attempts to retrieve the cargo record using the CCN → the system determines if the cargo record exists or not found in the database
- The system checks the retrieval result → the cargo is considered found if the cargo found indicator is set to true, otherwise skip to the next follower manifest
- If the cargo lookup result → processing continues if cargo is found (WS-CARGO-FOUND is true) AND cargo is not deleted AND cargo is not returned AND waybill matches (if applicable), otherwise skip to next follower
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,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{"The system checks the cargo record
status"}:::decision N_CargoFound_Node0_action["If cargo is found and not deleted,
proceed with border arrival update
otherwise, skip the update process"]:::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 evaluates the retrieval
result"}:::decision N_CargoFound_Node1_action["If the cargo record is found
cargo-found flag is true, the system
proceeds to update the border
arrival acknowledgment otherwise,
the system skips to the next
follower manifest"]:::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 evaluates the cargo
status switches after the database
call"}:::decision N_CargoFound_Node2_action["If WS-CARGO-FOUND is true, the
system proceeds with border arrival
updates otherwise, the process
terminates without updates"]:::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 if the cargo
record was found"}:::decision N_CargoFound_Node3_action["If the cargo record is found, the
system proceeds with logging and
updating if not found, the system
skips to the next follower in the
collection"]:::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 attempts to retrieve the
cargo record using the CCN"}:::decision N_CargoFound_Node4_action["The system determines if the cargo
record exists or not found in the
database"]:::main N_CargoFound_Node4 -- Yes --> N_CargoFound_Node4_action N_CargoFound_Node4_action --> E_CargoFound N_CargoFound_Node3 -- No --> N_CargoFound_Node4 N_CargoFound_Node5{"The system checks the retrieval
result"}:::decision N_CargoFound_Node5_action["The cargo is considered found if
the cargo found indicator is set to
true, otherwise skip to the next
follower manifest"]:::main N_CargoFound_Node5 -- Yes --> N_CargoFound_Node5_action N_CargoFound_Node5_action --> E_CargoFound N_CargoFound_Node4 -- No --> N_CargoFound_Node5 N_CargoFound_Node6{"The system evaluates the cargo
lookup result"}:::decision N_CargoFound_Node6_action["Processing continues if cargo is
found WS-CARGO-FOUND is true AND
cargo is not deleted AND cargo is
not returned AND waybill matches if
applicable, otherwise skip to next
follower"]:::main N_CargoFound_Node6 -- Yes --> N_CargoFound_Node6_action N_CargoFound_Node6_action --> E_CargoFound N_CargoFound_Node5 -- No --> N_CargoFound_Node6 N_CargoFound_Node6 -- No --> E_CargoFound
status"}:::decision N_CargoFound_Node0_action["If cargo is found and not deleted,
proceed with border arrival update
otherwise, skip the update process"]:::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 evaluates the retrieval
result"}:::decision N_CargoFound_Node1_action["If the cargo record is found
cargo-found flag is true, the system
proceeds to update the border
arrival acknowledgment otherwise,
the system skips to the next
follower manifest"]:::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 evaluates the cargo
status switches after the database
call"}:::decision N_CargoFound_Node2_action["If WS-CARGO-FOUND is true, the
system proceeds with border arrival
updates otherwise, the process
terminates without updates"]:::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 if the cargo
record was found"}:::decision N_CargoFound_Node3_action["If the cargo record is found, the
system proceeds with logging and
updating if not found, the system
skips to the next follower in the
collection"]:::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 attempts to retrieve the
cargo record using the CCN"}:::decision N_CargoFound_Node4_action["The system determines if the cargo
record exists or not found in the
database"]:::main N_CargoFound_Node4 -- Yes --> N_CargoFound_Node4_action N_CargoFound_Node4_action --> E_CargoFound N_CargoFound_Node3 -- No --> N_CargoFound_Node4 N_CargoFound_Node5{"The system checks the retrieval
result"}:::decision N_CargoFound_Node5_action["The cargo is considered found if
the cargo found indicator is set to
true, otherwise skip to the next
follower manifest"]:::main N_CargoFound_Node5 -- Yes --> N_CargoFound_Node5_action N_CargoFound_Node5_action --> E_CargoFound N_CargoFound_Node4 -- No --> N_CargoFound_Node5 N_CargoFound_Node6{"The system evaluates the cargo
lookup result"}:::decision N_CargoFound_Node6_action["Processing continues if cargo is
found WS-CARGO-FOUND is true AND
cargo is not deleted AND cargo is
not returned AND waybill matches if
applicable, otherwise skip to next
follower"]:::main N_CargoFound_Node6 -- Yes --> N_CargoFound_Node6_action N_CargoFound_Node6_action --> E_CargoFound N_CargoFound_Node5 -- No --> N_CargoFound_Node6 N_CargoFound_Node6 -- No --> E_CargoFound
File: GCX126R.cbl
GIVEN:
A cargo retrieval operation has been performed using the CCN from X4 segment
WHEN:
The system checks the cargo record status
THEN:
- If cargo is found
- Not deleted, proceed with border arrival update; otherwise, skip the update process
File: GCX126R.cbl
GIVEN:
The system has attempted to retrieve a follower cargo record by CCN
WHEN:
The system evaluates the retrieval result
THEN:
If the cargo record is found (cargo-found flag is true), the system proceeds to update the border arrival acknowledgment; otherwise, the system skips to the next follower manifest
File: GCX126R.cbl
GIVEN:
A cargo retrieval operation has been performed using the CCN
WHEN:
The system evaluates the cargo status switches after the database call
THEN:
If WS-CARGO-FOUND is true, the system proceeds with border arrival updates; otherwise, the process terminates without updates
File: GCX126R.cbl
GIVEN:
The system has attempted to retrieve a follower cargo record by CCN
WHEN:
The system checks if the cargo record was found
THEN:
- If the cargo record is found, the system proceeds with logging
- Updating; if not found, the system skips to the next follower in the collection
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been received with a CCN (Cargo Control Number) in the M10 segment
WHEN:
The system attempts to retrieve the cargo record using the CCN
THEN:
The system determines if the cargo record exists or not found in the database
File: GCX126R.cbl
GIVEN:
The system has attempted to retrieve a follower cargo record by CCN
WHEN:
The system checks the retrieval result
THEN:
The cargo is considered found if the cargo found indicator is set to true, otherwise skip to the next follower manifest
File: GCX126R.cbl
GIVEN:
A cargo lookup has been performed for the follower manifest CCN
WHEN:
The system evaluates the cargo lookup result
THEN:
- Processing continues if cargo is found (ws-cargo-found is true) and cargo is not deleted
- Cargo is not returned
- Waybill matches (if applicable), otherwise skip to next follower
β Consolidated Acceptance Criteria
- The system processes the border arrival acknowledgment → the system sets the border arrival acknowledgment flag to TRUE on the cargo record
- The system updates the cargo record status → the border arrival acknowledgment flag in the cargo record is set to true to indicate customs has acknowledged the cargo's arrival at the border
- The system processes a border arrival acknowledgment from the EDI 350 message → the GCCC-BORDER-ARRIVAL-ACK flag is set to true in the cargo record 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_SetBorderArrivalAcknowledgmentFlag(["Start Step"])
E_SetBorderArrivalAcknowledgmentFlag(["End Step"])
N_SetBorderArrivalAcknowledgmentFlag_Node0{"The system processes the border
arrival acknowledgment"}:::decision N_SetBorderArrivalAcknowledgmentFlag_Node0_action["The system sets the border arrival
acknowledgment flag to TRUE on the
cargo record"]:::main N_SetBorderArrivalAcknowledgmentFlag_Node0 -- Yes --> N_SetBorderArrivalAcknowledgmentFlag_Node0_action N_SetBorderArrivalAcknowledgmentFlag_Node0_action --> E_SetBorderArrivalAcknowledgmentFlag S_SetBorderArrivalAcknowledgmentFlag --> N_SetBorderArrivalAcknowledgmentFlag_Node0 N_SetBorderArrivalAcknowledgmentFlag_Node1{"The system updates the cargo record
status"}:::decision N_SetBorderArrivalAcknowledgmentFlag_Node1_action["The border arrival acknowledgment
flag in the cargo record is set to
true to indicate customs has
acknowledged the cargo s arrival at
the border"]:::main N_SetBorderArrivalAcknowledgmentFlag_Node1 -- Yes --> N_SetBorderArrivalAcknowledgmentFlag_Node1_action N_SetBorderArrivalAcknowledgmentFlag_Node1_action --> E_SetBorderArrivalAcknowledgmentFlag N_SetBorderArrivalAcknowledgmentFlag_Node0 -- No --> N_SetBorderArrivalAcknowledgmentFlag_Node1 N_SetBorderArrivalAcknowledgmentFlag_Node2{"The system processes a border
arrival acknowledgment from the EDI
350 message"}:::decision N_SetBorderArrivalAcknowledgmentFlag_Node2_action["The GCCC-BORDER-ARRIVAL-ACK flag is
set to true in the cargo record
segment"]:::main N_SetBorderArrivalAcknowledgmentFlag_Node2 -- Yes --> N_SetBorderArrivalAcknowledgmentFlag_Node2_action N_SetBorderArrivalAcknowledgmentFlag_Node2_action --> E_SetBorderArrivalAcknowledgmentFlag N_SetBorderArrivalAcknowledgmentFlag_Node1 -- No --> N_SetBorderArrivalAcknowledgmentFlag_Node2 N_SetBorderArrivalAcknowledgmentFlag_Node2 -- No --> E_SetBorderArrivalAcknowledgmentFlag
arrival acknowledgment"}:::decision N_SetBorderArrivalAcknowledgmentFlag_Node0_action["The system sets the border arrival
acknowledgment flag to TRUE on the
cargo record"]:::main N_SetBorderArrivalAcknowledgmentFlag_Node0 -- Yes --> N_SetBorderArrivalAcknowledgmentFlag_Node0_action N_SetBorderArrivalAcknowledgmentFlag_Node0_action --> E_SetBorderArrivalAcknowledgmentFlag S_SetBorderArrivalAcknowledgmentFlag --> N_SetBorderArrivalAcknowledgmentFlag_Node0 N_SetBorderArrivalAcknowledgmentFlag_Node1{"The system updates the cargo record
status"}:::decision N_SetBorderArrivalAcknowledgmentFlag_Node1_action["The border arrival acknowledgment
flag in the cargo record is set to
true to indicate customs has
acknowledged the cargo s arrival at
the border"]:::main N_SetBorderArrivalAcknowledgmentFlag_Node1 -- Yes --> N_SetBorderArrivalAcknowledgmentFlag_Node1_action N_SetBorderArrivalAcknowledgmentFlag_Node1_action --> E_SetBorderArrivalAcknowledgmentFlag N_SetBorderArrivalAcknowledgmentFlag_Node0 -- No --> N_SetBorderArrivalAcknowledgmentFlag_Node1 N_SetBorderArrivalAcknowledgmentFlag_Node2{"The system processes a border
arrival acknowledgment from the EDI
350 message"}:::decision N_SetBorderArrivalAcknowledgmentFlag_Node2_action["The GCCC-BORDER-ARRIVAL-ACK flag is
set to true in the cargo record
segment"]:::main N_SetBorderArrivalAcknowledgmentFlag_Node2 -- Yes --> N_SetBorderArrivalAcknowledgmentFlag_Node2_action N_SetBorderArrivalAcknowledgmentFlag_Node2_action --> E_SetBorderArrivalAcknowledgmentFlag N_SetBorderArrivalAcknowledgmentFlag_Node1 -- No --> N_SetBorderArrivalAcknowledgmentFlag_Node2 N_SetBorderArrivalAcknowledgmentFlag_Node2 -- No --> E_SetBorderArrivalAcknowledgmentFlag
File: GCX126R.cbl
GIVEN:
A valid cargo record has been retrieved and confirmed to exist
WHEN:
The system processes the border arrival acknowledgment
THEN:
The system sets the border arrival acknowledgment flag to TRUE on the cargo record
File: GCX126R.cbl
GIVEN:
The border arrival message has been logged for the follower manifest
WHEN:
The system updates the cargo record status
THEN:
The border arrival acknowledgment flag in the cargo record is set to true to indicate customs has acknowledged the cargo's arrival at the border
File: GCX126R.cbl
GIVEN:
A valid cargo record exists in the database
WHEN:
The system processes a border arrival acknowledgment from the EDI 350 message
THEN:
The GCCC-BORDER-ARRIVAL-ACK flag is set to true in the cargo record segment
β Consolidated Acceptance Criteria
- The system logs the border arrival event → the system creates a log entry with message '350 ACK - ARRIVAL ACK AT BORDER' including the CCN and current date/time
- The system prepares to log the border arrival event → the message '350 ACK - ARRIVAL ACK AT BORDER' is moved to WS-GCX105-INFO-MSG, the log information is populated with current machine date, time, user ID, and CCN, the action code is set to LOG-USE-INPUT-MESSAGE, the cargo type is set to GCX105-CA-CARGO, and the GCT1051E transaction is spawned to create the log entry
- The system logs the border arrival event → create a log entry with message '350 ACK - ARRIVAL ACK AT BORDER', current CCN key, current date and time, and action code 'ZZZ' for Canadian 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_LogMessage350ACKARRIVALACKATBORDER(["Start Step"])
E_LogMessage350ACKARRIVALACKATBORDER(["End Step"])
N_LogMessage350ACKARRIVALACKATBORDER_Node0{"The system logs the border arrival
event"}:::decision N_LogMessage350ACKARRIVALACKATBORDER_Node0_action["The system creates a log entry with
message 350 ACK - ARRIVAL ACK AT
BORDER including the CCN and current
datetime"]:::main N_LogMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogMessage350ACKARRIVALACKATBORDER_Node0_action N_LogMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogMessage350ACKARRIVALACKATBORDER S_LogMessage350ACKARRIVALACKATBORDER --> N_LogMessage350ACKARRIVALACKATBORDER_Node0 N_LogMessage350ACKARRIVALACKATBORDER_Node1{"The system prepares to log the
border arrival event"}:::decision N_LogMessage350ACKARRIVALACKATBORDER_Node1_action["The message 350 ACK - ARRIVAL ACK
AT BORDER is moved to
WS-GCX105-INFO-MSG, the log
information is populated with
current machine date, time, user ID,
and CCN, the action code is set to
LOG-USE-INPUT-MESSAGE, the cargo
type is set to GCX105-CA-CARGO, and
the GCT1051E transaction is spawned
to create the log entry"]:::main N_LogMessage350ACKARRIVALACKATBORDER_Node1 -- Yes --> N_LogMessage350ACKARRIVALACKATBORDER_Node1_action N_LogMessage350ACKARRIVALACKATBORDER_Node1_action --> E_LogMessage350ACKARRIVALACKATBORDER N_LogMessage350ACKARRIVALACKATBORDER_Node0 -- No --> N_LogMessage350ACKARRIVALACKATBORDER_Node1 N_LogMessage350ACKARRIVALACKATBORDER_Node2{"The system logs the border arrival
event"}:::decision N_LogMessage350ACKARRIVALACKATBORDER_Node2_action["Create a log entry with message 350
ACK - ARRIVAL ACK AT BORDER ,
current CCN key, current date and
time, and action code ZZZ for
Canadian cargo type"]:::main N_LogMessage350ACKARRIVALACKATBORDER_Node2 -- Yes --> N_LogMessage350ACKARRIVALACKATBORDER_Node2_action N_LogMessage350ACKARRIVALACKATBORDER_Node2_action --> E_LogMessage350ACKARRIVALACKATBORDER N_LogMessage350ACKARRIVALACKATBORDER_Node1 -- No --> N_LogMessage350ACKARRIVALACKATBORDER_Node2 N_LogMessage350ACKARRIVALACKATBORDER_Node2 -- No --> E_LogMessage350ACKARRIVALACKATBORDER
event"}:::decision N_LogMessage350ACKARRIVALACKATBORDER_Node0_action["The system creates a log entry with
message 350 ACK - ARRIVAL ACK AT
BORDER including the CCN and current
datetime"]:::main N_LogMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogMessage350ACKARRIVALACKATBORDER_Node0_action N_LogMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogMessage350ACKARRIVALACKATBORDER S_LogMessage350ACKARRIVALACKATBORDER --> N_LogMessage350ACKARRIVALACKATBORDER_Node0 N_LogMessage350ACKARRIVALACKATBORDER_Node1{"The system prepares to log the
border arrival event"}:::decision N_LogMessage350ACKARRIVALACKATBORDER_Node1_action["The message 350 ACK - ARRIVAL ACK
AT BORDER is moved to
WS-GCX105-INFO-MSG, the log
information is populated with
current machine date, time, user ID,
and CCN, the action code is set to
LOG-USE-INPUT-MESSAGE, the cargo
type is set to GCX105-CA-CARGO, and
the GCT1051E transaction is spawned
to create the log entry"]:::main N_LogMessage350ACKARRIVALACKATBORDER_Node1 -- Yes --> N_LogMessage350ACKARRIVALACKATBORDER_Node1_action N_LogMessage350ACKARRIVALACKATBORDER_Node1_action --> E_LogMessage350ACKARRIVALACKATBORDER N_LogMessage350ACKARRIVALACKATBORDER_Node0 -- No --> N_LogMessage350ACKARRIVALACKATBORDER_Node1 N_LogMessage350ACKARRIVALACKATBORDER_Node2{"The system logs the border arrival
event"}:::decision N_LogMessage350ACKARRIVALACKATBORDER_Node2_action["Create a log entry with message 350
ACK - ARRIVAL ACK AT BORDER ,
current CCN key, current date and
time, and action code ZZZ for
Canadian cargo type"]:::main N_LogMessage350ACKARRIVALACKATBORDER_Node2 -- Yes --> N_LogMessage350ACKARRIVALACKATBORDER_Node2_action N_LogMessage350ACKARRIVALACKATBORDER_Node2_action --> E_LogMessage350ACKARRIVALACKATBORDER N_LogMessage350ACKARRIVALACKATBORDER_Node1 -- No --> N_LogMessage350ACKARRIVALACKATBORDER_Node2 N_LogMessage350ACKARRIVALACKATBORDER_Node2 -- No --> E_LogMessage350ACKARRIVALACKATBORDER
File: GCX126R.cbl
GIVEN:
The border arrival acknowledgment flag has been set on the cargo record
WHEN:
The system logs the border arrival event
THEN:
- The system creates a log entry with message '350 ack - arrival ack at border' including the ccn
- Current date/time
File: GCX126R.cbl
GIVEN:
A cargo record has been identified for border arrival acknowledgment and the current CCN key is stored in WS-CURRENT-CCN-KEY
WHEN:
The system prepares to log the border arrival event
THEN:
The message '350 ACK - ARRIVAL ACK AT BORDER' is moved to WS-GCX105-INFO-MSG, the log information is populated with current machine date, time, user ID, and CCN, the action code is set to LOG-USE-INPUT-MESSAGE, the cargo type is set to GCX105-CA-CARGO, and the GCT1051E transaction is spawned to create the log entry
File: GCX126R.cbl
GIVEN:
The border arrival acknowledgment flag has been set for the follower
WHEN:
The system logs the border arrival event
THEN:
- Create a log entry with message '350 ack - arrival ack at border', current ccn key, current date
- Time, and action code 'zzz' for canadian cargo type
β Consolidated Acceptance Criteria
- The system commits the changes → the system replaces the cargo record in the database with the updated border arrival status
- The system executes the replace operation → the CIMS program is called with REPL function code, GCCC-PCB, and GCCC-CARGO-REPORT-SEGMENT to update the cargo record in the database, and the accept status is cleared
- The cargo record update is performed → the cargo record is replaced in the database with the updated hold status
- The system updates the cargo record → the system replaces the cargo record (GCCC-CARGO-REPORT-SEGMENT) in the database using the REPL function through the GCCC-PCB program 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_UpdateCargoRecordinDatabase(["Start Step"])
E_UpdateCargoRecordinDatabase(["End Step"])
N_UpdateCargoRecordinDatabase_Node0{"The system commits the changes"}:::decision
N_UpdateCargoRecordinDatabase_Node0_action["The system replaces the cargo
record in the database with the
updated border arrival status"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node1{"The system executes the replace
operation"}:::decision N_UpdateCargoRecordinDatabase_Node1_action["The CIMS program is called with
REPL function code, GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT to update
the cargo record in the database,
and the accept status is cleared"]:::main N_UpdateCargoRecordinDatabase_Node1 -- Yes --> N_UpdateCargoRecordinDatabase_Node1_action N_UpdateCargoRecordinDatabase_Node1_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node0 -- No --> N_UpdateCargoRecordinDatabase_Node1 N_UpdateCargoRecordinDatabase_Node2{"The cargo record update is
performed"}:::decision N_UpdateCargoRecordinDatabase_Node2_action["The cargo record is replaced in the
database with the updated hold
status"]:::main N_UpdateCargoRecordinDatabase_Node2 -- Yes --> N_UpdateCargoRecordinDatabase_Node2_action N_UpdateCargoRecordinDatabase_Node2_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node1 -- No --> N_UpdateCargoRecordinDatabase_Node2 N_UpdateCargoRecordinDatabase_Node3{"The system updates the cargo record"}:::decision N_UpdateCargoRecordinDatabase_Node3_action["The system replaces the cargo
record GCCC-CARGO-REPORT-SEGMENT in
the database using the REPL function
through the GCCC-PCB program control
block"]:::main N_UpdateCargoRecordinDatabase_Node3 -- Yes --> N_UpdateCargoRecordinDatabase_Node3_action N_UpdateCargoRecordinDatabase_Node3_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node2 -- No --> N_UpdateCargoRecordinDatabase_Node3 N_UpdateCargoRecordinDatabase_Node3 -- No --> E_UpdateCargoRecordinDatabase
record in the database with the
updated border arrival status"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node1{"The system executes the replace
operation"}:::decision N_UpdateCargoRecordinDatabase_Node1_action["The CIMS program is called with
REPL function code, GCCC-PCB, and
GCCC-CARGO-REPORT-SEGMENT to update
the cargo record in the database,
and the accept status is cleared"]:::main N_UpdateCargoRecordinDatabase_Node1 -- Yes --> N_UpdateCargoRecordinDatabase_Node1_action N_UpdateCargoRecordinDatabase_Node1_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node0 -- No --> N_UpdateCargoRecordinDatabase_Node1 N_UpdateCargoRecordinDatabase_Node2{"The cargo record update is
performed"}:::decision N_UpdateCargoRecordinDatabase_Node2_action["The cargo record is replaced in the
database with the updated hold
status"]:::main N_UpdateCargoRecordinDatabase_Node2 -- Yes --> N_UpdateCargoRecordinDatabase_Node2_action N_UpdateCargoRecordinDatabase_Node2_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node1 -- No --> N_UpdateCargoRecordinDatabase_Node2 N_UpdateCargoRecordinDatabase_Node3{"The system updates the cargo record"}:::decision N_UpdateCargoRecordinDatabase_Node3_action["The system replaces the cargo
record GCCC-CARGO-REPORT-SEGMENT in
the database using the REPL function
through the GCCC-PCB program control
block"]:::main N_UpdateCargoRecordinDatabase_Node3 -- Yes --> N_UpdateCargoRecordinDatabase_Node3_action N_UpdateCargoRecordinDatabase_Node3_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node2 -- No --> N_UpdateCargoRecordinDatabase_Node3 N_UpdateCargoRecordinDatabase_Node3 -- No --> E_UpdateCargoRecordinDatabase
File: GCX126R.cbl
GIVEN:
The cargo record has been updated with border arrival acknowledgment flag
WHEN:
The system commits the changes
THEN:
The system replaces the cargo record in the database with the updated border arrival status
File: GCX126R.cbl
GIVEN:
The cargo record segment (GCCC-CARGO-REPORT-SEGMENT) has been updated with the border arrival acknowledgment flag
WHEN:
The system executes the replace operation
THEN:
The CIMS program is called with REPL function code, GCCC-PCB, and GCCC-CARGO-REPORT-SEGMENT to update the cargo record in the database, and the accept status is cleared
File: GCX126R.cbl
GIVEN:
The cargo status has been set to HOLD
WHEN:
The cargo record update is performed
THEN:
The cargo record is replaced in the database with the updated hold status
File: GCX126R.cbl
GIVEN:
The cargo is a CSA manifest AND the authorization to deliver has been accepted AND the cargo status has been set to CSA-DLV AND the CSA authorization flag has been set to TRUE
WHEN:
The system updates the cargo record
THEN:
The system replaces the cargo record (GCCC-CARGO-REPORT-SEGMENT) in the database using the REPL function through the GCCC-PCB program control block
β Consolidated Acceptance Criteria
- The system initiates follower manifest retrieval → the system retrieves all follower manifests where the master manifest CCN matches the current cargo CCN, up to a maximum of 100 followers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAllFollowerManifestsforMasterCCN(["Start Step"])
E_RetrieveAllFollowerManifestsforMasterCCN(["End Step"])
N_RetrieveAllFollowerManifestsforMasterCCN_Node0{"The system initiates follower
manifest retrieval"}:::decision N_RetrieveAllFollowerManifestsforMasterCCN_Node0_action["The system retrieves all follower
manifests where the master manifest
CCN matches the current cargo CCN,
up to a maximum of 100 followers"]:::main N_RetrieveAllFollowerManifestsforMasterCCN_Node0 -- Yes --> N_RetrieveAllFollowerManifestsforMasterCCN_Node0_action N_RetrieveAllFollowerManifestsforMasterCCN_Node0_action --> E_RetrieveAllFollowerManifestsforMasterCCN S_RetrieveAllFollowerManifestsforMasterCCN --> N_RetrieveAllFollowerManifestsforMasterCCN_Node0 N_RetrieveAllFollowerManifestsforMasterCCN_Node0 -- No --> E_RetrieveAllFollowerManifestsforMasterCCN
manifest retrieval"}:::decision N_RetrieveAllFollowerManifestsforMasterCCN_Node0_action["The system retrieves all follower
manifests where the master manifest
CCN matches the current cargo CCN,
up to a maximum of 100 followers"]:::main N_RetrieveAllFollowerManifestsforMasterCCN_Node0 -- Yes --> N_RetrieveAllFollowerManifestsforMasterCCN_Node0_action N_RetrieveAllFollowerManifestsforMasterCCN_Node0_action --> E_RetrieveAllFollowerManifestsforMasterCCN S_RetrieveAllFollowerManifestsforMasterCCN --> N_RetrieveAllFollowerManifestsforMasterCCN_Node0 N_RetrieveAllFollowerManifestsforMasterCCN_Node0 -- No --> E_RetrieveAllFollowerManifestsforMasterCCN
File: GCX126R.cbl
GIVEN:
The cargo record is identified as a master manifest
WHEN:
The system initiates follower manifest retrieval
THEN:
The system retrieves all follower manifests where the master manifest CCN matches the current cargo CCN, up to a maximum of 100 followers
β Consolidated Acceptance Criteria
- The system checks for the next follower manifest → if more follower manifests exist and the count is less than or equal to 100, continue processing; otherwise, complete the follower 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_MoreFollowersMax100(["Start Step"])
E_MoreFollowersMax100(["End Step"])
N_MoreFollowersMax100_Node0{"The system checks for the next
follower manifest"}:::decision N_MoreFollowersMax100_Node0_action["If more follower manifests exist
and the count is less than or equal
to 100, continue processing
otherwise, complete the follower
processing"]:::main N_MoreFollowersMax100_Node0 -- Yes --> N_MoreFollowersMax100_Node0_action N_MoreFollowersMax100_Node0_action --> E_MoreFollowersMax100 S_MoreFollowersMax100 --> N_MoreFollowersMax100_Node0 N_MoreFollowersMax100_Node0 -- No --> E_MoreFollowersMax100
follower manifest"}:::decision N_MoreFollowersMax100_Node0_action["If more follower manifests exist
and the count is less than or equal
to 100, continue processing
otherwise, complete the follower
processing"]:::main N_MoreFollowersMax100_Node0 -- Yes --> N_MoreFollowersMax100_Node0_action N_MoreFollowersMax100_Node0_action --> E_MoreFollowersMax100 S_MoreFollowersMax100 --> N_MoreFollowersMax100_Node0 N_MoreFollowersMax100_Node0 -- No --> E_MoreFollowersMax100
File: GCX126R.cbl
GIVEN:
Follower manifests are being retrieved for a master manifest
WHEN:
The system checks for the next follower manifest
THEN:
- If more follower manifests exist
- The count is less than or equal to 100, continue processing; otherwise, complete the follower processing
β Consolidated Acceptance Criteria
- The system advances to the next follower → the system retrieves the CCN of the next follower manifest from the follower manifest 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_GetNextFollowerManifestCCN(["Start Step"])
E_GetNextFollowerManifestCCN(["End Step"])
N_GetNextFollowerManifestCCN_Node0{"The system advances to the next
follower"}:::decision N_GetNextFollowerManifestCCN_Node0_action["The system retrieves the CCN of the
next follower manifest from the
follower manifest array"]:::main N_GetNextFollowerManifestCCN_Node0 -- Yes --> N_GetNextFollowerManifestCCN_Node0_action N_GetNextFollowerManifestCCN_Node0_action --> E_GetNextFollowerManifestCCN S_GetNextFollowerManifestCCN --> N_GetNextFollowerManifestCCN_Node0 N_GetNextFollowerManifestCCN_Node0 -- No --> E_GetNextFollowerManifestCCN
follower"}:::decision N_GetNextFollowerManifestCCN_Node0_action["The system retrieves the CCN of the
next follower manifest from the
follower manifest array"]:::main N_GetNextFollowerManifestCCN_Node0 -- Yes --> N_GetNextFollowerManifestCCN_Node0_action N_GetNextFollowerManifestCCN_Node0_action --> E_GetNextFollowerManifestCCN S_GetNextFollowerManifestCCN --> N_GetNextFollowerManifestCCN_Node0 N_GetNextFollowerManifestCCN_Node0 -- No --> E_GetNextFollowerManifestCCN
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
There are more follower manifests to process and the maximum limit has not been reached
WHEN:
The system advances to the next follower
THEN:
The system retrieves the CCN of the next follower manifest from the follower manifest array
β Consolidated Acceptance Criteria
- The system retrieves the follower cargo record → the system performs a cargo retrieval operation using the follower CCN as the key
- The system retrieves the follower cargo record → execute Get Hold Unique (GHU) call to retrieve the cargo report segment from the database using the follower's CCN key
- The system needs to update the follower manifest → the system retrieves the complete cargo record from the database using the follower CCN as the 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_RetrieveFollowerCargoRecord(["Start Step"])
E_RetrieveFollowerCargoRecord(["End Step"])
N_RetrieveFollowerCargoRecord_Node0{"The system retrieves the follower
cargo record"}:::decision N_RetrieveFollowerCargoRecord_Node0_action["The system performs a cargo
retrieval operation using the
follower CCN as the key"]:::main N_RetrieveFollowerCargoRecord_Node0 -- Yes --> N_RetrieveFollowerCargoRecord_Node0_action N_RetrieveFollowerCargoRecord_Node0_action --> E_RetrieveFollowerCargoRecord S_RetrieveFollowerCargoRecord --> N_RetrieveFollowerCargoRecord_Node0 N_RetrieveFollowerCargoRecord_Node1{"The system retrieves the follower
cargo record"}:::decision N_RetrieveFollowerCargoRecord_Node1_action["Execute Get Hold Unique GHU call to
retrieve the cargo report segment
from the database using the follower
s CCN key"]:::main N_RetrieveFollowerCargoRecord_Node1 -- Yes --> N_RetrieveFollowerCargoRecord_Node1_action N_RetrieveFollowerCargoRecord_Node1_action --> E_RetrieveFollowerCargoRecord N_RetrieveFollowerCargoRecord_Node0 -- No --> N_RetrieveFollowerCargoRecord_Node1 N_RetrieveFollowerCargoRecord_Node2{"The system needs to update the
follower manifest"}:::decision N_RetrieveFollowerCargoRecord_Node2_action["The system retrieves the complete
cargo record from the database using
the follower CCN as the key"]:::main N_RetrieveFollowerCargoRecord_Node2 -- Yes --> N_RetrieveFollowerCargoRecord_Node2_action N_RetrieveFollowerCargoRecord_Node2_action --> E_RetrieveFollowerCargoRecord N_RetrieveFollowerCargoRecord_Node1 -- No --> N_RetrieveFollowerCargoRecord_Node2 N_RetrieveFollowerCargoRecord_Node2 -- No --> E_RetrieveFollowerCargoRecord
cargo record"}:::decision N_RetrieveFollowerCargoRecord_Node0_action["The system performs a cargo
retrieval operation using the
follower CCN as the key"]:::main N_RetrieveFollowerCargoRecord_Node0 -- Yes --> N_RetrieveFollowerCargoRecord_Node0_action N_RetrieveFollowerCargoRecord_Node0_action --> E_RetrieveFollowerCargoRecord S_RetrieveFollowerCargoRecord --> N_RetrieveFollowerCargoRecord_Node0 N_RetrieveFollowerCargoRecord_Node1{"The system retrieves the follower
cargo record"}:::decision N_RetrieveFollowerCargoRecord_Node1_action["Execute Get Hold Unique GHU call to
retrieve the cargo report segment
from the database using the follower
s CCN key"]:::main N_RetrieveFollowerCargoRecord_Node1 -- Yes --> N_RetrieveFollowerCargoRecord_Node1_action N_RetrieveFollowerCargoRecord_Node1_action --> E_RetrieveFollowerCargoRecord N_RetrieveFollowerCargoRecord_Node0 -- No --> N_RetrieveFollowerCargoRecord_Node1 N_RetrieveFollowerCargoRecord_Node2{"The system needs to update the
follower manifest"}:::decision N_RetrieveFollowerCargoRecord_Node2_action["The system retrieves the complete
cargo record from the database using
the follower CCN as the key"]:::main N_RetrieveFollowerCargoRecord_Node2 -- Yes --> N_RetrieveFollowerCargoRecord_Node2_action N_RetrieveFollowerCargoRecord_Node2_action --> E_RetrieveFollowerCargoRecord N_RetrieveFollowerCargoRecord_Node1 -- No --> N_RetrieveFollowerCargoRecord_Node2 N_RetrieveFollowerCargoRecord_Node2 -- No --> E_RetrieveFollowerCargoRecord
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been identified
WHEN:
The system retrieves the follower cargo record
THEN:
The system performs a cargo retrieval operation using the follower CCN as the key
File: GCX126R.cbl
GIVEN:
The follower CCN has been set as the database key
WHEN:
The system retrieves the follower cargo record
THEN:
Execute Get Hold Unique (GHU) call to retrieve the cargo report segment from the database using the follower's CCN key
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been retrieved from the collection array
WHEN:
The system needs to update the follower manifest
THEN:
The system retrieves the complete cargo record from the database using the follower CCN as the key
β Consolidated Acceptance Criteria
- The system checks the follower cargo record status → if the follower cargo is found and not deleted, proceed with border arrival update; otherwise, skip to the next follower
- If the retrieval result → if cargo found flag is true (WS-CARGO-FOUND), proceed to set release information; If cargo found flag is false, skip this follower and check if there are more followers to process
- Checking the retrieval result → if the cargo is found (status indicates found), proceed with release processing; otherwise, skip to the next follower
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FollowerCargoFound(["Start Step"])
E_FollowerCargoFound(["End Step"])
N_FollowerCargoFound_Node0{"The system checks the follower
cargo record status"}:::decision N_FollowerCargoFound_Node0_action["If the follower cargo is found and
not deleted, proceed with border
arrival update otherwise, skip to
the next follower"]:::main N_FollowerCargoFound_Node0 -- Yes --> N_FollowerCargoFound_Node0_action N_FollowerCargoFound_Node0_action --> E_FollowerCargoFound S_FollowerCargoFound --> N_FollowerCargoFound_Node0 N_FollowerCargoFound_Node1{"The system evaluates the retrieval
result"}:::decision N_FollowerCargoFound_Node1_action["If cargo found flag is true
WS-CARGO-FOUND, proceed to set
release information If cargo found
flag is false, skip this follower
and check if there are more
followers to process"]:::main N_FollowerCargoFound_Node1 -- Yes --> N_FollowerCargoFound_Node1_action N_FollowerCargoFound_Node1_action --> E_FollowerCargoFound N_FollowerCargoFound_Node0 -- No --> N_FollowerCargoFound_Node1 N_FollowerCargoFound_Node2{"Checking the retrieval result"}:::decision N_FollowerCargoFound_Node2_action["If the cargo is found status
indicates found, proceed with
release processing otherwise, skip
to the next follower"]:::main N_FollowerCargoFound_Node2 -- Yes --> N_FollowerCargoFound_Node2_action N_FollowerCargoFound_Node2_action --> E_FollowerCargoFound N_FollowerCargoFound_Node1 -- No --> N_FollowerCargoFound_Node2 N_FollowerCargoFound_Node2 -- No --> E_FollowerCargoFound
cargo record status"}:::decision N_FollowerCargoFound_Node0_action["If the follower cargo is found and
not deleted, proceed with border
arrival update otherwise, skip to
the next follower"]:::main N_FollowerCargoFound_Node0 -- Yes --> N_FollowerCargoFound_Node0_action N_FollowerCargoFound_Node0_action --> E_FollowerCargoFound S_FollowerCargoFound --> N_FollowerCargoFound_Node0 N_FollowerCargoFound_Node1{"The system evaluates the retrieval
result"}:::decision N_FollowerCargoFound_Node1_action["If cargo found flag is true
WS-CARGO-FOUND, proceed to set
release information If cargo found
flag is false, skip this follower
and check if there are more
followers to process"]:::main N_FollowerCargoFound_Node1 -- Yes --> N_FollowerCargoFound_Node1_action N_FollowerCargoFound_Node1_action --> E_FollowerCargoFound N_FollowerCargoFound_Node0 -- No --> N_FollowerCargoFound_Node1 N_FollowerCargoFound_Node2{"Checking the retrieval result"}:::decision N_FollowerCargoFound_Node2_action["If the cargo is found status
indicates found, proceed with
release processing otherwise, skip
to the next follower"]:::main N_FollowerCargoFound_Node2 -- Yes --> N_FollowerCargoFound_Node2_action N_FollowerCargoFound_Node2_action --> E_FollowerCargoFound N_FollowerCargoFound_Node1 -- No --> N_FollowerCargoFound_Node2 N_FollowerCargoFound_Node2 -- No --> E_FollowerCargoFound
File: GCX126R.cbl
GIVEN:
A follower cargo retrieval operation has been performed
WHEN:
The system checks the follower cargo record status
THEN:
- If the follower cargo is found
- Not deleted, proceed with border arrival update; otherwise, skip to the next follower
File: GCX126R.cbl
GIVEN:
A database retrieval operation has been executed for a follower cargo record
WHEN:
The system evaluates the retrieval result
THEN:
- If cargo found flag is true (ws-cargo-found), proceed to set release information; if cargo found flag is false, skip this follower
- Check if there are more followers to process
File: GCX126R.cbl
GIVEN:
A database lookup has been performed for the follower CCN
WHEN:
Checking the retrieval result
THEN:
If the cargo is found (status indicates found), proceed with release processing; otherwise, skip to the next follower
β Consolidated Acceptance Criteria
- The system processes the border arrival acknowledgment for the follower → the system sets the border arrival acknowledgment flag to TRUE on the follower 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_SetBorderArrivalFlagforFollower(["Start Step"])
E_SetBorderArrivalFlagforFollower(["End Step"])
N_SetBorderArrivalFlagforFollower_Node0{"The system processes the border
arrival acknowledgment for the
follower"}:::decision N_SetBorderArrivalFlagforFollower_Node0_action["The system sets the border arrival
acknowledgment flag to TRUE on the
follower cargo record"]:::main N_SetBorderArrivalFlagforFollower_Node0 -- Yes --> N_SetBorderArrivalFlagforFollower_Node0_action N_SetBorderArrivalFlagforFollower_Node0_action --> E_SetBorderArrivalFlagforFollower S_SetBorderArrivalFlagforFollower --> N_SetBorderArrivalFlagforFollower_Node0 N_SetBorderArrivalFlagforFollower_Node0 -- No --> E_SetBorderArrivalFlagforFollower
arrival acknowledgment for the
follower"}:::decision N_SetBorderArrivalFlagforFollower_Node0_action["The system sets the border arrival
acknowledgment flag to TRUE on the
follower cargo record"]:::main N_SetBorderArrivalFlagforFollower_Node0 -- Yes --> N_SetBorderArrivalFlagforFollower_Node0_action N_SetBorderArrivalFlagforFollower_Node0_action --> E_SetBorderArrivalFlagforFollower S_SetBorderArrivalFlagforFollower --> N_SetBorderArrivalFlagforFollower_Node0 N_SetBorderArrivalFlagforFollower_Node0 -- No --> E_SetBorderArrivalFlagforFollower
File: GCX126R.cbl
GIVEN:
A valid follower cargo record has been retrieved and confirmed to exist
WHEN:
The system processes the border arrival acknowledgment for the follower
THEN:
The system sets the border arrival acknowledgment flag to TRUE on the follower cargo record
β Consolidated Acceptance Criteria
- The system logs the border arrival event for the follower → the system creates a log entry with message '350 ACK - ARRIVAL ACK AT BORDER' including the follower CCN and current date/time
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogArrivalMessageforFollowerCCN(["Start Step"])
E_LogArrivalMessageforFollowerCCN(["End Step"])
N_LogArrivalMessageforFollowerCCN_Node0{"The system logs the border arrival
event for the follower"}:::decision N_LogArrivalMessageforFollowerCCN_Node0_action["The system creates a log entry with
message 350 ACK - ARRIVAL ACK AT
BORDER including the follower CCN
and current datetime"]:::main N_LogArrivalMessageforFollowerCCN_Node0 -- Yes --> N_LogArrivalMessageforFollowerCCN_Node0_action N_LogArrivalMessageforFollowerCCN_Node0_action --> E_LogArrivalMessageforFollowerCCN S_LogArrivalMessageforFollowerCCN --> N_LogArrivalMessageforFollowerCCN_Node0 N_LogArrivalMessageforFollowerCCN_Node0 -- No --> E_LogArrivalMessageforFollowerCCN
event for the follower"}:::decision N_LogArrivalMessageforFollowerCCN_Node0_action["The system creates a log entry with
message 350 ACK - ARRIVAL ACK AT
BORDER including the follower CCN
and current datetime"]:::main N_LogArrivalMessageforFollowerCCN_Node0 -- Yes --> N_LogArrivalMessageforFollowerCCN_Node0_action N_LogArrivalMessageforFollowerCCN_Node0_action --> E_LogArrivalMessageforFollowerCCN S_LogArrivalMessageforFollowerCCN --> N_LogArrivalMessageforFollowerCCN_Node0 N_LogArrivalMessageforFollowerCCN_Node0 -- No --> E_LogArrivalMessageforFollowerCCN
File: GCX126R.cbl
GIVEN:
The border arrival acknowledgment flag has been set on the follower cargo record
WHEN:
The system logs the border arrival event for the follower
THEN:
- The system creates a log entry with message '350 ack - arrival ack at border' including the follower ccn
- Current date/time
β Consolidated Acceptance Criteria
- The system commits the changes for the follower → the system replaces the follower cargo record in the database with the updated border arrival status
- The system commits the changes → the updated cargo record is written back to the cargo table using the Replace function to persist the border arrival acknowledgment
- The system commits the changes → the system updates the cargo record in the database with the new border arrival acknowledgment status
- The system updates the follower cargo record → the follower cargo report segment is replaced in the database with the updated release information
- The system updates the database → the cargo report segment is replaced in the database with the updated follower cargo information
- Persisting the changes to the database → the system calls the database with Replace function to update the follower cargo record, with status code cleared to spaces and accept status set to blank
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateFollowerCargoRecord(["Start Step"])
E_UpdateFollowerCargoRecord(["End Step"])
N_UpdateFollowerCargoRecord_Node0{"The system commits the changes for
the follower"}:::decision N_UpdateFollowerCargoRecord_Node0_action["The system replaces the follower
cargo record in the database with
the updated border arrival status"]:::main N_UpdateFollowerCargoRecord_Node0 -- Yes --> N_UpdateFollowerCargoRecord_Node0_action N_UpdateFollowerCargoRecord_Node0_action --> E_UpdateFollowerCargoRecord S_UpdateFollowerCargoRecord --> N_UpdateFollowerCargoRecord_Node0 N_UpdateFollowerCargoRecord_Node1{"The system commits the changes"}:::decision N_UpdateFollowerCargoRecord_Node1_action["The updated cargo record is written
back to the cargo table using the
Replace function to persist the
border arrival acknowledgment"]:::main N_UpdateFollowerCargoRecord_Node1 -- Yes --> N_UpdateFollowerCargoRecord_Node1_action N_UpdateFollowerCargoRecord_Node1_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node0 -- No --> N_UpdateFollowerCargoRecord_Node1 N_UpdateFollowerCargoRecord_Node2{"The system commits the changes"}:::decision N_UpdateFollowerCargoRecord_Node2_action["The system updates the cargo record
in the database with the new border
arrival acknowledgment status"]:::main N_UpdateFollowerCargoRecord_Node2 -- Yes --> N_UpdateFollowerCargoRecord_Node2_action N_UpdateFollowerCargoRecord_Node2_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node1 -- No --> N_UpdateFollowerCargoRecord_Node2 N_UpdateFollowerCargoRecord_Node3{"The system updates the follower
cargo record"}:::decision N_UpdateFollowerCargoRecord_Node3_action["The follower cargo report segment
is replaced in the database with the
updated release information"]:::main N_UpdateFollowerCargoRecord_Node3 -- Yes --> N_UpdateFollowerCargoRecord_Node3_action N_UpdateFollowerCargoRecord_Node3_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node2 -- No --> N_UpdateFollowerCargoRecord_Node3 N_UpdateFollowerCargoRecord_Node4{"The system updates the database"}:::decision N_UpdateFollowerCargoRecord_Node4_action["The cargo report segment is
replaced in the database with the
updated follower cargo information"]:::main N_UpdateFollowerCargoRecord_Node4 -- Yes --> N_UpdateFollowerCargoRecord_Node4_action N_UpdateFollowerCargoRecord_Node4_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node3 -- No --> N_UpdateFollowerCargoRecord_Node4 N_UpdateFollowerCargoRecord_Node5{"Persisting the changes to the
database"}:::decision N_UpdateFollowerCargoRecord_Node5_action["The system calls the database with
Replace function to update the
follower cargo record, with status
code cleared to spaces and accept
status set to blank"]:::main N_UpdateFollowerCargoRecord_Node5 -- Yes --> N_UpdateFollowerCargoRecord_Node5_action N_UpdateFollowerCargoRecord_Node5_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node4 -- No --> N_UpdateFollowerCargoRecord_Node5 N_UpdateFollowerCargoRecord_Node5 -- No --> E_UpdateFollowerCargoRecord
the follower"}:::decision N_UpdateFollowerCargoRecord_Node0_action["The system replaces the follower
cargo record in the database with
the updated border arrival status"]:::main N_UpdateFollowerCargoRecord_Node0 -- Yes --> N_UpdateFollowerCargoRecord_Node0_action N_UpdateFollowerCargoRecord_Node0_action --> E_UpdateFollowerCargoRecord S_UpdateFollowerCargoRecord --> N_UpdateFollowerCargoRecord_Node0 N_UpdateFollowerCargoRecord_Node1{"The system commits the changes"}:::decision N_UpdateFollowerCargoRecord_Node1_action["The updated cargo record is written
back to the cargo table using the
Replace function to persist the
border arrival acknowledgment"]:::main N_UpdateFollowerCargoRecord_Node1 -- Yes --> N_UpdateFollowerCargoRecord_Node1_action N_UpdateFollowerCargoRecord_Node1_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node0 -- No --> N_UpdateFollowerCargoRecord_Node1 N_UpdateFollowerCargoRecord_Node2{"The system commits the changes"}:::decision N_UpdateFollowerCargoRecord_Node2_action["The system updates the cargo record
in the database with the new border
arrival acknowledgment status"]:::main N_UpdateFollowerCargoRecord_Node2 -- Yes --> N_UpdateFollowerCargoRecord_Node2_action N_UpdateFollowerCargoRecord_Node2_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node1 -- No --> N_UpdateFollowerCargoRecord_Node2 N_UpdateFollowerCargoRecord_Node3{"The system updates the follower
cargo record"}:::decision N_UpdateFollowerCargoRecord_Node3_action["The follower cargo report segment
is replaced in the database with the
updated release information"]:::main N_UpdateFollowerCargoRecord_Node3 -- Yes --> N_UpdateFollowerCargoRecord_Node3_action N_UpdateFollowerCargoRecord_Node3_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node2 -- No --> N_UpdateFollowerCargoRecord_Node3 N_UpdateFollowerCargoRecord_Node4{"The system updates the database"}:::decision N_UpdateFollowerCargoRecord_Node4_action["The cargo report segment is
replaced in the database with the
updated follower cargo information"]:::main N_UpdateFollowerCargoRecord_Node4 -- Yes --> N_UpdateFollowerCargoRecord_Node4_action N_UpdateFollowerCargoRecord_Node4_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node3 -- No --> N_UpdateFollowerCargoRecord_Node4 N_UpdateFollowerCargoRecord_Node5{"Persisting the changes to the
database"}:::decision N_UpdateFollowerCargoRecord_Node5_action["The system calls the database with
Replace function to update the
follower cargo record, with status
code cleared to spaces and accept
status set to blank"]:::main N_UpdateFollowerCargoRecord_Node5 -- Yes --> N_UpdateFollowerCargoRecord_Node5_action N_UpdateFollowerCargoRecord_Node5_action --> E_UpdateFollowerCargoRecord N_UpdateFollowerCargoRecord_Node4 -- No --> N_UpdateFollowerCargoRecord_Node5 N_UpdateFollowerCargoRecord_Node5 -- No --> E_UpdateFollowerCargoRecord
File: GCX126R.cbl
GIVEN:
The follower cargo record has been updated with border arrival acknowledgment flag
WHEN:
The system commits the changes for the follower
THEN:
The system replaces the follower cargo record in the database with the updated border arrival status
File: GCX126R.cbl
GIVEN:
The follower cargo record has been updated with the border arrival acknowledgment flag
WHEN:
The system commits the changes
THEN:
The updated cargo record is written back to the cargo table using the Replace function to persist the border arrival acknowledgment
File: GCX126R.cbl
GIVEN:
The follower cargo record has been modified with the border arrival acknowledgment flag set to TRUE
WHEN:
The system commits the changes
THEN:
The system updates the cargo record in the database with the new border arrival acknowledgment status
File: GCX126R.cbl
GIVEN:
All release information has been set in the follower cargo segment including release date, time, user, status, type, and reason
WHEN:
The system updates the follower cargo record
THEN:
The follower cargo report segment is replaced in the database with the updated release information
File: GCX126R.cbl
GIVEN:
All release information has been applied to the follower cargo record and US manifest has been processed
WHEN:
The system updates the database
THEN:
The cargo report segment is replaced in the database with the updated follower cargo information
File: GCX126R.cbl
GIVEN:
All release information has been set and US manifest has been processed
WHEN:
Persisting the changes to the database
THEN:
- The system calls the database with replace function to update the follower cargo record, with status code cleared to spaces
- Accept status set to blank
β Consolidated Acceptance Criteria
- The M10 segment processing begins → the M10 segment found indicator 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_SetM10SegmentFoundFlag(["Start Step"])
E_SetM10SegmentFoundFlag(["End Step"])
N_SetM10SegmentFoundFlag_Node0{"The M10 segment processing begins"}:::decision
N_SetM10SegmentFoundFlag_Node0_action["The M10 segment found indicator is
set to true"]:::main N_SetM10SegmentFoundFlag_Node0 -- Yes --> N_SetM10SegmentFoundFlag_Node0_action N_SetM10SegmentFoundFlag_Node0_action --> E_SetM10SegmentFoundFlag S_SetM10SegmentFoundFlag --> N_SetM10SegmentFoundFlag_Node0 N_SetM10SegmentFoundFlag_Node0 -- No --> E_SetM10SegmentFoundFlag
set to true"]:::main N_SetM10SegmentFoundFlag_Node0 -- Yes --> N_SetM10SegmentFoundFlag_Node0_action N_SetM10SegmentFoundFlag_Node0_action --> E_SetM10SegmentFoundFlag S_SetM10SegmentFoundFlag --> N_SetM10SegmentFoundFlag_Node0 N_SetM10SegmentFoundFlag_Node0 -- No --> E_SetM10SegmentFoundFlag
File: GCX126R.cbl
GIVEN:
An M10 segment is being processed from the EDI 350 message
WHEN:
The M10 segment processing begins
THEN:
The M10 segment found indicator is set to true
β Consolidated Acceptance Criteria
- Preparing to load M10 segment data → the M10 segment data structure is initialized to spaces/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_InitializeM10SegmentStructure(["Start Step"])
E_InitializeM10SegmentStructure(["End Step"])
N_InitializeM10SegmentStructure_Node0{"Preparing to load M10 segment data"}:::decision
N_InitializeM10SegmentStructure_Node0_action["The M10 segment data structure is
initialized to spaceszeros"]:::main N_InitializeM10SegmentStructure_Node0 -- Yes --> N_InitializeM10SegmentStructure_Node0_action N_InitializeM10SegmentStructure_Node0_action --> E_InitializeM10SegmentStructure S_InitializeM10SegmentStructure --> N_InitializeM10SegmentStructure_Node0 N_InitializeM10SegmentStructure_Node0 -- No --> E_InitializeM10SegmentStructure
initialized to spaceszeros"]:::main N_InitializeM10SegmentStructure_Node0 -- Yes --> N_InitializeM10SegmentStructure_Node0_action N_InitializeM10SegmentStructure_Node0_action --> E_InitializeM10SegmentStructure S_InitializeM10SegmentStructure --> N_InitializeM10SegmentStructure_Node0 N_InitializeM10SegmentStructure_Node0 -- No --> E_InitializeM10SegmentStructure
File: GCX126R.cbl
GIVEN:
The M10 segment found flag has been set
WHEN:
Preparing to load M10 segment data
THEN:
The M10 segment data structure is initialized to spaces/zeros
β Consolidated Acceptance Criteria
- Loading M10 segment data → the message queue table entry at the current line position is moved to the M10 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_MoveMQSTableEntrytoM10Segment(["Start Step"])
E_MoveMQSTableEntrytoM10Segment(["End Step"])
N_MoveMQSTableEntrytoM10Segment_Node0{"Loading M10 segment data"}:::decision
N_MoveMQSTableEntrytoM10Segment_Node0_action["The message queue table entry at
the current line position is moved
to the M10 segment structure"]:::main N_MoveMQSTableEntrytoM10Segment_Node0 -- Yes --> N_MoveMQSTableEntrytoM10Segment_Node0_action N_MoveMQSTableEntrytoM10Segment_Node0_action --> E_MoveMQSTableEntrytoM10Segment S_MoveMQSTableEntrytoM10Segment --> N_MoveMQSTableEntrytoM10Segment_Node0 N_MoveMQSTableEntrytoM10Segment_Node0 -- No --> E_MoveMQSTableEntrytoM10Segment
the current line position is moved
to the M10 segment structure"]:::main N_MoveMQSTableEntrytoM10Segment_Node0 -- Yes --> N_MoveMQSTableEntrytoM10Segment_Node0_action N_MoveMQSTableEntrytoM10Segment_Node0_action --> E_MoveMQSTableEntrytoM10Segment S_MoveMQSTableEntrytoM10Segment --> N_MoveMQSTableEntrytoM10Segment_Node0 N_MoveMQSTableEntrytoM10Segment_Node0 -- No --> E_MoveMQSTableEntrytoM10Segment
File: GCX126R.cbl
GIVEN:
The M10 segment structure has been initialized and the current line in the message queue table contains an M10 segment
WHEN:
Loading M10 segment data
THEN:
The message queue table entry at the current line position is moved to the M10 segment structure
β Consolidated Acceptance Criteria
- Extracting customs notice information → the notice document type code (M10-05-NOTICE-DOC-TYP-CDE) is available from the M10 segment for business 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_ExtractNoticeDocumentTypeCode(["Start Step"])
E_ExtractNoticeDocumentTypeCode(["End Step"])
N_ExtractNoticeDocumentTypeCode_Node0{"Extracting customs notice
information"}:::decision N_ExtractNoticeDocumentTypeCode_Node0_action["The notice document type code
M10-05-NOTICE-DOC-TYP-CDE is
available from the M10 segment for
business processing"]:::main N_ExtractNoticeDocumentTypeCode_Node0 -- Yes --> N_ExtractNoticeDocumentTypeCode_Node0_action N_ExtractNoticeDocumentTypeCode_Node0_action --> E_ExtractNoticeDocumentTypeCode S_ExtractNoticeDocumentTypeCode --> N_ExtractNoticeDocumentTypeCode_Node0 N_ExtractNoticeDocumentTypeCode_Node0 -- No --> E_ExtractNoticeDocumentTypeCode
information"}:::decision N_ExtractNoticeDocumentTypeCode_Node0_action["The notice document type code
M10-05-NOTICE-DOC-TYP-CDE is
available from the M10 segment for
business processing"]:::main N_ExtractNoticeDocumentTypeCode_Node0 -- Yes --> N_ExtractNoticeDocumentTypeCode_Node0_action N_ExtractNoticeDocumentTypeCode_Node0_action --> E_ExtractNoticeDocumentTypeCode S_ExtractNoticeDocumentTypeCode --> N_ExtractNoticeDocumentTypeCode_Node0 N_ExtractNoticeDocumentTypeCode_Node0 -- No --> E_ExtractNoticeDocumentTypeCode
File: GCX126R.cbl
GIVEN:
The M10 segment has been loaded with data from the message queue
WHEN:
Extracting customs notice information
THEN:
The notice document type code (M10-05-NOTICE-DOC-TYP-CDE) is available from the M10 segment for business processing
β Consolidated Acceptance Criteria
- Extracting cargo identification information → the CCN reference (M10-07-CCN) containing up to 25 characters is available from the M10 segment for cargo lookup and 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_ExtractCBSAReferenceCCN(["Start Step"])
E_ExtractCBSAReferenceCCN(["End Step"])
N_ExtractCBSAReferenceCCN_Node0{"Extracting cargo identification
information"}:::decision N_ExtractCBSAReferenceCCN_Node0_action["The CCN reference M10-07-CCN
containing up to 25 characters is
available from the M10 segment for
cargo lookup and processing"]:::main N_ExtractCBSAReferenceCCN_Node0 -- Yes --> N_ExtractCBSAReferenceCCN_Node0_action N_ExtractCBSAReferenceCCN_Node0_action --> E_ExtractCBSAReferenceCCN S_ExtractCBSAReferenceCCN --> N_ExtractCBSAReferenceCCN_Node0 N_ExtractCBSAReferenceCCN_Node0 -- No --> E_ExtractCBSAReferenceCCN
information"}:::decision N_ExtractCBSAReferenceCCN_Node0_action["The CCN reference M10-07-CCN
containing up to 25 characters is
available from the M10 segment for
cargo lookup and processing"]:::main N_ExtractCBSAReferenceCCN_Node0 -- Yes --> N_ExtractCBSAReferenceCCN_Node0_action N_ExtractCBSAReferenceCCN_Node0_action --> E_ExtractCBSAReferenceCCN S_ExtractCBSAReferenceCCN --> N_ExtractCBSAReferenceCCN_Node0 N_ExtractCBSAReferenceCCN_Node0 -- No --> E_ExtractCBSAReferenceCCN
File: GCX126R.cbl
GIVEN:
The M10 segment has been loaded with data from the message queue
WHEN:
Extracting cargo identification information
THEN:
- The ccn reference (m10-07-ccn) containing up to 25 characters is available from the m10 segment for cargo lookup
- Processing
β Consolidated Acceptance Criteria
- The P4 segment processing routine is invoked → the system sets the P4 segment found indicator to TRUE to track that port information has been 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_SetP4SegmentFoundFlagtoTRUE(["Start Step"])
E_SetP4SegmentFoundFlagtoTRUE(["End Step"])
N_SetP4SegmentFoundFlagtoTRUE_Node0{"The P4 segment processing routine
is invoked"}:::decision N_SetP4SegmentFoundFlagtoTRUE_Node0_action["The system sets the P4 segment
found indicator to TRUE to track
that port information has been
received"]:::main N_SetP4SegmentFoundFlagtoTRUE_Node0 -- Yes --> N_SetP4SegmentFoundFlagtoTRUE_Node0_action N_SetP4SegmentFoundFlagtoTRUE_Node0_action --> E_SetP4SegmentFoundFlagtoTRUE S_SetP4SegmentFoundFlagtoTRUE --> N_SetP4SegmentFoundFlagtoTRUE_Node0 N_SetP4SegmentFoundFlagtoTRUE_Node0 -- No --> E_SetP4SegmentFoundFlagtoTRUE
is invoked"}:::decision N_SetP4SegmentFoundFlagtoTRUE_Node0_action["The system sets the P4 segment
found indicator to TRUE to track
that port information has been
received"]:::main N_SetP4SegmentFoundFlagtoTRUE_Node0 -- Yes --> N_SetP4SegmentFoundFlagtoTRUE_Node0_action N_SetP4SegmentFoundFlagtoTRUE_Node0_action --> E_SetP4SegmentFoundFlagtoTRUE S_SetP4SegmentFoundFlagtoTRUE --> N_SetP4SegmentFoundFlagtoTRUE_Node0 N_SetP4SegmentFoundFlagtoTRUE_Node0 -- No --> E_SetP4SegmentFoundFlagtoTRUE
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a P4 segment type is identified in the message queue table entry
WHEN:
The P4 segment processing routine is invoked
THEN:
The system sets the P4 segment found indicator to TRUE to track that port information has been received
β Consolidated Acceptance Criteria
- The P4 segment processing begins → the system initializes the P4 segment data structure by clearing all fields to spaces or 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_InitializeP4SegmentStructure(["Start Step"])
E_InitializeP4SegmentStructure(["End Step"])
N_InitializeP4SegmentStructure_Node0{"The P4 segment processing begins"}:::decision
N_InitializeP4SegmentStructure_Node0_action["The system initializes the P4
segment data structure by clearing
all fields to spaces or zeros"]:::main N_InitializeP4SegmentStructure_Node0 -- Yes --> N_InitializeP4SegmentStructure_Node0_action N_InitializeP4SegmentStructure_Node0_action --> E_InitializeP4SegmentStructure S_InitializeP4SegmentStructure --> N_InitializeP4SegmentStructure_Node0 N_InitializeP4SegmentStructure_Node0 -- No --> E_InitializeP4SegmentStructure
segment data structure by clearing
all fields to spaces or zeros"]:::main N_InitializeP4SegmentStructure_Node0 -- Yes --> N_InitializeP4SegmentStructure_Node0_action N_InitializeP4SegmentStructure_Node0_action --> E_InitializeP4SegmentStructure S_InitializeP4SegmentStructure --> N_InitializeP4SegmentStructure_Node0 N_InitializeP4SegmentStructure_Node0 -- No --> E_InitializeP4SegmentStructure
File: GCX126R.cbl
GIVEN:
A P4 segment is ready to be processed from the EDI 350 message
WHEN:
The P4 segment processing begins
THEN:
The system initializes the P4 segment data structure by clearing all fields to spaces or zeros
β Consolidated Acceptance Criteria
- The system processes the P4 segment entry → the system moves the complete message queue table entry data to the P4 segment structure, making port code (P4-01-PORT-CDE) and sub-location code (P4-02-SUB-LOC-CDE) available for 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_MoveMQTableEntrytoP4Segment(["Start Step"])
E_MoveMQTableEntrytoP4Segment(["End Step"])
N_MoveMQTableEntrytoP4Segment_Node0{"The system processes the P4 segment
entry"}:::decision N_MoveMQTableEntrytoP4Segment_Node0_action["The system moves the complete
message queue table entry data to
the P4 segment structure, making
port code P4-01-PORT-CDE and
sub-location code P4-02-SUB-LOC-CDE
available for use"]:::main N_MoveMQTableEntrytoP4Segment_Node0 -- Yes --> N_MoveMQTableEntrytoP4Segment_Node0_action N_MoveMQTableEntrytoP4Segment_Node0_action --> E_MoveMQTableEntrytoP4Segment S_MoveMQTableEntrytoP4Segment --> N_MoveMQTableEntrytoP4Segment_Node0 N_MoveMQTableEntrytoP4Segment_Node0 -- No --> E_MoveMQTableEntrytoP4Segment
entry"}:::decision N_MoveMQTableEntrytoP4Segment_Node0_action["The system moves the complete
message queue table entry data to
the P4 segment structure, making
port code P4-01-PORT-CDE and
sub-location code P4-02-SUB-LOC-CDE
available for use"]:::main N_MoveMQTableEntrytoP4Segment_Node0 -- Yes --> N_MoveMQTableEntrytoP4Segment_Node0_action N_MoveMQTableEntrytoP4Segment_Node0_action --> E_MoveMQTableEntrytoP4Segment S_MoveMQTableEntrytoP4Segment --> N_MoveMQTableEntrytoP4Segment_Node0 N_MoveMQTableEntrytoP4Segment_Node0 -- No --> E_MoveMQTableEntrytoP4Segment
File: GCX126R.cbl
GIVEN:
The P4 segment structure has been initialized and the message queue table contains the P4 segment data at the current line position
WHEN:
The system processes the P4 segment entry
THEN:
The system moves the complete message queue table entry data to the P4 segment structure, making port code (P4-01-PORT-CDE) and sub-location code (P4-02-SUB-LOC-CDE) available for use
β Consolidated Acceptance Criteria
- The P4 segment processing completes → the system has the port code (4-character identifier) and sub-location code available in the P4 segment structure for use in cargo processing, release operations, and notification 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_P4SegmentReadyforProcessing(["Start Step"])
E_P4SegmentReadyforProcessing(["End Step"])
N_P4SegmentReadyforProcessing_Node0{"The P4 segment processing completes"}:::decision
N_P4SegmentReadyforProcessing_Node0_action["The system has the port code
4-character identifier and
sub-location code available in the
P4 segment structure for use in
cargo processing, release
operations, and notification
messages"]:::main N_P4SegmentReadyforProcessing_Node0 -- Yes --> N_P4SegmentReadyforProcessing_Node0_action N_P4SegmentReadyforProcessing_Node0_action --> E_P4SegmentReadyforProcessing S_P4SegmentReadyforProcessing --> N_P4SegmentReadyforProcessing_Node0 N_P4SegmentReadyforProcessing_Node0 -- No --> E_P4SegmentReadyforProcessing
4-character identifier and
sub-location code available in the
P4 segment structure for use in
cargo processing, release
operations, and notification
messages"]:::main N_P4SegmentReadyforProcessing_Node0 -- Yes --> N_P4SegmentReadyforProcessing_Node0_action N_P4SegmentReadyforProcessing_Node0_action --> E_P4SegmentReadyforProcessing S_P4SegmentReadyforProcessing --> N_P4SegmentReadyforProcessing_Node0 N_P4SegmentReadyforProcessing_Node0 -- No --> E_P4SegmentReadyforProcessing
File: GCX126R.cbl
GIVEN:
The P4 segment data has been successfully moved from the message queue table entry to the P4 segment structure
WHEN:
The P4 segment processing completes
THEN:
The system has the port code (4-character identifier) and sub-location code available in the P4 segment structure for use in cargo processing, release operations, and notification messages
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates MATCHED status (V9-02-MATCHED is true) → the system continues processing without updating cargo status or logging additional 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_MATCHEDDocumentMatched(["Start Step"])
E_MATCHEDDocumentMatched(["End Step"])
N_MATCHEDDocumentMatched_Node0{"The V9 notice reason code indicates
MATCHED status V9-02-MATCHED is true"}:::decision N_MATCHEDDocumentMatched_Node0_action["The system continues processing
without updating cargo status or
logging additional messages"]:::main N_MATCHEDDocumentMatched_Node0 -- Yes --> N_MATCHEDDocumentMatched_Node0_action N_MATCHEDDocumentMatched_Node0_action --> E_MATCHEDDocumentMatched S_MATCHEDDocumentMatched --> N_MATCHEDDocumentMatched_Node0 N_MATCHEDDocumentMatched_Node0 -- No --> E_MATCHEDDocumentMatched
MATCHED status V9-02-MATCHED is true"}:::decision N_MATCHEDDocumentMatched_Node0_action["The system continues processing
without updating cargo status or
logging additional messages"]:::main N_MATCHEDDocumentMatched_Node0 -- Yes --> N_MATCHEDDocumentMatched_Node0_action N_MATCHEDDocumentMatched_Node0_action --> E_MATCHEDDocumentMatched S_MATCHEDDocumentMatched --> N_MATCHEDDocumentMatched_Node0 N_MATCHEDDocumentMatched_Node0 -- No --> E_MATCHEDDocumentMatched
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted from the message queue table entry
WHEN:
The V9 notice reason code indicates MATCHED status (V9-02-MATCHED is true)
THEN:
The system continues processing without updating cargo status or logging additional messages
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates NOT-MATCHED status (V9-02-NOT-MATCHED is true) → the system logs the message 'EDI 350: DOC NOT MATCHED' to the cargo information 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_NOTMATCHEDDocumentNotMatched(["Start Step"])
E_NOTMATCHEDDocumentNotMatched(["End Step"])
N_NOTMATCHEDDocumentNotMatched_Node0{"The V9 notice reason code indicates
NOT-MATCHED status V9-02-NOT-MATCHED
is true"}:::decision N_NOTMATCHEDDocumentNotMatched_Node0_action["The system logs the message EDI
350: DOC NOT MATCHED to the cargo
information log"]:::main N_NOTMATCHEDDocumentNotMatched_Node0 -- Yes --> N_NOTMATCHEDDocumentNotMatched_Node0_action N_NOTMATCHEDDocumentNotMatched_Node0_action --> E_NOTMATCHEDDocumentNotMatched S_NOTMATCHEDDocumentNotMatched --> N_NOTMATCHEDDocumentNotMatched_Node0 N_NOTMATCHEDDocumentNotMatched_Node0 -- No --> E_NOTMATCHEDDocumentNotMatched
NOT-MATCHED status V9-02-NOT-MATCHED
is true"}:::decision N_NOTMATCHEDDocumentNotMatched_Node0_action["The system logs the message EDI
350: DOC NOT MATCHED to the cargo
information log"]:::main N_NOTMATCHEDDocumentNotMatched_Node0 -- Yes --> N_NOTMATCHEDDocumentNotMatched_Node0_action N_NOTMATCHEDDocumentNotMatched_Node0_action --> E_NOTMATCHEDDocumentNotMatched S_NOTMATCHEDDocumentNotMatched --> N_NOTMATCHEDDocumentNotMatched_Node0 N_NOTMATCHEDDocumentNotMatched_Node0 -- No --> E_NOTMATCHEDDocumentNotMatched
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system
WHEN:
The V9 notice reason code indicates NOT-MATCHED status (V9-02-NOT-MATCHED is true)
THEN:
The system logs the message 'EDI 350: DOC NOT MATCHED' to the cargo information log
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates CARGO-COMPLETE status (V9-02-CARGO-COMPLETE is true) → the system logs the message 'EDI 350: CARGO COMPLETE MESSAGE' to the cargo information 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_CARGOCOMPLETECargoComplete(["Start Step"])
E_CARGOCOMPLETECargoComplete(["End Step"])
N_CARGOCOMPLETECargoComplete_Node0{"The V9 notice reason code indicates
CARGO-COMPLETE status
V9-02-CARGO-COMPLETE is true"}:::decision N_CARGOCOMPLETECargoComplete_Node0_action["The system logs the message EDI
350: CARGO COMPLETE MESSAGE to the
cargo information log"]:::main N_CARGOCOMPLETECargoComplete_Node0 -- Yes --> N_CARGOCOMPLETECargoComplete_Node0_action N_CARGOCOMPLETECargoComplete_Node0_action --> E_CARGOCOMPLETECargoComplete S_CARGOCOMPLETECargoComplete --> N_CARGOCOMPLETECargoComplete_Node0 N_CARGOCOMPLETECargoComplete_Node0 -- No --> E_CARGOCOMPLETECargoComplete
CARGO-COMPLETE status
V9-02-CARGO-COMPLETE is true"}:::decision N_CARGOCOMPLETECargoComplete_Node0_action["The system logs the message EDI
350: CARGO COMPLETE MESSAGE to the
cargo information log"]:::main N_CARGOCOMPLETECargoComplete_Node0 -- Yes --> N_CARGOCOMPLETECargoComplete_Node0_action N_CARGOCOMPLETECargoComplete_Node0_action --> E_CARGOCOMPLETECargoComplete S_CARGOCOMPLETECargoComplete --> N_CARGOCOMPLETECargoComplete_Node0 N_CARGOCOMPLETECargoComplete_Node0 -- No --> E_CARGOCOMPLETECargoComplete
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system
WHEN:
The V9 notice reason code indicates CARGO-COMPLETE status (V9-02-CARGO-COMPLETE is true)
THEN:
The system logs the message 'EDI 350: CARGO COMPLETE MESSAGE' to the cargo information log
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates DOC-PKG-COMPLETE status (V9-02-DOC-PKG-COMPLETE is true) and either the first 15 characters of X4 CBSA release reference ID do not match the broker entry OR the first 14 characters do not match the customs transaction number AND the X4 CBSA release reference ID is not spaces → the system updates the cargo broker entry with the first 15 characters of X4 CBSA release reference ID, updates the customs transaction number with the first 14 characters, sets the broker date to current machine date, sets the broker time to current machine time (first 4 digits), logs the message 'EDI 350: DOC PKG COMPLETE : ' concatenated with the first 15 characters of X4 CBSA release reference ID, and replaces the cargo record 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_DOCPKGCOMPLETEDocumentPackageComplete(["Start Step"])
E_DOCPKGCOMPLETEDocumentPackageComplete(["End Step"])
N_DOCPKGCOMPLETEDocumentPackageComplete_Node0{"The V9 notice reason code indicates
DOC-PKG-COMPLETE status
V9-02-DOC-PKG-COMPLETE is true and
either the first 15 characters of X4
CBSA release reference ID do not
match the broker entry OR the first
14 characters do not match the
customs transaction number AND the
X4 CBSA release reference ID is not
spaces"}:::decision N_DOCPKGCOMPLETEDocumentPackageComplete_Node0_action["The system updates the cargo broker
entry with the first 15 characters
of X4 CBSA release reference ID,
updates the customs transaction
number with the first 14 characters,
sets the broker date to current
machine date, sets the broker time
to current machine time first 4
digits, logs the message EDI 350:
DOC PKG COMPLETE : concatenated with
the first 15 characters of X4 CBSA
release reference ID, and replaces
the cargo record in the database"]:::main N_DOCPKGCOMPLETEDocumentPackageComplete_Node0 -- Yes --> N_DOCPKGCOMPLETEDocumentPackageComplete_Node0_action N_DOCPKGCOMPLETEDocumentPackageComplete_Node0_action --> E_DOCPKGCOMPLETEDocumentPackageComplete S_DOCPKGCOMPLETEDocumentPackageComplete --> N_DOCPKGCOMPLETEDocumentPackageComplete_Node0 N_DOCPKGCOMPLETEDocumentPackageComplete_Node0 -- No --> E_DOCPKGCOMPLETEDocumentPackageComplete
DOC-PKG-COMPLETE status
V9-02-DOC-PKG-COMPLETE is true and
either the first 15 characters of X4
CBSA release reference ID do not
match the broker entry OR the first
14 characters do not match the
customs transaction number AND the
X4 CBSA release reference ID is not
spaces"}:::decision N_DOCPKGCOMPLETEDocumentPackageComplete_Node0_action["The system updates the cargo broker
entry with the first 15 characters
of X4 CBSA release reference ID,
updates the customs transaction
number with the first 14 characters,
sets the broker date to current
machine date, sets the broker time
to current machine time first 4
digits, logs the message EDI 350:
DOC PKG COMPLETE : concatenated with
the first 15 characters of X4 CBSA
release reference ID, and replaces
the cargo record in the database"]:::main N_DOCPKGCOMPLETEDocumentPackageComplete_Node0 -- Yes --> N_DOCPKGCOMPLETEDocumentPackageComplete_Node0_action N_DOCPKGCOMPLETEDocumentPackageComplete_Node0_action --> E_DOCPKGCOMPLETEDocumentPackageComplete S_DOCPKGCOMPLETEDocumentPackageComplete --> N_DOCPKGCOMPLETEDocumentPackageComplete_Node0 N_DOCPKGCOMPLETEDocumentPackageComplete_Node0 -- No --> E_DOCPKGCOMPLETEDocumentPackageComplete
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and X4 segment contains CBSA release reference ID
WHEN:
- The v9 notice reason code indicates doc-pkg-complete status (v9-02-doc-pkg-complete is true) and either the first 15 characters of x4 cbsa release reference id do not match the broker entry or the first 14 characters do not match the customs transaction number
- The x4 cbsa release reference id is not spaces
THEN:
The system updates the cargo broker entry with the first 15 characters of X4 CBSA release reference ID, updates the customs transaction number with the first 14 characters, sets the broker date to current machine date, sets the broker time to current machine time (first 4 digits), logs the message 'EDI 350: DOC PKG COMPLETE : ' concatenated with the first 15 characters of X4 CBSA release reference ID, and replaces the cargo record in the database
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates DOC-NOT-ON-FILE status (V9-02-DOC-NOT-ON-FILE is true) and the first character of X4 release document type code equals 'R' → the system logs the message 'EDI 350: DOC NOT ON FILE FOR RELEASE ' concatenated with the first 15 characters of X4 CBSA release reference ID to the cargo information log
- The V9 notice reason code indicates DOC-NOT-ON-FILE status (V9-02-DOC-NOT-ON-FILE is true) and the first character of X4 release document type code does not equal 'R' → the system logs the message 'EDI 350:DOC NOT ON FILE H-BILL CLOSE ' concatenated with the first 25 characters of X4 CBSA release reference ID to the cargo information 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_DOCNOTONFILEDocumentNotOnFile(["Start Step"])
E_DOCNOTONFILEDocumentNotOnFile(["End Step"])
N_DOCNOTONFILEDocumentNotOnFile_Node0{"The V9 notice reason code indicates
DOC-NOT-ON-FILE status
V9-02-DOC-NOT-ON-FILE is true and
the first character of X4 release
document type code equals R"}:::decision N_DOCNOTONFILEDocumentNotOnFile_Node0_action["The system logs the message EDI
350: DOC NOT ON FILE FOR RELEASE
concatenated with the first 15
characters of X4 CBSA release
reference ID to the cargo
information log"]:::main N_DOCNOTONFILEDocumentNotOnFile_Node0 -- Yes --> N_DOCNOTONFILEDocumentNotOnFile_Node0_action N_DOCNOTONFILEDocumentNotOnFile_Node0_action --> E_DOCNOTONFILEDocumentNotOnFile S_DOCNOTONFILEDocumentNotOnFile --> N_DOCNOTONFILEDocumentNotOnFile_Node0 N_DOCNOTONFILEDocumentNotOnFile_Node1{"The V9 notice reason code indicates
DOC-NOT-ON-FILE status
V9-02-DOC-NOT-ON-FILE is true and
the first character of X4 release
document type code does not equal R"}:::decision N_DOCNOTONFILEDocumentNotOnFile_Node1_action["The system logs the message EDI
350:DOC NOT ON FILE H-BILL CLOSE
concatenated with the first 25
characters of X4 CBSA release
reference ID to the cargo
information log"]:::main N_DOCNOTONFILEDocumentNotOnFile_Node1 -- Yes --> N_DOCNOTONFILEDocumentNotOnFile_Node1_action N_DOCNOTONFILEDocumentNotOnFile_Node1_action --> E_DOCNOTONFILEDocumentNotOnFile N_DOCNOTONFILEDocumentNotOnFile_Node0 -- No --> N_DOCNOTONFILEDocumentNotOnFile_Node1 N_DOCNOTONFILEDocumentNotOnFile_Node1 -- No --> E_DOCNOTONFILEDocumentNotOnFile
DOC-NOT-ON-FILE status
V9-02-DOC-NOT-ON-FILE is true and
the first character of X4 release
document type code equals R"}:::decision N_DOCNOTONFILEDocumentNotOnFile_Node0_action["The system logs the message EDI
350: DOC NOT ON FILE FOR RELEASE
concatenated with the first 15
characters of X4 CBSA release
reference ID to the cargo
information log"]:::main N_DOCNOTONFILEDocumentNotOnFile_Node0 -- Yes --> N_DOCNOTONFILEDocumentNotOnFile_Node0_action N_DOCNOTONFILEDocumentNotOnFile_Node0_action --> E_DOCNOTONFILEDocumentNotOnFile S_DOCNOTONFILEDocumentNotOnFile --> N_DOCNOTONFILEDocumentNotOnFile_Node0 N_DOCNOTONFILEDocumentNotOnFile_Node1{"The V9 notice reason code indicates
DOC-NOT-ON-FILE status
V9-02-DOC-NOT-ON-FILE is true and
the first character of X4 release
document type code does not equal R"}:::decision N_DOCNOTONFILEDocumentNotOnFile_Node1_action["The system logs the message EDI
350:DOC NOT ON FILE H-BILL CLOSE
concatenated with the first 25
characters of X4 CBSA release
reference ID to the cargo
information log"]:::main N_DOCNOTONFILEDocumentNotOnFile_Node1 -- Yes --> N_DOCNOTONFILEDocumentNotOnFile_Node1_action N_DOCNOTONFILEDocumentNotOnFile_Node1_action --> E_DOCNOTONFILEDocumentNotOnFile N_DOCNOTONFILEDocumentNotOnFile_Node0 -- No --> N_DOCNOTONFILEDocumentNotOnFile_Node1 N_DOCNOTONFILEDocumentNotOnFile_Node1 -- No --> E_DOCNOTONFILEDocumentNotOnFile
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and X4 segment contains release document type code
WHEN:
The V9 notice reason code indicates DOC-NOT-ON-FILE status (V9-02-DOC-NOT-ON-FILE is true) and the first character of X4 release document type code equals 'R'
THEN:
The system logs the message 'EDI 350: DOC NOT ON FILE FOR RELEASE ' concatenated with the first 15 characters of X4 CBSA release reference ID to the cargo information log
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and X4 segment contains release document type code
WHEN:
The V9 notice reason code indicates DOC-NOT-ON-FILE status (V9-02-DOC-NOT-ON-FILE is true) and the first character of X4 release document type code does not equal 'R'
THEN:
The system logs the message 'EDI 350:DOC NOT ON FILE H-BILL CLOSE ' concatenated with the first 25 characters of X4 CBSA release reference ID to the cargo information log
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates REPORTED status (V9-02-REPORTED is true) → the system logs the message 'EDI 350: CARGO REPORTED' to the cargo information 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_REPORTEDCargoReported(["Start Step"])
E_REPORTEDCargoReported(["End Step"])
N_REPORTEDCargoReported_Node0{"The V9 notice reason code indicates
REPORTED status V9-02-REPORTED is
true"}:::decision N_REPORTEDCargoReported_Node0_action["The system logs the message EDI
350: CARGO REPORTED to the cargo
information log"]:::main N_REPORTEDCargoReported_Node0 -- Yes --> N_REPORTEDCargoReported_Node0_action N_REPORTEDCargoReported_Node0_action --> E_REPORTEDCargoReported S_REPORTEDCargoReported --> N_REPORTEDCargoReported_Node0 N_REPORTEDCargoReported_Node0 -- No --> E_REPORTEDCargoReported
REPORTED status V9-02-REPORTED is
true"}:::decision N_REPORTEDCargoReported_Node0_action["The system logs the message EDI
350: CARGO REPORTED to the cargo
information log"]:::main N_REPORTEDCargoReported_Node0 -- Yes --> N_REPORTEDCargoReported_Node0_action N_REPORTEDCargoReported_Node0_action --> E_REPORTEDCargoReported S_REPORTEDCargoReported --> N_REPORTEDCargoReported_Node0 N_REPORTEDCargoReported_Node0 -- No --> E_REPORTEDCargoReported
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system
WHEN:
The V9 notice reason code indicates REPORTED status (V9-02-REPORTED is true)
THEN:
The system logs the message 'EDI 350: CARGO REPORTED' to the cargo information log
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates ARRIVED status (V9-02-ARRIVED is true) → the system logs the message 'EDI 350: CARGO ARRIVED AT PORT ' concatenated with the first 4 characters of P4 port code to the cargo information 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_ARRIVEDCargoArrivedatPort(["Start Step"])
E_ARRIVEDCargoArrivedatPort(["End Step"])
N_ARRIVEDCargoArrivedatPort_Node0{"The V9 notice reason code indicates
ARRIVED status V9-02-ARRIVED is true"}:::decision N_ARRIVEDCargoArrivedatPort_Node0_action["The system logs the message EDI
350: CARGO ARRIVED AT PORT
concatenated with the first 4
characters of P4 port code to the
cargo information log"]:::main N_ARRIVEDCargoArrivedatPort_Node0 -- Yes --> N_ARRIVEDCargoArrivedatPort_Node0_action N_ARRIVEDCargoArrivedatPort_Node0_action --> E_ARRIVEDCargoArrivedatPort S_ARRIVEDCargoArrivedatPort --> N_ARRIVEDCargoArrivedatPort_Node0 N_ARRIVEDCargoArrivedatPort_Node0 -- No --> E_ARRIVEDCargoArrivedatPort
ARRIVED status V9-02-ARRIVED is true"}:::decision N_ARRIVEDCargoArrivedatPort_Node0_action["The system logs the message EDI
350: CARGO ARRIVED AT PORT
concatenated with the first 4
characters of P4 port code to the
cargo information log"]:::main N_ARRIVEDCargoArrivedatPort_Node0 -- Yes --> N_ARRIVEDCargoArrivedatPort_Node0_action N_ARRIVEDCargoArrivedatPort_Node0_action --> E_ARRIVEDCargoArrivedatPort S_ARRIVEDCargoArrivedatPort --> N_ARRIVEDCargoArrivedatPort_Node0 N_ARRIVEDCargoArrivedatPort_Node0 -- No --> E_ARRIVEDCargoArrivedatPort
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and P4 segment contains port code
WHEN:
The V9 notice reason code indicates ARRIVED status (V9-02-ARRIVED is true)
THEN:
The system logs the message 'EDI 350: CARGO ARRIVED AT PORT ' concatenated with the first 4 characters of P4 port code to the cargo information log
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates RELEASED status (V9-02-RELEASED is true) → the system clears destination station numbers, sets release date to current machine date, sets release time to current machine time, sets release by to current user ID, sets current status to 'RELEASED', sets release status to 'R', sets release type to 'A', clears error or release status index, clears error status, sets release reason to X4 CBSA release reference ID (first 15 characters) concatenated with '/' and P4 port code (first 4 characters), logs the message 'EDI 350: RELEASE : ' concatenated with X4 CBSA release reference ID (first 15 characters) and ' AT PORT ' and P4 port code (first 4 characters), processes associated US manifest records, replaces the cargo record in the database, and if the cargo is a master manifest then processes all follower manifests (up to 100) with the same release 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_RELEASEDCargoReleased(["Start Step"])
E_RELEASEDCargoReleased(["End Step"])
N_RELEASEDCargoReleased_Node0{"The V9 notice reason code indicates
RELEASED status V9-02-RELEASED is
true"}:::decision N_RELEASEDCargoReleased_Node0_action["The system clears destination
station numbers, sets release date
to current machine date, sets
release time to current machine
time, sets release by to current
user ID, sets current status to
RELEASED , sets release status to R
, sets release type to A , clears
error or release status index,
clears error status, sets release
reason to X4 CBSA release reference
ID first 15 characters concatenated
with and P4 port code first 4
characters, logs the message EDI
350: RELEASE : concatenated with X4
CBSA release reference ID first 15
characters and AT PORT and P4 port
code first 4 characters, processes
associated US manifest records,
replaces the cargo record in the
database, and if the cargo is a
master manifest then processes all
follower manifests up to 100 with
the same release information"]:::main N_RELEASEDCargoReleased_Node0 -- Yes --> N_RELEASEDCargoReleased_Node0_action N_RELEASEDCargoReleased_Node0_action --> E_RELEASEDCargoReleased S_RELEASEDCargoReleased --> N_RELEASEDCargoReleased_Node0 N_RELEASEDCargoReleased_Node0 -- No --> E_RELEASEDCargoReleased
RELEASED status V9-02-RELEASED is
true"}:::decision N_RELEASEDCargoReleased_Node0_action["The system clears destination
station numbers, sets release date
to current machine date, sets
release time to current machine
time, sets release by to current
user ID, sets current status to
RELEASED , sets release status to R
, sets release type to A , clears
error or release status index,
clears error status, sets release
reason to X4 CBSA release reference
ID first 15 characters concatenated
with and P4 port code first 4
characters, logs the message EDI
350: RELEASE : concatenated with X4
CBSA release reference ID first 15
characters and AT PORT and P4 port
code first 4 characters, processes
associated US manifest records,
replaces the cargo record in the
database, and if the cargo is a
master manifest then processes all
follower manifests up to 100 with
the same release information"]:::main N_RELEASEDCargoReleased_Node0 -- Yes --> N_RELEASEDCargoReleased_Node0_action N_RELEASEDCargoReleased_Node0_action --> E_RELEASEDCargoReleased S_RELEASEDCargoReleased --> N_RELEASEDCargoReleased_Node0 N_RELEASEDCargoReleased_Node0 -- No --> E_RELEASEDCargoReleased
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and X4 segment contains CBSA release reference ID and P4 segment contains port code
WHEN:
The V9 notice reason code indicates RELEASED status (V9-02-RELEASED is true)
THEN:
The system clears destination station numbers, sets release date to current machine date, sets release time to current machine time, sets release by to current user ID, sets current status to 'RELEASED', sets release status to 'R', sets release type to 'A', clears error or release status index, clears error status, sets release reason to X4 CBSA release reference ID (first 15 characters) concatenated with '/' and P4 port code (first 4 characters), logs the message 'EDI 350: RELEASE : ' concatenated with X4 CBSA release reference ID (first 15 characters) and ' AT PORT ' and P4 port code (first 4 characters), processes associated US manifest records, replaces the cargo record in the database, and if the cargo is a master manifest then processes all follower manifests (up to 100) with the same release information
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates AUTH-TO-DELIVER status (V9-02-AUTH-TO-DELIVER is true) → the system logs the message 'EDI 350: ACCEPTED - CSA', sets cargo status to CSA delivery, sets CSA authorization to deliver received flag to true, replaces the cargo record in the database, and processes associated US manifest records
- The V9 notice reason code indicates AUTH-TO-DELIVER status (V9-02-AUTH-TO-DELIVER is true) → the system logs the message 'EDI 350: NOT ACCEPTED - NON-CSA' and processes associated US manifest records without updating 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_AUTHTODELIVERAuthorizedtoDeliver(["Start Step"])
E_AUTHTODELIVERAuthorizedtoDeliver(["End Step"])
N_AUTHTODELIVERAuthorizedtoDeliver_Node0{"The V9 notice reason code indicates
AUTH-TO-DELIVER status
V9-02-AUTH-TO-DELIVER is true"}:::decision N_AUTHTODELIVERAuthorizedtoDeliver_Node0_action["The system logs the message EDI
350: ACCEPTED - CSA , sets cargo
status to CSA delivery, sets CSA
authorization to deliver received
flag to true, replaces the cargo
record in the database, and
processes associated US manifest
records"]:::main N_AUTHTODELIVERAuthorizedtoDeliver_Node0 -- Yes --> N_AUTHTODELIVERAuthorizedtoDeliver_Node0_action N_AUTHTODELIVERAuthorizedtoDeliver_Node0_action --> E_AUTHTODELIVERAuthorizedtoDeliver S_AUTHTODELIVERAuthorizedtoDeliver --> N_AUTHTODELIVERAuthorizedtoDeliver_Node0 N_AUTHTODELIVERAuthorizedtoDeliver_Node1{"The V9 notice reason code indicates
AUTH-TO-DELIVER status
V9-02-AUTH-TO-DELIVER is true"}:::decision N_AUTHTODELIVERAuthorizedtoDeliver_Node1_action["The system logs the message EDI
350: NOT ACCEPTED - NON-CSA and
processes associated US manifest
records without updating the cargo
record"]:::main N_AUTHTODELIVERAuthorizedtoDeliver_Node1 -- Yes --> N_AUTHTODELIVERAuthorizedtoDeliver_Node1_action N_AUTHTODELIVERAuthorizedtoDeliver_Node1_action --> E_AUTHTODELIVERAuthorizedtoDeliver N_AUTHTODELIVERAuthorizedtoDeliver_Node0 -- No --> N_AUTHTODELIVERAuthorizedtoDeliver_Node1 N_AUTHTODELIVERAuthorizedtoDeliver_Node1 -- No --> E_AUTHTODELIVERAuthorizedtoDeliver
AUTH-TO-DELIVER status
V9-02-AUTH-TO-DELIVER is true"}:::decision N_AUTHTODELIVERAuthorizedtoDeliver_Node0_action["The system logs the message EDI
350: ACCEPTED - CSA , sets cargo
status to CSA delivery, sets CSA
authorization to deliver received
flag to true, replaces the cargo
record in the database, and
processes associated US manifest
records"]:::main N_AUTHTODELIVERAuthorizedtoDeliver_Node0 -- Yes --> N_AUTHTODELIVERAuthorizedtoDeliver_Node0_action N_AUTHTODELIVERAuthorizedtoDeliver_Node0_action --> E_AUTHTODELIVERAuthorizedtoDeliver S_AUTHTODELIVERAuthorizedtoDeliver --> N_AUTHTODELIVERAuthorizedtoDeliver_Node0 N_AUTHTODELIVERAuthorizedtoDeliver_Node1{"The V9 notice reason code indicates
AUTH-TO-DELIVER status
V9-02-AUTH-TO-DELIVER is true"}:::decision N_AUTHTODELIVERAuthorizedtoDeliver_Node1_action["The system logs the message EDI
350: NOT ACCEPTED - NON-CSA and
processes associated US manifest
records without updating the cargo
record"]:::main N_AUTHTODELIVERAuthorizedtoDeliver_Node1 -- Yes --> N_AUTHTODELIVERAuthorizedtoDeliver_Node1_action N_AUTHTODELIVERAuthorizedtoDeliver_Node1_action --> E_AUTHTODELIVERAuthorizedtoDeliver N_AUTHTODELIVERAuthorizedtoDeliver_Node0 -- No --> N_AUTHTODELIVERAuthorizedtoDeliver_Node1 N_AUTHTODELIVERAuthorizedtoDeliver_Node1 -- No --> E_AUTHTODELIVERAuthorizedtoDeliver
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and the cargo CSA indicator is ON
WHEN:
The V9 notice reason code indicates AUTH-TO-DELIVER status (V9-02-AUTH-TO-DELIVER is true)
THEN:
The system logs the message 'EDI 350: ACCEPTED - CSA', sets cargo status to CSA delivery, sets CSA authorization to deliver received flag to true, replaces the cargo record in the database, and processes associated US manifest records
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processing and a V9 segment has been extracted with cargo found in the system and the cargo CSA indicator is OFF
WHEN:
The V9 notice reason code indicates AUTH-TO-DELIVER status (V9-02-AUTH-TO-DELIVER is true)
THEN:
The system logs the message 'EDI 350: NOT ACCEPTED - NON-CSA' and processes associated US manifest records without updating the cargo record
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates HELD status (V9-02-HELD is true) → the system logs the message 'EDI 350: GOODS HELD FOR EXAMINATION', sets cargo status to HOLD, replaces the cargo record in the database, and if the first 4 characters of the cargo CCN equal '6105' then prepares a Merlin hold notification containing equipment ID, waybill number, CCN, destination station name and state, and manifest upon station name, and sends the notification to the Merlin 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_HELDGoodsHeldforExamination(["Start Step"])
E_HELDGoodsHeldforExamination(["End Step"])
N_HELDGoodsHeldforExamination_Node0{"The V9 notice reason code indicates
HELD status V9-02-HELD is true"}:::decision N_HELDGoodsHeldforExamination_Node0_action["The system logs the message EDI
350: GOODS HELD FOR EXAMINATION ,
sets cargo status to HOLD, replaces
the cargo record in the database,
and if the first 4 characters of the
cargo CCN equal 6105 then prepares a
Merlin hold notification containing
equipment ID, waybill number, CCN,
destination station name and state,
and manifest upon station name, and
sends the notification to the Merlin
system"]:::main N_HELDGoodsHeldforExamination_Node0 -- Yes --> N_HELDGoodsHeldforExamination_Node0_action N_HELDGoodsHeldforExamination_Node0_action --> E_HELDGoodsHeldforExamination S_HELDGoodsHeldforExamination --> N_HELDGoodsHeldforExamination_Node0 N_HELDGoodsHeldforExamination_Node0 -- No --> E_HELDGoodsHeldforExamination
HELD status V9-02-HELD is true"}:::decision N_HELDGoodsHeldforExamination_Node0_action["The system logs the message EDI
350: GOODS HELD FOR EXAMINATION ,
sets cargo status to HOLD, replaces
the cargo record in the database,
and if the first 4 characters of the
cargo CCN equal 6105 then prepares a
Merlin hold notification containing
equipment ID, waybill number, CCN,
destination station name and state,
and manifest upon station name, and
sends the notification to the Merlin
system"]:::main N_HELDGoodsHeldforExamination_Node0 -- Yes --> N_HELDGoodsHeldforExamination_Node0_action N_HELDGoodsHeldforExamination_Node0_action --> E_HELDGoodsHeldforExamination S_HELDGoodsHeldforExamination --> N_HELDGoodsHeldforExamination_Node0 N_HELDGoodsHeldforExamination_Node0 -- No --> E_HELDGoodsHeldforExamination
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system
WHEN:
The V9 notice reason code indicates HELD status (V9-02-HELD is true)
THEN:
- The system logs the message 'edi 350: goods held for examination', sets cargo status to hold, replaces the cargo record in the database, and if the first 4 characters of the cargo ccn equal '6105' then prepares a merlin hold notification containing equipment id, waybill number, ccn, destination station name
- State, and manifest upon station name, and sends the notification to the merlin system
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates DECON status (V9-02-DECON is true) → the system clears destination station numbers, sets release date to current machine date, sets release time to current machine time, sets release by to current user ID, sets current status to 'RELEASED', sets release status to 'R', sets release type to 'A', clears error or release status index, clears error status, sets release reason to 'DECONSOLIDATION AT ' concatenated with P4 port code (first 4 characters), logs the message 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4 port code (first 4 characters), processes associated US manifest records, replaces the cargo record in the database, and if the cargo is a master manifest then processes all follower manifests (up to 100) with the same release 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_DECONDeconsolidationRelease(["Start Step"])
E_DECONDeconsolidationRelease(["End Step"])
N_DECONDeconsolidationRelease_Node0{"The V9 notice reason code indicates
DECON status V9-02-DECON is true"}:::decision N_DECONDeconsolidationRelease_Node0_action["The system clears destination
station numbers, sets release date
to current machine date, sets
release time to current machine
time, sets release by to current
user ID, sets current status to
RELEASED , sets release status to R
, sets release type to A , clears
error or release status index,
clears error status, sets release
reason to DECONSOLIDATION AT
concatenated with P4 port code first
4 characters, logs the message EDI
350: RELEASE VIA DECON AT PORT
concatenated with P4 port code first
4 characters, processes associated
US manifest records, replaces the
cargo record in the database, and if
the cargo is a master manifest then
processes all follower manifests up
to 100 with the same release
information"]:::main N_DECONDeconsolidationRelease_Node0 -- Yes --> N_DECONDeconsolidationRelease_Node0_action N_DECONDeconsolidationRelease_Node0_action --> E_DECONDeconsolidationRelease S_DECONDeconsolidationRelease --> N_DECONDeconsolidationRelease_Node0 N_DECONDeconsolidationRelease_Node0 -- No --> E_DECONDeconsolidationRelease
DECON status V9-02-DECON is true"}:::decision N_DECONDeconsolidationRelease_Node0_action["The system clears destination
station numbers, sets release date
to current machine date, sets
release time to current machine
time, sets release by to current
user ID, sets current status to
RELEASED , sets release status to R
, sets release type to A , clears
error or release status index,
clears error status, sets release
reason to DECONSOLIDATION AT
concatenated with P4 port code first
4 characters, logs the message EDI
350: RELEASE VIA DECON AT PORT
concatenated with P4 port code first
4 characters, processes associated
US manifest records, replaces the
cargo record in the database, and if
the cargo is a master manifest then
processes all follower manifests up
to 100 with the same release
information"]:::main N_DECONDeconsolidationRelease_Node0 -- Yes --> N_DECONDeconsolidationRelease_Node0_action N_DECONDeconsolidationRelease_Node0_action --> E_DECONDeconsolidationRelease S_DECONDeconsolidationRelease --> N_DECONDeconsolidationRelease_Node0 N_DECONDeconsolidationRelease_Node0 -- No --> E_DECONDeconsolidationRelease
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system and P4 segment contains port code
WHEN:
The V9 notice reason code indicates DECON status (V9-02-DECON is true)
THEN:
The system clears destination station numbers, sets release date to current machine date, sets release time to current machine time, sets release by to current user ID, sets current status to 'RELEASED', sets release status to 'R', sets release type to 'A', clears error or release status index, clears error status, sets release reason to 'DECONSOLIDATION AT ' concatenated with P4 port code (first 4 characters), logs the message 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4 port code (first 4 characters), processes associated US manifest records, replaces the cargo record in the database, and if the cargo is a master manifest then processes all follower manifests (up to 100) with the same release information
β Consolidated Acceptance Criteria
- The V9 notice reason code does not match any of the recognized status codes (MATCHED, NOT-MATCHED, CARGO-COMPLETE, DOC-PKG-COMPLETE, DOC-NOT-ON-FILE, REPORTED, ARRIVED, RELEASED, AUTH-TO-DELIVER, HELD, or DECON) → the system logs the message 'EDI 350: INVALID NOTICE REASON CODE ' concatenated with the first 4 characters of the V9 notice reason code to the cargo information 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_OtherInvalidNoticeReason(["Start Step"])
E_OtherInvalidNoticeReason(["End Step"])
N_OtherInvalidNoticeReason_Node0{"The V9 notice reason code does not
match any of the recognized status
codes MATCHED, NOT-MATCHED,
CARGO-COMPLETE, DOC-PKG-COMPLETE,
DOC-NOT-ON-FILE, REPORTED, ARRIVED,
RELEASED, AUTH-TO-DELIVER, HELD, or
DECON"}:::decision N_OtherInvalidNoticeReason_Node0_action["The system logs the message EDI
350: INVALID NOTICE REASON CODE
concatenated with the first 4
characters of the V9 notice reason
code to the cargo information log"]:::main N_OtherInvalidNoticeReason_Node0 -- Yes --> N_OtherInvalidNoticeReason_Node0_action N_OtherInvalidNoticeReason_Node0_action --> E_OtherInvalidNoticeReason S_OtherInvalidNoticeReason --> N_OtherInvalidNoticeReason_Node0 N_OtherInvalidNoticeReason_Node0 -- No --> E_OtherInvalidNoticeReason
match any of the recognized status
codes MATCHED, NOT-MATCHED,
CARGO-COMPLETE, DOC-PKG-COMPLETE,
DOC-NOT-ON-FILE, REPORTED, ARRIVED,
RELEASED, AUTH-TO-DELIVER, HELD, or
DECON"}:::decision N_OtherInvalidNoticeReason_Node0_action["The system logs the message EDI
350: INVALID NOTICE REASON CODE
concatenated with the first 4
characters of the V9 notice reason
code to the cargo information log"]:::main N_OtherInvalidNoticeReason_Node0 -- Yes --> N_OtherInvalidNoticeReason_Node0_action N_OtherInvalidNoticeReason_Node0_action --> E_OtherInvalidNoticeReason S_OtherInvalidNoticeReason --> N_OtherInvalidNoticeReason_Node0 N_OtherInvalidNoticeReason_Node0 -- No --> E_OtherInvalidNoticeReason
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is being processed and a V9 segment has been extracted with cargo found in the system
WHEN:
The V9 notice reason code does not match any of the recognized status codes (MATCHED, NOT-MATCHED, CARGO-COMPLETE, DOC-PKG-COMPLETE, DOC-NOT-ON-FILE, REPORTED, ARRIVED, RELEASED, AUTH-TO-DELIVER, HELD, or DECON)
THEN:
The system logs the message 'EDI 350: INVALID NOTICE REASON CODE ' concatenated with the first 4 characters of the V9 notice reason code to the cargo information log
β Consolidated Acceptance Criteria
- The system begins processing the V9 segment → the system initializes the V9 segment data structure to spaces or 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_InitializeV9Segment(["Start Step"])
E_InitializeV9Segment(["End Step"])
N_InitializeV9Segment_Node0{"The system begins processing the V9
segment"}:::decision N_InitializeV9Segment_Node0_action["The system initializes the V9
segment data structure to spaces or
zeros"]:::main N_InitializeV9Segment_Node0 -- Yes --> N_InitializeV9Segment_Node0_action N_InitializeV9Segment_Node0_action --> E_InitializeV9Segment S_InitializeV9Segment --> N_InitializeV9Segment_Node0 N_InitializeV9Segment_Node0 -- No --> E_InitializeV9Segment
segment"}:::decision N_InitializeV9Segment_Node0_action["The system initializes the V9
segment data structure to spaces or
zeros"]:::main N_InitializeV9Segment_Node0 -- Yes --> N_InitializeV9Segment_Node0_action N_InitializeV9Segment_Node0_action --> E_InitializeV9Segment S_InitializeV9Segment --> N_InitializeV9Segment_Node0 N_InitializeV9Segment_Node0 -- No --> E_InitializeV9Segment
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a V9 segment table ID has been identified in the message queue table entry
WHEN:
The system begins processing the V9 segment
THEN:
The system initializes the V9 segment data structure to spaces or zeros
β Consolidated Acceptance Criteria
- The system processes the V9 segment table entry → the system moves the message queue table entry at the current line position to the V9 segment data 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_MoveMQSTableEntrytoV9Segment(["Start Step"])
E_MoveMQSTableEntrytoV9Segment(["End Step"])
N_MoveMQSTableEntrytoV9Segment_Node0{"The system processes the V9 segment
table entry"}:::decision N_MoveMQSTableEntrytoV9Segment_Node0_action["The system moves the message queue
table entry at the current line
position to the V9 segment data
structure"]:::main N_MoveMQSTableEntrytoV9Segment_Node0 -- Yes --> N_MoveMQSTableEntrytoV9Segment_Node0_action N_MoveMQSTableEntrytoV9Segment_Node0_action --> E_MoveMQSTableEntrytoV9Segment S_MoveMQSTableEntrytoV9Segment --> N_MoveMQSTableEntrytoV9Segment_Node0 N_MoveMQSTableEntrytoV9Segment_Node0 -- No --> E_MoveMQSTableEntrytoV9Segment
table entry"}:::decision N_MoveMQSTableEntrytoV9Segment_Node0_action["The system moves the message queue
table entry at the current line
position to the V9 segment data
structure"]:::main N_MoveMQSTableEntrytoV9Segment_Node0 -- Yes --> N_MoveMQSTableEntrytoV9Segment_Node0_action N_MoveMQSTableEntrytoV9Segment_Node0_action --> E_MoveMQSTableEntrytoV9Segment S_MoveMQSTableEntrytoV9Segment --> N_MoveMQSTableEntrytoV9Segment_Node0 N_MoveMQSTableEntrytoV9Segment_Node0 -- No --> E_MoveMQSTableEntrytoV9Segment
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and the V9 segment structure has been initialized and the current line in the message queue table contains a V9 segment
WHEN:
The system processes the V9 segment table entry
THEN:
The system moves the message queue table entry at the current line position to the V9 segment data structure
β Consolidated Acceptance Criteria
- The V9 segment extraction is complete → the system sets the V9 segment 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_SetV9SegmentFoundFlag(["Start Step"])
E_SetV9SegmentFoundFlag(["End Step"])
N_SetV9SegmentFoundFlag_Node0{"The V9 segment extraction is
complete"}:::decision N_SetV9SegmentFoundFlag_Node0_action["The system sets the V9 segment
found flag to true"]:::main N_SetV9SegmentFoundFlag_Node0 -- Yes --> N_SetV9SegmentFoundFlag_Node0_action N_SetV9SegmentFoundFlag_Node0_action --> E_SetV9SegmentFoundFlag S_SetV9SegmentFoundFlag --> N_SetV9SegmentFoundFlag_Node0 N_SetV9SegmentFoundFlag_Node0 -- No --> E_SetV9SegmentFoundFlag
complete"}:::decision N_SetV9SegmentFoundFlag_Node0_action["The system sets the V9 segment
found flag to true"]:::main N_SetV9SegmentFoundFlag_Node0 -- Yes --> N_SetV9SegmentFoundFlag_Node0_action N_SetV9SegmentFoundFlag_Node0_action --> E_SetV9SegmentFoundFlag S_SetV9SegmentFoundFlag --> N_SetV9SegmentFoundFlag_Node0 N_SetV9SegmentFoundFlag_Node0 -- No --> E_SetV9SegmentFoundFlag
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and the V9 segment data has been extracted from the message queue table entry
WHEN:
The V9 segment extraction is complete
THEN:
The system sets the V9 segment found flag to true
β Consolidated Acceptance Criteria
- The K1 segment is identified and needs to be stored for later logging → the system sets the K1 segment found indicator to true, initializes the K1 segment structure, copies the message queue table entry to the K1 segment structure, increments the K1 remark index counter by 1, and stores the K1 segment in the remark array 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_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging(["Start Step"])
E_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging(["End Step"])
N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0{"The K1 segment is identified and
needs to be stored for later logging"}:::decision N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0_action["The system sets the K1 segment
found indicator to true, initializes
the K1 segment structure, copies the
message queue table entry to the K1
segment structure, increments the K1
remark index counter by 1, and
stores the K1 segment in the remark
array at the current index position"]:::main N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0 -- Yes --> N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0_action N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0_action --> E_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging S_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging --> N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0 N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0 -- No --> E_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging
needs to be stored for later logging"}:::decision N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0_action["The system sets the K1 segment
found indicator to true, initializes
the K1 segment structure, copies the
message queue table entry to the K1
segment structure, increments the K1
remark index counter by 1, and
stores the K1 segment in the remark
array at the current index position"]:::main N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0 -- Yes --> N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0_action N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0_action --> E_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging S_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging --> N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0 N_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging_Node0 -- No --> E_ProcessK1RemarksSegmentStoreupto9freeformmessagesegmentsinarrayforlaterlogging
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed and a K1 segment entry is encountered in the message queue table at the current line position
WHEN:
- The k1 segment is identified
- Needs to be stored for later logging
THEN:
The system sets the K1 segment found indicator to true, initializes the K1 segment structure, copies the message queue table entry to the K1 segment structure, increments the K1 remark index counter by 1, and stores the K1 segment in the remark array at the current index position
β Consolidated Acceptance Criteria
- The K1 remark index counter exceeds the maximum allowed value of 9 → the system resets the K1 remark index counter to the maximum value of 9, preventing any additional remarks beyond the ninth position from being stored, and the current K1 segment overwrites the remark at position 9
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IndexExceedsMaximumof9(["Start Step"])
E_IndexExceedsMaximumof9(["End Step"])
N_IndexExceedsMaximumof9_Node0{"The K1 remark index counter exceeds
the maximum allowed value of 9"}:::decision N_IndexExceedsMaximumof9_Node0_action["The system resets the K1 remark
index counter to the maximum value
of 9, preventing any additional
remarks beyond the ninth position
from being stored, and the current
K1 segment overwrites the remark at
position 9"]:::main N_IndexExceedsMaximumof9_Node0 -- Yes --> N_IndexExceedsMaximumof9_Node0_action N_IndexExceedsMaximumof9_Node0_action --> E_IndexExceedsMaximumof9 S_IndexExceedsMaximumof9 --> N_IndexExceedsMaximumof9_Node0 N_IndexExceedsMaximumof9_Node0 -- No --> E_IndexExceedsMaximumof9
the maximum allowed value of 9"}:::decision N_IndexExceedsMaximumof9_Node0_action["The system resets the K1 remark
index counter to the maximum value
of 9, preventing any additional
remarks beyond the ninth position
from being stored, and the current
K1 segment overwrites the remark at
position 9"]:::main N_IndexExceedsMaximumof9_Node0 -- Yes --> N_IndexExceedsMaximumof9_Node0_action N_IndexExceedsMaximumof9_Node0_action --> E_IndexExceedsMaximumof9 S_IndexExceedsMaximumof9 --> N_IndexExceedsMaximumof9_Node0 N_IndexExceedsMaximumof9_Node0 -- No --> E_IndexExceedsMaximumof9
File: GCX126R.cbl
GIVEN:
The K1 remark index counter has been incremented after receiving a K1 segment
WHEN:
The K1 remark index counter exceeds the maximum allowed value of 9
THEN:
The system resets the K1 remark index counter to the maximum value of 9, preventing any additional remarks beyond the ninth position from being stored, and the current K1 segment overwrites the remark at position 9
β Consolidated Acceptance Criteria
- The K1 segment needs to be stored in the remark array → the system stores the complete K1 segment structure in the remark array at the position indicated by the current K1 remark index counter 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_StoreK1SegmentinRemarkArrayatCurrentIndex(["Start Step"])
E_StoreK1SegmentinRemarkArrayatCurrentIndex(["End Step"])
N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0{"The K1 segment needs to be stored
in the remark array"}:::decision N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0_action["The system stores the complete K1
segment structure in the remark
array at the position indicated by
the current K1 remark index counter
value"]:::main N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0 -- Yes --> N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0_action N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0_action --> E_StoreK1SegmentinRemarkArrayatCurrentIndex S_StoreK1SegmentinRemarkArrayatCurrentIndex --> N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0 N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0 -- No --> E_StoreK1SegmentinRemarkArrayatCurrentIndex
in the remark array"}:::decision N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0_action["The system stores the complete K1
segment structure in the remark
array at the position indicated by
the current K1 remark index counter
value"]:::main N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0 -- Yes --> N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0_action N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0_action --> E_StoreK1SegmentinRemarkArrayatCurrentIndex S_StoreK1SegmentinRemarkArrayatCurrentIndex --> N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0 N_StoreK1SegmentinRemarkArrayatCurrentIndex_Node0 -- No --> E_StoreK1SegmentinRemarkArrayatCurrentIndex
File: GCX126R.cbl
GIVEN:
The K1 remark index counter is within the valid range of 1 to 9 after incrementing
WHEN:
The K1 segment needs to be stored in the remark array
THEN:
The system stores the complete K1 segment structure in the remark array at the position indicated by the current K1 remark index counter value
β Consolidated Acceptance Criteria
- K1 segment processing begins → the system sets the K1 segment found indicator flag to true to track that at least one K1 remark segment has been processed in the 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_SetK1SegmentFoundFlag(["Start Step"])
E_SetK1SegmentFoundFlag(["End Step"])
N_SetK1SegmentFoundFlag_Node0{"K1 segment processing begins"}:::decision
N_SetK1SegmentFoundFlag_Node0_action["The system sets the K1 segment
found indicator flag to true to
track that at least one K1 remark
segment has been processed in the
current transaction"]:::main N_SetK1SegmentFoundFlag_Node0 -- Yes --> N_SetK1SegmentFoundFlag_Node0_action N_SetK1SegmentFoundFlag_Node0_action --> E_SetK1SegmentFoundFlag S_SetK1SegmentFoundFlag --> N_SetK1SegmentFoundFlag_Node0 N_SetK1SegmentFoundFlag_Node0 -- No --> E_SetK1SegmentFoundFlag
found indicator flag to true to
track that at least one K1 remark
segment has been processed in the
current transaction"]:::main N_SetK1SegmentFoundFlag_Node0 -- Yes --> N_SetK1SegmentFoundFlag_Node0_action N_SetK1SegmentFoundFlag_Node0_action --> E_SetK1SegmentFoundFlag S_SetK1SegmentFoundFlag --> N_SetK1SegmentFoundFlag_Node0 N_SetK1SegmentFoundFlag_Node0 -- No --> E_SetK1SegmentFoundFlag
File: GCX126R.cbl
GIVEN:
A K1 segment is identified in the current message queue table entry
WHEN:
K1 segment processing begins
THEN:
The system sets the K1 segment found indicator flag to true to track that at least one K1 remark segment has been processed in the current transaction
β Consolidated Acceptance Criteria
- The N7 segment processing begins → the system sets the N7 segment found indicator to TRUE to track that equipment information is present in this 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_SetN7SegmentFoundFlag(["Start Step"])
E_SetN7SegmentFoundFlag(["End Step"])
N_SetN7SegmentFoundFlag_Node0{"The N7 segment processing begins"}:::decision
N_SetN7SegmentFoundFlag_Node0_action["The system sets the N7 segment
found indicator to TRUE to track
that equipment information is
present in this transaction"]:::main N_SetN7SegmentFoundFlag_Node0 -- Yes --> N_SetN7SegmentFoundFlag_Node0_action N_SetN7SegmentFoundFlag_Node0_action --> E_SetN7SegmentFoundFlag S_SetN7SegmentFoundFlag --> N_SetN7SegmentFoundFlag_Node0 N_SetN7SegmentFoundFlag_Node0 -- No --> E_SetN7SegmentFoundFlag
found indicator to TRUE to track
that equipment information is
present in this transaction"]:::main N_SetN7SegmentFoundFlag_Node0 -- Yes --> N_SetN7SegmentFoundFlag_Node0_action N_SetN7SegmentFoundFlag_Node0_action --> E_SetN7SegmentFoundFlag S_SetN7SegmentFoundFlag --> N_SetN7SegmentFoundFlag_Node0 N_SetN7SegmentFoundFlag_Node0 -- No --> E_SetN7SegmentFoundFlag
File: GCX126R.cbl
GIVEN:
An N7 segment is being processed from the EDI 350 message queue
WHEN:
The N7 segment processing begins
THEN:
The system sets the N7 segment found indicator to TRUE to track that equipment information is present in this transaction
β Consolidated Acceptance Criteria
- The N7 segment found flag has been set → the system initializes the N7 segment structure to spaces 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_InitializeN7SegmentStructure(["Start Step"])
E_InitializeN7SegmentStructure(["End Step"])
N_InitializeN7SegmentStructure_Node0{"The N7 segment found flag has been
set"}:::decision N_InitializeN7SegmentStructure_Node0_action["The system initializes the N7
segment structure to spaces to clear
any previous data"]:::main N_InitializeN7SegmentStructure_Node0 -- Yes --> N_InitializeN7SegmentStructure_Node0_action N_InitializeN7SegmentStructure_Node0_action --> E_InitializeN7SegmentStructure S_InitializeN7SegmentStructure --> N_InitializeN7SegmentStructure_Node0 N_InitializeN7SegmentStructure_Node0 -- No --> E_InitializeN7SegmentStructure
set"}:::decision N_InitializeN7SegmentStructure_Node0_action["The system initializes the N7
segment structure to spaces to clear
any previous data"]:::main N_InitializeN7SegmentStructure_Node0 -- Yes --> N_InitializeN7SegmentStructure_Node0_action N_InitializeN7SegmentStructure_Node0_action --> E_InitializeN7SegmentStructure S_InitializeN7SegmentStructure --> N_InitializeN7SegmentStructure_Node0 N_InitializeN7SegmentStructure_Node0 -- No --> E_InitializeN7SegmentStructure
File: GCX126R.cbl
GIVEN:
An N7 segment is ready to be processed
WHEN:
The N7 segment found flag has been set
THEN:
The system initializes the N7 segment structure to spaces to clear any previous data
β Consolidated Acceptance Criteria
- The current line in the message queue table contains an N7 segment → the system moves the message queue table entry data to the N7 segment structure 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_MoveMQTableEntrytoN7Segment(["Start Step"])
E_MoveMQTableEntrytoN7Segment(["End Step"])
N_MoveMQTableEntrytoN7Segment_Node0{"The current line in the message
queue table contains an N7 segment"}:::decision N_MoveMQTableEntrytoN7Segment_Node0_action["The system moves the message queue
table entry data to the N7 segment
structure for further processing"]:::main N_MoveMQTableEntrytoN7Segment_Node0 -- Yes --> N_MoveMQTableEntrytoN7Segment_Node0_action N_MoveMQTableEntrytoN7Segment_Node0_action --> E_MoveMQTableEntrytoN7Segment S_MoveMQTableEntrytoN7Segment --> N_MoveMQTableEntrytoN7Segment_Node0 N_MoveMQTableEntrytoN7Segment_Node0 -- No --> E_MoveMQTableEntrytoN7Segment
queue table contains an N7 segment"}:::decision N_MoveMQTableEntrytoN7Segment_Node0_action["The system moves the message queue
table entry data to the N7 segment
structure for further processing"]:::main N_MoveMQTableEntrytoN7Segment_Node0 -- Yes --> N_MoveMQTableEntrytoN7Segment_Node0_action N_MoveMQTableEntrytoN7Segment_Node0_action --> E_MoveMQTableEntrytoN7Segment S_MoveMQTableEntrytoN7Segment --> N_MoveMQTableEntrytoN7Segment_Node0 N_MoveMQTableEntrytoN7Segment_Node0 -- No --> E_MoveMQTableEntrytoN7Segment
File: GCX126R.cbl
GIVEN:
The N7 segment structure has been initialized
WHEN:
The current line in the message queue table contains an N7 segment
THEN:
The system moves the message queue table entry data to the N7 segment structure for further processing
β Consolidated Acceptance Criteria
- If the equipment number field in the N7 segment → if the equipment number field contains spaces, skip equipment logging; otherwise, proceed to log the equipment 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_EquipmentNumberPresent(["Start Step"])
E_EquipmentNumberPresent(["End Step"])
N_EquipmentNumberPresent_Node0{"The system evaluates the equipment
number field in the N7 segment"}:::decision N_EquipmentNumberPresent_Node0_action["If the equipment number field
contains spaces, skip equipment
logging otherwise, proceed to log
the equipment number"]:::main N_EquipmentNumberPresent_Node0 -- Yes --> N_EquipmentNumberPresent_Node0_action N_EquipmentNumberPresent_Node0_action --> E_EquipmentNumberPresent S_EquipmentNumberPresent --> N_EquipmentNumberPresent_Node0 N_EquipmentNumberPresent_Node0 -- No --> E_EquipmentNumberPresent
number field in the N7 segment"}:::decision N_EquipmentNumberPresent_Node0_action["If the equipment number field
contains spaces, skip equipment
logging otherwise, proceed to log
the equipment number"]:::main N_EquipmentNumberPresent_Node0 -- Yes --> N_EquipmentNumberPresent_Node0_action N_EquipmentNumberPresent_Node0_action --> E_EquipmentNumberPresent S_EquipmentNumberPresent --> N_EquipmentNumberPresent_Node0 N_EquipmentNumberPresent_Node0 -- No --> E_EquipmentNumberPresent
File: GCX126R.cbl
GIVEN:
The N7 segment data has been loaded into the working structure
WHEN:
The system evaluates the equipment number field in the N7 segment
THEN:
If the equipment number field contains spaces, skip equipment logging; otherwise, proceed to log the equipment number
β Consolidated Acceptance Criteria
- The equipment number validation passes → the system stores the equipment number value from the N7 segment into the log data array at the current log 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_StoreEquipmentNumberinLogArray(["Start Step"])
E_StoreEquipmentNumberinLogArray(["End Step"])
N_StoreEquipmentNumberinLogArray_Node0{"The equipment number validation
passes"}:::decision N_StoreEquipmentNumberinLogArray_Node0_action["The system stores the equipment
number value from the N7 segment
into the log data array at the
current log index position"]:::main N_StoreEquipmentNumberinLogArray_Node0 -- Yes --> N_StoreEquipmentNumberinLogArray_Node0_action N_StoreEquipmentNumberinLogArray_Node0_action --> E_StoreEquipmentNumberinLogArray S_StoreEquipmentNumberinLogArray --> N_StoreEquipmentNumberinLogArray_Node0 N_StoreEquipmentNumberinLogArray_Node0 -- No --> E_StoreEquipmentNumberinLogArray
passes"}:::decision N_StoreEquipmentNumberinLogArray_Node0_action["The system stores the equipment
number value from the N7 segment
into the log data array at the
current log index position"]:::main N_StoreEquipmentNumberinLogArray_Node0 -- Yes --> N_StoreEquipmentNumberinLogArray_Node0_action N_StoreEquipmentNumberinLogArray_Node0_action --> E_StoreEquipmentNumberinLogArray S_StoreEquipmentNumberinLogArray --> N_StoreEquipmentNumberinLogArray_Node0 N_StoreEquipmentNumberinLogArray_Node0 -- No --> E_StoreEquipmentNumberinLogArray
File: GCX126R.cbl
GIVEN:
The N7 segment contains a non-blank equipment number
WHEN:
The equipment number validation passes
THEN:
The system stores the equipment number value from the N7 segment into the log data array at the current log index position
β Consolidated Acceptance Criteria
- The log entry is being prepared → the system sets the log type field to 'EDI 350 EQP#:' to identify this entry as equipment information from an EDI 350 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_SetLogTypeasEDI350EQP(["Start Step"])
E_SetLogTypeasEDI350EQP(["End Step"])
N_SetLogTypeasEDI350EQP_Node0{"The log entry is being prepared"}:::decision
N_SetLogTypeasEDI350EQP_Node0_action["The system sets the log type field
to EDI 350 EQP: to identify this
entry as equipment information from
an EDI 350 message"]:::main N_SetLogTypeasEDI350EQP_Node0 -- Yes --> N_SetLogTypeasEDI350EQP_Node0_action N_SetLogTypeasEDI350EQP_Node0_action --> E_SetLogTypeasEDI350EQP S_SetLogTypeasEDI350EQP --> N_SetLogTypeasEDI350EQP_Node0 N_SetLogTypeasEDI350EQP_Node0 -- No --> E_SetLogTypeasEDI350EQP
to EDI 350 EQP: to identify this
entry as equipment information from
an EDI 350 message"]:::main N_SetLogTypeasEDI350EQP_Node0 -- Yes --> N_SetLogTypeasEDI350EQP_Node0_action N_SetLogTypeasEDI350EQP_Node0_action --> E_SetLogTypeasEDI350EQP S_SetLogTypeasEDI350EQP --> N_SetLogTypeasEDI350EQP_Node0 N_SetLogTypeasEDI350EQP_Node0 -- No --> E_SetLogTypeasEDI350EQP
File: GCX126R.cbl
GIVEN:
The equipment number has been stored in the log data array
WHEN:
The log entry is being prepared
THEN:
The system sets the log type field to 'EDI 350 EQP#:' to identify this entry as equipment information from an EDI 350 message
β Consolidated Acceptance Criteria
- The equipment logging is complete → the system increments the log index counter by 1 to point to the next available log 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_IncrementLogIndexCounter(["Start Step"])
E_IncrementLogIndexCounter(["End Step"])
N_IncrementLogIndexCounter_Node0{"The equipment logging is complete"}:::decision
N_IncrementLogIndexCounter_Node0_action["The system increments the log index
counter by 1 to point to the next
available log entry position"]:::main N_IncrementLogIndexCounter_Node0 -- Yes --> N_IncrementLogIndexCounter_Node0_action N_IncrementLogIndexCounter_Node0_action --> E_IncrementLogIndexCounter S_IncrementLogIndexCounter --> N_IncrementLogIndexCounter_Node0 N_IncrementLogIndexCounter_Node0 -- No --> E_IncrementLogIndexCounter
counter by 1 to point to the next
available log entry position"]:::main N_IncrementLogIndexCounter_Node0 -- Yes --> N_IncrementLogIndexCounter_Node0_action N_IncrementLogIndexCounter_Node0_action --> E_IncrementLogIndexCounter S_IncrementLogIndexCounter --> N_IncrementLogIndexCounter_Node0 N_IncrementLogIndexCounter_Node0 -- No --> E_IncrementLogIndexCounter
File: GCX126R.cbl
GIVEN:
The equipment number and log type have been recorded in the log array
WHEN:
The equipment logging is complete
THEN:
The system increments the log index counter by 1 to point to the next available log entry position
β Consolidated Acceptance Criteria
- The equipment number validation determines the field is blank → the system skips all equipment logging steps and proceeds to end the N7 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_SkipLogging(["Start Step"])
E_SkipLogging(["End Step"])
N_SkipLogging_Node0{"The equipment number validation
determines the field is blank"}:::decision N_SkipLogging_Node0_action["The system skips all equipment
logging steps and proceeds to end
the N7 segment processing"]:::main N_SkipLogging_Node0 -- Yes --> N_SkipLogging_Node0_action N_SkipLogging_Node0_action --> E_SkipLogging S_SkipLogging --> N_SkipLogging_Node0 N_SkipLogging_Node0 -- No --> E_SkipLogging
determines the field is blank"}:::decision N_SkipLogging_Node0_action["The system skips all equipment
logging steps and proceeds to end
the N7 segment processing"]:::main N_SkipLogging_Node0 -- Yes --> N_SkipLogging_Node0_action N_SkipLogging_Node0_action --> E_SkipLogging S_SkipLogging --> N_SkipLogging_Node0 N_SkipLogging_Node0 -- No --> E_SkipLogging
File: GCX126R.cbl
GIVEN:
The N7 segment has been loaded and the equipment number field contains only spaces
WHEN:
The equipment number validation determines the field is blank
THEN:
- The system skips all equipment logging steps
- Proceeds to end the n7 segment processing
β Consolidated Acceptance Criteria
- The X4-03-ENTRY-TYP-CDE equals '992' AND the message type indicator WS-CONV-350 is true → proceed with train arrival processing for conveyance 350
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsX4SegmentEntryType992ANDConveyance350(["Start Step"])
E_IsX4SegmentEntryType992ANDConveyance350(["End Step"])
N_IsX4SegmentEntryType992ANDConveyance350_Node0{"The X4-03-ENTRY-TYP-CDE equals 992
AND the message type indicator
WS-CONV-350 is true"}:::decision N_IsX4SegmentEntryType992ANDConveyance350_Node0_action["Proceed with train arrival
processing for conveyance 350"]:::main N_IsX4SegmentEntryType992ANDConveyance350_Node0 -- Yes --> N_IsX4SegmentEntryType992ANDConveyance350_Node0_action N_IsX4SegmentEntryType992ANDConveyance350_Node0_action --> E_IsX4SegmentEntryType992ANDConveyance350 S_IsX4SegmentEntryType992ANDConveyance350 --> N_IsX4SegmentEntryType992ANDConveyance350_Node0 N_IsX4SegmentEntryType992ANDConveyance350_Node0 -- No --> E_IsX4SegmentEntryType992ANDConveyance350
AND the message type indicator
WS-CONV-350 is true"}:::decision N_IsX4SegmentEntryType992ANDConveyance350_Node0_action["Proceed with train arrival
processing for conveyance 350"]:::main N_IsX4SegmentEntryType992ANDConveyance350_Node0 -- Yes --> N_IsX4SegmentEntryType992ANDConveyance350_Node0_action N_IsX4SegmentEntryType992ANDConveyance350_Node0_action --> E_IsX4SegmentEntryType992ANDConveyance350 S_IsX4SegmentEntryType992ANDConveyance350 --> N_IsX4SegmentEntryType992ANDConveyance350_Node0 N_IsX4SegmentEntryType992ANDConveyance350_Node0 -- No --> E_IsX4SegmentEntryType992ANDConveyance350
File: GCX126R.cbl
GIVEN:
An X4 segment is being processed from the EDI 350 message
WHEN:
The X4-03-ENTRY-TYP-CDE equals '992' AND the message type indicator WS-CONV-350 is true
THEN:
Proceed with train arrival processing for conveyance 350
β Consolidated Acceptance Criteria
- The first 25 characters of X4-04-REL-DOC-ID are extracted → store the extracted train ID in B4-KEY-VALUE for database lookup AND store in WS-PREV-CRN for 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_ExtractTrainIDfromX404RELDOCIDFirst25Characters(["Start Step"])
E_ExtractTrainIDfromX404RELDOCIDFirst25Characters(["End Step"])
N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0{"The first 25 characters of
X4-04-REL-DOC-ID are extracted"}:::decision N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0_action["Store the extracted train ID in
B4-KEY-VALUE for database lookup AND
store in WS-PREV-CRN for duplicate
checking"]:::main N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0 -- Yes --> N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0_action N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0_action --> E_ExtractTrainIDfromX404RELDOCIDFirst25Characters S_ExtractTrainIDfromX404RELDOCIDFirst25Characters --> N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0 N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0 -- No --> E_ExtractTrainIDfromX404RELDOCIDFirst25Characters
X4-04-REL-DOC-ID are extracted"}:::decision N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0_action["Store the extracted train ID in
B4-KEY-VALUE for database lookup AND
store in WS-PREV-CRN for duplicate
checking"]:::main N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0 -- Yes --> N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0_action N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0_action --> E_ExtractTrainIDfromX404RELDOCIDFirst25Characters S_ExtractTrainIDfromX404RELDOCIDFirst25Characters --> N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0 N_ExtractTrainIDfromX404RELDOCIDFirst25Characters_Node0 -- No --> E_ExtractTrainIDfromX404RELDOCIDFirst25Characters
File: GCX126R.cbl
GIVEN:
A conveyance 350 message with entry type '992' is being processed AND the train ID is different from the previous one
WHEN:
The first 25 characters of X4-04-REL-DOC-ID are extracted
THEN:
- Store the extracted train id in b4-key-value for database lookup
- Store in ws-prev-crn for duplicate checking
β Consolidated Acceptance Criteria
- The system performs a database lookup using the train ID → return the train record if found OR return a not-found status code in CC-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_VerifyTrainExistsinSystemDatabase(["Start Step"])
E_VerifyTrainExistsinSystemDatabase(["End Step"])
N_VerifyTrainExistsinSystemDatabase_Node0{"The system performs a database
lookup using the train ID"}:::decision N_VerifyTrainExistsinSystemDatabase_Node0_action["Return the train record if found OR
return a not-found status code in
CC-STATUS-CODE"]:::main N_VerifyTrainExistsinSystemDatabase_Node0 -- Yes --> N_VerifyTrainExistsinSystemDatabase_Node0_action N_VerifyTrainExistsinSystemDatabase_Node0_action --> E_VerifyTrainExistsinSystemDatabase S_VerifyTrainExistsinSystemDatabase --> N_VerifyTrainExistsinSystemDatabase_Node0 N_VerifyTrainExistsinSystemDatabase_Node0 -- No --> E_VerifyTrainExistsinSystemDatabase
lookup using the train ID"}:::decision N_VerifyTrainExistsinSystemDatabase_Node0_action["Return the train record if found OR
return a not-found status code in
CC-STATUS-CODE"]:::main N_VerifyTrainExistsinSystemDatabase_Node0 -- Yes --> N_VerifyTrainExistsinSystemDatabase_Node0_action N_VerifyTrainExistsinSystemDatabase_Node0_action --> E_VerifyTrainExistsinSystemDatabase S_VerifyTrainExistsinSystemDatabase --> N_VerifyTrainExistsinSystemDatabase_Node0 N_VerifyTrainExistsinSystemDatabase_Node0 -- No --> E_VerifyTrainExistsinSystemDatabase
File: GCX126R.cbl
GIVEN:
A train ID has been extracted from X4-04-REL-DOC-ID (first 25 characters) AND stored in B4-KEY-VALUE
WHEN:
The system performs a database lookup using the train ID
THEN:
Return the train record if found OR return a not-found status code in CC-STATUS-CODE
β Consolidated Acceptance Criteria
- The train verification fails → prepare error report with message 'UNKNOWN TRAIN ENTRY IN EDI 350' concatenated with the train ID in MRLN-DTL-LINE(01) AND add message 'THIS CRN WAS NOT FOUND.' in MRLN-DTL-LINE(03) AND set MRLN-LINE to 4 AND set message type indicator to unknown (88-Z110-MRLN-TYPE-IS-UNKNOWN)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND(["Start Step"])
E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND(["End Step"])
N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0{"The train verification fails"}:::decision
N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0_action["Prepare error report with message
UNKNOWN TRAIN ENTRY IN EDI 350
concatenated with the train ID in
MRLN-DTL-LINE01 AND add message THIS
CRN WAS NOT FOUND. in
MRLN-DTL-LINE03 AND set MRLN-LINE to
4 AND set message type indicator to
unknown 88-Z110-MRLN-TYPE-IS-UNKNOWN"]:::main N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0 -- Yes --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0_action N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0_action --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND S_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0 N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0 -- No --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND
UNKNOWN TRAIN ENTRY IN EDI 350
concatenated with the train ID in
MRLN-DTL-LINE01 AND add message THIS
CRN WAS NOT FOUND. in
MRLN-DTL-LINE03 AND set MRLN-LINE to
4 AND set message type indicator to
unknown 88-Z110-MRLN-TYPE-IS-UNKNOWN"]:::main N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0 -- Yes --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0_action N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0_action --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND S_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND --> N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0 N_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND_Node0 -- No --> E_PrepareErrorReportUNKNOWNTRAINENTRYINEDI350IncludeTrainIDTHISCRNWASNOTFOUND
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A train ID from X4-04-REL-DOC-ID (first 25 characters) has been looked up in the database AND the train was not found (CC-STATUS-CODE is not SPACES)
WHEN:
The train verification fails
THEN:
- Prepare error report with message 'unknown train entry in edi 350' concatenated with the train id in mrln-dtl-line(01) and add message 'this crn was not found.' in mrln-dtl-line(03) and set mrln-line to 4
- Set message type indicator to unknown (88-z110-mrln-type-is-unknown)
β Consolidated Acceptance Criteria
- The error notification is ready to be sent → invoke the Merlin notification preparation process (Z110-PREP-EMCSEND) to send the error report
- The error report is ready to be sent → the system invokes the Merlin notification preparation process to send the error report to the configured 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_SendErrorReporttoMerlin(["Start Step"])
E_SendErrorReporttoMerlin(["End Step"])
N_SendErrorReporttoMerlin_Node0{"The error notification is ready to
be sent"}:::decision N_SendErrorReporttoMerlin_Node0_action["Invoke the Merlin notification
preparation process
Z110-PREP-EMCSEND to send the error
report"]:::exclusion N_SendErrorReporttoMerlin_Node0 -- Yes -->|Alternative| N_SendErrorReporttoMerlin_Node0_action N_SendErrorReporttoMerlin_Node0_action --> E_SendErrorReporttoMerlin S_SendErrorReporttoMerlin --> N_SendErrorReporttoMerlin_Node0 N_SendErrorReporttoMerlin_Node1{"The error report is ready to be
sent"}:::decision N_SendErrorReporttoMerlin_Node1_action["The system invokes the Merlin
notification preparation process to
send the error report to the
configured recipients"]:::exclusion N_SendErrorReporttoMerlin_Node1 -- Yes -->|Alternative| N_SendErrorReporttoMerlin_Node1_action N_SendErrorReporttoMerlin_Node1_action --> E_SendErrorReporttoMerlin N_SendErrorReporttoMerlin_Node0 -- No --> N_SendErrorReporttoMerlin_Node1 N_SendErrorReporttoMerlin_Node1 -- No --> E_SendErrorReporttoMerlin
be sent"}:::decision N_SendErrorReporttoMerlin_Node0_action["Invoke the Merlin notification
preparation process
Z110-PREP-EMCSEND to send the error
report"]:::exclusion N_SendErrorReporttoMerlin_Node0 -- Yes -->|Alternative| N_SendErrorReporttoMerlin_Node0_action N_SendErrorReporttoMerlin_Node0_action --> E_SendErrorReporttoMerlin S_SendErrorReporttoMerlin --> N_SendErrorReporttoMerlin_Node0 N_SendErrorReporttoMerlin_Node1{"The error report is ready to be
sent"}:::decision N_SendErrorReporttoMerlin_Node1_action["The system invokes the Merlin
notification preparation process to
send the error report to the
configured recipients"]:::exclusion N_SendErrorReporttoMerlin_Node1 -- Yes -->|Alternative| N_SendErrorReporttoMerlin_Node1_action N_SendErrorReporttoMerlin_Node1_action --> E_SendErrorReporttoMerlin N_SendErrorReporttoMerlin_Node0 -- No --> N_SendErrorReporttoMerlin_Node1 N_SendErrorReporttoMerlin_Node1 -- No --> E_SendErrorReporttoMerlin
File: GCX126R.cbl
GIVEN:
An error report has been prepared for an unknown train entry with message type set to unknown
WHEN:
The error notification is ready to be sent
THEN:
Invoke the Merlin notification preparation process (Z110-PREP-EMCSEND) to send the error report
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An error report has been fully prepared with message 'UNKNOWN TRAIN ENTRY IN EDI 350' followed by the train ID, message 'THIS CRN WAS NOT FOUND.', report line count set to 4, and report type marked as 'UNKNOWN'
WHEN:
The error report is ready to be sent
THEN:
The system invokes the Merlin notification preparation process to send the error report to the configured recipients
β Consolidated Acceptance Criteria
- The arrival acknowledgment needs to be logged → move log information to GCX105 structure AND set GCX105-DATE to current machine century and date (CC-MACHINE-CENTURY concatenated with CC-MACHINE-DATE-X) AND set GCX105-TIME to current machine time (CC-MACHINE-TIME-X) AND set GCX105-ACTION-CODE to 'ZZZ' AND set GCX105-TRAIN-OR-US-CCN to the train ID from X4-04-REL-DOC-ID (first 25 characters) AND set GCX105-CA-TRAIN indicator to true AND set GCX105-MESSAGE to '350 ACK - ARRIVAL ACK AT BORDER'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER(["Start Step"])
E_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER(["End Step"])
N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0{"The arrival acknowledgment needs to
be logged"}:::decision N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0_action["Move log information to GCX105
structure AND set GCX105-DATE to
current machine century and date
CC-MACHINE-CENTURY concatenated with
CC-MACHINE-DATE-X AND set
GCX105-TIME to current machine time
CC-MACHINE-TIME-X AND set
GCX105-ACTION-CODE to ZZZ AND set
GCX105-TRAIN-OR-US-CCN to the train
ID from X4-04-REL-DOC-ID first 25
characters AND set GCX105-CA-TRAIN
indicator to true AND set
GCX105-MESSAGE to 350 ACK - ARRIVAL
ACK AT BORDER"]:::main N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0_action N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER S_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER --> N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0 N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0 -- No --> E_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER
be logged"}:::decision N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0_action["Move log information to GCX105
structure AND set GCX105-DATE to
current machine century and date
CC-MACHINE-CENTURY concatenated with
CC-MACHINE-DATE-X AND set
GCX105-TIME to current machine time
CC-MACHINE-TIME-X AND set
GCX105-ACTION-CODE to ZZZ AND set
GCX105-TRAIN-OR-US-CCN to the train
ID from X4-04-REL-DOC-ID first 25
characters AND set GCX105-CA-TRAIN
indicator to true AND set
GCX105-MESSAGE to 350 ACK - ARRIVAL
ACK AT BORDER"]:::main N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0_action N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER S_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER --> N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0 N_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER_Node0 -- No --> E_LogArrivalAcknowledgmentDateCurrentMachineDateTimeCurrentMachineTimeActionCodeZZZTrainIDFromX4SegmentMessage350ACKARRIVALACKATBORDER
File: GCX126R.cbl
GIVEN:
A train has been successfully verified in the system database (CC-STATUS-CODE equals SPACES) AND the train ID is available from X4-04-REL-DOC-ID (first 25 characters)
WHEN:
The arrival acknowledgment needs to be logged
THEN:
- Move log information to gcx105 structure
- Set gcx105-date to current machine century
- Date (cc-machine-century concatenated with cc-machine-date-x) and set gcx105-time to current machine time (cc-machine-time-x) and set gcx105-action-code to 'zzz' and set gcx105-train-or-us-ccn to the train id from x4-04-rel-doc-id (first 25 characters) and set gcx105-ca-train indicator to true
- Set gcx105-message to '350 ack - arrival ack at border'
β Consolidated Acceptance Criteria
- The log entry is ready to be persisted → invoke the Z300-SPAWN-GCT1051E process to create the log entry in the 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_SpawnGCT1051ETransactiontoCreateLogEntry(["Start Step"])
E_SpawnGCT1051ETransactiontoCreateLogEntry(["End Step"])
N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0{"The log entry is ready to be
persisted"}:::decision N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0_action["Invoke the Z300-SPAWN-GCT1051E
process to create the log entry in
the system"]:::main N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0 -- Yes --> N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0_action N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0_action --> E_SpawnGCT1051ETransactiontoCreateLogEntry S_SpawnGCT1051ETransactiontoCreateLogEntry --> N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0 N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0 -- No --> E_SpawnGCT1051ETransactiontoCreateLogEntry
persisted"}:::decision N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0_action["Invoke the Z300-SPAWN-GCT1051E
process to create the log entry in
the system"]:::main N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0 -- Yes --> N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0_action N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0_action --> E_SpawnGCT1051ETransactiontoCreateLogEntry S_SpawnGCT1051ETransactiontoCreateLogEntry --> N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0 N_SpawnGCT1051ETransactiontoCreateLogEntry_Node0 -- No --> E_SpawnGCT1051ETransactiontoCreateLogEntry
File: GCX126R.cbl
GIVEN:
The arrival acknowledgment log information has been prepared in the GCX105 structure with all required fields populated
WHEN:
The log entry is ready to be persisted
THEN:
Invoke the Z300-SPAWN-GCT1051E process to create the log entry in the system
β Consolidated Acceptance Criteria
- Follower manifests need to be updated with border arrival status → set GCB0RT-CCN-KEY to the master manifest CCN AND initialize follower manifest array (WS-FOLLOWER-MANI-ARRAY) to spaces AND set WS-FOLLOWER-NOT-END-OF-DB indicator AND set counter I to 1 AND perform loop until WS-FOLLOWER-END-OF-DB or I exceeds 100: retrieve next cargo record using GN function with CCRT-B0RT-SSAQ, if status is blank AND master manifest CCN matches X4-01-CBSA-REL-REF-ID (first 25 characters) AND cargo is a follower manifest, store follower CCN in WS-FOLLOWER-MANI(I) and increment I, otherwise set WS-FOLLOWER-END-OF-DB AND after loop, subtract 1 from I AND if I is greater than 0, perform loop varying J from 1 to I: set KEY-VALUE of CCRT-SSAQ and A2RT-SSAQ to WS-FOLLOWER-MANI(J) AND perform A351-UPDATE-CARGO-BORDER to update each follower 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_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers(["Start Step"])
E_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers(["End Step"])
N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0{"Follower manifests need to be
updated with border arrival status"}:::decision N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0_action["Set GCB0RT-CCN-KEY to the master
manifest CCN AND initialize follower
manifest array
WS-FOLLOWER-MANI-ARRAY to spaces AND
set WS-FOLLOWER-NOT-END-OF-DB
indicator AND set counter I to 1 AND
perform loop until
WS-FOLLOWER-END-OF-DB or I exceeds
100: retrieve next cargo record
using GN function with
CCRT-B0RT-SSAQ, if status is blank
AND master manifest CCN matches
X4-01-CBSA-REL-REF-ID first 25
characters AND cargo is a follower
manifest, store follower CCN in
WS-FOLLOWER-MANII and increment I,
otherwise set WS-FOLLOWER-END-OF-DB
AND after loop, subtract 1 from I
AND if I is greater than 0, perform
loop varying J from 1 to I: set
KEY-VALUE of CCRT-SSAQ and A2RT-SSAQ
to WS-FOLLOWER-MANIJ AND perform
A351-UPDATE-CARGO-BORDER to update
each follower manifest"]:::main N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0 -- Yes --> N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0_action N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0_action --> E_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers S_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers --> N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0 N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0 -- No --> E_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers
updated with border arrival status"}:::decision N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0_action["Set GCB0RT-CCN-KEY to the master
manifest CCN AND initialize follower
manifest array
WS-FOLLOWER-MANI-ARRAY to spaces AND
set WS-FOLLOWER-NOT-END-OF-DB
indicator AND set counter I to 1 AND
perform loop until
WS-FOLLOWER-END-OF-DB or I exceeds
100: retrieve next cargo record
using GN function with
CCRT-B0RT-SSAQ, if status is blank
AND master manifest CCN matches
X4-01-CBSA-REL-REF-ID first 25
characters AND cargo is a follower
manifest, store follower CCN in
WS-FOLLOWER-MANII and increment I,
otherwise set WS-FOLLOWER-END-OF-DB
AND after loop, subtract 1 from I
AND if I is greater than 0, perform
loop varying J from 1 to I: set
KEY-VALUE of CCRT-SSAQ and A2RT-SSAQ
to WS-FOLLOWER-MANIJ AND perform
A351-UPDATE-CARGO-BORDER to update
each follower manifest"]:::main N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0 -- Yes --> N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0_action N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0_action --> E_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers S_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers --> N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0 N_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers_Node0 -- No --> E_UpdateBorderArrivalforAllFollowerManifestsUpto100Followers
File: GCX126R.cbl
GIVEN:
The current cargo is a master manifest (GCCC-MASTER-MFST is true) AND the master manifest CCN is available in GCCC-CCN-KEY
WHEN:
Follower manifests need to be updated with border arrival status
THEN:
- Set gcb0rt-ccn-key to the master manifest ccn
- Initialize follower manifest array (ws-follower-mani-array) to spaces
- Set ws-follower-not-end-of-db indicator
- Set counter i to 1
- Perform loop until ws-follower-end-of-db or i exceeds 100: retrieve next cargo record using gn function with ccrt-b0rt-ssaq, if status is blank
- Master manifest ccn matches x4-01-cbsa-rel-ref-id (first 25 characters) and cargo is a follower manifest, store follower ccn in ws-follower-mani(i) and increment i, otherwise set ws-follower-end-of-db
- After loop, subtract 1 from i
- If i is greater than 0, perform loop varying j from 1 to i: set key-value of ccrt-ssaq
- A2rt-ssaq to ws-follower-mani(j) and perform a351-update-cargo-border to update each follower manifest
β Consolidated Acceptance Criteria
- The system begins processing follower manifests → the master manifest CCN key is saved, the follower manifest array is cleared of any previous data, the follower manifest counter is set to 1, and the end-of-database flag is set to indicate more records may 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_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1(["Start Step"])
E_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1(["End Step"])
N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0{"The system begins processing
follower manifests"}:::decision N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0_action["The master manifest CCN key is
saved, the follower manifest array
is cleared of any previous data, the
follower manifest counter is set to
1, and the end-of-database flag is
set to indicate more records may
exist"]:::main N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0 -- Yes --> N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0_action N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0_action --> E_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1 S_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1 --> N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0 N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0 -- No --> E_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1
follower manifests"}:::decision N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0_action["The master manifest CCN key is
saved, the follower manifest array
is cleared of any previous data, the
follower manifest counter is set to
1, and the end-of-database flag is
set to indicate more records may
exist"]:::main N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0 -- Yes --> N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0_action N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0_action --> E_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1 S_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1 --> N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0 N_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1_Node0 -- No --> E_SaveMasterCCNKeyInitializeFollowerManifestArraySetIndexto1
File: GCX126R.cbl
GIVEN:
A master manifest cargo record has been identified for border arrival acknowledgment
WHEN:
The system begins processing follower manifests
THEN:
The master manifest CCN key is saved, the follower manifest array is cleared of any previous data, the follower manifest counter is set to 1, and the end-of-database flag is set to indicate more records may exist
β Consolidated Acceptance Criteria
- The system requests the next cargo record using the Get Next function with the master manifest CCN as the search key → the next cargo record is retrieved from the cargo table and made available for evaluation
- The system retrieves the next cargo record using the master CCN as the parent reference → the system continues retrieving cargo records until either end of database is reached OR the index exceeds 100 follower 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_GetNextCargoRecord(["Start Step"])
E_GetNextCargoRecord(["End Step"])
N_GetNextCargoRecord_Node0{"The system requests the next cargo
record using the Get Next function
with the master manifest CCN as the
search key"}:::decision N_GetNextCargoRecord_Node0_action["The next cargo record is retrieved
from the cargo table and made
available for evaluation"]:::main N_GetNextCargoRecord_Node0 -- Yes --> N_GetNextCargoRecord_Node0_action N_GetNextCargoRecord_Node0_action --> E_GetNextCargoRecord S_GetNextCargoRecord --> N_GetNextCargoRecord_Node0 N_GetNextCargoRecord_Node1{"The system retrieves the next cargo
record using the master CCN as the
parent reference"}:::decision N_GetNextCargoRecord_Node1_action["The system continues retrieving
cargo records until either end of
database is reached OR the index
exceeds 100 follower manifests"]:::main N_GetNextCargoRecord_Node1 -- Yes --> N_GetNextCargoRecord_Node1_action N_GetNextCargoRecord_Node1_action --> E_GetNextCargoRecord N_GetNextCargoRecord_Node0 -- No --> N_GetNextCargoRecord_Node1 N_GetNextCargoRecord_Node1 -- No --> E_GetNextCargoRecord
record using the Get Next function
with the master manifest CCN as the
search key"}:::decision N_GetNextCargoRecord_Node0_action["The next cargo record is retrieved
from the cargo table and made
available for evaluation"]:::main N_GetNextCargoRecord_Node0 -- Yes --> N_GetNextCargoRecord_Node0_action N_GetNextCargoRecord_Node0_action --> E_GetNextCargoRecord S_GetNextCargoRecord --> N_GetNextCargoRecord_Node0 N_GetNextCargoRecord_Node1{"The system retrieves the next cargo
record using the master CCN as the
parent reference"}:::decision N_GetNextCargoRecord_Node1_action["The system continues retrieving
cargo records until either end of
database is reached OR the index
exceeds 100 follower manifests"]:::main N_GetNextCargoRecord_Node1 -- Yes --> N_GetNextCargoRecord_Node1_action N_GetNextCargoRecord_Node1_action --> E_GetNextCargoRecord N_GetNextCargoRecord_Node0 -- No --> N_GetNextCargoRecord_Node1 N_GetNextCargoRecord_Node1 -- No --> E_GetNextCargoRecord
File: GCX126R.cbl
GIVEN:
The system is searching for follower manifests associated with a master manifest CCN
WHEN:
The system requests the next cargo record using the Get Next function with the master manifest CCN as the search key
THEN:
- The next cargo record is retrieved from the cargo table
- Made available for evaluation
File: GCX126R.cbl
GIVEN:
A master manifest CCN exists and follower manifest array is initialized with index starting at 1
WHEN:
The system retrieves the next cargo record using the master CCN as the parent reference
THEN:
The system continues retrieving cargo records until either end of database is reached OR the index exceeds 100 follower manifests
β Consolidated Acceptance Criteria
- If the cargo record → if the database status code is blank (indicating successful retrieval) AND the cargo record's master manifest CCN equals the saved master CCN, the record is considered valid for further processing; otherwise, the record is skipped
- The system validates the cargo record → the cargo record is considered valid if the database status code is blank (successful retrieval) AND the cargo's master manifest CCN matches the current master CCN being 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_StatusCodeBlankANDMasterCCNMatches(["Start Step"])
E_StatusCodeBlankANDMasterCCNMatches(["End Step"])
N_StatusCodeBlankANDMasterCCNMatches_Node0{"The system evaluates the cargo
record"}:::decision N_StatusCodeBlankANDMasterCCNMatches_Node0_action["If the database status code is
blank indicating successful
retrieval AND the cargo record s
master manifest CCN equals the saved
master CCN, the record is considered
valid for further processing
otherwise, the record is skipped"]:::main N_StatusCodeBlankANDMasterCCNMatches_Node0 -- Yes --> N_StatusCodeBlankANDMasterCCNMatches_Node0_action N_StatusCodeBlankANDMasterCCNMatches_Node0_action --> E_StatusCodeBlankANDMasterCCNMatches S_StatusCodeBlankANDMasterCCNMatches --> N_StatusCodeBlankANDMasterCCNMatches_Node0 N_StatusCodeBlankANDMasterCCNMatches_Node1{"The system validates the cargo
record"}:::decision N_StatusCodeBlankANDMasterCCNMatches_Node1_action["The cargo record is considered
valid if the database status code is
blank successful retrieval AND the
cargo s master manifest CCN matches
the current master CCN being
processed"]:::main N_StatusCodeBlankANDMasterCCNMatches_Node1 -- Yes --> N_StatusCodeBlankANDMasterCCNMatches_Node1_action N_StatusCodeBlankANDMasterCCNMatches_Node1_action --> E_StatusCodeBlankANDMasterCCNMatches N_StatusCodeBlankANDMasterCCNMatches_Node0 -- No --> N_StatusCodeBlankANDMasterCCNMatches_Node1 N_StatusCodeBlankANDMasterCCNMatches_Node1 -- No --> E_StatusCodeBlankANDMasterCCNMatches
record"}:::decision N_StatusCodeBlankANDMasterCCNMatches_Node0_action["If the database status code is
blank indicating successful
retrieval AND the cargo record s
master manifest CCN equals the saved
master CCN, the record is considered
valid for further processing
otherwise, the record is skipped"]:::main N_StatusCodeBlankANDMasterCCNMatches_Node0 -- Yes --> N_StatusCodeBlankANDMasterCCNMatches_Node0_action N_StatusCodeBlankANDMasterCCNMatches_Node0_action --> E_StatusCodeBlankANDMasterCCNMatches S_StatusCodeBlankANDMasterCCNMatches --> N_StatusCodeBlankANDMasterCCNMatches_Node0 N_StatusCodeBlankANDMasterCCNMatches_Node1{"The system validates the cargo
record"}:::decision N_StatusCodeBlankANDMasterCCNMatches_Node1_action["The cargo record is considered
valid if the database status code is
blank successful retrieval AND the
cargo s master manifest CCN matches
the current master CCN being
processed"]:::main N_StatusCodeBlankANDMasterCCNMatches_Node1 -- Yes --> N_StatusCodeBlankANDMasterCCNMatches_Node1_action N_StatusCodeBlankANDMasterCCNMatches_Node1_action --> E_StatusCodeBlankANDMasterCCNMatches N_StatusCodeBlankANDMasterCCNMatches_Node0 -- No --> N_StatusCodeBlankANDMasterCCNMatches_Node1 N_StatusCodeBlankANDMasterCCNMatches_Node1 -- No --> E_StatusCodeBlankANDMasterCCNMatches
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved from the database
WHEN:
The system evaluates the cargo record
THEN:
If the database status code is blank (indicating successful retrieval) AND the cargo record's master manifest CCN equals the saved master CCN, the record is considered valid for further processing; otherwise, the record is skipped
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved from the database
WHEN:
The system validates the cargo record
THEN:
The cargo record is considered valid if the database status code is blank (successful retrieval) AND the cargo's master manifest CCN matches the current master CCN being processed
β Consolidated Acceptance Criteria
- The system checks the manifest type indicator → if the cargo record is identified as a follower manifest (not the master manifest), it is selected for inclusion in the follower array; otherwise, it is skipped
- The system checks if the cargo is a follower manifest (GCCC-FOLLOWER-MFST) → if cargo is a follower manifest, store its CCN in the follower array; If cargo is the master manifest itself, skip storage and continue to next record
- The system checks the manifest type indicator of the cargo record → if the cargo record is identified as a follower manifest, its CCN is stored in the follower array; if it is the master manifest itself, the system skips storage and checks the array size limit
- The system checks the cargo record's manifest type → if the cargo is a follower manifest, its CCN is stored in the array, if it is a master manifest, it is skipped and the loop continues
- The system checks the manifest type indicator in the cargo record → if the cargo record is identified as a follower manifest (not a master manifest), it is added to the collection; if it is a master manifest, it is skipped and the system retrieves the next record
- The manifest type indicator is evaluated → if the record is a follower manifest (not a master), store its CCN; if it is a master manifest, skip and continue to next record
- The cargo manifest type indicator (GCCC-FOLLOWER-MFST) is evaluated → if the cargo is identified as a follower manifest, its CCN is stored in the follower array AND the loop counter is incremented OR If the cargo is the master manifest itself, it is skipped AND the loop continues to the next record
- The system checks the manifest type indicator → the cargo is identified as a follower manifest if it is NOT flagged as a master manifest
- Evaluating the manifest type → if the cargo is a follower manifest (not a master manifest), store its CCN in the follower array; if it is a master manifest, skip to retrieve the next record
- The manifest type indicator (GCCC-FOLLOWER-MFST) is evaluated → if the cargo record is identified as a follower manifest (not a master manifest), it is eligible for collection; otherwise, the loop continues to the next record
- The system checks if the cargo record is identified as a follower manifest → if it is a follower manifest, store its CCN in the follower array and increment the index; if not, skip this record and continue to the next
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFollowerManifest(["Start Step"])
E_IsFollowerManifest(["End Step"])
N_IsFollowerManifest_Node0{"The system checks the manifest type
indicator"}:::decision N_IsFollowerManifest_Node0_action["If the cargo record is identified
as a follower manifest not the
master manifest, it is selected for
inclusion in the follower array
otherwise, it is skipped"]:::main N_IsFollowerManifest_Node0 -- Yes --> N_IsFollowerManifest_Node0_action N_IsFollowerManifest_Node0_action --> E_IsFollowerManifest S_IsFollowerManifest --> N_IsFollowerManifest_Node0 N_IsFollowerManifest_Node1{"The system checks if the cargo is a
follower manifest GCCC-FOLLOWER-MFST"}:::decision N_IsFollowerManifest_Node1_action["If cargo is a follower manifest,
store its CCN in the follower array
If cargo is the master manifest
itself, skip storage and continue to
next record"]:::main N_IsFollowerManifest_Node1 -- Yes --> N_IsFollowerManifest_Node1_action N_IsFollowerManifest_Node1_action --> E_IsFollowerManifest N_IsFollowerManifest_Node0 -- No --> N_IsFollowerManifest_Node1 N_IsFollowerManifest_Node2{"The system checks the manifest type
indicator of the cargo record"}:::decision N_IsFollowerManifest_Node2_action["If the cargo record is identified
as a follower manifest, its CCN is
stored in the follower array if it
is the master manifest itself, the
system skips storage and checks the
array size limit"]:::main N_IsFollowerManifest_Node2 -- Yes --> N_IsFollowerManifest_Node2_action N_IsFollowerManifest_Node2_action --> E_IsFollowerManifest N_IsFollowerManifest_Node1 -- No --> N_IsFollowerManifest_Node2 N_IsFollowerManifest_Node3{"The system checks the cargo record
s manifest type"}:::decision N_IsFollowerManifest_Node3_action["If the cargo is a follower
manifest, its CCN is stored in the
array, if it is a master manifest,
it is skipped and the loop continues"]:::main N_IsFollowerManifest_Node3 -- Yes --> N_IsFollowerManifest_Node3_action N_IsFollowerManifest_Node3_action --> E_IsFollowerManifest N_IsFollowerManifest_Node2 -- No --> N_IsFollowerManifest_Node3 N_IsFollowerManifest_Node4{"The system checks the manifest type
indicator in the cargo record"}:::decision N_IsFollowerManifest_Node4_action["If the cargo record is identified
as a follower manifest not a master
manifest, it is added to the
collection if it is a master
manifest, it is skipped and the
system retrieves the next record"]:::main N_IsFollowerManifest_Node4 -- Yes --> N_IsFollowerManifest_Node4_action N_IsFollowerManifest_Node4_action --> E_IsFollowerManifest N_IsFollowerManifest_Node3 -- No --> N_IsFollowerManifest_Node4 N_IsFollowerManifest_Node5{"The manifest type indicator is
evaluated"}:::decision N_IsFollowerManifest_Node5_action["If the record is a follower
manifest not a master, store its CCN
if it is a master manifest, skip and
continue to next record"]:::main N_IsFollowerManifest_Node5 -- Yes --> N_IsFollowerManifest_Node5_action N_IsFollowerManifest_Node5_action --> E_IsFollowerManifest N_IsFollowerManifest_Node4 -- No --> N_IsFollowerManifest_Node5 N_IsFollowerManifest_Node6{"The cargo manifest type indicator
GCCC-FOLLOWER-MFST is evaluated"}:::decision N_IsFollowerManifest_Node6_action["If the cargo is identified as a
follower manifest, its CCN is stored
in the follower array AND the loop
counter is incremented OR If the
cargo is the master manifest itself,
it is skipped AND the loop continues
to the next record"]:::main N_IsFollowerManifest_Node6 -- Yes --> N_IsFollowerManifest_Node6_action N_IsFollowerManifest_Node6_action --> E_IsFollowerManifest N_IsFollowerManifest_Node5 -- No --> N_IsFollowerManifest_Node6 N_IsFollowerManifest_Node7{"The system checks the manifest type
indicator"}:::decision N_IsFollowerManifest_Node7_action["The cargo is identified as a
follower manifest if it is NOT
flagged as a master manifest"]:::main N_IsFollowerManifest_Node7 -- Yes --> N_IsFollowerManifest_Node7_action N_IsFollowerManifest_Node7_action --> E_IsFollowerManifest N_IsFollowerManifest_Node6 -- No --> N_IsFollowerManifest_Node7 N_IsFollowerManifest_Node8{"Evaluating the manifest type"}:::decision N_IsFollowerManifest_Node8_action["If the cargo is a follower manifest
not a master manifest, store its CCN
in the follower array if it is a
master manifest, skip to retrieve
the next record"]:::main N_IsFollowerManifest_Node8 -- Yes --> N_IsFollowerManifest_Node8_action N_IsFollowerManifest_Node8_action --> E_IsFollowerManifest N_IsFollowerManifest_Node7 -- No --> N_IsFollowerManifest_Node8 N_IsFollowerManifest_Node9{"The manifest type indicator
GCCC-FOLLOWER-MFST is evaluated"}:::decision N_IsFollowerManifest_Node9_action["If the cargo record is identified
as a follower manifest not a master
manifest, it is eligible for
collection otherwise, the loop
continues to the next record"]:::main N_IsFollowerManifest_Node9 -- Yes --> N_IsFollowerManifest_Node9_action N_IsFollowerManifest_Node9_action --> E_IsFollowerManifest N_IsFollowerManifest_Node8 -- No --> N_IsFollowerManifest_Node9 N_IsFollowerManifest_Node10{"The system checks if the cargo
record is identified as a follower
manifest"}:::decision N_IsFollowerManifest_Node10_action["If it is a follower manifest, store
its CCN in the follower array and
increment the index if not, skip
this record and continue to the next"]:::main N_IsFollowerManifest_Node10 -- Yes --> N_IsFollowerManifest_Node10_action N_IsFollowerManifest_Node10_action --> E_IsFollowerManifest N_IsFollowerManifest_Node9 -- No --> N_IsFollowerManifest_Node10 N_IsFollowerManifest_Node10 -- No --> E_IsFollowerManifest
indicator"}:::decision N_IsFollowerManifest_Node0_action["If the cargo record is identified
as a follower manifest not the
master manifest, it is selected for
inclusion in the follower array
otherwise, it is skipped"]:::main N_IsFollowerManifest_Node0 -- Yes --> N_IsFollowerManifest_Node0_action N_IsFollowerManifest_Node0_action --> E_IsFollowerManifest S_IsFollowerManifest --> N_IsFollowerManifest_Node0 N_IsFollowerManifest_Node1{"The system checks if the cargo is a
follower manifest GCCC-FOLLOWER-MFST"}:::decision N_IsFollowerManifest_Node1_action["If cargo is a follower manifest,
store its CCN in the follower array
If cargo is the master manifest
itself, skip storage and continue to
next record"]:::main N_IsFollowerManifest_Node1 -- Yes --> N_IsFollowerManifest_Node1_action N_IsFollowerManifest_Node1_action --> E_IsFollowerManifest N_IsFollowerManifest_Node0 -- No --> N_IsFollowerManifest_Node1 N_IsFollowerManifest_Node2{"The system checks the manifest type
indicator of the cargo record"}:::decision N_IsFollowerManifest_Node2_action["If the cargo record is identified
as a follower manifest, its CCN is
stored in the follower array if it
is the master manifest itself, the
system skips storage and checks the
array size limit"]:::main N_IsFollowerManifest_Node2 -- Yes --> N_IsFollowerManifest_Node2_action N_IsFollowerManifest_Node2_action --> E_IsFollowerManifest N_IsFollowerManifest_Node1 -- No --> N_IsFollowerManifest_Node2 N_IsFollowerManifest_Node3{"The system checks the cargo record
s manifest type"}:::decision N_IsFollowerManifest_Node3_action["If the cargo is a follower
manifest, its CCN is stored in the
array, if it is a master manifest,
it is skipped and the loop continues"]:::main N_IsFollowerManifest_Node3 -- Yes --> N_IsFollowerManifest_Node3_action N_IsFollowerManifest_Node3_action --> E_IsFollowerManifest N_IsFollowerManifest_Node2 -- No --> N_IsFollowerManifest_Node3 N_IsFollowerManifest_Node4{"The system checks the manifest type
indicator in the cargo record"}:::decision N_IsFollowerManifest_Node4_action["If the cargo record is identified
as a follower manifest not a master
manifest, it is added to the
collection if it is a master
manifest, it is skipped and the
system retrieves the next record"]:::main N_IsFollowerManifest_Node4 -- Yes --> N_IsFollowerManifest_Node4_action N_IsFollowerManifest_Node4_action --> E_IsFollowerManifest N_IsFollowerManifest_Node3 -- No --> N_IsFollowerManifest_Node4 N_IsFollowerManifest_Node5{"The manifest type indicator is
evaluated"}:::decision N_IsFollowerManifest_Node5_action["If the record is a follower
manifest not a master, store its CCN
if it is a master manifest, skip and
continue to next record"]:::main N_IsFollowerManifest_Node5 -- Yes --> N_IsFollowerManifest_Node5_action N_IsFollowerManifest_Node5_action --> E_IsFollowerManifest N_IsFollowerManifest_Node4 -- No --> N_IsFollowerManifest_Node5 N_IsFollowerManifest_Node6{"The cargo manifest type indicator
GCCC-FOLLOWER-MFST is evaluated"}:::decision N_IsFollowerManifest_Node6_action["If the cargo is identified as a
follower manifest, its CCN is stored
in the follower array AND the loop
counter is incremented OR If the
cargo is the master manifest itself,
it is skipped AND the loop continues
to the next record"]:::main N_IsFollowerManifest_Node6 -- Yes --> N_IsFollowerManifest_Node6_action N_IsFollowerManifest_Node6_action --> E_IsFollowerManifest N_IsFollowerManifest_Node5 -- No --> N_IsFollowerManifest_Node6 N_IsFollowerManifest_Node7{"The system checks the manifest type
indicator"}:::decision N_IsFollowerManifest_Node7_action["The cargo is identified as a
follower manifest if it is NOT
flagged as a master manifest"]:::main N_IsFollowerManifest_Node7 -- Yes --> N_IsFollowerManifest_Node7_action N_IsFollowerManifest_Node7_action --> E_IsFollowerManifest N_IsFollowerManifest_Node6 -- No --> N_IsFollowerManifest_Node7 N_IsFollowerManifest_Node8{"Evaluating the manifest type"}:::decision N_IsFollowerManifest_Node8_action["If the cargo is a follower manifest
not a master manifest, store its CCN
in the follower array if it is a
master manifest, skip to retrieve
the next record"]:::main N_IsFollowerManifest_Node8 -- Yes --> N_IsFollowerManifest_Node8_action N_IsFollowerManifest_Node8_action --> E_IsFollowerManifest N_IsFollowerManifest_Node7 -- No --> N_IsFollowerManifest_Node8 N_IsFollowerManifest_Node9{"The manifest type indicator
GCCC-FOLLOWER-MFST is evaluated"}:::decision N_IsFollowerManifest_Node9_action["If the cargo record is identified
as a follower manifest not a master
manifest, it is eligible for
collection otherwise, the loop
continues to the next record"]:::main N_IsFollowerManifest_Node9 -- Yes --> N_IsFollowerManifest_Node9_action N_IsFollowerManifest_Node9_action --> E_IsFollowerManifest N_IsFollowerManifest_Node8 -- No --> N_IsFollowerManifest_Node9 N_IsFollowerManifest_Node10{"The system checks if the cargo
record is identified as a follower
manifest"}:::decision N_IsFollowerManifest_Node10_action["If it is a follower manifest, store
its CCN in the follower array and
increment the index if not, skip
this record and continue to the next"]:::main N_IsFollowerManifest_Node10 -- Yes --> N_IsFollowerManifest_Node10_action N_IsFollowerManifest_Node10_action --> E_IsFollowerManifest N_IsFollowerManifest_Node9 -- No --> N_IsFollowerManifest_Node10 N_IsFollowerManifest_Node10 -- No --> E_IsFollowerManifest
File: GCX126R.cbl
GIVEN:
A cargo record has been validated as belonging to the master manifest group
WHEN:
The system checks the manifest type indicator
THEN:
If the cargo record is identified as a follower manifest (not the master manifest), it is selected for inclusion in the follower array; otherwise, it is skipped
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and its master CCN matches the search criteria
WHEN:
The system checks if the cargo is a follower manifest (GCCC-FOLLOWER-MFST)
THEN:
- If cargo is a follower manifest, store its ccn in the follower array; if cargo is the master manifest itself, skip storage
- Continue to next record
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and its master CCN has been verified to match the search key
WHEN:
The system checks the manifest type indicator of the cargo record
THEN:
- If the cargo record is identified as a follower manifest, its ccn is stored in the follower array; if it is the master manifest itself, the system skips storage
- Checks the array size limit
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved AND validated as belonging to the current master manifest
WHEN:
The system checks the cargo record's manifest type
THEN:
- If the cargo is a follower manifest, its ccn is stored in the array, if it is a master manifest, it is skipped
- The loop continues
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and its master CCN matches the search key
WHEN:
The system checks the manifest type indicator in the cargo record
THEN:
- If the cargo record is identified as a follower manifest (not a master manifest), it is added to the collection; if it is a master manifest, it is skipped
- The system retrieves the next record
File: GCX126R.cbl
GIVEN:
A cargo record with matching master CCN has been retrieved
WHEN:
The manifest type indicator is evaluated
THEN:
- If the record is a follower manifest (not a master), store its ccn; if it is a master manifest, skip
- Continue to next record
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved that belongs to the correct master manifest
WHEN:
The cargo manifest type indicator (GCCC-FOLLOWER-MFST) is evaluated
THEN:
- If the cargo is identified as a follower manifest, its ccn is stored in the follower array
- The loop counter is incremented or if the cargo is the master manifest itself, it is skipped
- The loop continues to the next record
File: GCX126R.cbl
GIVEN:
A cargo record has been validated as belonging to the master manifest CCN
WHEN:
The system checks the manifest type indicator
THEN:
The cargo is identified as a follower manifest if it is NOT flagged as a master manifest
File: GCX126R.cbl
GIVEN:
A cargo record with matching master CCN has been retrieved
WHEN:
Evaluating the manifest type
THEN:
If the cargo is a follower manifest (not a master manifest), store its CCN in the follower array; if it is a master manifest, skip to retrieve the next record
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and verified to belong to the master manifest hierarchy
WHEN:
The manifest type indicator (GCCC-FOLLOWER-MFST) is evaluated
THEN:
If the cargo record is identified as a follower manifest (not a master manifest), it is eligible for collection; otherwise, the loop continues to the next record
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has been retrieved that is not a master manifest but belongs to the same master manifest CCN
WHEN:
The system checks if the cargo record is identified as a follower manifest
THEN:
- If it is a follower manifest, store its ccn in the follower array
- Increment the index; if not, skip this record
- Continue to the next
β Consolidated Acceptance Criteria
- The system stores the follower information → the follower manifest's CCN key is stored in the follower manifest array at the current index position, and the 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_StoreFollowerCCNinArrayIncrementIndex(["Start Step"])
E_StoreFollowerCCNinArrayIncrementIndex(["End Step"])
N_StoreFollowerCCNinArrayIncrementIndex_Node0{"The system stores the follower
information"}:::decision N_StoreFollowerCCNinArrayIncrementIndex_Node0_action["The follower manifest s CCN key is
stored in the follower manifest
array at the current index position,
and the index counter is incremented
by 1"]:::main N_StoreFollowerCCNinArrayIncrementIndex_Node0 -- Yes --> N_StoreFollowerCCNinArrayIncrementIndex_Node0_action N_StoreFollowerCCNinArrayIncrementIndex_Node0_action --> E_StoreFollowerCCNinArrayIncrementIndex S_StoreFollowerCCNinArrayIncrementIndex --> N_StoreFollowerCCNinArrayIncrementIndex_Node0 N_StoreFollowerCCNinArrayIncrementIndex_Node0 -- No --> E_StoreFollowerCCNinArrayIncrementIndex
information"}:::decision N_StoreFollowerCCNinArrayIncrementIndex_Node0_action["The follower manifest s CCN key is
stored in the follower manifest
array at the current index position,
and the index counter is incremented
by 1"]:::main N_StoreFollowerCCNinArrayIncrementIndex_Node0 -- Yes --> N_StoreFollowerCCNinArrayIncrementIndex_Node0_action N_StoreFollowerCCNinArrayIncrementIndex_Node0_action --> E_StoreFollowerCCNinArrayIncrementIndex S_StoreFollowerCCNinArrayIncrementIndex --> N_StoreFollowerCCNinArrayIncrementIndex_Node0 N_StoreFollowerCCNinArrayIncrementIndex_Node0 -- No --> E_StoreFollowerCCNinArrayIncrementIndex
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a follower manifest
WHEN:
The system stores the follower information
THEN:
The follower manifest's CCN key is stored in the follower manifest array at the current index position, and the index counter is incremented by 1
β Consolidated Acceptance Criteria
- The system checks whether to continue retrieving more cargo records → if the end of database is reached OR the index counter exceeds 100, the collection process stops; otherwise, the system continues to retrieve the 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_EndofDatabaseORIndex100(["Start Step"])
E_EndofDatabaseORIndex100(["End Step"])
N_EndofDatabaseORIndex100_Node0{"The system checks whether to
continue retrieving more cargo
records"}:::decision N_EndofDatabaseORIndex100_Node0_action["If the end of database is reached
OR the index counter exceeds 100,
the collection process stops
otherwise, the system continues to
retrieve the next cargo record"]:::main N_EndofDatabaseORIndex100_Node0 -- Yes --> N_EndofDatabaseORIndex100_Node0_action N_EndofDatabaseORIndex100_Node0_action --> E_EndofDatabaseORIndex100 S_EndofDatabaseORIndex100 --> N_EndofDatabaseORIndex100_Node0 N_EndofDatabaseORIndex100_Node0 -- No --> E_EndofDatabaseORIndex100
continue retrieving more cargo
records"}:::decision N_EndofDatabaseORIndex100_Node0_action["If the end of database is reached
OR the index counter exceeds 100,
the collection process stops
otherwise, the system continues to
retrieve the next cargo record"]:::main N_EndofDatabaseORIndex100_Node0 -- Yes --> N_EndofDatabaseORIndex100_Node0_action N_EndofDatabaseORIndex100_Node0_action --> E_EndofDatabaseORIndex100 S_EndofDatabaseORIndex100 --> N_EndofDatabaseORIndex100_Node0 N_EndofDatabaseORIndex100_Node0 -- No --> E_EndofDatabaseORIndex100
File: GCX126R.cbl
GIVEN:
The system is collecting follower manifest CCNs
WHEN:
The system checks whether to continue retrieving more cargo records
THEN:
If the end of database is reached OR the index counter exceeds 100, the collection process stops; otherwise, the system continues to retrieve the next cargo record
β Consolidated Acceptance Criteria
- The collection loop terminates → the index counter is decremented by 1 to convert from a 1-based counter to the actual count of follower manifests stored 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_Subtract1fromIndex(["Start Step"])
E_Subtract1fromIndex(["End Step"])
N_Subtract1fromIndex_Node0{"The collection loop terminates"}:::decision
N_Subtract1fromIndex_Node0_action["The index counter is decremented by
1 to convert from a 1-based counter
to the actual count of follower
manifests stored in the array"]:::main N_Subtract1fromIndex_Node0 -- Yes --> N_Subtract1fromIndex_Node0_action N_Subtract1fromIndex_Node0_action --> E_Subtract1fromIndex S_Subtract1fromIndex --> N_Subtract1fromIndex_Node0 N_Subtract1fromIndex_Node0 -- No --> E_Subtract1fromIndex
1 to convert from a 1-based counter
to the actual count of follower
manifests stored in the array"]:::main N_Subtract1fromIndex_Node0 -- Yes --> N_Subtract1fromIndex_Node0_action N_Subtract1fromIndex_Node0_action --> E_Subtract1fromIndex S_Subtract1fromIndex --> N_Subtract1fromIndex_Node0 N_Subtract1fromIndex_Node0 -- No --> E_Subtract1fromIndex
File: GCX126R.cbl
GIVEN:
The system has completed collecting follower manifest CCNs
WHEN:
The collection loop terminates
THEN:
The index counter is decremented by 1 to convert from a 1-based counter to the actual count of follower manifests stored in the array
β Consolidated Acceptance Criteria
- The system checks if any follower manifests were found → if the adjusted index is less than or equal to 0, no follower manifests exist and processing terminates; otherwise, the system proceeds to update each follower manifest
- The system checks if any follower manifests were found → if the adjusted index is less than or equal to 0, exit the process as no follower manifests exist for this 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_Index0(["Start Step"])
E_Index0(["End Step"])
N_Index0_Node0{"The system checks if any follower
manifests were found"}:::decision N_Index0_Node0_action["If the adjusted index is less than
or equal to 0, no follower manifests
exist and processing terminates
otherwise, the system proceeds to
update each follower manifest"]:::main N_Index0_Node0 -- Yes --> N_Index0_Node0_action N_Index0_Node0_action --> E_Index0 S_Index0 --> N_Index0_Node0 N_Index0_Node1{"The system checks if any follower
manifests were found"}:::decision N_Index0_Node1_action["If the adjusted index is less than
or equal to 0, exit the process as
no follower manifests exist for this
master"]:::main N_Index0_Node1 -- Yes --> N_Index0_Node1_action N_Index0_Node1_action --> E_Index0 N_Index0_Node0 -- No --> N_Index0_Node1 N_Index0_Node1 -- No --> E_Index0
manifests were found"}:::decision N_Index0_Node0_action["If the adjusted index is less than
or equal to 0, no follower manifests
exist and processing terminates
otherwise, the system proceeds to
update each follower manifest"]:::main N_Index0_Node0 -- Yes --> N_Index0_Node0_action N_Index0_Node0_action --> E_Index0 S_Index0 --> N_Index0_Node0 N_Index0_Node1{"The system checks if any follower
manifests were found"}:::decision N_Index0_Node1_action["If the adjusted index is less than
or equal to 0, exit the process as
no follower manifests exist for this
master"]:::main N_Index0_Node1 -- Yes --> N_Index0_Node1_action N_Index0_Node1_action --> E_Index0 N_Index0_Node0 -- No --> N_Index0_Node1 N_Index0_Node1 -- No --> E_Index0
File: GCX126R.cbl
GIVEN:
The follower manifest collection process has completed and the index has been adjusted
WHEN:
The system checks if any follower manifests were found
THEN:
- If the adjusted index is less than or equal to 0, no follower manifests exist
- Processing terminates; otherwise, the system proceeds to update each follower manifest
File: GCX126R.cbl
GIVEN:
The follower manifest retrieval process has completed and the index has been decremented by 1
WHEN:
The system checks if any follower manifests were found
THEN:
If the adjusted index is less than or equal to 0, exit the process as no follower manifests exist for this master
β Consolidated Acceptance Criteria
- The system prepares to update follower manifests → the loop counter J is set to 1 to begin processing from the first follower manifest 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_SetLoopCounterJto1(["Start Step"])
E_SetLoopCounterJto1(["End Step"])
N_SetLoopCounterJto1_Node0{"The system prepares to update
follower manifests"}:::decision N_SetLoopCounterJto1_Node0_action["The loop counter J is set to 1 to
begin processing from the first
follower manifest in the array"]:::main N_SetLoopCounterJto1_Node0 -- Yes --> N_SetLoopCounterJto1_Node0_action N_SetLoopCounterJto1_Node0_action --> E_SetLoopCounterJto1 S_SetLoopCounterJto1 --> N_SetLoopCounterJto1_Node0 N_SetLoopCounterJto1_Node0 -- No --> E_SetLoopCounterJto1
follower manifests"}:::decision N_SetLoopCounterJto1_Node0_action["The loop counter J is set to 1 to
begin processing from the first
follower manifest in the array"]:::main N_SetLoopCounterJto1_Node0 -- Yes --> N_SetLoopCounterJto1_Node0_action N_SetLoopCounterJto1_Node0_action --> E_SetLoopCounterJto1 S_SetLoopCounterJto1 --> N_SetLoopCounterJto1_Node0 N_SetLoopCounterJto1_Node0 -- No --> E_SetLoopCounterJto1
File: GCX126R.cbl
GIVEN:
At least one follower manifest CCN has been collected in the array
WHEN:
The system prepares to update follower manifests
THEN:
The loop counter J is set to 1 to begin processing from the first follower manifest in the array
β Consolidated Acceptance Criteria
- The system checks whether to process the next follower manifest → if the current follower CCN position is empty (spaces or low-values) OR the loop counter J exceeds the total count of follower manifests (Index), the update loop terminates; otherwise, processing continues with the current follower CCN
- The system checks the loop continuation condition → the loop continues if the follower CCN at position J is not empty (not spaces or low-values) AND the counter J has not exceeded the total number of followers (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_FollowerCCNEmptyORJIndex(["Start Step"])
E_FollowerCCNEmptyORJIndex(["End Step"])
N_FollowerCCNEmptyORJIndex_Node0{"The system checks whether to
process the next follower manifest"}:::decision N_FollowerCCNEmptyORJIndex_Node0_action["If the current follower CCN
position is empty spaces or
low-values OR the loop counter J
exceeds the total count of follower
manifests Index, the update loop
terminates otherwise, processing
continues with the current follower
CCN"]:::main N_FollowerCCNEmptyORJIndex_Node0 -- Yes --> N_FollowerCCNEmptyORJIndex_Node0_action N_FollowerCCNEmptyORJIndex_Node0_action --> E_FollowerCCNEmptyORJIndex S_FollowerCCNEmptyORJIndex --> N_FollowerCCNEmptyORJIndex_Node0 N_FollowerCCNEmptyORJIndex_Node1{"The system checks the loop
continuation condition"}:::decision N_FollowerCCNEmptyORJIndex_Node1_action["The loop continues if the follower
CCN at position J is not empty not
spaces or low-values AND the counter
J has not exceeded the total number
of followers index"]:::main N_FollowerCCNEmptyORJIndex_Node1 -- Yes --> N_FollowerCCNEmptyORJIndex_Node1_action N_FollowerCCNEmptyORJIndex_Node1_action --> E_FollowerCCNEmptyORJIndex N_FollowerCCNEmptyORJIndex_Node0 -- No --> N_FollowerCCNEmptyORJIndex_Node1 N_FollowerCCNEmptyORJIndex_Node1 -- No --> E_FollowerCCNEmptyORJIndex
process the next follower manifest"}:::decision N_FollowerCCNEmptyORJIndex_Node0_action["If the current follower CCN
position is empty spaces or
low-values OR the loop counter J
exceeds the total count of follower
manifests Index, the update loop
terminates otherwise, processing
continues with the current follower
CCN"]:::main N_FollowerCCNEmptyORJIndex_Node0 -- Yes --> N_FollowerCCNEmptyORJIndex_Node0_action N_FollowerCCNEmptyORJIndex_Node0_action --> E_FollowerCCNEmptyORJIndex S_FollowerCCNEmptyORJIndex --> N_FollowerCCNEmptyORJIndex_Node0 N_FollowerCCNEmptyORJIndex_Node1{"The system checks the loop
continuation condition"}:::decision N_FollowerCCNEmptyORJIndex_Node1_action["The loop continues if the follower
CCN at position J is not empty not
spaces or low-values AND the counter
J has not exceeded the total number
of followers index"]:::main N_FollowerCCNEmptyORJIndex_Node1 -- Yes --> N_FollowerCCNEmptyORJIndex_Node1_action N_FollowerCCNEmptyORJIndex_Node1_action --> E_FollowerCCNEmptyORJIndex N_FollowerCCNEmptyORJIndex_Node0 -- No --> N_FollowerCCNEmptyORJIndex_Node1 N_FollowerCCNEmptyORJIndex_Node1 -- No --> E_FollowerCCNEmptyORJIndex
File: GCX126R.cbl
GIVEN:
The system is iterating through the follower manifest array
WHEN:
The system checks whether to process the next follower manifest
THEN:
If the current follower CCN position is empty (spaces or low-values) OR the loop counter J exceeds the total count of follower manifests (Index), the update loop terminates; otherwise, processing continues with the current follower CCN
File: GCX126R.cbl
GIVEN:
The system is iterating through the follower manifest array
WHEN:
The system checks the loop continuation condition
THEN:
The loop continues if the follower CCN at position J is not empty (not spaces or low-values) AND the counter J has not exceeded the total number of followers (index)
β Consolidated Acceptance Criteria
- The system prepares to update a follower manifest → the follower manifest CCN at position J is retrieved from the array and set as the search key for cargo record retrieval
- The system needs to process a specific follower manifest → the follower CCN at array position J is moved to the cargo lookup key fields (CCRT-SSAQ and A2RT-SSAQ)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFollowerCCNfromArray(["Start Step"])
E_GetFollowerCCNfromArray(["End Step"])
N_GetFollowerCCNfromArray_Node0{"The system prepares to update a
follower manifest"}:::decision N_GetFollowerCCNfromArray_Node0_action["The follower manifest CCN at
position J is retrieved from the
array and set as the search key for
cargo record retrieval"]:::main N_GetFollowerCCNfromArray_Node0 -- Yes --> N_GetFollowerCCNfromArray_Node0_action N_GetFollowerCCNfromArray_Node0_action --> E_GetFollowerCCNfromArray S_GetFollowerCCNfromArray --> N_GetFollowerCCNfromArray_Node0 N_GetFollowerCCNfromArray_Node1{"The system needs to process a
specific follower manifest"}:::decision N_GetFollowerCCNfromArray_Node1_action["The follower CCN at array position
J is moved to the cargo lookup key
fields CCRT-SSAQ and A2RT-SSAQ"]:::main N_GetFollowerCCNfromArray_Node1 -- Yes --> N_GetFollowerCCNfromArray_Node1_action N_GetFollowerCCNfromArray_Node1_action --> E_GetFollowerCCNfromArray N_GetFollowerCCNfromArray_Node0 -- No --> N_GetFollowerCCNfromArray_Node1 N_GetFollowerCCNfromArray_Node1 -- No --> E_GetFollowerCCNfromArray
follower manifest"}:::decision N_GetFollowerCCNfromArray_Node0_action["The follower manifest CCN at
position J is retrieved from the
array and set as the search key for
cargo record retrieval"]:::main N_GetFollowerCCNfromArray_Node0 -- Yes --> N_GetFollowerCCNfromArray_Node0_action N_GetFollowerCCNfromArray_Node0_action --> E_GetFollowerCCNfromArray S_GetFollowerCCNfromArray --> N_GetFollowerCCNfromArray_Node0 N_GetFollowerCCNfromArray_Node1{"The system needs to process a
specific follower manifest"}:::decision N_GetFollowerCCNfromArray_Node1_action["The follower CCN at array position
J is moved to the cargo lookup key
fields CCRT-SSAQ and A2RT-SSAQ"]:::main N_GetFollowerCCNfromArray_Node1 -- Yes --> N_GetFollowerCCNfromArray_Node1_action N_GetFollowerCCNfromArray_Node1_action --> E_GetFollowerCCNfromArray N_GetFollowerCCNfromArray_Node0 -- No --> N_GetFollowerCCNfromArray_Node1 N_GetFollowerCCNfromArray_Node1 -- No --> E_GetFollowerCCNfromArray
File: GCX126R.cbl
GIVEN:
The loop counter J points to a valid position in the follower manifest array
WHEN:
The system prepares to update a follower manifest
THEN:
- The follower manifest ccn at position j is retrieved from the array
- Set as the search key for cargo record retrieval
File: GCX126R.cbl
GIVEN:
A follower manifest array with index J pointing to a valid entry
WHEN:
The system needs to process a specific follower manifest
THEN:
- The follower ccn at array position j is moved to the cargo lookup key fields (ccrt-ssaq
- A2rt-ssaq)
β Consolidated Acceptance Criteria
- The system requests the cargo record using the Get Hold Update function with the follower CCN as the key → the follower cargo record is retrieved from the cargo table and locked for update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveFollowerCargoRecordbyCCN(["Start Step"])
E_RetrieveFollowerCargoRecordbyCCN(["End Step"])
N_RetrieveFollowerCargoRecordbyCCN_Node0{"The system requests the cargo
record using the Get Hold Update
function with the follower CCN as
the key"}:::decision N_RetrieveFollowerCargoRecordbyCCN_Node0_action["The follower cargo record is
retrieved from the cargo table and
locked for update"]:::main N_RetrieveFollowerCargoRecordbyCCN_Node0 -- Yes --> N_RetrieveFollowerCargoRecordbyCCN_Node0_action N_RetrieveFollowerCargoRecordbyCCN_Node0_action --> E_RetrieveFollowerCargoRecordbyCCN S_RetrieveFollowerCargoRecordbyCCN --> N_RetrieveFollowerCargoRecordbyCCN_Node0 N_RetrieveFollowerCargoRecordbyCCN_Node0 -- No --> E_RetrieveFollowerCargoRecordbyCCN
record using the Get Hold Update
function with the follower CCN as
the key"}:::decision N_RetrieveFollowerCargoRecordbyCCN_Node0_action["The follower cargo record is
retrieved from the cargo table and
locked for update"]:::main N_RetrieveFollowerCargoRecordbyCCN_Node0 -- Yes --> N_RetrieveFollowerCargoRecordbyCCN_Node0_action N_RetrieveFollowerCargoRecordbyCCN_Node0_action --> E_RetrieveFollowerCargoRecordbyCCN S_RetrieveFollowerCargoRecordbyCCN --> N_RetrieveFollowerCargoRecordbyCCN_Node0 N_RetrieveFollowerCargoRecordbyCCN_Node0 -- No --> E_RetrieveFollowerCargoRecordbyCCN
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been retrieved from the array
WHEN:
The system requests the cargo record using the Get Hold Update function with the follower CCN as the key
THEN:
- The follower cargo record is retrieved from the cargo table
- Locked for update
β Consolidated Acceptance Criteria
- The system prepares to update the border arrival status → an information message '350 ACK - ARRIVAL ACK AT BORDER' is logged to the cargo history with the current follower CCN as the reference
- The system prepares to update the cargo record with border arrival acknowledgment → the system creates a log entry with the message '350 ACK - ARRIVAL ACK AT BORDER' associated with the follower manifest CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBorderArrivalMessage350ACKARRIVALACKATBORDER(["Start Step"])
E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER(["End Step"])
N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0{"The system prepares to update the
border arrival status"}:::decision N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0_action["An information message 350 ACK -
ARRIVAL ACK AT BORDER is logged to
the cargo history with the current
follower CCN as the reference"]:::main N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0_action N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER S_LogBorderArrivalMessage350ACKARRIVALACKATBORDER --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0 N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1{"The system prepares to update the
cargo record with border arrival
acknowledgment"}:::decision N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1_action["The system creates a log entry with
the message 350 ACK - ARRIVAL ACK AT
BORDER associated with the follower
manifest CCN"]:::main N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1 -- Yes --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1_action N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1_action --> E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0 -- No --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1 N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1 -- No --> E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER
border arrival status"}:::decision N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0_action["An information message 350 ACK -
ARRIVAL ACK AT BORDER is logged to
the cargo history with the current
follower CCN as the reference"]:::main N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0 -- Yes --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0_action N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0_action --> E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER S_LogBorderArrivalMessage350ACKARRIVALACKATBORDER --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0 N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1{"The system prepares to update the
cargo record with border arrival
acknowledgment"}:::decision N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1_action["The system creates a log entry with
the message 350 ACK - ARRIVAL ACK AT
BORDER associated with the follower
manifest CCN"]:::main N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1 -- Yes --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1_action N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1_action --> E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node0 -- No --> N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1 N_LogBorderArrivalMessage350ACKARRIVALACKATBORDER_Node1 -- No --> E_LogBorderArrivalMessage350ACKARRIVALACKATBORDER
File: GCX126R.cbl
GIVEN:
A follower cargo record has been successfully retrieved
WHEN:
The system prepares to update the border arrival status
THEN:
An information message '350 ACK - ARRIVAL ACK AT BORDER' is logged to the cargo history with the current follower CCN as the reference
File: GCX126R.cbl
GIVEN:
A follower manifest cargo record has been successfully retrieved
WHEN:
The system prepares to update the cargo record with border arrival acknowledgment
THEN:
The system creates a log entry with the message '350 ACK - ARRIVAL ACK AT BORDER' associated with the follower manifest CCN
β Consolidated Acceptance Criteria
- The system prepares to process the next follower → the loop counter J is incremented by 1 to point to the next follower manifest CCN in the array
- The system advances to the next follower → the loop counter J is incremented by 1 to point to the next follower CCN 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_IncrementLoopCounterJ(["Start Step"])
E_IncrementLoopCounterJ(["End Step"])
N_IncrementLoopCounterJ_Node0{"The system prepares to process the
next follower"}:::decision N_IncrementLoopCounterJ_Node0_action["The loop counter J is incremented
by 1 to point to the next follower
manifest CCN in the array"]:::main N_IncrementLoopCounterJ_Node0 -- Yes --> N_IncrementLoopCounterJ_Node0_action N_IncrementLoopCounterJ_Node0_action --> E_IncrementLoopCounterJ S_IncrementLoopCounterJ --> N_IncrementLoopCounterJ_Node0 N_IncrementLoopCounterJ_Node1{"The system advances to the next
follower"}:::decision N_IncrementLoopCounterJ_Node1_action["The loop counter J is incremented
by 1 to point to the next follower
CCN in the array"]:::main N_IncrementLoopCounterJ_Node1 -- Yes --> N_IncrementLoopCounterJ_Node1_action N_IncrementLoopCounterJ_Node1_action --> E_IncrementLoopCounterJ N_IncrementLoopCounterJ_Node0 -- No --> N_IncrementLoopCounterJ_Node1 N_IncrementLoopCounterJ_Node1 -- No --> E_IncrementLoopCounterJ
next follower"}:::decision N_IncrementLoopCounterJ_Node0_action["The loop counter J is incremented
by 1 to point to the next follower
manifest CCN in the array"]:::main N_IncrementLoopCounterJ_Node0 -- Yes --> N_IncrementLoopCounterJ_Node0_action N_IncrementLoopCounterJ_Node0_action --> E_IncrementLoopCounterJ S_IncrementLoopCounterJ --> N_IncrementLoopCounterJ_Node0 N_IncrementLoopCounterJ_Node1{"The system advances to the next
follower"}:::decision N_IncrementLoopCounterJ_Node1_action["The loop counter J is incremented
by 1 to point to the next follower
CCN in the array"]:::main N_IncrementLoopCounterJ_Node1 -- Yes --> N_IncrementLoopCounterJ_Node1_action N_IncrementLoopCounterJ_Node1_action --> E_IncrementLoopCounterJ N_IncrementLoopCounterJ_Node0 -- No --> N_IncrementLoopCounterJ_Node1 N_IncrementLoopCounterJ_Node1 -- No --> E_IncrementLoopCounterJ
File: GCX126R.cbl
GIVEN:
A follower manifest has been processed (either updated or skipped)
WHEN:
The system prepares to process the next follower
THEN:
The loop counter J is incremented by 1 to point to the next follower manifest CCN in the array
File: GCX126R.cbl
GIVEN:
The current follower manifest has been fully processed and updated
WHEN:
The system advances to the next follower
THEN:
The loop counter J is incremented by 1 to point to the next follower CCN in the array
β Consolidated Acceptance Criteria
- The system prepares to execute a Get Next operation → the system sets Accept Status to 'GEGB', Segment Type to GCSUSRT, Function to GN (Get Next), Index Type to CAR-WB (Car ID and Waybill), and Operator to '>' (greater than)
- The system needs to retrieve all associated follower manifests → the database access status is set to 'GEGB' to enable hierarchical navigation through cargo records
- Database access is initiated → the accept status is set to 'GEGB' to enable Get Next operation
- Setting database control parameters → move 'GEGB' to CC-ACCEPT-STATUS to indicate Get with status code GE and GB
- Database access is initiated → the accept status is set to 'GEGB' to enable Get Next with Browse capability
- The system prepares to call the database access routine → the accept status is set to 'GEGB', segment type is set to GCSUSRT, function code is set to Get Next (GN), index type is set to Car/Waybill, and operator is set to '>' for sequential retrieval
- The accept status is being configured for the database call → the accept status field is set to 'GEGB' to indicate Get Next with Good status and Browse 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_SetAcceptStatustoGEGB(["Start Step"])
E_SetAcceptStatustoGEGB(["End Step"])
N_SetAcceptStatustoGEGB_Node0{"The system prepares to execute a
Get Next operation"}:::decision N_SetAcceptStatustoGEGB_Node0_action["The system sets Accept Status to
GEGB , Segment Type to GCSUSRT,
Function to GN Get Next, Index Type
to CAR-WB Car ID and Waybill, and
Operator to greater than"]:::main N_SetAcceptStatustoGEGB_Node0 -- Yes --> N_SetAcceptStatustoGEGB_Node0_action N_SetAcceptStatustoGEGB_Node0_action --> E_SetAcceptStatustoGEGB S_SetAcceptStatustoGEGB --> N_SetAcceptStatustoGEGB_Node0 N_SetAcceptStatustoGEGB_Node1{"The system needs to retrieve all
associated follower manifests"}:::decision N_SetAcceptStatustoGEGB_Node1_action["The database access status is set
to GEGB to enable hierarchical
navigation through cargo records"]:::main N_SetAcceptStatustoGEGB_Node1 -- Yes --> N_SetAcceptStatustoGEGB_Node1_action N_SetAcceptStatustoGEGB_Node1_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node0 -- No --> N_SetAcceptStatustoGEGB_Node1 N_SetAcceptStatustoGEGB_Node2{"Database access is initiated"}:::decision N_SetAcceptStatustoGEGB_Node2_action["The accept status is set to GEGB to
enable Get Next operation"]:::main N_SetAcceptStatustoGEGB_Node2 -- Yes --> N_SetAcceptStatustoGEGB_Node2_action N_SetAcceptStatustoGEGB_Node2_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node1 -- No --> N_SetAcceptStatustoGEGB_Node2 N_SetAcceptStatustoGEGB_Node3{"Setting database control parameters"}:::decision N_SetAcceptStatustoGEGB_Node3_action["Move GEGB to CC-ACCEPT-STATUS to
indicate Get with status code GE and
GB"]:::main N_SetAcceptStatustoGEGB_Node3 -- Yes --> N_SetAcceptStatustoGEGB_Node3_action N_SetAcceptStatustoGEGB_Node3_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node2 -- No --> N_SetAcceptStatustoGEGB_Node3 N_SetAcceptStatustoGEGB_Node4{"Database access is initiated"}:::decision N_SetAcceptStatustoGEGB_Node4_action["The accept status is set to GEGB to
enable Get Next with Browse
capability"]:::main N_SetAcceptStatustoGEGB_Node4 -- Yes --> N_SetAcceptStatustoGEGB_Node4_action N_SetAcceptStatustoGEGB_Node4_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node3 -- No --> N_SetAcceptStatustoGEGB_Node4 N_SetAcceptStatustoGEGB_Node5{"The system prepares to call the
database access routine"}:::decision N_SetAcceptStatustoGEGB_Node5_action["The accept status is set to GEGB ,
segment type is set to GCSUSRT,
function code is set to Get Next GN,
index type is set to CarWaybill, and
operator is set to for sequential
retrieval"]:::main N_SetAcceptStatustoGEGB_Node5 -- Yes --> N_SetAcceptStatustoGEGB_Node5_action N_SetAcceptStatustoGEGB_Node5_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node4 -- No --> N_SetAcceptStatustoGEGB_Node5 N_SetAcceptStatustoGEGB_Node6{"The accept status is being
configured for the database call"}:::decision N_SetAcceptStatustoGEGB_Node6_action["The accept status field is set to
GEGB to indicate Get Next with Good
status and Browse mode"]:::main N_SetAcceptStatustoGEGB_Node6 -- Yes --> N_SetAcceptStatustoGEGB_Node6_action N_SetAcceptStatustoGEGB_Node6_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node5 -- No --> N_SetAcceptStatustoGEGB_Node6 N_SetAcceptStatustoGEGB_Node6 -- No --> E_SetAcceptStatustoGEGB
Get Next operation"}:::decision N_SetAcceptStatustoGEGB_Node0_action["The system sets Accept Status to
GEGB , Segment Type to GCSUSRT,
Function to GN Get Next, Index Type
to CAR-WB Car ID and Waybill, and
Operator to greater than"]:::main N_SetAcceptStatustoGEGB_Node0 -- Yes --> N_SetAcceptStatustoGEGB_Node0_action N_SetAcceptStatustoGEGB_Node0_action --> E_SetAcceptStatustoGEGB S_SetAcceptStatustoGEGB --> N_SetAcceptStatustoGEGB_Node0 N_SetAcceptStatustoGEGB_Node1{"The system needs to retrieve all
associated follower manifests"}:::decision N_SetAcceptStatustoGEGB_Node1_action["The database access status is set
to GEGB to enable hierarchical
navigation through cargo records"]:::main N_SetAcceptStatustoGEGB_Node1 -- Yes --> N_SetAcceptStatustoGEGB_Node1_action N_SetAcceptStatustoGEGB_Node1_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node0 -- No --> N_SetAcceptStatustoGEGB_Node1 N_SetAcceptStatustoGEGB_Node2{"Database access is initiated"}:::decision N_SetAcceptStatustoGEGB_Node2_action["The accept status is set to GEGB to
enable Get Next operation"]:::main N_SetAcceptStatustoGEGB_Node2 -- Yes --> N_SetAcceptStatustoGEGB_Node2_action N_SetAcceptStatustoGEGB_Node2_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node1 -- No --> N_SetAcceptStatustoGEGB_Node2 N_SetAcceptStatustoGEGB_Node3{"Setting database control parameters"}:::decision N_SetAcceptStatustoGEGB_Node3_action["Move GEGB to CC-ACCEPT-STATUS to
indicate Get with status code GE and
GB"]:::main N_SetAcceptStatustoGEGB_Node3 -- Yes --> N_SetAcceptStatustoGEGB_Node3_action N_SetAcceptStatustoGEGB_Node3_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node2 -- No --> N_SetAcceptStatustoGEGB_Node3 N_SetAcceptStatustoGEGB_Node4{"Database access is initiated"}:::decision N_SetAcceptStatustoGEGB_Node4_action["The accept status is set to GEGB to
enable Get Next with Browse
capability"]:::main N_SetAcceptStatustoGEGB_Node4 -- Yes --> N_SetAcceptStatustoGEGB_Node4_action N_SetAcceptStatustoGEGB_Node4_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node3 -- No --> N_SetAcceptStatustoGEGB_Node4 N_SetAcceptStatustoGEGB_Node5{"The system prepares to call the
database access routine"}:::decision N_SetAcceptStatustoGEGB_Node5_action["The accept status is set to GEGB ,
segment type is set to GCSUSRT,
function code is set to Get Next GN,
index type is set to CarWaybill, and
operator is set to for sequential
retrieval"]:::main N_SetAcceptStatustoGEGB_Node5 -- Yes --> N_SetAcceptStatustoGEGB_Node5_action N_SetAcceptStatustoGEGB_Node5_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node4 -- No --> N_SetAcceptStatustoGEGB_Node5 N_SetAcceptStatustoGEGB_Node6{"The accept status is being
configured for the database call"}:::decision N_SetAcceptStatustoGEGB_Node6_action["The accept status field is set to
GEGB to indicate Get Next with Good
status and Browse mode"]:::main N_SetAcceptStatustoGEGB_Node6 -- Yes --> N_SetAcceptStatustoGEGB_Node6_action N_SetAcceptStatustoGEGB_Node6_action --> E_SetAcceptStatustoGEGB N_SetAcceptStatustoGEGB_Node5 -- No --> N_SetAcceptStatustoGEGB_Node6 N_SetAcceptStatustoGEGB_Node6 -- No --> E_SetAcceptStatustoGEGB
File: GCX126R.cbl
GIVEN:
A request to retrieve the next US cargo record from the database
WHEN:
The system prepares to execute a Get Next operation
THEN:
- The system sets accept status to 'gegb', segment type to gcsusrt, function to gn (get next), index type to car-wb (car id
- Waybill), and operator to '>' (greater than)
File: GCX126R.cbl
GIVEN:
A master manifest cargo record is being processed
WHEN:
The system needs to retrieve all associated follower manifests
THEN:
The database access status is set to 'GEGB' to enable hierarchical navigation through cargo records
File: GCX126R.cbl
GIVEN:
The system is ready to retrieve the next follower manifest record
WHEN:
Database access is initiated
THEN:
The accept status is set to 'GEGB' to enable Get Next operation
File: GCX126R.cbl
GIVEN:
Database operation is being prepared for US cargo search
WHEN:
Setting database control parameters
THEN:
- Move 'gegb' to cc-accept-status to indicate get with status code ge
- Gb
File: GCX126R.cbl
GIVEN:
The system is ready to retrieve the next follower manifest record
WHEN:
Database access is initiated
THEN:
The accept status is set to 'GEGB' to enable Get Next with Browse capability
File: GCX126R.cbl
GIVEN:
A request to retrieve the next US cargo record by car and waybill index
WHEN:
The system prepares to call the database access routine
THEN:
The accept status is set to 'GEGB', segment type is set to GCSUSRT, function code is set to Get Next (GN), index type is set to Car/Waybill, and operator is set to '>' for sequential retrieval
File: GCX126R.cbl
GIVEN:
The system needs to perform a database Get Next operation on cargo records
WHEN:
The accept status is being configured for the database call
THEN:
- The accept status field is set to 'gegb' to indicate get next with good status
- Browse mode
β Consolidated Acceptance Criteria
- The system calls GCCUSIO program → the system retrieves the next US cargo record from GCSUSRT table based on Car ID and 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_CallGCCUSIOtoGetNextRecord(["Start Step"])
E_CallGCCUSIOtoGetNextRecord(["End Step"])
N_CallGCCUSIOtoGetNextRecord_Node0{"The system calls GCCUSIO program"}:::decision
N_CallGCCUSIOtoGetNextRecord_Node0_action["The system retrieves the next US
cargo record from GCSUSRT table
based on Car ID and Waybill index"]:::main N_CallGCCUSIOtoGetNextRecord_Node0 -- Yes --> N_CallGCCUSIOtoGetNextRecord_Node0_action N_CallGCCUSIOtoGetNextRecord_Node0_action --> E_CallGCCUSIOtoGetNextRecord S_CallGCCUSIOtoGetNextRecord --> N_CallGCCUSIOtoGetNextRecord_Node0 N_CallGCCUSIOtoGetNextRecord_Node0 -- No --> E_CallGCCUSIOtoGetNextRecord
cargo record from GCSUSRT table
based on Car ID and Waybill index"]:::main N_CallGCCUSIOtoGetNextRecord_Node0 -- Yes --> N_CallGCCUSIOtoGetNextRecord_Node0_action N_CallGCCUSIOtoGetNextRecord_Node0_action --> E_CallGCCUSIOtoGetNextRecord S_CallGCCUSIOtoGetNextRecord --> N_CallGCCUSIOtoGetNextRecord_Node0 N_CallGCCUSIOtoGetNextRecord_Node0 -- No --> E_CallGCCUSIOtoGetNextRecord
File: GCX126R.cbl
GIVEN:
Query parameters are set with Accept Status 'GEGB', Segment GCSUSRT, Function GN, Index CAR-WB, and Operator '>'
WHEN:
The system calls GCCUSIO program
THEN:
- The system retrieves the next us cargo record from gcsusrt table based on car id
- Waybill index
β Consolidated Acceptance Criteria
- The system checks the status code returned from the query → if status code equals spaces, the query was successful and processing continues; otherwise, set End of Database flag to indicate no more records available
- The system checks the operation status code → if status code is spaces, the retrieval was successful and processing continues; otherwise, the end of database is reached
- The system checks the database operation status code → if the status code is spaces (blank), the cargo record exists; otherwise, the cargo record does not exist 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_StatusCodeSpaces(["Start Step"])
E_StatusCodeSpaces(["End Step"])
N_StatusCodeSpaces_Node0{"The system checks the status code
returned from the query"}:::decision N_StatusCodeSpaces_Node0_action["If status code equals spaces, the
query was successful and processing
continues otherwise, set End of
Database flag to indicate no more
records available"]:::main N_StatusCodeSpaces_Node0 -- Yes --> N_StatusCodeSpaces_Node0_action N_StatusCodeSpaces_Node0_action --> E_StatusCodeSpaces S_StatusCodeSpaces --> N_StatusCodeSpaces_Node0 N_StatusCodeSpaces_Node1{"The system checks the operation
status code"}:::decision N_StatusCodeSpaces_Node1_action["If status code is spaces, the
retrieval was successful and
processing continues otherwise, the
end of database is reached"]:::main N_StatusCodeSpaces_Node1 -- Yes --> N_StatusCodeSpaces_Node1_action N_StatusCodeSpaces_Node1_action --> E_StatusCodeSpaces N_StatusCodeSpaces_Node0 -- No --> N_StatusCodeSpaces_Node1 N_StatusCodeSpaces_Node2{"The system checks the database
operation status code"}:::decision N_StatusCodeSpaces_Node2_action["If the status code is spaces blank,
the cargo record exists otherwise,
the cargo record does not exist in
the database"]:::main N_StatusCodeSpaces_Node2 -- Yes --> N_StatusCodeSpaces_Node2_action N_StatusCodeSpaces_Node2_action --> E_StatusCodeSpaces N_StatusCodeSpaces_Node1 -- No --> N_StatusCodeSpaces_Node2 N_StatusCodeSpaces_Node2 -- No --> E_StatusCodeSpaces
returned from the query"}:::decision N_StatusCodeSpaces_Node0_action["If status code equals spaces, the
query was successful and processing
continues otherwise, set End of
Database flag to indicate no more
records available"]:::main N_StatusCodeSpaces_Node0 -- Yes --> N_StatusCodeSpaces_Node0_action N_StatusCodeSpaces_Node0_action --> E_StatusCodeSpaces S_StatusCodeSpaces --> N_StatusCodeSpaces_Node0 N_StatusCodeSpaces_Node1{"The system checks the operation
status code"}:::decision N_StatusCodeSpaces_Node1_action["If status code is spaces, the
retrieval was successful and
processing continues otherwise, the
end of database is reached"]:::main N_StatusCodeSpaces_Node1 -- Yes --> N_StatusCodeSpaces_Node1_action N_StatusCodeSpaces_Node1_action --> E_StatusCodeSpaces N_StatusCodeSpaces_Node0 -- No --> N_StatusCodeSpaces_Node1 N_StatusCodeSpaces_Node2{"The system checks the database
operation status code"}:::decision N_StatusCodeSpaces_Node2_action["If the status code is spaces blank,
the cargo record exists otherwise,
the cargo record does not exist in
the database"]:::main N_StatusCodeSpaces_Node2 -- Yes --> N_StatusCodeSpaces_Node2_action N_StatusCodeSpaces_Node2_action --> E_StatusCodeSpaces N_StatusCodeSpaces_Node1 -- No --> N_StatusCodeSpaces_Node2 N_StatusCodeSpaces_Node2 -- No --> E_StatusCodeSpaces
File: GCX126R.cbl
GIVEN:
A database query has been executed to retrieve the next US cargo record
WHEN:
The system checks the status code returned from the query
THEN:
- If status code equals spaces, the query was successful
- Processing continues; otherwise, set end of database flag to indicate no more records available
File: GCX126R.cbl
GIVEN:
A US cargo record retrieval operation has been executed
WHEN:
The system checks the operation status code
THEN:
- If status code is spaces, the retrieval was successful
- Processing continues; otherwise, the end of database is reached
File: GCX126R.cbl
GIVEN:
The database retrieval operation for cargo has completed
WHEN:
The system checks the database operation status code
THEN:
If the status code is spaces (blank), the cargo record exists; otherwise, the cargo record does not exist in the database
β Consolidated Acceptance Criteria
- The system compares the retrieved record's Car ID (first 12 characters) and Waybill number against the current processing context → if both Car ID (first 12 characters of RT073-CAR-ID-NUM-INDEX) equals current Car ID key AND RT073-WB-NUM-INDEX equals saved Waybill index, the record matches and processing continues; otherwise, set End of Database flag to indicate no matching records found
- The system validates the retrieved record → the first 12 characters of the US cargo car ID number index are compared with current cargo equipment car key AND the US cargo waybill number index is compared with saved waybill index, and if either comparison fails, the end-of-file flag is set to true
- The system validates the retrieved record → the system checks if the first 12 characters of the car ID number index equals the current cargo's equipment car ID AND the waybill number index equals the saved waybill index; if both match, the record is valid; otherwise, it indicates end of matching records
- The system compares the US cargo car ID (first 12 characters) with current car ID key AND compares the US cargo waybill index with saved waybill index → if car ID first 12 characters match current car ID key AND waybill index matches saved waybill index, proceed to check deletion status ELSE set end-of-file flag to true
- The system compares the US cargo car ID (first 12 characters) with current car ID key AND compares the US cargo waybill index with saved waybill index → if car ID first 12 characters match current car ID key AND waybill index matches saved waybill index, proceed to check deletion status ELSE set end-of-file flag to true
- The system compares US cargo car ID (first 12 characters) with current car ID key AND compares US cargo waybill index with saved waybill index → if both car ID and waybill match, proceed to deletion check ELSE set end of file flag to true
- The system compares US cargo car ID (first 12 characters) with current car ID key AND compares US cargo waybill index with saved waybill index → if both car ID and waybill match, proceed to deletion check ELSE set end of file flag to true
- The system compares the retrieved US cargo's car ID index (first 12 characters) with the current cargo equipment car ID key and compares the US cargo's waybill index with the current cargo's waybill index → if both the car ID (first 12 characters) and waybill index match exactly, the record is valid for processing; if either does not match, the end-of-database flag is set
- The system validates the retrieved record's car identifier (first 12 characters) against the current cargo's car identifier key AND the waybill number index against the saved waybill index → if both the car identifier and waybill match, continue validation; otherwise set the end-of-database flag to true
- The system compares the first 12 characters of the retrieved car ID index with the current equipment car ID key AND compares the retrieved waybill number index with the saved waybill index → if both car ID (first 12 characters) and waybill number match, continue validation; otherwise set end-of-database flag to true
- The system validates the retrieved record → if the US cargo car ID number index (first 12 characters) equals the current equipment car ID key AND the US cargo waybill number index equals the saved waybill index, continue processing; otherwise set end-of-database flag to TRUE 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_CarIDandWaybillMatch(["Start Step"])
E_CarIDandWaybillMatch(["End Step"])
N_CarIDandWaybillMatch_Node0{"The system compares the retrieved
record s Car ID first 12 characters
and Waybill number against the
current processing context"}:::decision N_CarIDandWaybillMatch_Node0_action["If both Car ID first 12 characters
of RT073-CAR-ID-NUM-INDEX equals
current Car ID key AND
RT073-WB-NUM-INDEX equals saved
Waybill index, the record matches
and processing continues otherwise,
set End of Database flag to indicate
no matching records found"]:::main N_CarIDandWaybillMatch_Node0 -- Yes --> N_CarIDandWaybillMatch_Node0_action N_CarIDandWaybillMatch_Node0_action --> E_CarIDandWaybillMatch S_CarIDandWaybillMatch --> N_CarIDandWaybillMatch_Node0 N_CarIDandWaybillMatch_Node1{"The system validates the retrieved
record"}:::decision N_CarIDandWaybillMatch_Node1_action["The first 12 characters of the US
cargo car ID number index are
compared with current cargo
equipment car key AND the US cargo
waybill number index is compared
with saved waybill index, and if
either comparison fails, the
end-of-file flag is set to true"]:::main N_CarIDandWaybillMatch_Node1 -- Yes --> N_CarIDandWaybillMatch_Node1_action N_CarIDandWaybillMatch_Node1_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node0 -- No --> N_CarIDandWaybillMatch_Node1 N_CarIDandWaybillMatch_Node2{"The system validates the retrieved
record"}:::decision N_CarIDandWaybillMatch_Node2_action["The system checks if the first 12
characters of the car ID number
index equals the current cargo s
equipment car ID AND the waybill
number index equals the saved
waybill index if both match, the
record is valid otherwise, it
indicates end of matching records"]:::main N_CarIDandWaybillMatch_Node2 -- Yes --> N_CarIDandWaybillMatch_Node2_action N_CarIDandWaybillMatch_Node2_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node1 -- No --> N_CarIDandWaybillMatch_Node2 N_CarIDandWaybillMatch_Node3{"The system compares the US cargo
car ID first 12 characters with
current car ID key AND compares the
US cargo waybill index with saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node3_action["If car ID first 12 characters match
current car ID key AND waybill index
matches saved waybill index, proceed
to check deletion status ELSE set
end-of-file flag to true"]:::main N_CarIDandWaybillMatch_Node3 -- Yes --> N_CarIDandWaybillMatch_Node3_action N_CarIDandWaybillMatch_Node3_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node2 -- No --> N_CarIDandWaybillMatch_Node3 N_CarIDandWaybillMatch_Node4{"The system compares the US cargo
car ID first 12 characters with
current car ID key AND compares the
US cargo waybill index with saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node4_action["If car ID first 12 characters match
current car ID key AND waybill index
matches saved waybill index, proceed
to check deletion status ELSE set
end-of-file flag to true"]:::main N_CarIDandWaybillMatch_Node4 -- Yes --> N_CarIDandWaybillMatch_Node4_action N_CarIDandWaybillMatch_Node4_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node3 -- No --> N_CarIDandWaybillMatch_Node4 N_CarIDandWaybillMatch_Node5{"The system compares US cargo car ID
first 12 characters with current car
ID key AND compares US cargo waybill
index with saved waybill index"}:::decision N_CarIDandWaybillMatch_Node5_action["If both car ID and waybill match,
proceed to deletion check ELSE set
end of file flag to true"]:::main N_CarIDandWaybillMatch_Node5 -- Yes --> N_CarIDandWaybillMatch_Node5_action N_CarIDandWaybillMatch_Node5_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node4 -- No --> N_CarIDandWaybillMatch_Node5 N_CarIDandWaybillMatch_Node6{"The system compares US cargo car ID
first 12 characters with current car
ID key AND compares US cargo waybill
index with saved waybill index"}:::decision N_CarIDandWaybillMatch_Node6_action["If both car ID and waybill match,
proceed to deletion check ELSE set
end of file flag to true"]:::main N_CarIDandWaybillMatch_Node6 -- Yes --> N_CarIDandWaybillMatch_Node6_action N_CarIDandWaybillMatch_Node6_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node5 -- No --> N_CarIDandWaybillMatch_Node6 N_CarIDandWaybillMatch_Node7{"The system compares the retrieved
US cargo s car ID index first 12
characters with the current cargo
equipment car ID key and compares
the US cargo s waybill index with
the current cargo s waybill index"}:::decision N_CarIDandWaybillMatch_Node7_action["If both the car ID first 12
characters and waybill index match
exactly, the record is valid for
processing if either does not match,
the end-of-database flag is set"]:::main N_CarIDandWaybillMatch_Node7 -- Yes --> N_CarIDandWaybillMatch_Node7_action N_CarIDandWaybillMatch_Node7_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node6 -- No --> N_CarIDandWaybillMatch_Node7 N_CarIDandWaybillMatch_Node8{"The system validates the retrieved
record s car identifier first 12
characters against the current cargo
s car identifier key AND the waybill
number index against the saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node8_action["If both the car identifier and
waybill match, continue validation
otherwise set the end-of-database
flag to true"]:::main N_CarIDandWaybillMatch_Node8 -- Yes --> N_CarIDandWaybillMatch_Node8_action N_CarIDandWaybillMatch_Node8_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node7 -- No --> N_CarIDandWaybillMatch_Node8 N_CarIDandWaybillMatch_Node9{"The system compares the first 12
characters of the retrieved car ID
index with the current equipment car
ID key AND compares the retrieved
waybill number index with the saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node9_action["If both car ID first 12 characters
and waybill number match, continue
validation otherwise set
end-of-database flag to true"]:::main N_CarIDandWaybillMatch_Node9 -- Yes --> N_CarIDandWaybillMatch_Node9_action N_CarIDandWaybillMatch_Node9_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node8 -- No --> N_CarIDandWaybillMatch_Node9 N_CarIDandWaybillMatch_Node10{"The system validates the retrieved
record"}:::decision N_CarIDandWaybillMatch_Node10_action["If the US cargo car ID number index
first 12 characters equals the
current equipment car ID key AND the
US cargo waybill number index equals
the saved waybill index, continue
processing otherwise set
end-of-database flag to TRUE and
exit"]:::main N_CarIDandWaybillMatch_Node10 -- Yes --> N_CarIDandWaybillMatch_Node10_action N_CarIDandWaybillMatch_Node10_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node9 -- No --> N_CarIDandWaybillMatch_Node10 N_CarIDandWaybillMatch_Node10 -- No --> E_CarIDandWaybillMatch
record s Car ID first 12 characters
and Waybill number against the
current processing context"}:::decision N_CarIDandWaybillMatch_Node0_action["If both Car ID first 12 characters
of RT073-CAR-ID-NUM-INDEX equals
current Car ID key AND
RT073-WB-NUM-INDEX equals saved
Waybill index, the record matches
and processing continues otherwise,
set End of Database flag to indicate
no matching records found"]:::main N_CarIDandWaybillMatch_Node0 -- Yes --> N_CarIDandWaybillMatch_Node0_action N_CarIDandWaybillMatch_Node0_action --> E_CarIDandWaybillMatch S_CarIDandWaybillMatch --> N_CarIDandWaybillMatch_Node0 N_CarIDandWaybillMatch_Node1{"The system validates the retrieved
record"}:::decision N_CarIDandWaybillMatch_Node1_action["The first 12 characters of the US
cargo car ID number index are
compared with current cargo
equipment car key AND the US cargo
waybill number index is compared
with saved waybill index, and if
either comparison fails, the
end-of-file flag is set to true"]:::main N_CarIDandWaybillMatch_Node1 -- Yes --> N_CarIDandWaybillMatch_Node1_action N_CarIDandWaybillMatch_Node1_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node0 -- No --> N_CarIDandWaybillMatch_Node1 N_CarIDandWaybillMatch_Node2{"The system validates the retrieved
record"}:::decision N_CarIDandWaybillMatch_Node2_action["The system checks if the first 12
characters of the car ID number
index equals the current cargo s
equipment car ID AND the waybill
number index equals the saved
waybill index if both match, the
record is valid otherwise, it
indicates end of matching records"]:::main N_CarIDandWaybillMatch_Node2 -- Yes --> N_CarIDandWaybillMatch_Node2_action N_CarIDandWaybillMatch_Node2_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node1 -- No --> N_CarIDandWaybillMatch_Node2 N_CarIDandWaybillMatch_Node3{"The system compares the US cargo
car ID first 12 characters with
current car ID key AND compares the
US cargo waybill index with saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node3_action["If car ID first 12 characters match
current car ID key AND waybill index
matches saved waybill index, proceed
to check deletion status ELSE set
end-of-file flag to true"]:::main N_CarIDandWaybillMatch_Node3 -- Yes --> N_CarIDandWaybillMatch_Node3_action N_CarIDandWaybillMatch_Node3_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node2 -- No --> N_CarIDandWaybillMatch_Node3 N_CarIDandWaybillMatch_Node4{"The system compares the US cargo
car ID first 12 characters with
current car ID key AND compares the
US cargo waybill index with saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node4_action["If car ID first 12 characters match
current car ID key AND waybill index
matches saved waybill index, proceed
to check deletion status ELSE set
end-of-file flag to true"]:::main N_CarIDandWaybillMatch_Node4 -- Yes --> N_CarIDandWaybillMatch_Node4_action N_CarIDandWaybillMatch_Node4_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node3 -- No --> N_CarIDandWaybillMatch_Node4 N_CarIDandWaybillMatch_Node5{"The system compares US cargo car ID
first 12 characters with current car
ID key AND compares US cargo waybill
index with saved waybill index"}:::decision N_CarIDandWaybillMatch_Node5_action["If both car ID and waybill match,
proceed to deletion check ELSE set
end of file flag to true"]:::main N_CarIDandWaybillMatch_Node5 -- Yes --> N_CarIDandWaybillMatch_Node5_action N_CarIDandWaybillMatch_Node5_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node4 -- No --> N_CarIDandWaybillMatch_Node5 N_CarIDandWaybillMatch_Node6{"The system compares US cargo car ID
first 12 characters with current car
ID key AND compares US cargo waybill
index with saved waybill index"}:::decision N_CarIDandWaybillMatch_Node6_action["If both car ID and waybill match,
proceed to deletion check ELSE set
end of file flag to true"]:::main N_CarIDandWaybillMatch_Node6 -- Yes --> N_CarIDandWaybillMatch_Node6_action N_CarIDandWaybillMatch_Node6_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node5 -- No --> N_CarIDandWaybillMatch_Node6 N_CarIDandWaybillMatch_Node7{"The system compares the retrieved
US cargo s car ID index first 12
characters with the current cargo
equipment car ID key and compares
the US cargo s waybill index with
the current cargo s waybill index"}:::decision N_CarIDandWaybillMatch_Node7_action["If both the car ID first 12
characters and waybill index match
exactly, the record is valid for
processing if either does not match,
the end-of-database flag is set"]:::main N_CarIDandWaybillMatch_Node7 -- Yes --> N_CarIDandWaybillMatch_Node7_action N_CarIDandWaybillMatch_Node7_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node6 -- No --> N_CarIDandWaybillMatch_Node7 N_CarIDandWaybillMatch_Node8{"The system validates the retrieved
record s car identifier first 12
characters against the current cargo
s car identifier key AND the waybill
number index against the saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node8_action["If both the car identifier and
waybill match, continue validation
otherwise set the end-of-database
flag to true"]:::main N_CarIDandWaybillMatch_Node8 -- Yes --> N_CarIDandWaybillMatch_Node8_action N_CarIDandWaybillMatch_Node8_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node7 -- No --> N_CarIDandWaybillMatch_Node8 N_CarIDandWaybillMatch_Node9{"The system compares the first 12
characters of the retrieved car ID
index with the current equipment car
ID key AND compares the retrieved
waybill number index with the saved
waybill index"}:::decision N_CarIDandWaybillMatch_Node9_action["If both car ID first 12 characters
and waybill number match, continue
validation otherwise set
end-of-database flag to true"]:::main N_CarIDandWaybillMatch_Node9 -- Yes --> N_CarIDandWaybillMatch_Node9_action N_CarIDandWaybillMatch_Node9_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node8 -- No --> N_CarIDandWaybillMatch_Node9 N_CarIDandWaybillMatch_Node10{"The system validates the retrieved
record"}:::decision N_CarIDandWaybillMatch_Node10_action["If the US cargo car ID number index
first 12 characters equals the
current equipment car ID key AND the
US cargo waybill number index equals
the saved waybill index, continue
processing otherwise set
end-of-database flag to TRUE and
exit"]:::main N_CarIDandWaybillMatch_Node10 -- Yes --> N_CarIDandWaybillMatch_Node10_action N_CarIDandWaybillMatch_Node10_action --> E_CarIDandWaybillMatch N_CarIDandWaybillMatch_Node9 -- No --> N_CarIDandWaybillMatch_Node10 N_CarIDandWaybillMatch_Node10 -- No --> E_CarIDandWaybillMatch
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database with current Car ID key and saved Waybill index
WHEN:
The system compares the retrieved record's Car ID (first 12 characters) and Waybill number against the current processing context
THEN:
- If both car id (first 12 characters of rt073-car-id-num-index) equals current car id key
- Rt073-wb-num-index equals saved waybill index, the record matches
- Processing continues; otherwise, set end of database flag to indicate no matching records found
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
The system validates the retrieved record
THEN:
- The first 12 characters of the us cargo car id number index are compared with current cargo equipment car key
- The us cargo waybill number index is compared with saved waybill index, and if either comparison fails, the end-of-file flag is set to true
File: GCX126R.cbl
GIVEN:
A US cargo record was successfully retrieved from the database
WHEN:
The system validates the retrieved record
THEN:
- The system checks if the first 12 characters of the car id number index equals the current cargo's equipment car id
- The waybill number index equals the saved waybill index; if both match, the record is valid; otherwise, it indicates end of matching records
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved
WHEN:
- The system compares the us cargo car id (first 12 characters) with current car id key
- Compares the us cargo waybill index with saved waybill index
THEN:
- If car id first 12 characters match current car id key
- Waybill index matches saved waybill index, proceed to check deletion status else set end-of-file flag to true
File: GCX126R.cbl
GIVEN:
A next US cargo record has been successfully retrieved
WHEN:
- The system compares the us cargo car id (first 12 characters) with current car id key
- Compares the us cargo waybill index with saved waybill index
THEN:
- If car id first 12 characters match current car id key
- Waybill index matches saved waybill index, proceed to check deletion status else set end-of-file flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from database
WHEN:
- The system compares us cargo car id (first 12 characters) with current car id key
- Compares us cargo waybill index with saved waybill index
THEN:
- If both car id
- Waybill match, proceed to deletion check else set end of file flag to true
File: GCX126R.cbl
GIVEN:
A next US cargo record has been successfully retrieved from database
WHEN:
- The system compares us cargo car id (first 12 characters) with current car id key
- Compares us cargo waybill index with saved waybill index
THEN:
- If both car id
- Waybill match, proceed to deletion check else set end of file flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
- The system compares the retrieved us cargo's car id index (first 12 characters) with the current cargo equipment car id key
- Compares the us cargo's waybill index with the current cargo's waybill index
THEN:
If both the car ID (first 12 characters) and waybill index match exactly, the record is valid for processing; if either does not match, the end-of-database flag is set
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
- The system validates the retrieved record's car identifier (first 12 characters) against the current cargo's car identifier key
- The waybill number index against the saved waybill index
THEN:
- If both the car identifier
- Waybill match, continue validation; otherwise set the end-of-database flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database with car ID index and waybill number index
WHEN:
- The system compares the first 12 characters of the retrieved car id index with the current equipment car id key
- Compares the retrieved waybill number index with the saved waybill index
THEN:
If both car ID (first 12 characters) and waybill number match, continue validation; otherwise set end-of-database flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
The system validates the retrieved record
THEN:
- If the us cargo car id number index (first 12 characters) equals the current equipment car id key
- The us cargo waybill number index equals the saved waybill index, continue processing; otherwise set end-of-database flag to true
- Exit
β Consolidated Acceptance Criteria
- The system checks the cargo record's deletion status and train creation indicator → if cargo is marked as deleted (RT10-CPCARGO-DELETED is true) OR train has already been created for it (TR-CREATED-FOR-IT equals 'Y'), skip this record and continue to next; otherwise, set US Manifest Found flag to indicate a valid record has been located
- If the record's processing eligibility → if the cargo deletion status indicator shows deleted OR the train-created-for-it flag equals 'Y', the record should be skipped; otherwise, it is eligible for processing
- The system checks the cargo deletion status indicator AND train created indicator → if cargo is marked as deleted OR train created indicator equals 'Y', continue to get next record ELSE set US manifest found flag to true
- The system checks the cargo deletion status indicator AND train created indicator → if cargo is marked as deleted OR train created indicator equals 'Y', continue to get next record ELSE set US manifest found flag to true
- The system checks if the cargo is marked as deleted or has train created indicator set to 'Y' → if cargo is deleted or train created indicator is 'Y', the record is skipped; otherwise, it is marked as found for processing
- The system validates the cargo record status → if the cargo record has a deleted status indicator or if the train-created-for-it field equals 'Y', the system skips processing this cargo and terminates; otherwise, the system proceeds to log the release information
- The system checks US cargo deletion status indicator OR train created indicator → if cargo is deleted OR train created indicator equals 'Y', skip this record and continue search ELSE set US manifest found flag to true
- The system checks US cargo deletion status indicator OR train created indicator → if cargo is deleted OR train created indicator equals 'Y', check for end of file to continue search ELSE set US manifest found flag to true
- The system checks the US cargo's deletion status indicator and the train-created indicator → if the cargo deletion status is 'D' (deleted) or the train-created-for-it indicator is 'Y', the record is skipped and end-of-database flag is set; if both conditions are false, the US manifest found flag is set
- The system checks if the cargo is marked as deleted OR if a train has already been created for it (TR-CREATED-FOR-IT = 'Y') → if either condition is true, skip setting the US manifest found flag and proceed to completion; otherwise continue to set the found flag
- The system checks if the cargo delete status indicator is set to deleted OR the train-created-for-it indicator is 'Y' → if either condition is true, skip this record and continue to next; otherwise set US manifest found flag to true
- The system checks the cargo record status → if the cargo delete status indicator shows DELETED OR the train-created-for-it field equals 'Y', skip this record and retrieve the next US cargo record; otherwise mark the US manifest as found
- Evaluating the cargo's deletion status indicator and the train-created-for-it flag → if the cargo is marked as deleted OR the train-created-for-it flag equals 'Y', skip this record and continue searching; if both conditions are false, mark the US manifest 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_CargoDeletedorTRCreated(["Start Step"])
E_CargoDeletedorTRCreated(["End Step"])
N_CargoDeletedorTRCreated_Node0{"The system checks the cargo record
s deletion status and train creation
indicator"}:::decision N_CargoDeletedorTRCreated_Node0_action["If cargo is marked as deleted
RT10-CPCARGO-DELETED is true OR
train has already been created for
it TR-CREATED-FOR-IT equals Y , skip
this record and continue to next
otherwise, set US Manifest Found
flag to indicate a valid record has
been located"]:::main N_CargoDeletedorTRCreated_Node0 -- Yes --> N_CargoDeletedorTRCreated_Node0_action N_CargoDeletedorTRCreated_Node0_action --> E_CargoDeletedorTRCreated S_CargoDeletedorTRCreated --> N_CargoDeletedorTRCreated_Node0 N_CargoDeletedorTRCreated_Node1{"The system evaluates the record s
processing eligibility"}:::decision N_CargoDeletedorTRCreated_Node1_action["If the cargo deletion status
indicator shows deleted OR the
train-created-for-it flag equals Y ,
the record should be skipped
otherwise, it is eligible for
processing"]:::main N_CargoDeletedorTRCreated_Node1 -- Yes --> N_CargoDeletedorTRCreated_Node1_action N_CargoDeletedorTRCreated_Node1_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node0 -- No --> N_CargoDeletedorTRCreated_Node1 N_CargoDeletedorTRCreated_Node2{"The system checks the cargo
deletion status indicator AND train
created indicator"}:::decision N_CargoDeletedorTRCreated_Node2_action["If cargo is marked as deleted OR
train created indicator equals Y ,
continue to get next record ELSE set
US manifest found flag to true"]:::main N_CargoDeletedorTRCreated_Node2 -- Yes --> N_CargoDeletedorTRCreated_Node2_action N_CargoDeletedorTRCreated_Node2_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node1 -- No --> N_CargoDeletedorTRCreated_Node2 N_CargoDeletedorTRCreated_Node3{"The system checks the cargo
deletion status indicator AND train
created indicator"}:::decision N_CargoDeletedorTRCreated_Node3_action["If cargo is marked as deleted OR
train created indicator equals Y ,
continue to get next record ELSE set
US manifest found flag to true"]:::main N_CargoDeletedorTRCreated_Node3 -- Yes --> N_CargoDeletedorTRCreated_Node3_action N_CargoDeletedorTRCreated_Node3_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node2 -- No --> N_CargoDeletedorTRCreated_Node3 N_CargoDeletedorTRCreated_Node4{"The system checks if the cargo is
marked as deleted or has train
created indicator set to Y"}:::decision N_CargoDeletedorTRCreated_Node4_action["If cargo is deleted or train
created indicator is Y , the record
is skipped otherwise, it is marked
as found for processing"]:::main N_CargoDeletedorTRCreated_Node4 -- Yes --> N_CargoDeletedorTRCreated_Node4_action N_CargoDeletedorTRCreated_Node4_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node3 -- No --> N_CargoDeletedorTRCreated_Node4 N_CargoDeletedorTRCreated_Node5{"The system validates the cargo
record status"}:::decision N_CargoDeletedorTRCreated_Node5_action["If the cargo record has a deleted
status indicator or if the
train-created-for-it field equals Y
, the system skips processing this
cargo and terminates otherwise, the
system proceeds to log the release
information"]:::main N_CargoDeletedorTRCreated_Node5 -- Yes --> N_CargoDeletedorTRCreated_Node5_action N_CargoDeletedorTRCreated_Node5_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node4 -- No --> N_CargoDeletedorTRCreated_Node5 N_CargoDeletedorTRCreated_Node6{"The system checks US cargo deletion
status indicator OR train created
indicator"}:::decision N_CargoDeletedorTRCreated_Node6_action["If cargo is deleted OR train
created indicator equals Y , skip
this record and continue search ELSE
set US manifest found flag to true"]:::main N_CargoDeletedorTRCreated_Node6 -- Yes --> N_CargoDeletedorTRCreated_Node6_action N_CargoDeletedorTRCreated_Node6_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node5 -- No --> N_CargoDeletedorTRCreated_Node6 N_CargoDeletedorTRCreated_Node7{"The system checks US cargo deletion
status indicator OR train created
indicator"}:::decision N_CargoDeletedorTRCreated_Node7_action["If cargo is deleted OR train
created indicator equals Y , check
for end of file to continue search
ELSE set US manifest found flag to
true"]:::main N_CargoDeletedorTRCreated_Node7 -- Yes --> N_CargoDeletedorTRCreated_Node7_action N_CargoDeletedorTRCreated_Node7_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node6 -- No --> N_CargoDeletedorTRCreated_Node7 N_CargoDeletedorTRCreated_Node8{"The system checks the US cargo s
deletion status indicator and the
train-created indicator"}:::decision N_CargoDeletedorTRCreated_Node8_action["If the cargo deletion status is D
deleted or the train-created-for-it
indicator is Y , the record is
skipped and end-of-database flag is
set if both conditions are false,
the US manifest found flag is set"]:::main N_CargoDeletedorTRCreated_Node8 -- Yes --> N_CargoDeletedorTRCreated_Node8_action N_CargoDeletedorTRCreated_Node8_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node7 -- No --> N_CargoDeletedorTRCreated_Node8 N_CargoDeletedorTRCreated_Node9{"The system checks if the cargo is
marked as deleted OR if a train has
already been created for it
TR-CREATED-FOR-IT Y"}:::decision N_CargoDeletedorTRCreated_Node9_action["If either condition is true, skip
setting the US manifest found flag
and proceed to completion otherwise
continue to set the found flag"]:::main N_CargoDeletedorTRCreated_Node9 -- Yes --> N_CargoDeletedorTRCreated_Node9_action N_CargoDeletedorTRCreated_Node9_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node8 -- No --> N_CargoDeletedorTRCreated_Node9 N_CargoDeletedorTRCreated_Node10{"The system checks if the cargo
delete status indicator is set to
deleted OR the train-created-for-it
indicator is Y"}:::decision N_CargoDeletedorTRCreated_Node10_action["If either condition is true, skip
this record and continue to next
otherwise set US manifest found flag
to true"]:::main N_CargoDeletedorTRCreated_Node10 -- Yes --> N_CargoDeletedorTRCreated_Node10_action N_CargoDeletedorTRCreated_Node10_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node9 -- No --> N_CargoDeletedorTRCreated_Node10 N_CargoDeletedorTRCreated_Node11{"The system checks the cargo record
status"}:::decision N_CargoDeletedorTRCreated_Node11_action["If the cargo delete status
indicator shows DELETED OR the
train-created-for-it field equals Y
, skip this record and retrieve the
next US cargo record otherwise mark
the US manifest as found"]:::main N_CargoDeletedorTRCreated_Node11 -- Yes --> N_CargoDeletedorTRCreated_Node11_action N_CargoDeletedorTRCreated_Node11_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node10 -- No --> N_CargoDeletedorTRCreated_Node11 N_CargoDeletedorTRCreated_Node12{"Evaluating the cargo s deletion
status indicator and the
train-created-for-it flag"}:::decision N_CargoDeletedorTRCreated_Node12_action["If the cargo is marked as deleted
OR the train-created-for-it flag
equals Y , skip this record and
continue searching if both
conditions are false, mark the US
manifest as found"]:::main N_CargoDeletedorTRCreated_Node12 -- Yes --> N_CargoDeletedorTRCreated_Node12_action N_CargoDeletedorTRCreated_Node12_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node11 -- No --> N_CargoDeletedorTRCreated_Node12 N_CargoDeletedorTRCreated_Node12 -- No --> E_CargoDeletedorTRCreated
s deletion status and train creation
indicator"}:::decision N_CargoDeletedorTRCreated_Node0_action["If cargo is marked as deleted
RT10-CPCARGO-DELETED is true OR
train has already been created for
it TR-CREATED-FOR-IT equals Y , skip
this record and continue to next
otherwise, set US Manifest Found
flag to indicate a valid record has
been located"]:::main N_CargoDeletedorTRCreated_Node0 -- Yes --> N_CargoDeletedorTRCreated_Node0_action N_CargoDeletedorTRCreated_Node0_action --> E_CargoDeletedorTRCreated S_CargoDeletedorTRCreated --> N_CargoDeletedorTRCreated_Node0 N_CargoDeletedorTRCreated_Node1{"The system evaluates the record s
processing eligibility"}:::decision N_CargoDeletedorTRCreated_Node1_action["If the cargo deletion status
indicator shows deleted OR the
train-created-for-it flag equals Y ,
the record should be skipped
otherwise, it is eligible for
processing"]:::main N_CargoDeletedorTRCreated_Node1 -- Yes --> N_CargoDeletedorTRCreated_Node1_action N_CargoDeletedorTRCreated_Node1_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node0 -- No --> N_CargoDeletedorTRCreated_Node1 N_CargoDeletedorTRCreated_Node2{"The system checks the cargo
deletion status indicator AND train
created indicator"}:::decision N_CargoDeletedorTRCreated_Node2_action["If cargo is marked as deleted OR
train created indicator equals Y ,
continue to get next record ELSE set
US manifest found flag to true"]:::main N_CargoDeletedorTRCreated_Node2 -- Yes --> N_CargoDeletedorTRCreated_Node2_action N_CargoDeletedorTRCreated_Node2_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node1 -- No --> N_CargoDeletedorTRCreated_Node2 N_CargoDeletedorTRCreated_Node3{"The system checks the cargo
deletion status indicator AND train
created indicator"}:::decision N_CargoDeletedorTRCreated_Node3_action["If cargo is marked as deleted OR
train created indicator equals Y ,
continue to get next record ELSE set
US manifest found flag to true"]:::main N_CargoDeletedorTRCreated_Node3 -- Yes --> N_CargoDeletedorTRCreated_Node3_action N_CargoDeletedorTRCreated_Node3_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node2 -- No --> N_CargoDeletedorTRCreated_Node3 N_CargoDeletedorTRCreated_Node4{"The system checks if the cargo is
marked as deleted or has train
created indicator set to Y"}:::decision N_CargoDeletedorTRCreated_Node4_action["If cargo is deleted or train
created indicator is Y , the record
is skipped otherwise, it is marked
as found for processing"]:::main N_CargoDeletedorTRCreated_Node4 -- Yes --> N_CargoDeletedorTRCreated_Node4_action N_CargoDeletedorTRCreated_Node4_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node3 -- No --> N_CargoDeletedorTRCreated_Node4 N_CargoDeletedorTRCreated_Node5{"The system validates the cargo
record status"}:::decision N_CargoDeletedorTRCreated_Node5_action["If the cargo record has a deleted
status indicator or if the
train-created-for-it field equals Y
, the system skips processing this
cargo and terminates otherwise, the
system proceeds to log the release
information"]:::main N_CargoDeletedorTRCreated_Node5 -- Yes --> N_CargoDeletedorTRCreated_Node5_action N_CargoDeletedorTRCreated_Node5_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node4 -- No --> N_CargoDeletedorTRCreated_Node5 N_CargoDeletedorTRCreated_Node6{"The system checks US cargo deletion
status indicator OR train created
indicator"}:::decision N_CargoDeletedorTRCreated_Node6_action["If cargo is deleted OR train
created indicator equals Y , skip
this record and continue search ELSE
set US manifest found flag to true"]:::main N_CargoDeletedorTRCreated_Node6 -- Yes --> N_CargoDeletedorTRCreated_Node6_action N_CargoDeletedorTRCreated_Node6_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node5 -- No --> N_CargoDeletedorTRCreated_Node6 N_CargoDeletedorTRCreated_Node7{"The system checks US cargo deletion
status indicator OR train created
indicator"}:::decision N_CargoDeletedorTRCreated_Node7_action["If cargo is deleted OR train
created indicator equals Y , check
for end of file to continue search
ELSE set US manifest found flag to
true"]:::main N_CargoDeletedorTRCreated_Node7 -- Yes --> N_CargoDeletedorTRCreated_Node7_action N_CargoDeletedorTRCreated_Node7_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node6 -- No --> N_CargoDeletedorTRCreated_Node7 N_CargoDeletedorTRCreated_Node8{"The system checks the US cargo s
deletion status indicator and the
train-created indicator"}:::decision N_CargoDeletedorTRCreated_Node8_action["If the cargo deletion status is D
deleted or the train-created-for-it
indicator is Y , the record is
skipped and end-of-database flag is
set if both conditions are false,
the US manifest found flag is set"]:::main N_CargoDeletedorTRCreated_Node8 -- Yes --> N_CargoDeletedorTRCreated_Node8_action N_CargoDeletedorTRCreated_Node8_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node7 -- No --> N_CargoDeletedorTRCreated_Node8 N_CargoDeletedorTRCreated_Node9{"The system checks if the cargo is
marked as deleted OR if a train has
already been created for it
TR-CREATED-FOR-IT Y"}:::decision N_CargoDeletedorTRCreated_Node9_action["If either condition is true, skip
setting the US manifest found flag
and proceed to completion otherwise
continue to set the found flag"]:::main N_CargoDeletedorTRCreated_Node9 -- Yes --> N_CargoDeletedorTRCreated_Node9_action N_CargoDeletedorTRCreated_Node9_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node8 -- No --> N_CargoDeletedorTRCreated_Node9 N_CargoDeletedorTRCreated_Node10{"The system checks if the cargo
delete status indicator is set to
deleted OR the train-created-for-it
indicator is Y"}:::decision N_CargoDeletedorTRCreated_Node10_action["If either condition is true, skip
this record and continue to next
otherwise set US manifest found flag
to true"]:::main N_CargoDeletedorTRCreated_Node10 -- Yes --> N_CargoDeletedorTRCreated_Node10_action N_CargoDeletedorTRCreated_Node10_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node9 -- No --> N_CargoDeletedorTRCreated_Node10 N_CargoDeletedorTRCreated_Node11{"The system checks the cargo record
status"}:::decision N_CargoDeletedorTRCreated_Node11_action["If the cargo delete status
indicator shows DELETED OR the
train-created-for-it field equals Y
, skip this record and retrieve the
next US cargo record otherwise mark
the US manifest as found"]:::main N_CargoDeletedorTRCreated_Node11 -- Yes --> N_CargoDeletedorTRCreated_Node11_action N_CargoDeletedorTRCreated_Node11_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node10 -- No --> N_CargoDeletedorTRCreated_Node11 N_CargoDeletedorTRCreated_Node12{"Evaluating the cargo s deletion
status indicator and the
train-created-for-it flag"}:::decision N_CargoDeletedorTRCreated_Node12_action["If the cargo is marked as deleted
OR the train-created-for-it flag
equals Y , skip this record and
continue searching if both
conditions are false, mark the US
manifest as found"]:::main N_CargoDeletedorTRCreated_Node12 -- Yes --> N_CargoDeletedorTRCreated_Node12_action N_CargoDeletedorTRCreated_Node12_action --> E_CargoDeletedorTRCreated N_CargoDeletedorTRCreated_Node11 -- No --> N_CargoDeletedorTRCreated_Node12 N_CargoDeletedorTRCreated_Node12 -- No --> E_CargoDeletedorTRCreated
File: GCX126R.cbl
GIVEN:
A matching US cargo record has been found based on Car ID and Waybill
WHEN:
- The system checks the cargo record's deletion status
- Train creation indicator
THEN:
- If cargo is marked as deleted (rt10-cpcargo-deleted is true) or train has already been created for it (tr-created-for-it equals 'y'), skip this record
- Continue to next; otherwise, set us manifest found flag to indicate a valid record has been located
File: GCX126R.cbl
GIVEN:
A US cargo record matches the equipment car ID and waybill number
WHEN:
The system evaluates the record's processing eligibility
THEN:
If the cargo deletion status indicator shows deleted OR the train-created-for-it flag equals 'Y', the record should be skipped; otherwise, it is eligible for processing
File: GCX126R.cbl
GIVEN:
A matching US cargo record by car ID and waybill has been found
WHEN:
- The system checks the cargo deletion status indicator
- Train created indicator
THEN:
If cargo is marked as deleted OR train created indicator equals 'Y', continue to get next record ELSE set US manifest found flag to true
File: GCX126R.cbl
GIVEN:
A next matching US cargo record by car ID and waybill has been found
WHEN:
- The system checks the cargo deletion status indicator
- Train created indicator
THEN:
If cargo is marked as deleted OR train created indicator equals 'Y', continue to get next record ELSE set US manifest found flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved that matches equipment and waybill criteria
WHEN:
The system checks if the cargo is marked as deleted or has train created indicator set to 'Y'
THEN:
If cargo is deleted or train created indicator is 'Y', the record is skipped; otherwise, it is marked as found for processing
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved matching the equipment car identifier and waybill number
WHEN:
The system validates the cargo record status
THEN:
- If the cargo record has a deleted status indicator or if the train-created-for-it field equals 'y', the system skips processing this cargo
- Terminates; otherwise, the system proceeds to log the release information
File: GCX126R.cbl
GIVEN:
A US cargo record with matching car ID and waybill has been retrieved
WHEN:
The system checks US cargo deletion status indicator OR train created indicator
THEN:
- If cargo is deleted or train created indicator equals 'y', skip this record
- Continue search else set us manifest found flag to true
File: GCX126R.cbl
GIVEN:
A next US cargo record with matching car ID and waybill has been retrieved
WHEN:
The system checks US cargo deletion status indicator OR train created indicator
THEN:
If cargo is deleted OR train created indicator equals 'Y', check for end of file to continue search ELSE set US manifest found flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and validated for car ID and waybill match
WHEN:
- The system checks the us cargo's deletion status indicator
- The train-created indicator
THEN:
- If the cargo deletion status is 'd' (deleted) or the train-created-for-it indicator is 'y', the record is skipped
- End-of-database flag is set; if both conditions are false, the us manifest found flag is set
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and validated for car identifier and waybill match
WHEN:
The system checks if the cargo is marked as deleted OR if a train has already been created for it (TR-CREATED-FOR-IT = 'Y')
THEN:
- If either condition is true, skip setting the us manifest found flag
- Proceed to completion; otherwise continue to set the found flag
File: GCX126R.cbl
GIVEN:
A US cargo record matches the car ID and waybill number criteria
WHEN:
The system checks if the cargo delete status indicator is set to deleted OR the train-created-for-it indicator is 'Y'
THEN:
- If either condition is true, skip this record
- Continue to next; otherwise set us manifest found flag to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and validated for car ID and waybill match
WHEN:
The system checks the cargo record status
THEN:
- If the cargo delete status indicator shows deleted or the train-created-for-it field equals 'y', skip this record
- Retrieve the next us cargo record; otherwise mark the us manifest as found
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved with matching car ID and waybill number
WHEN:
- Evaluating the cargo's deletion status indicator
- The train-created-for-it flag
THEN:
- If the cargo is marked as deleted or the train-created-for-it flag equals 'y', skip this record
- Continue searching; if both conditions are false, mark the us manifest as found
β Consolidated Acceptance Criteria
- The status code returned is not spaces (indicating an error or end of data) → the system sets the End of Database flag to true to stop further record retrieval attempts
- The retrieved record's Car ID (first 12 characters) does not equal current Car ID key OR Waybill number does not equal saved Waybill index → the system sets the End of Database flag to true to stop further record retrieval attempts as no more matching records exist
- The system needs to stop the retrieval loop → set the end-of-database flag (WS-FOLLOWER-END-OF-DB) to true
- The system sets the end-of-database flag → the end-of-database flag is set to true, which will cause the retrieval loop to terminate
- The error or mismatch condition is detected → the end of database flag is set to true to terminate the retrieval loop
- The system processes the search failure → the end-of-database flag (WS-EOF) is set to TRUE to stop further search attempts
- The system needs to stop retrieving additional followers → set the end-of-database flag to true (WS-FOLLOWER-END-OF-DB)
- The system processes the failed retrieval result → the end of database flag is set to true indicating no more records exist
- The system detects the mismatch in equipment or waybill → the end of database flag is set to true indicating no more matching records exist
- Terminating the follower retrieval loop → the end-of-database flag is set to true
- The system determines that database traversal should stop → the end of database flag is set to TRUE to terminate the retrieval loop
- Processing the error condition → set the end of file flag to true to 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_SetEndofDatabaseFlag(["Start Step"])
E_SetEndofDatabaseFlag(["End Step"])
N_SetEndofDatabaseFlag_Node0{"The status code returned is not
spaces indicating an error or end of
data"}:::decision N_SetEndofDatabaseFlag_Node0_action["The system sets the End of Database
flag to true to stop further record
retrieval attempts"]:::exclusion N_SetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node0_action N_SetEndofDatabaseFlag_Node0_action --> E_SetEndofDatabaseFlag S_SetEndofDatabaseFlag --> N_SetEndofDatabaseFlag_Node0 N_SetEndofDatabaseFlag_Node1{"The retrieved record s Car ID first
12 characters does not equal current
Car ID key OR Waybill number does
not equal saved Waybill index"}:::decision N_SetEndofDatabaseFlag_Node1_action["The system sets the End of Database
flag to true to stop further record
retrieval attempts as no more
matching records exist"]:::main N_SetEndofDatabaseFlag_Node1 -- Yes --> N_SetEndofDatabaseFlag_Node1_action N_SetEndofDatabaseFlag_Node1_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node0 -- No --> N_SetEndofDatabaseFlag_Node1 N_SetEndofDatabaseFlag_Node2{"The system needs to stop the
retrieval loop"}:::decision N_SetEndofDatabaseFlag_Node2_action["Set the end-of-database flag
WS-FOLLOWER-END-OF-DB to true"]:::main N_SetEndofDatabaseFlag_Node2 -- Yes --> N_SetEndofDatabaseFlag_Node2_action N_SetEndofDatabaseFlag_Node2_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node1 -- No --> N_SetEndofDatabaseFlag_Node2 N_SetEndofDatabaseFlag_Node3{"The system sets the end-of-database
flag"}:::decision N_SetEndofDatabaseFlag_Node3_action["The end-of-database flag is set to
true, which will cause the retrieval
loop to terminate"]:::exclusion N_SetEndofDatabaseFlag_Node3 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node3_action N_SetEndofDatabaseFlag_Node3_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node2 -- No --> N_SetEndofDatabaseFlag_Node3 N_SetEndofDatabaseFlag_Node4{"The error or mismatch condition is
detected"}:::decision N_SetEndofDatabaseFlag_Node4_action["The end of database flag is set to
true to terminate the retrieval loop"]:::exclusion N_SetEndofDatabaseFlag_Node4 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node4_action N_SetEndofDatabaseFlag_Node4_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node3 -- No --> N_SetEndofDatabaseFlag_Node4 N_SetEndofDatabaseFlag_Node5{"The system processes the search
failure"}:::decision N_SetEndofDatabaseFlag_Node5_action["The end-of-database flag WS-EOF is
set to TRUE to stop further search
attempts"]:::main N_SetEndofDatabaseFlag_Node5 -- Yes --> N_SetEndofDatabaseFlag_Node5_action N_SetEndofDatabaseFlag_Node5_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node4 -- No --> N_SetEndofDatabaseFlag_Node5 N_SetEndofDatabaseFlag_Node6{"The system needs to stop retrieving
additional followers"}:::decision N_SetEndofDatabaseFlag_Node6_action["Set the end-of-database flag to
true WS-FOLLOWER-END-OF-DB"]:::main N_SetEndofDatabaseFlag_Node6 -- Yes --> N_SetEndofDatabaseFlag_Node6_action N_SetEndofDatabaseFlag_Node6_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node5 -- No --> N_SetEndofDatabaseFlag_Node6 N_SetEndofDatabaseFlag_Node7{"The system processes the failed
retrieval result"}:::decision N_SetEndofDatabaseFlag_Node7_action["The end of database flag is set to
true indicating no more records
exist"]:::exclusion N_SetEndofDatabaseFlag_Node7 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node7_action N_SetEndofDatabaseFlag_Node7_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node6 -- No --> N_SetEndofDatabaseFlag_Node7 N_SetEndofDatabaseFlag_Node8{"The system detects the mismatch in
equipment or waybill"}:::decision N_SetEndofDatabaseFlag_Node8_action["The end of database flag is set to
true indicating no more matching
records exist"]:::main N_SetEndofDatabaseFlag_Node8 -- Yes --> N_SetEndofDatabaseFlag_Node8_action N_SetEndofDatabaseFlag_Node8_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node7 -- No --> N_SetEndofDatabaseFlag_Node8 N_SetEndofDatabaseFlag_Node9{"Terminating the follower retrieval
loop"}:::decision N_SetEndofDatabaseFlag_Node9_action["The end-of-database flag is set to
true"]:::main N_SetEndofDatabaseFlag_Node9 -- Yes --> N_SetEndofDatabaseFlag_Node9_action N_SetEndofDatabaseFlag_Node9_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node8 -- No --> N_SetEndofDatabaseFlag_Node9 N_SetEndofDatabaseFlag_Node10{"The system determines that database
traversal should stop"}:::decision N_SetEndofDatabaseFlag_Node10_action["The end of database flag is set to
TRUE to terminate the retrieval loop"]:::exclusion N_SetEndofDatabaseFlag_Node10 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node10_action N_SetEndofDatabaseFlag_Node10_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node9 -- No --> N_SetEndofDatabaseFlag_Node10 N_SetEndofDatabaseFlag_Node11{"Processing the error condition"}:::decision N_SetEndofDatabaseFlag_Node11_action["Set the end of file flag to true to
stop further search iterations"]:::exclusion N_SetEndofDatabaseFlag_Node11 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node11_action N_SetEndofDatabaseFlag_Node11_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node10 -- No --> N_SetEndofDatabaseFlag_Node11 N_SetEndofDatabaseFlag_Node11 -- No --> E_SetEndofDatabaseFlag
spaces indicating an error or end of
data"}:::decision N_SetEndofDatabaseFlag_Node0_action["The system sets the End of Database
flag to true to stop further record
retrieval attempts"]:::exclusion N_SetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node0_action N_SetEndofDatabaseFlag_Node0_action --> E_SetEndofDatabaseFlag S_SetEndofDatabaseFlag --> N_SetEndofDatabaseFlag_Node0 N_SetEndofDatabaseFlag_Node1{"The retrieved record s Car ID first
12 characters does not equal current
Car ID key OR Waybill number does
not equal saved Waybill index"}:::decision N_SetEndofDatabaseFlag_Node1_action["The system sets the End of Database
flag to true to stop further record
retrieval attempts as no more
matching records exist"]:::main N_SetEndofDatabaseFlag_Node1 -- Yes --> N_SetEndofDatabaseFlag_Node1_action N_SetEndofDatabaseFlag_Node1_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node0 -- No --> N_SetEndofDatabaseFlag_Node1 N_SetEndofDatabaseFlag_Node2{"The system needs to stop the
retrieval loop"}:::decision N_SetEndofDatabaseFlag_Node2_action["Set the end-of-database flag
WS-FOLLOWER-END-OF-DB to true"]:::main N_SetEndofDatabaseFlag_Node2 -- Yes --> N_SetEndofDatabaseFlag_Node2_action N_SetEndofDatabaseFlag_Node2_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node1 -- No --> N_SetEndofDatabaseFlag_Node2 N_SetEndofDatabaseFlag_Node3{"The system sets the end-of-database
flag"}:::decision N_SetEndofDatabaseFlag_Node3_action["The end-of-database flag is set to
true, which will cause the retrieval
loop to terminate"]:::exclusion N_SetEndofDatabaseFlag_Node3 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node3_action N_SetEndofDatabaseFlag_Node3_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node2 -- No --> N_SetEndofDatabaseFlag_Node3 N_SetEndofDatabaseFlag_Node4{"The error or mismatch condition is
detected"}:::decision N_SetEndofDatabaseFlag_Node4_action["The end of database flag is set to
true to terminate the retrieval loop"]:::exclusion N_SetEndofDatabaseFlag_Node4 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node4_action N_SetEndofDatabaseFlag_Node4_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node3 -- No --> N_SetEndofDatabaseFlag_Node4 N_SetEndofDatabaseFlag_Node5{"The system processes the search
failure"}:::decision N_SetEndofDatabaseFlag_Node5_action["The end-of-database flag WS-EOF is
set to TRUE to stop further search
attempts"]:::main N_SetEndofDatabaseFlag_Node5 -- Yes --> N_SetEndofDatabaseFlag_Node5_action N_SetEndofDatabaseFlag_Node5_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node4 -- No --> N_SetEndofDatabaseFlag_Node5 N_SetEndofDatabaseFlag_Node6{"The system needs to stop retrieving
additional followers"}:::decision N_SetEndofDatabaseFlag_Node6_action["Set the end-of-database flag to
true WS-FOLLOWER-END-OF-DB"]:::main N_SetEndofDatabaseFlag_Node6 -- Yes --> N_SetEndofDatabaseFlag_Node6_action N_SetEndofDatabaseFlag_Node6_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node5 -- No --> N_SetEndofDatabaseFlag_Node6 N_SetEndofDatabaseFlag_Node7{"The system processes the failed
retrieval result"}:::decision N_SetEndofDatabaseFlag_Node7_action["The end of database flag is set to
true indicating no more records
exist"]:::exclusion N_SetEndofDatabaseFlag_Node7 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node7_action N_SetEndofDatabaseFlag_Node7_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node6 -- No --> N_SetEndofDatabaseFlag_Node7 N_SetEndofDatabaseFlag_Node8{"The system detects the mismatch in
equipment or waybill"}:::decision N_SetEndofDatabaseFlag_Node8_action["The end of database flag is set to
true indicating no more matching
records exist"]:::main N_SetEndofDatabaseFlag_Node8 -- Yes --> N_SetEndofDatabaseFlag_Node8_action N_SetEndofDatabaseFlag_Node8_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node7 -- No --> N_SetEndofDatabaseFlag_Node8 N_SetEndofDatabaseFlag_Node9{"Terminating the follower retrieval
loop"}:::decision N_SetEndofDatabaseFlag_Node9_action["The end-of-database flag is set to
true"]:::main N_SetEndofDatabaseFlag_Node9 -- Yes --> N_SetEndofDatabaseFlag_Node9_action N_SetEndofDatabaseFlag_Node9_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node8 -- No --> N_SetEndofDatabaseFlag_Node9 N_SetEndofDatabaseFlag_Node10{"The system determines that database
traversal should stop"}:::decision N_SetEndofDatabaseFlag_Node10_action["The end of database flag is set to
TRUE to terminate the retrieval loop"]:::exclusion N_SetEndofDatabaseFlag_Node10 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node10_action N_SetEndofDatabaseFlag_Node10_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node9 -- No --> N_SetEndofDatabaseFlag_Node10 N_SetEndofDatabaseFlag_Node11{"Processing the error condition"}:::decision N_SetEndofDatabaseFlag_Node11_action["Set the end of file flag to true to
stop further search iterations"]:::exclusion N_SetEndofDatabaseFlag_Node11 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node11_action N_SetEndofDatabaseFlag_Node11_action --> E_SetEndofDatabaseFlag N_SetEndofDatabaseFlag_Node10 -- No --> N_SetEndofDatabaseFlag_Node11 N_SetEndofDatabaseFlag_Node11 -- No --> E_SetEndofDatabaseFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database query to retrieve the next US cargo record has been executed
WHEN:
The status code returned is not spaces (indicating an error or end of data)
THEN:
The system sets the End of Database flag to true to stop further record retrieval attempts
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
The retrieved record's Car ID (first 12 characters) does not equal current Car ID key OR Waybill number does not equal saved Waybill index
THEN:
The system sets the End of Database flag to true to stop further record retrieval attempts as no more matching records exist
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
One of the following conditions is met: database status is not OK, master CCN does not match, or follower count exceeds 100
WHEN:
The system needs to stop the retrieval loop
THEN:
Set the end-of-database flag (WS-FOLLOWER-END-OF-DB) to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
One of the following conditions has occurred: database status is not OK, master CCN does not match, or the follower array limit has been exceeded
WHEN:
The system sets the end-of-database flag
THEN:
The end-of-database flag is set to true, which will cause the retrieval loop to terminate
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Either the database status code is not blank OR the master CCN does not match the saved CCN
WHEN:
The error or mismatch condition is detected
THEN:
The end of database flag is set to true to terminate the retrieval loop
File: GCX126R.cbl
GIVEN:
The database search returned a non-blank status code indicating an error or end of data
WHEN:
The system processes the search failure
THEN:
The end-of-database flag (WS-EOF) is set to TRUE to stop further search attempts
File: GCX126R.cbl
GIVEN:
The system has encountered a database error, a non-matching master CCN, or reached the end of available records
WHEN:
The system needs to stop retrieving additional followers
THEN:
Set the end-of-database flag to true (WS-FOLLOWER-END-OF-DB)
File: GCX126R.cbl
GIVEN:
A US cargo record retrieval operation has failed with non-space status code
WHEN:
The system processes the failed retrieval result
THEN:
The end of database flag is set to true indicating no more records exist
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved but its equipment car ID or waybill number does not match current search criteria
WHEN:
The system detects the mismatch in equipment or waybill
THEN:
The end of database flag is set to true indicating no more matching records exist
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Either the database status is not OK, the master CCN does not match, or the follower limit of 100 is exceeded
WHEN:
Terminating the follower retrieval loop
THEN:
The end-of-database flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Either the database status code indicates no more records, or the master manifest CCN does not match the input CCN
WHEN:
The system determines that database traversal should stop
THEN:
The end of database flag is set to TRUE to terminate the retrieval loop
File: GCX126R.cbl
GIVEN:
The database retrieval operation returned a non-blank status code
WHEN:
Processing the error condition
THEN:
Set the end of file flag to true to stop further search iterations
β Consolidated Acceptance Criteria
- The system completes all validation checks successfully → the system sets the US Manifest Found flag to true to indicate a valid record is available for processing
- The system completes validation checks → the US manifest found flag is set to true to indicate a valid associated US manifest has been located
- The system confirms the record is valid for processing → the US manifest found flag (WS-US-MFST-FOUND) is set to TRUE to indicate a valid matching record has been located
- All validation checks pass successfully → the US manifest found flag is set to TRUE to indicate a valid associated US cargo record has been located and is ready for processing
- The system completes validation checks → the US manifest found flag is set to true
- The system completes validation checks → the US manifest found flag is set to true
- The system completes all validation checks successfully → the US manifest found flag is set to true indicating a valid record is available for processing
- The system validates the US cargo record → uS manifest found flag is set to true
- The system validates the next US cargo record → uS manifest found flag is set to true
- All validation checks pass successfully → the US manifest found flag is set to true to indicate a valid record is available for processing
- All validation checks pass successfully → the US manifest found flag is set to true to indicate a valid matching record has been located
- All validation checks pass successfully → the US manifest found flag is set to true indicating a valid matching record has been located
- The system validates all conditions are met → the US manifest found flag is set to TRUE to proceed with logging
- All validation checks pass successfully → set the US manifest found flag to true to indicate a valid match has been located
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSManifestFoundFlag(["Start Step"])
E_SetUSManifestFoundFlag(["End Step"])
N_SetUSManifestFoundFlag_Node0{"The system completes all validation
checks successfully"}:::decision N_SetUSManifestFoundFlag_Node0_action["The system sets the US Manifest
Found flag to true to indicate a
valid record is available for
processing"]:::main N_SetUSManifestFoundFlag_Node0 -- Yes --> N_SetUSManifestFoundFlag_Node0_action N_SetUSManifestFoundFlag_Node0_action --> E_SetUSManifestFoundFlag S_SetUSManifestFoundFlag --> N_SetUSManifestFoundFlag_Node0 N_SetUSManifestFoundFlag_Node1{"The system completes validation
checks"}:::decision N_SetUSManifestFoundFlag_Node1_action["The US manifest found flag is set
to true to indicate a valid
associated US manifest has been
located"]:::main N_SetUSManifestFoundFlag_Node1 -- Yes --> N_SetUSManifestFoundFlag_Node1_action N_SetUSManifestFoundFlag_Node1_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node0 -- No --> N_SetUSManifestFoundFlag_Node1 N_SetUSManifestFoundFlag_Node2{"The system confirms the record is
valid for processing"}:::decision N_SetUSManifestFoundFlag_Node2_action["The US manifest found flag
WS-US-MFST-FOUND is set to TRUE to
indicate a valid matching record has
been located"]:::main N_SetUSManifestFoundFlag_Node2 -- Yes --> N_SetUSManifestFoundFlag_Node2_action N_SetUSManifestFoundFlag_Node2_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node1 -- No --> N_SetUSManifestFoundFlag_Node2 N_SetUSManifestFoundFlag_Node3{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node3_action["The US manifest found flag is set
to TRUE to indicate a valid
associated US cargo record has been
located and is ready for processing"]:::main N_SetUSManifestFoundFlag_Node3 -- Yes --> N_SetUSManifestFoundFlag_Node3_action N_SetUSManifestFoundFlag_Node3_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node2 -- No --> N_SetUSManifestFoundFlag_Node3 N_SetUSManifestFoundFlag_Node4{"The system completes validation
checks"}:::decision N_SetUSManifestFoundFlag_Node4_action["The US manifest found flag is set
to true"]:::main N_SetUSManifestFoundFlag_Node4 -- Yes --> N_SetUSManifestFoundFlag_Node4_action N_SetUSManifestFoundFlag_Node4_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node3 -- No --> N_SetUSManifestFoundFlag_Node4 N_SetUSManifestFoundFlag_Node5{"The system completes validation
checks"}:::decision N_SetUSManifestFoundFlag_Node5_action["The US manifest found flag is set
to true"]:::main N_SetUSManifestFoundFlag_Node5 -- Yes --> N_SetUSManifestFoundFlag_Node5_action N_SetUSManifestFoundFlag_Node5_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node4 -- No --> N_SetUSManifestFoundFlag_Node5 N_SetUSManifestFoundFlag_Node6{"The system completes all validation
checks successfully"}:::decision N_SetUSManifestFoundFlag_Node6_action["The US manifest found flag is set
to true indicating a valid record is
available for processing"]:::main N_SetUSManifestFoundFlag_Node6 -- Yes --> N_SetUSManifestFoundFlag_Node6_action N_SetUSManifestFoundFlag_Node6_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node5 -- No --> N_SetUSManifestFoundFlag_Node6 N_SetUSManifestFoundFlag_Node7{"The system validates the US cargo
record"}:::decision N_SetUSManifestFoundFlag_Node7_action["US manifest found flag is set to
true"]:::main N_SetUSManifestFoundFlag_Node7 -- Yes --> N_SetUSManifestFoundFlag_Node7_action N_SetUSManifestFoundFlag_Node7_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node6 -- No --> N_SetUSManifestFoundFlag_Node7 N_SetUSManifestFoundFlag_Node8{"The system validates the next US
cargo record"}:::decision N_SetUSManifestFoundFlag_Node8_action["US manifest found flag is set to
true"]:::main N_SetUSManifestFoundFlag_Node8 -- Yes --> N_SetUSManifestFoundFlag_Node8_action N_SetUSManifestFoundFlag_Node8_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node7 -- No --> N_SetUSManifestFoundFlag_Node8 N_SetUSManifestFoundFlag_Node9{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node9_action["The US manifest found flag is set
to true to indicate a valid record
is available for processing"]:::main N_SetUSManifestFoundFlag_Node9 -- Yes --> N_SetUSManifestFoundFlag_Node9_action N_SetUSManifestFoundFlag_Node9_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node8 -- No --> N_SetUSManifestFoundFlag_Node9 N_SetUSManifestFoundFlag_Node10{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node10_action["The US manifest found flag is set
to true to indicate a valid matching
record has been located"]:::main N_SetUSManifestFoundFlag_Node10 -- Yes --> N_SetUSManifestFoundFlag_Node10_action N_SetUSManifestFoundFlag_Node10_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node9 -- No --> N_SetUSManifestFoundFlag_Node10 N_SetUSManifestFoundFlag_Node11{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node11_action["The US manifest found flag is set
to true indicating a valid matching
record has been located"]:::main N_SetUSManifestFoundFlag_Node11 -- Yes --> N_SetUSManifestFoundFlag_Node11_action N_SetUSManifestFoundFlag_Node11_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node10 -- No --> N_SetUSManifestFoundFlag_Node11 N_SetUSManifestFoundFlag_Node12{"The system validates all conditions
are met"}:::decision N_SetUSManifestFoundFlag_Node12_action["The US manifest found flag is set
to TRUE to proceed with logging"]:::main N_SetUSManifestFoundFlag_Node12 -- Yes --> N_SetUSManifestFoundFlag_Node12_action N_SetUSManifestFoundFlag_Node12_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node11 -- No --> N_SetUSManifestFoundFlag_Node12 N_SetUSManifestFoundFlag_Node13{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node13_action["Set the US manifest found flag to
true to indicate a valid match has
been located"]:::main N_SetUSManifestFoundFlag_Node13 -- Yes --> N_SetUSManifestFoundFlag_Node13_action N_SetUSManifestFoundFlag_Node13_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node12 -- No --> N_SetUSManifestFoundFlag_Node13 N_SetUSManifestFoundFlag_Node13 -- No --> E_SetUSManifestFoundFlag
checks successfully"}:::decision N_SetUSManifestFoundFlag_Node0_action["The system sets the US Manifest
Found flag to true to indicate a
valid record is available for
processing"]:::main N_SetUSManifestFoundFlag_Node0 -- Yes --> N_SetUSManifestFoundFlag_Node0_action N_SetUSManifestFoundFlag_Node0_action --> E_SetUSManifestFoundFlag S_SetUSManifestFoundFlag --> N_SetUSManifestFoundFlag_Node0 N_SetUSManifestFoundFlag_Node1{"The system completes validation
checks"}:::decision N_SetUSManifestFoundFlag_Node1_action["The US manifest found flag is set
to true to indicate a valid
associated US manifest has been
located"]:::main N_SetUSManifestFoundFlag_Node1 -- Yes --> N_SetUSManifestFoundFlag_Node1_action N_SetUSManifestFoundFlag_Node1_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node0 -- No --> N_SetUSManifestFoundFlag_Node1 N_SetUSManifestFoundFlag_Node2{"The system confirms the record is
valid for processing"}:::decision N_SetUSManifestFoundFlag_Node2_action["The US manifest found flag
WS-US-MFST-FOUND is set to TRUE to
indicate a valid matching record has
been located"]:::main N_SetUSManifestFoundFlag_Node2 -- Yes --> N_SetUSManifestFoundFlag_Node2_action N_SetUSManifestFoundFlag_Node2_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node1 -- No --> N_SetUSManifestFoundFlag_Node2 N_SetUSManifestFoundFlag_Node3{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node3_action["The US manifest found flag is set
to TRUE to indicate a valid
associated US cargo record has been
located and is ready for processing"]:::main N_SetUSManifestFoundFlag_Node3 -- Yes --> N_SetUSManifestFoundFlag_Node3_action N_SetUSManifestFoundFlag_Node3_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node2 -- No --> N_SetUSManifestFoundFlag_Node3 N_SetUSManifestFoundFlag_Node4{"The system completes validation
checks"}:::decision N_SetUSManifestFoundFlag_Node4_action["The US manifest found flag is set
to true"]:::main N_SetUSManifestFoundFlag_Node4 -- Yes --> N_SetUSManifestFoundFlag_Node4_action N_SetUSManifestFoundFlag_Node4_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node3 -- No --> N_SetUSManifestFoundFlag_Node4 N_SetUSManifestFoundFlag_Node5{"The system completes validation
checks"}:::decision N_SetUSManifestFoundFlag_Node5_action["The US manifest found flag is set
to true"]:::main N_SetUSManifestFoundFlag_Node5 -- Yes --> N_SetUSManifestFoundFlag_Node5_action N_SetUSManifestFoundFlag_Node5_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node4 -- No --> N_SetUSManifestFoundFlag_Node5 N_SetUSManifestFoundFlag_Node6{"The system completes all validation
checks successfully"}:::decision N_SetUSManifestFoundFlag_Node6_action["The US manifest found flag is set
to true indicating a valid record is
available for processing"]:::main N_SetUSManifestFoundFlag_Node6 -- Yes --> N_SetUSManifestFoundFlag_Node6_action N_SetUSManifestFoundFlag_Node6_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node5 -- No --> N_SetUSManifestFoundFlag_Node6 N_SetUSManifestFoundFlag_Node7{"The system validates the US cargo
record"}:::decision N_SetUSManifestFoundFlag_Node7_action["US manifest found flag is set to
true"]:::main N_SetUSManifestFoundFlag_Node7 -- Yes --> N_SetUSManifestFoundFlag_Node7_action N_SetUSManifestFoundFlag_Node7_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node6 -- No --> N_SetUSManifestFoundFlag_Node7 N_SetUSManifestFoundFlag_Node8{"The system validates the next US
cargo record"}:::decision N_SetUSManifestFoundFlag_Node8_action["US manifest found flag is set to
true"]:::main N_SetUSManifestFoundFlag_Node8 -- Yes --> N_SetUSManifestFoundFlag_Node8_action N_SetUSManifestFoundFlag_Node8_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node7 -- No --> N_SetUSManifestFoundFlag_Node8 N_SetUSManifestFoundFlag_Node9{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node9_action["The US manifest found flag is set
to true to indicate a valid record
is available for processing"]:::main N_SetUSManifestFoundFlag_Node9 -- Yes --> N_SetUSManifestFoundFlag_Node9_action N_SetUSManifestFoundFlag_Node9_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node8 -- No --> N_SetUSManifestFoundFlag_Node9 N_SetUSManifestFoundFlag_Node10{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node10_action["The US manifest found flag is set
to true to indicate a valid matching
record has been located"]:::main N_SetUSManifestFoundFlag_Node10 -- Yes --> N_SetUSManifestFoundFlag_Node10_action N_SetUSManifestFoundFlag_Node10_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node9 -- No --> N_SetUSManifestFoundFlag_Node10 N_SetUSManifestFoundFlag_Node11{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node11_action["The US manifest found flag is set
to true indicating a valid matching
record has been located"]:::main N_SetUSManifestFoundFlag_Node11 -- Yes --> N_SetUSManifestFoundFlag_Node11_action N_SetUSManifestFoundFlag_Node11_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node10 -- No --> N_SetUSManifestFoundFlag_Node11 N_SetUSManifestFoundFlag_Node12{"The system validates all conditions
are met"}:::decision N_SetUSManifestFoundFlag_Node12_action["The US manifest found flag is set
to TRUE to proceed with logging"]:::main N_SetUSManifestFoundFlag_Node12 -- Yes --> N_SetUSManifestFoundFlag_Node12_action N_SetUSManifestFoundFlag_Node12_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node11 -- No --> N_SetUSManifestFoundFlag_Node12 N_SetUSManifestFoundFlag_Node13{"All validation checks pass
successfully"}:::decision N_SetUSManifestFoundFlag_Node13_action["Set the US manifest found flag to
true to indicate a valid match has
been located"]:::main N_SetUSManifestFoundFlag_Node13 -- Yes --> N_SetUSManifestFoundFlag_Node13_action N_SetUSManifestFoundFlag_Node13_action --> E_SetUSManifestFoundFlag N_SetUSManifestFoundFlag_Node12 -- No --> N_SetUSManifestFoundFlag_Node13 N_SetUSManifestFoundFlag_Node13 -- No --> E_SetUSManifestFoundFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record matches the current Car ID and Waybill AND is not deleted AND does not have a train created for it
WHEN:
The system completes all validation checks successfully
THEN:
The system sets the US Manifest Found flag to true to indicate a valid record is available for processing
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record matches car ID and waybill AND is not deleted AND does not have train created
WHEN:
The system completes validation checks
THEN:
The US manifest found flag is set to true to indicate a valid associated US manifest has been located
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record matches the equipment car ID and waybill number AND is not deleted AND does not have train-created flag set to 'Y'
WHEN:
The system confirms the record is valid for processing
THEN:
The US manifest found flag (WS-US-MFST-FOUND) is set to TRUE to indicate a valid matching record has been located
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches equipment car ID and waybill number, is not marked as deleted, and does not have a train record already created
WHEN:
All validation checks pass successfully
THEN:
- The us manifest found flag is set to true to indicate a valid associated us cargo record has been located
- Is ready for processing
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record exists that matches car ID and waybill AND is not deleted AND does not have a train created
WHEN:
The system completes validation checks
THEN:
The US manifest found flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A next US cargo record exists that matches car ID and waybill AND is not deleted AND does not have a train created
WHEN:
The system completes validation checks
THEN:
The US manifest found flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches equipment and waybill, is not deleted, and does not have train created
WHEN:
The system completes all validation checks successfully
THEN:
The US manifest found flag is set to true indicating a valid record is available for processing
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record matches car ID and waybill AND is not deleted AND does not have train created
WHEN:
The system validates the US cargo record
THEN:
US manifest found flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A next US cargo record matches car ID and waybill AND is not deleted AND does not have train created
WHEN:
The system validates the next US cargo record
THEN:
US manifest found flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches the car identifier and waybill, is not deleted, and does not have a train already created
WHEN:
All validation checks pass successfully
THEN:
The US manifest found flag is set to true to indicate a valid record is available for processing
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches car ID and waybill, is not deleted, and has no transfer receipt created
WHEN:
All validation checks pass successfully
THEN:
The US manifest found flag is set to true to indicate a valid matching record has been located
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record matches car ID and waybill number AND is not deleted AND does not have a train created for it
WHEN:
All validation checks pass successfully
THEN:
The US manifest found flag is set to true indicating a valid matching record has been located
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches car ID and waybill AND is not deleted AND does not have train created
WHEN:
The system validates all conditions are met
THEN:
The US manifest found flag is set to TRUE to proceed with logging
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record that matches car ID and waybill, is not deleted, and has no train created
WHEN:
All validation checks pass successfully
THEN:
Set the US manifest found flag to true to indicate a valid match has been located
β Consolidated Acceptance Criteria
- The system performs a Get Hold Unique operation on the cargo database using the CCN key → the cargo record segment (GCCC-CARGO-REPORT-SEGMENT) is retrieved if it exists, and the cargo status switches are set to indicate whether the cargo was found, deleted, or has other status 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_RetrieveCargoRecordbyCCN(["Start Step"])
E_RetrieveCargoRecordbyCCN(["End Step"])
N_RetrieveCargoRecordbyCCN_Node0{"The system performs a Get Hold
Unique operation on the cargo
database using the CCN key"}:::decision N_RetrieveCargoRecordbyCCN_Node0_action["The cargo record segment
GCCC-CARGO-REPORT-SEGMENT is
retrieved if it exists, and the
cargo status switches are set to
indicate whether the cargo was
found, deleted, or has other status
conditions"]:::main N_RetrieveCargoRecordbyCCN_Node0 -- Yes --> N_RetrieveCargoRecordbyCCN_Node0_action N_RetrieveCargoRecordbyCCN_Node0_action --> E_RetrieveCargoRecordbyCCN S_RetrieveCargoRecordbyCCN --> N_RetrieveCargoRecordbyCCN_Node0 N_RetrieveCargoRecordbyCCN_Node0 -- No --> E_RetrieveCargoRecordbyCCN
Unique operation on the cargo
database using the CCN key"}:::decision N_RetrieveCargoRecordbyCCN_Node0_action["The cargo record segment
GCCC-CARGO-REPORT-SEGMENT is
retrieved if it exists, and the
cargo status switches are set to
indicate whether the cargo was
found, deleted, or has other status
conditions"]:::main N_RetrieveCargoRecordbyCCN_Node0 -- Yes --> N_RetrieveCargoRecordbyCCN_Node0_action N_RetrieveCargoRecordbyCCN_Node0_action --> E_RetrieveCargoRecordbyCCN S_RetrieveCargoRecordbyCCN --> N_RetrieveCargoRecordbyCCN_Node0 N_RetrieveCargoRecordbyCCN_Node0 -- No --> E_RetrieveCargoRecordbyCCN
File: GCX126R.cbl
GIVEN:
A CCN (Cargo Control Number) is provided in the CCRT-SSAQ key value and A2RT-SSAQ key value
WHEN:
The system performs a Get Hold Unique operation on the cargo database using the CCN key
THEN:
The cargo record segment (GCCC-CARGO-REPORT-SEGMENT) is retrieved if it exists, and the cargo status switches are set to indicate whether the cargo was found, deleted, or has other status conditions
β Consolidated Acceptance Criteria
- The system checks if the cargo is a master manifest → if cargo is NOT a master manifest, skip follower processing and exit; If cargo IS a master manifest, proceed to initialize follower manifest array and retrieve all associated follower manifests
- If whether to process associated follower manifests → if the cargo is not a master manifest, skip follower processing and exit; If the cargo is a master manifest, proceed to save master information and process followers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoaMasterManifest(["Start Step"])
E_IsCargoaMasterManifest(["End Step"])
N_IsCargoaMasterManifest_Node0{"The system checks if the cargo is a
master manifest"}:::decision N_IsCargoaMasterManifest_Node0_action["If cargo is NOT a master manifest,
skip follower processing and exit If
cargo IS a master manifest, proceed
to initialize follower manifest
array and retrieve all associated
follower manifests"]:::main N_IsCargoaMasterManifest_Node0 -- Yes --> N_IsCargoaMasterManifest_Node0_action N_IsCargoaMasterManifest_Node0_action --> E_IsCargoaMasterManifest S_IsCargoaMasterManifest --> N_IsCargoaMasterManifest_Node0 N_IsCargoaMasterManifest_Node1{"The system evaluates whether to
process associated follower
manifests"}:::decision N_IsCargoaMasterManifest_Node1_action["If the cargo is not a master
manifest, skip follower processing
and exit If the cargo is a master
manifest, proceed to save master
information and process followers"]:::main N_IsCargoaMasterManifest_Node1 -- Yes --> N_IsCargoaMasterManifest_Node1_action N_IsCargoaMasterManifest_Node1_action --> E_IsCargoaMasterManifest N_IsCargoaMasterManifest_Node0 -- No --> N_IsCargoaMasterManifest_Node1 N_IsCargoaMasterManifest_Node1 -- No --> E_IsCargoaMasterManifest
master manifest"}:::decision N_IsCargoaMasterManifest_Node0_action["If cargo is NOT a master manifest,
skip follower processing and exit If
cargo IS a master manifest, proceed
to initialize follower manifest
array and retrieve all associated
follower manifests"]:::main N_IsCargoaMasterManifest_Node0 -- Yes --> N_IsCargoaMasterManifest_Node0_action N_IsCargoaMasterManifest_Node0_action --> E_IsCargoaMasterManifest S_IsCargoaMasterManifest --> N_IsCargoaMasterManifest_Node0 N_IsCargoaMasterManifest_Node1{"The system evaluates whether to
process associated follower
manifests"}:::decision N_IsCargoaMasterManifest_Node1_action["If the cargo is not a master
manifest, skip follower processing
and exit If the cargo is a master
manifest, proceed to save master
information and process followers"]:::main N_IsCargoaMasterManifest_Node1 -- Yes --> N_IsCargoaMasterManifest_Node1_action N_IsCargoaMasterManifest_Node1_action --> E_IsCargoaMasterManifest N_IsCargoaMasterManifest_Node0 -- No --> N_IsCargoaMasterManifest_Node1 N_IsCargoaMasterManifest_Node1 -- No --> E_IsCargoaMasterManifest
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved with release reference ID from X4 segment entry type '992'
WHEN:
The system checks if the cargo is a master manifest
THEN:
- If cargo is not a master manifest, skip follower processing
- Exit; if cargo is a master manifest, proceed to initialize follower manifest array
- Retrieve all associated follower manifests
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and processed for release or deconsolidation
WHEN:
The system evaluates whether to process associated follower manifests
THEN:
- If the cargo is not a master manifest, skip follower processing
- Exit; if the cargo is a master manifest, proceed to save master information
- Process followers
β Consolidated Acceptance Criteria
- The system begins the process of collecting follower manifests → initialize follower manifest array to spaces, set array index I to 1, and set end-of-database flag 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_InitializeFollowerManifestArraySetIndexI1(["Start Step"])
E_InitializeFollowerManifestArraySetIndexI1(["End Step"])
N_InitializeFollowerManifestArraySetIndexI1_Node0{"The system begins the process of
collecting follower manifests"}:::decision N_InitializeFollowerManifestArraySetIndexI1_Node0_action["Initialize follower manifest array
to spaces, set array index I to 1,
and set end-of-database flag to
false"]:::main N_InitializeFollowerManifestArraySetIndexI1_Node0 -- Yes --> N_InitializeFollowerManifestArraySetIndexI1_Node0_action N_InitializeFollowerManifestArraySetIndexI1_Node0_action --> E_InitializeFollowerManifestArraySetIndexI1 S_InitializeFollowerManifestArraySetIndexI1 --> N_InitializeFollowerManifestArraySetIndexI1_Node0 N_InitializeFollowerManifestArraySetIndexI1_Node0 -- No --> E_InitializeFollowerManifestArraySetIndexI1
collecting follower manifests"}:::decision N_InitializeFollowerManifestArraySetIndexI1_Node0_action["Initialize follower manifest array
to spaces, set array index I to 1,
and set end-of-database flag to
false"]:::main N_InitializeFollowerManifestArraySetIndexI1_Node0 -- Yes --> N_InitializeFollowerManifestArraySetIndexI1_Node0_action N_InitializeFollowerManifestArraySetIndexI1_Node0_action --> E_InitializeFollowerManifestArraySetIndexI1 S_InitializeFollowerManifestArraySetIndexI1 --> N_InitializeFollowerManifestArraySetIndexI1_Node0 N_InitializeFollowerManifestArraySetIndexI1_Node0 -- No --> E_InitializeFollowerManifestArraySetIndexI1
File: GCX126R.cbl
GIVEN:
The cargo is confirmed as a master manifest
WHEN:
The system begins the process of collecting follower manifests
THEN:
Initialize follower manifest array to spaces, set array index I to 1, and set end-of-database flag to false
β Consolidated Acceptance Criteria
- The system prepares to search for follower manifests → set the database search key (GCB0RT-CCN-KEY) to the master manifest's CCN key (GCCC-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_SetSearchKeytoMasterCCN(["Start Step"])
E_SetSearchKeytoMasterCCN(["End Step"])
N_SetSearchKeytoMasterCCN_Node0{"The system prepares to search for
follower manifests"}:::decision N_SetSearchKeytoMasterCCN_Node0_action["Set the database search key
GCB0RT-CCN-KEY to the master
manifest s CCN key GCCC-CCN-KEY"]:::main N_SetSearchKeytoMasterCCN_Node0 -- Yes --> N_SetSearchKeytoMasterCCN_Node0_action N_SetSearchKeytoMasterCCN_Node0_action --> E_SetSearchKeytoMasterCCN S_SetSearchKeytoMasterCCN --> N_SetSearchKeytoMasterCCN_Node0 N_SetSearchKeytoMasterCCN_Node0 -- No --> E_SetSearchKeytoMasterCCN
follower manifests"}:::decision N_SetSearchKeytoMasterCCN_Node0_action["Set the database search key
GCB0RT-CCN-KEY to the master
manifest s CCN key GCCC-CCN-KEY"]:::main N_SetSearchKeytoMasterCCN_Node0 -- Yes --> N_SetSearchKeytoMasterCCN_Node0_action N_SetSearchKeytoMasterCCN_Node0_action --> E_SetSearchKeytoMasterCCN S_SetSearchKeytoMasterCCN --> N_SetSearchKeytoMasterCCN_Node0 N_SetSearchKeytoMasterCCN_Node0 -- No --> E_SetSearchKeytoMasterCCN
File: GCX126R.cbl
GIVEN:
The follower manifest array has been initialized and the cargo is a master manifest
WHEN:
The system prepares to search for follower manifests
THEN:
Set the database search key (GCB0RT-CCN-KEY) to the master manifest's CCN key (GCCC-CCN-KEY)
β Consolidated Acceptance Criteria
- The system executes a Get Next database call → retrieve the next cargo report segment from the database using PCB7 with qualified SSA for B0RT segment
- Retrieving follower manifests → the system calls the database with Get Next function using the cargo PCB and qualified SSA for the master 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_GetNextCargoRecordfromDatabase(["Start Step"])
E_GetNextCargoRecordfromDatabase(["End Step"])
N_GetNextCargoRecordfromDatabase_Node0{"The system executes a Get Next
database call"}:::decision N_GetNextCargoRecordfromDatabase_Node0_action["Retrieve the next cargo report
segment from the database using PCB7
with qualified SSA for B0RT segment"]:::main N_GetNextCargoRecordfromDatabase_Node0 -- Yes --> N_GetNextCargoRecordfromDatabase_Node0_action N_GetNextCargoRecordfromDatabase_Node0_action --> E_GetNextCargoRecordfromDatabase S_GetNextCargoRecordfromDatabase --> N_GetNextCargoRecordfromDatabase_Node0 N_GetNextCargoRecordfromDatabase_Node1{"Retrieving follower manifests"}:::decision N_GetNextCargoRecordfromDatabase_Node1_action["The system calls the database with
Get Next function using the cargo
PCB and qualified SSA for the master
CCN key"]:::main N_GetNextCargoRecordfromDatabase_Node1 -- Yes --> N_GetNextCargoRecordfromDatabase_Node1_action N_GetNextCargoRecordfromDatabase_Node1_action --> E_GetNextCargoRecordfromDatabase N_GetNextCargoRecordfromDatabase_Node0 -- No --> N_GetNextCargoRecordfromDatabase_Node1 N_GetNextCargoRecordfromDatabase_Node1 -- No --> E_GetNextCargoRecordfromDatabase
database call"}:::decision N_GetNextCargoRecordfromDatabase_Node0_action["Retrieve the next cargo report
segment from the database using PCB7
with qualified SSA for B0RT segment"]:::main N_GetNextCargoRecordfromDatabase_Node0 -- Yes --> N_GetNextCargoRecordfromDatabase_Node0_action N_GetNextCargoRecordfromDatabase_Node0_action --> E_GetNextCargoRecordfromDatabase S_GetNextCargoRecordfromDatabase --> N_GetNextCargoRecordfromDatabase_Node0 N_GetNextCargoRecordfromDatabase_Node1{"Retrieving follower manifests"}:::decision N_GetNextCargoRecordfromDatabase_Node1_action["The system calls the database with
Get Next function using the cargo
PCB and qualified SSA for the master
CCN key"]:::main N_GetNextCargoRecordfromDatabase_Node1 -- Yes --> N_GetNextCargoRecordfromDatabase_Node1_action N_GetNextCargoRecordfromDatabase_Node1_action --> E_GetNextCargoRecordfromDatabase N_GetNextCargoRecordfromDatabase_Node0 -- No --> N_GetNextCargoRecordfromDatabase_Node1 N_GetNextCargoRecordfromDatabase_Node1 -- No --> E_GetNextCargoRecordfromDatabase
File: GCX126R.cbl
GIVEN:
The search key has been set to the master CCN and the system is ready to retrieve cargo records
WHEN:
The system executes a Get Next database call
THEN:
Retrieve the next cargo report segment from the database using PCB7 with qualified SSA for B0RT segment
File: GCX126R.cbl
GIVEN:
The database search key is set to the master manifest CCN
WHEN:
Retrieving follower manifests
THEN:
- The system calls the database with get next function using the cargo pcb
- Qualified ssa for the master ccn key
β Consolidated Acceptance Criteria
- The system checks the database status code → if status code is not blank (spaces), set end-of-database flag to true and stop retrieval; If status code is blank (spaces), proceed to validate the retrieved record
- If the database status code → if the status code is blank (spaces), the retrieval was successful and processing continues; otherwise, the end-of-database flag is set to terminate the retrieval loop
- If the result of the search operation → if the status code is spaces (blank), the search is successful; otherwise, an error occurred
- If the database return status code → if status code is blank (spaces), the retrieval was successful and processing continues; If status code is not blank, set the end-of-database flag to true and stop retrieving followers
- Database status code is not spaces (indicating error) → end of file flag is set to true
- Database status code is not spaces (indicating error) → end of file flag is set to true
- The database status code is not spaces (indicating an error or no records found) → the end-of-database flag is set to true and processing continues to completion
- The database status code is not blank (indicating an error or end of data) → the end-of-database flag is set to true and processing terminates
- The database returns a status code → if the status code is blank (spaces), the retrieval is successful; otherwise, set the end-of-database flag to true
- The database status code is not blank (indicating an error or no records found) → set the end of database flag to true and exit the 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_DatabaseStatusOK(["Start Step"])
E_DatabaseStatusOK(["End Step"])
N_DatabaseStatusOK_Node0{"The system checks the database
status code"}:::decision N_DatabaseStatusOK_Node0_action["If status code is not blank spaces,
set end-of-database flag to true and
stop retrieval If status code is
blank spaces, proceed to validate
the retrieved record"]:::main N_DatabaseStatusOK_Node0 -- Yes --> N_DatabaseStatusOK_Node0_action N_DatabaseStatusOK_Node0_action --> E_DatabaseStatusOK S_DatabaseStatusOK --> N_DatabaseStatusOK_Node0 N_DatabaseStatusOK_Node1{"The system evaluates the database
status code"}:::decision N_DatabaseStatusOK_Node1_action["If the status code is blank spaces,
the retrieval was successful and
processing continues otherwise, the
end-of-database flag is set to
terminate the retrieval loop"]:::exclusion N_DatabaseStatusOK_Node1 -- Yes -->|Alternative| N_DatabaseStatusOK_Node1_action N_DatabaseStatusOK_Node1_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node0 -- No --> N_DatabaseStatusOK_Node1 N_DatabaseStatusOK_Node2{"The system evaluates the result of
the search operation"}:::decision N_DatabaseStatusOK_Node2_action["If the status code is spaces blank,
the search is successful otherwise,
an error occurred"]:::main N_DatabaseStatusOK_Node2 -- Yes --> N_DatabaseStatusOK_Node2_action N_DatabaseStatusOK_Node2_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node1 -- No --> N_DatabaseStatusOK_Node2 N_DatabaseStatusOK_Node3{"The system evaluates the database
return status code"}:::decision N_DatabaseStatusOK_Node3_action["If status code is blank spaces, the
retrieval was successful and
processing continues If status code
is not blank, set the
end-of-database flag to true and
stop retrieving followers"]:::main N_DatabaseStatusOK_Node3 -- Yes --> N_DatabaseStatusOK_Node3_action N_DatabaseStatusOK_Node3_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node2 -- No --> N_DatabaseStatusOK_Node3 N_DatabaseStatusOK_Node4{"Database status code is not spaces
indicating error"}:::decision N_DatabaseStatusOK_Node4_action["End of file flag is set to true"]:::exclusion N_DatabaseStatusOK_Node4 -- Yes -->|Alternative| N_DatabaseStatusOK_Node4_action N_DatabaseStatusOK_Node4_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node3 -- No --> N_DatabaseStatusOK_Node4 N_DatabaseStatusOK_Node5{"Database status code is not spaces
indicating error"}:::decision N_DatabaseStatusOK_Node5_action["End of file flag is set to true"]:::exclusion N_DatabaseStatusOK_Node5 -- Yes -->|Alternative| N_DatabaseStatusOK_Node5_action N_DatabaseStatusOK_Node5_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node4 -- No --> N_DatabaseStatusOK_Node5 N_DatabaseStatusOK_Node6{"The database status code is not
spaces indicating an error or no
records found"}:::decision N_DatabaseStatusOK_Node6_action["The end-of-database flag is set to
true and processing continues to
completion"]:::exclusion N_DatabaseStatusOK_Node6 -- Yes -->|Alternative| N_DatabaseStatusOK_Node6_action N_DatabaseStatusOK_Node6_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node5 -- No --> N_DatabaseStatusOK_Node6 N_DatabaseStatusOK_Node7{"The database status code is not
blank indicating an error or end of
data"}:::decision N_DatabaseStatusOK_Node7_action["The end-of-database flag is set to
true and processing terminates"]:::exclusion N_DatabaseStatusOK_Node7 -- Yes -->|Alternative| N_DatabaseStatusOK_Node7_action N_DatabaseStatusOK_Node7_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node6 -- No --> N_DatabaseStatusOK_Node7 N_DatabaseStatusOK_Node8{"The database returns a status code"}:::decision N_DatabaseStatusOK_Node8_action["If the status code is blank spaces,
the retrieval is successful
otherwise, set the end-of-database
flag to true"]:::main N_DatabaseStatusOK_Node8 -- Yes --> N_DatabaseStatusOK_Node8_action N_DatabaseStatusOK_Node8_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node7 -- No --> N_DatabaseStatusOK_Node8 N_DatabaseStatusOK_Node9{"The database status code is not
blank indicating an error or no
records found"}:::decision N_DatabaseStatusOK_Node9_action["Set the end of database flag to
true and exit the search process"]:::exclusion N_DatabaseStatusOK_Node9 -- Yes -->|Alternative| N_DatabaseStatusOK_Node9_action N_DatabaseStatusOK_Node9_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node8 -- No --> N_DatabaseStatusOK_Node9 N_DatabaseStatusOK_Node9 -- No --> E_DatabaseStatusOK
status code"}:::decision N_DatabaseStatusOK_Node0_action["If status code is not blank spaces,
set end-of-database flag to true and
stop retrieval If status code is
blank spaces, proceed to validate
the retrieved record"]:::main N_DatabaseStatusOK_Node0 -- Yes --> N_DatabaseStatusOK_Node0_action N_DatabaseStatusOK_Node0_action --> E_DatabaseStatusOK S_DatabaseStatusOK --> N_DatabaseStatusOK_Node0 N_DatabaseStatusOK_Node1{"The system evaluates the database
status code"}:::decision N_DatabaseStatusOK_Node1_action["If the status code is blank spaces,
the retrieval was successful and
processing continues otherwise, the
end-of-database flag is set to
terminate the retrieval loop"]:::exclusion N_DatabaseStatusOK_Node1 -- Yes -->|Alternative| N_DatabaseStatusOK_Node1_action N_DatabaseStatusOK_Node1_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node0 -- No --> N_DatabaseStatusOK_Node1 N_DatabaseStatusOK_Node2{"The system evaluates the result of
the search operation"}:::decision N_DatabaseStatusOK_Node2_action["If the status code is spaces blank,
the search is successful otherwise,
an error occurred"]:::main N_DatabaseStatusOK_Node2 -- Yes --> N_DatabaseStatusOK_Node2_action N_DatabaseStatusOK_Node2_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node1 -- No --> N_DatabaseStatusOK_Node2 N_DatabaseStatusOK_Node3{"The system evaluates the database
return status code"}:::decision N_DatabaseStatusOK_Node3_action["If status code is blank spaces, the
retrieval was successful and
processing continues If status code
is not blank, set the
end-of-database flag to true and
stop retrieving followers"]:::main N_DatabaseStatusOK_Node3 -- Yes --> N_DatabaseStatusOK_Node3_action N_DatabaseStatusOK_Node3_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node2 -- No --> N_DatabaseStatusOK_Node3 N_DatabaseStatusOK_Node4{"Database status code is not spaces
indicating error"}:::decision N_DatabaseStatusOK_Node4_action["End of file flag is set to true"]:::exclusion N_DatabaseStatusOK_Node4 -- Yes -->|Alternative| N_DatabaseStatusOK_Node4_action N_DatabaseStatusOK_Node4_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node3 -- No --> N_DatabaseStatusOK_Node4 N_DatabaseStatusOK_Node5{"Database status code is not spaces
indicating error"}:::decision N_DatabaseStatusOK_Node5_action["End of file flag is set to true"]:::exclusion N_DatabaseStatusOK_Node5 -- Yes -->|Alternative| N_DatabaseStatusOK_Node5_action N_DatabaseStatusOK_Node5_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node4 -- No --> N_DatabaseStatusOK_Node5 N_DatabaseStatusOK_Node6{"The database status code is not
spaces indicating an error or no
records found"}:::decision N_DatabaseStatusOK_Node6_action["The end-of-database flag is set to
true and processing continues to
completion"]:::exclusion N_DatabaseStatusOK_Node6 -- Yes -->|Alternative| N_DatabaseStatusOK_Node6_action N_DatabaseStatusOK_Node6_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node5 -- No --> N_DatabaseStatusOK_Node6 N_DatabaseStatusOK_Node7{"The database status code is not
blank indicating an error or end of
data"}:::decision N_DatabaseStatusOK_Node7_action["The end-of-database flag is set to
true and processing terminates"]:::exclusion N_DatabaseStatusOK_Node7 -- Yes -->|Alternative| N_DatabaseStatusOK_Node7_action N_DatabaseStatusOK_Node7_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node6 -- No --> N_DatabaseStatusOK_Node7 N_DatabaseStatusOK_Node8{"The database returns a status code"}:::decision N_DatabaseStatusOK_Node8_action["If the status code is blank spaces,
the retrieval is successful
otherwise, set the end-of-database
flag to true"]:::main N_DatabaseStatusOK_Node8 -- Yes --> N_DatabaseStatusOK_Node8_action N_DatabaseStatusOK_Node8_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node7 -- No --> N_DatabaseStatusOK_Node8 N_DatabaseStatusOK_Node9{"The database status code is not
blank indicating an error or no
records found"}:::decision N_DatabaseStatusOK_Node9_action["Set the end of database flag to
true and exit the search process"]:::exclusion N_DatabaseStatusOK_Node9 -- Yes -->|Alternative| N_DatabaseStatusOK_Node9_action N_DatabaseStatusOK_Node9_action --> E_DatabaseStatusOK N_DatabaseStatusOK_Node8 -- No --> N_DatabaseStatusOK_Node9 N_DatabaseStatusOK_Node9 -- No --> E_DatabaseStatusOK
File: GCX126R.cbl
GIVEN:
A Get Next database call has been executed to retrieve a cargo record
WHEN:
The system checks the database status code
THEN:
- If status code is not blank (spaces), set end-of-database flag to true
- Stop retrieval; if status code is blank (spaces), proceed to validate the retrieved record
File: GCX126R.cbl
GIVEN:
A database call has been executed to retrieve a cargo record
WHEN:
The system evaluates the database status code
THEN:
- If the status code is blank (spaces), the retrieval was successful
- Processing continues; otherwise, the end-of-database flag is set to terminate the retrieval loop
File: GCX126R.cbl
GIVEN:
The GCCUSIO database search has been executed
WHEN:
The system evaluates the result of the search operation
THEN:
If the status code is spaces (blank), the search is successful; otherwise, an error occurred
File: GCX126R.cbl
GIVEN:
A Get Next operation has been executed to retrieve a follower manifest
WHEN:
The system evaluates the database return status code
THEN:
- If status code is blank (spaces), the retrieval was successful
- Processing continues; if status code is not blank, set the end-of-database flag to true
- Stop retrieving followers
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
First US cargo record retrieval has been attempted
WHEN:
Database status code is not spaces (indicating error)
THEN:
End of file flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Next US cargo record retrieval has been attempted
WHEN:
Database status code is not spaces (indicating error)
THEN:
End of file flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database call has been executed to retrieve a US cargo record
WHEN:
The database status code is not spaces (indicating an error or no records found)
THEN:
- The end-of-database flag is set to true
- Processing continues to completion
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The database call to retrieve next US cargo record has completed
WHEN:
The database status code is not blank (indicating an error or end of data)
THEN:
- The end-of-database flag is set to true
- Processing terminates
File: GCX126R.cbl
GIVEN:
A database Get Next call has been executed
WHEN:
The database returns a status code
THEN:
If the status code is blank (spaces), the retrieval is successful; otherwise, set the end-of-database flag to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database call to retrieve US cargo has been executed
WHEN:
The database status code is not blank (indicating an error or no records found)
THEN:
- Set the end of database flag to true
- Exit the search process
β Consolidated Acceptance Criteria
- The system compares the retrieved cargo's master manifest CCN (GCCC-MASTER-MFST-CCN) with the original release reference ID (X4-01-CBSA-REL-REF-ID first 25 characters) → if master CCNs do NOT match, set end-of-database flag to true and stop retrieval; If master CCNs match, proceed to check if the record is a follower manifest
- The system compares the retrieved record's master manifest CCN with the search key → if the master manifest CCN in the retrieved record equals the search key, processing continues to check if it is a follower; otherwise, the end-of-database flag is set to terminate the retrieval loop
- The system compares the master manifest CCN field in the retrieved record with the search key master CCN → if the master manifest CCN in the retrieved record matches the search key, the record is potentially a follower manifest and processing continues; otherwise, the system marks end of database and stops searching
- The master manifest CCN of the retrieved cargo (GCCC-MASTER-MFST-CCN) is compared to the saved master CCN → if the master manifest CCN matches the saved CCN, the cargo belongs to this master AND processing continues to check if it is a follower OR If the master manifest CCN does not match, the cargo belongs to a different master AND the end-of-database flag is set AND loop 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_MasterCCNMatches(["Start Step"])
E_MasterCCNMatches(["End Step"])
N_MasterCCNMatches_Node0{"The system compares the retrieved
cargo s master manifest CCN
GCCC-MASTER-MFST-CCN with the
original release reference ID
X4-01-CBSA-REL-REF-ID first 25
characters"}:::decision N_MasterCCNMatches_Node0_action["If master CCNs do NOT match, set
end-of-database flag to true and
stop retrieval If master CCNs match,
proceed to check if the record is a
follower manifest"]:::main N_MasterCCNMatches_Node0 -- Yes --> N_MasterCCNMatches_Node0_action N_MasterCCNMatches_Node0_action --> E_MasterCCNMatches S_MasterCCNMatches --> N_MasterCCNMatches_Node0 N_MasterCCNMatches_Node1{"The system compares the retrieved
record s master manifest CCN with
the search key"}:::decision N_MasterCCNMatches_Node1_action["If the master manifest CCN in the
retrieved record equals the search
key, processing continues to check
if it is a follower otherwise, the
end-of-database flag is set to
terminate the retrieval loop"]:::exclusion N_MasterCCNMatches_Node1 -- Yes -->|Alternative| N_MasterCCNMatches_Node1_action N_MasterCCNMatches_Node1_action --> E_MasterCCNMatches N_MasterCCNMatches_Node0 -- No --> N_MasterCCNMatches_Node1 N_MasterCCNMatches_Node2{"The system compares the master
manifest CCN field in the retrieved
record with the search key master
CCN"}:::decision N_MasterCCNMatches_Node2_action["If the master manifest CCN in the
retrieved record matches the search
key, the record is potentially a
follower manifest and processing
continues otherwise, the system
marks end of database and stops
searching"]:::main N_MasterCCNMatches_Node2 -- Yes --> N_MasterCCNMatches_Node2_action N_MasterCCNMatches_Node2_action --> E_MasterCCNMatches N_MasterCCNMatches_Node1 -- No --> N_MasterCCNMatches_Node2 N_MasterCCNMatches_Node3{"The master manifest CCN of the
retrieved cargo GCCC-MASTER-MFST-CCN
is compared to the saved master CCN"}:::decision N_MasterCCNMatches_Node3_action["If the master manifest CCN matches
the saved CCN, the cargo belongs to
this master AND processing continues
to check if it is a follower OR If
the master manifest CCN does not
match, the cargo belongs to a
different master AND the
end-of-database flag is set AND loop
processing terminates"]:::main N_MasterCCNMatches_Node3 -- Yes --> N_MasterCCNMatches_Node3_action N_MasterCCNMatches_Node3_action --> E_MasterCCNMatches N_MasterCCNMatches_Node2 -- No --> N_MasterCCNMatches_Node3 N_MasterCCNMatches_Node3 -- No --> E_MasterCCNMatches
cargo s master manifest CCN
GCCC-MASTER-MFST-CCN with the
original release reference ID
X4-01-CBSA-REL-REF-ID first 25
characters"}:::decision N_MasterCCNMatches_Node0_action["If master CCNs do NOT match, set
end-of-database flag to true and
stop retrieval If master CCNs match,
proceed to check if the record is a
follower manifest"]:::main N_MasterCCNMatches_Node0 -- Yes --> N_MasterCCNMatches_Node0_action N_MasterCCNMatches_Node0_action --> E_MasterCCNMatches S_MasterCCNMatches --> N_MasterCCNMatches_Node0 N_MasterCCNMatches_Node1{"The system compares the retrieved
record s master manifest CCN with
the search key"}:::decision N_MasterCCNMatches_Node1_action["If the master manifest CCN in the
retrieved record equals the search
key, processing continues to check
if it is a follower otherwise, the
end-of-database flag is set to
terminate the retrieval loop"]:::exclusion N_MasterCCNMatches_Node1 -- Yes -->|Alternative| N_MasterCCNMatches_Node1_action N_MasterCCNMatches_Node1_action --> E_MasterCCNMatches N_MasterCCNMatches_Node0 -- No --> N_MasterCCNMatches_Node1 N_MasterCCNMatches_Node2{"The system compares the master
manifest CCN field in the retrieved
record with the search key master
CCN"}:::decision N_MasterCCNMatches_Node2_action["If the master manifest CCN in the
retrieved record matches the search
key, the record is potentially a
follower manifest and processing
continues otherwise, the system
marks end of database and stops
searching"]:::main N_MasterCCNMatches_Node2 -- Yes --> N_MasterCCNMatches_Node2_action N_MasterCCNMatches_Node2_action --> E_MasterCCNMatches N_MasterCCNMatches_Node1 -- No --> N_MasterCCNMatches_Node2 N_MasterCCNMatches_Node3{"The master manifest CCN of the
retrieved cargo GCCC-MASTER-MFST-CCN
is compared to the saved master CCN"}:::decision N_MasterCCNMatches_Node3_action["If the master manifest CCN matches
the saved CCN, the cargo belongs to
this master AND processing continues
to check if it is a follower OR If
the master manifest CCN does not
match, the cargo belongs to a
different master AND the
end-of-database flag is set AND loop
processing terminates"]:::main N_MasterCCNMatches_Node3 -- Yes --> N_MasterCCNMatches_Node3_action N_MasterCCNMatches_Node3_action --> E_MasterCCNMatches N_MasterCCNMatches_Node2 -- No --> N_MasterCCNMatches_Node3 N_MasterCCNMatches_Node3 -- No --> E_MasterCCNMatches
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system compares the retrieved cargo's master manifest CCN (GCCC-MASTER-MFST-CCN) with the original release reference ID (X4-01-CBSA-REL-REF-ID first 25 characters)
THEN:
- If master ccns do not match, set end-of-database flag to true
- Stop retrieval; if master ccns match, proceed to check if the record is a follower manifest
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system compares the retrieved record's master manifest CCN with the search key
THEN:
If the master manifest CCN in the retrieved record equals the search key, processing continues to check if it is a follower; otherwise, the end-of-database flag is set to terminate the retrieval loop
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system compares the master manifest CCN field in the retrieved record with the search key master CCN
THEN:
- If the master manifest ccn in the retrieved record matches the search key, the record is potentially a follower manifest
- Processing continues; otherwise, the system marks end of database
- Stops searching
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database AND the saved master CCN is available in WS-SAVE-CCN
WHEN:
The master manifest CCN of the retrieved cargo (GCCC-MASTER-MFST-CCN) is compared to the saved master CCN
THEN:
- If the master manifest ccn matches the saved ccn, the cargo belongs to this master
- Processing continues to check if it is a follower or if the master manifest ccn does not match, the cargo belongs to a different master
- The end-of-database flag is set
- Loop processing terminates
β Consolidated Acceptance Criteria
- The system stores the follower information → move the follower's CCN key (GCCC-CCN-KEY) to the follower manifest array at position I (WS-FOLLOWER-MANI(I)) and add 1 to index 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_StoreFollowerCCNinArrayPositionIIncrementI(["Start Step"])
E_StoreFollowerCCNinArrayPositionIIncrementI(["End Step"])
N_StoreFollowerCCNinArrayPositionIIncrementI_Node0{"The system stores the follower
information"}:::decision N_StoreFollowerCCNinArrayPositionIIncrementI_Node0_action["Move the follower s CCN key
GCCC-CCN-KEY to the follower
manifest array at position I
WS-FOLLOWER-MANII and add 1 to index
I"]:::main N_StoreFollowerCCNinArrayPositionIIncrementI_Node0 -- Yes --> N_StoreFollowerCCNinArrayPositionIIncrementI_Node0_action N_StoreFollowerCCNinArrayPositionIIncrementI_Node0_action --> E_StoreFollowerCCNinArrayPositionIIncrementI S_StoreFollowerCCNinArrayPositionIIncrementI --> N_StoreFollowerCCNinArrayPositionIIncrementI_Node0 N_StoreFollowerCCNinArrayPositionIIncrementI_Node0 -- No --> E_StoreFollowerCCNinArrayPositionIIncrementI
information"}:::decision N_StoreFollowerCCNinArrayPositionIIncrementI_Node0_action["Move the follower s CCN key
GCCC-CCN-KEY to the follower
manifest array at position I
WS-FOLLOWER-MANII and add 1 to index
I"]:::main N_StoreFollowerCCNinArrayPositionIIncrementI_Node0 -- Yes --> N_StoreFollowerCCNinArrayPositionIIncrementI_Node0_action N_StoreFollowerCCNinArrayPositionIIncrementI_Node0_action --> E_StoreFollowerCCNinArrayPositionIIncrementI S_StoreFollowerCCNinArrayPositionIIncrementI --> N_StoreFollowerCCNinArrayPositionIIncrementI_Node0 N_StoreFollowerCCNinArrayPositionIIncrementI_Node0 -- No --> E_StoreFollowerCCNinArrayPositionIIncrementI
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a follower manifest
WHEN:
The system stores the follower information
THEN:
Move the follower's CCN key (GCCC-CCN-KEY) to the follower manifest array at position I (WS-FOLLOWER-MANI(I)) and add 1 to index I
β Consolidated Acceptance Criteria
- The system checks if index I is greater than 100 → if I is greater than 100, set end-of-database flag to true and stop collecting followers; If I is 100 or less, continue retrieving next cargo record
- Checking if more followers can be stored → if I is greater than 100, set the end-of-database flag to true; otherwise, continue retrieving more followers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_I100(["Start Step"])
E_I100(["End Step"])
N_I100_Node0{"The system checks if index I is
greater than 100"}:::decision N_I100_Node0_action["If I is greater than 100, set
end-of-database flag to true and
stop collecting followers If I is
100 or less, continue retrieving
next cargo record"]:::main N_I100_Node0 -- Yes --> N_I100_Node0_action N_I100_Node0_action --> E_I100 S_I100 --> N_I100_Node0 N_I100_Node1{"Checking if more followers can be
stored"}:::decision N_I100_Node1_action["If I is greater than 100, set the
end-of-database flag to true
otherwise, continue retrieving more
followers"]:::main N_I100_Node1 -- Yes --> N_I100_Node1_action N_I100_Node1_action --> E_I100 N_I100_Node0 -- No --> N_I100_Node1 N_I100_Node1 -- No --> E_I100
greater than 100"}:::decision N_I100_Node0_action["If I is greater than 100, set
end-of-database flag to true and
stop collecting followers If I is
100 or less, continue retrieving
next cargo record"]:::main N_I100_Node0 -- Yes --> N_I100_Node0_action N_I100_Node0_action --> E_I100 S_I100 --> N_I100_Node0 N_I100_Node1{"Checking if more followers can be
stored"}:::decision N_I100_Node1_action["If I is greater than 100, set the
end-of-database flag to true
otherwise, continue retrieving more
followers"]:::main N_I100_Node1 -- Yes --> N_I100_Node1_action N_I100_Node1_action --> E_I100 N_I100_Node0 -- No --> N_I100_Node1 N_I100_Node1 -- No --> E_I100
File: GCX126R.cbl
GIVEN:
A follower CCN has been stored in the array and the index has been incremented
WHEN:
The system checks if index I is greater than 100
THEN:
- If i is greater than 100, set end-of-database flag to true
- Stop collecting followers; if i is 100 or less, continue retrieving next cargo record
File: GCX126R.cbl
GIVEN:
The follower array index I has been incremented
WHEN:
Checking if more followers can be stored
THEN:
If I is greater than 100, set the end-of-database flag to true; otherwise, continue retrieving more followers
β Consolidated Acceptance Criteria
- The system calculates the total number of followers collected → subtract 1 from index I to get the actual count of follower manifests stored 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_CalculateTotalFollowersCountI1(["Start Step"])
E_CalculateTotalFollowersCountI1(["End Step"])
N_CalculateTotalFollowersCountI1_Node0{"The system calculates the total
number of followers collected"}:::decision N_CalculateTotalFollowersCountI1_Node0_action["Subtract 1 from index I to get the
actual count of follower manifests
stored in the array"]:::main N_CalculateTotalFollowersCountI1_Node0 -- Yes --> N_CalculateTotalFollowersCountI1_Node0_action N_CalculateTotalFollowersCountI1_Node0_action --> E_CalculateTotalFollowersCountI1 S_CalculateTotalFollowersCountI1 --> N_CalculateTotalFollowersCountI1_Node0 N_CalculateTotalFollowersCountI1_Node0 -- No --> E_CalculateTotalFollowersCountI1
number of followers collected"}:::decision N_CalculateTotalFollowersCountI1_Node0_action["Subtract 1 from index I to get the
actual count of follower manifests
stored in the array"]:::main N_CalculateTotalFollowersCountI1_Node0 -- Yes --> N_CalculateTotalFollowersCountI1_Node0_action N_CalculateTotalFollowersCountI1_Node0_action --> E_CalculateTotalFollowersCountI1 S_CalculateTotalFollowersCountI1 --> N_CalculateTotalFollowersCountI1_Node0 N_CalculateTotalFollowersCountI1_Node0 -- No --> E_CalculateTotalFollowersCountI1
File: GCX126R.cbl
GIVEN:
The database retrieval loop has completed and end-of-database flag is set
WHEN:
The system calculates the total number of followers collected
THEN:
Subtract 1 from index I to get the actual count of follower manifests stored in the array
β Consolidated Acceptance Criteria
- The system checks if the count is greater than 0 → if count is 0 or less, exit the process without updating any followers; If count is greater than 0, proceed to loop through each follower for 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_Count0(["Start Step"])
E_Count0(["End Step"])
N_Count0_Node0{"The system checks if the count is
greater than 0"}:::decision N_Count0_Node0_action["If count is 0 or less, exit the
process without updating any
followers If count is greater than
0, proceed to loop through each
follower for updates"]:::main N_Count0_Node0 -- Yes --> N_Count0_Node0_action N_Count0_Node0_action --> E_Count0 S_Count0 --> N_Count0_Node0 N_Count0_Node0 -- No --> E_Count0
greater than 0"}:::decision N_Count0_Node0_action["If count is 0 or less, exit the
process without updating any
followers If count is greater than
0, proceed to loop through each
follower for updates"]:::main N_Count0_Node0 -- Yes --> N_Count0_Node0_action N_Count0_Node0_action --> E_Count0 S_Count0 --> N_Count0_Node0 N_Count0_Node0 -- No --> E_Count0
File: GCX126R.cbl
GIVEN:
The total follower count has been calculated
WHEN:
The system checks if the count is greater than 0
THEN:
If count is 0 or less, exit the process without updating any followers; If count is greater than 0, proceed to loop through each follower for updates
β Consolidated Acceptance Criteria
- The system begins processing followers → loop through the follower array starting at J=1, incrementing by 1 each iteration, until J exceeds the count OR the follower CCN at position I is spaces or low-values OR J exceeds 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_LoopThroughEachFollowerinArrayJ1toCount(["Start Step"])
E_LoopThroughEachFollowerinArrayJ1toCount(["End Step"])
N_LoopThroughEachFollowerinArrayJ1toCount_Node0{"The system begins processing
followers"}:::decision N_LoopThroughEachFollowerinArrayJ1toCount_Node0_action["Loop through the follower array
starting at J1, incrementing by 1
each iteration, until J exceeds the
count OR the follower CCN at
position I is spaces or low-values
OR J exceeds I"]:::main N_LoopThroughEachFollowerinArrayJ1toCount_Node0 -- Yes --> N_LoopThroughEachFollowerinArrayJ1toCount_Node0_action N_LoopThroughEachFollowerinArrayJ1toCount_Node0_action --> E_LoopThroughEachFollowerinArrayJ1toCount S_LoopThroughEachFollowerinArrayJ1toCount --> N_LoopThroughEachFollowerinArrayJ1toCount_Node0 N_LoopThroughEachFollowerinArrayJ1toCount_Node0 -- No --> E_LoopThroughEachFollowerinArrayJ1toCount
followers"}:::decision N_LoopThroughEachFollowerinArrayJ1toCount_Node0_action["Loop through the follower array
starting at J1, incrementing by 1
each iteration, until J exceeds the
count OR the follower CCN at
position I is spaces or low-values
OR J exceeds I"]:::main N_LoopThroughEachFollowerinArrayJ1toCount_Node0 -- Yes --> N_LoopThroughEachFollowerinArrayJ1toCount_Node0_action N_LoopThroughEachFollowerinArrayJ1toCount_Node0_action --> E_LoopThroughEachFollowerinArrayJ1toCount S_LoopThroughEachFollowerinArrayJ1toCount --> N_LoopThroughEachFollowerinArrayJ1toCount_Node0 N_LoopThroughEachFollowerinArrayJ1toCount_Node0 -- No --> E_LoopThroughEachFollowerinArrayJ1toCount
File: GCX126R.cbl
GIVEN:
At least one follower manifest exists in the array
WHEN:
The system begins processing followers
THEN:
Loop through the follower array starting at J=1, incrementing by 1 each iteration, until J exceeds the count OR the follower CCN at position I is spaces or low-values OR J exceeds I
β Consolidated Acceptance Criteria
- The system prepares to retrieve the follower cargo record → move the follower CCN from array position J (WS-FOLLOWER-MANI(J)) to both CCRT-SSAQ key value and A2RT-SSAQ key 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_SetCargoKeytoFollowerCCNJ(["Start Step"])
E_SetCargoKeytoFollowerCCNJ(["End Step"])
N_SetCargoKeytoFollowerCCNJ_Node0{"The system prepares to retrieve the
follower cargo record"}:::decision N_SetCargoKeytoFollowerCCNJ_Node0_action["Move the follower CCN from array
position J WS-FOLLOWER-MANIJ to both
CCRT-SSAQ key value and A2RT-SSAQ
key value"]:::main N_SetCargoKeytoFollowerCCNJ_Node0 -- Yes --> N_SetCargoKeytoFollowerCCNJ_Node0_action N_SetCargoKeytoFollowerCCNJ_Node0_action --> E_SetCargoKeytoFollowerCCNJ S_SetCargoKeytoFollowerCCNJ --> N_SetCargoKeytoFollowerCCNJ_Node0 N_SetCargoKeytoFollowerCCNJ_Node0 -- No --> E_SetCargoKeytoFollowerCCNJ
follower cargo record"}:::decision N_SetCargoKeytoFollowerCCNJ_Node0_action["Move the follower CCN from array
position J WS-FOLLOWER-MANIJ to both
CCRT-SSAQ key value and A2RT-SSAQ
key value"]:::main N_SetCargoKeytoFollowerCCNJ_Node0 -- Yes --> N_SetCargoKeytoFollowerCCNJ_Node0_action N_SetCargoKeytoFollowerCCNJ_Node0_action --> E_SetCargoKeytoFollowerCCNJ S_SetCargoKeytoFollowerCCNJ --> N_SetCargoKeytoFollowerCCNJ_Node0 N_SetCargoKeytoFollowerCCNJ_Node0 -- No --> E_SetCargoKeytoFollowerCCNJ
File: GCX126R.cbl
GIVEN:
The system is processing follower at array position J
WHEN:
The system prepares to retrieve the follower cargo record
THEN:
- Move the follower ccn from array position j (ws-follower-mani(j)) to both ccrt-ssaq key value
- A2rt-ssaq key value
β Consolidated Acceptance Criteria
- The system updates the border arrival status → set the border arrival acknowledgment flag (GCCC-BORDER-ARRIVAL-ACK) to true in the cargo report 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_SetBorderArrivalAcknowledgmentFlagTRUE(["Start Step"])
E_SetBorderArrivalAcknowledgmentFlagTRUE(["End Step"])
N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0{"The system updates the border
arrival status"}:::decision N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0_action["Set the border arrival
acknowledgment flag
GCCC-BORDER-ARRIVAL-ACK to true in
the cargo report segment"]:::main N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0 -- Yes --> N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0_action N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0_action --> E_SetBorderArrivalAcknowledgmentFlagTRUE S_SetBorderArrivalAcknowledgmentFlagTRUE --> N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0 N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0 -- No --> E_SetBorderArrivalAcknowledgmentFlagTRUE
arrival status"}:::decision N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0_action["Set the border arrival
acknowledgment flag
GCCC-BORDER-ARRIVAL-ACK to true in
the cargo report segment"]:::main N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0 -- Yes --> N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0_action N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0_action --> E_SetBorderArrivalAcknowledgmentFlagTRUE S_SetBorderArrivalAcknowledgmentFlagTRUE --> N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0 N_SetBorderArrivalAcknowledgmentFlagTRUE_Node0 -- No --> E_SetBorderArrivalAcknowledgmentFlagTRUE
File: GCX126R.cbl
GIVEN:
The follower cargo record has been successfully retrieved
WHEN:
The system updates the border arrival status
THEN:
Set the border arrival acknowledgment flag (GCCC-BORDER-ARRIVAL-ACK) to true in the cargo report segment
β Consolidated Acceptance Criteria
- The system saves the changes to the database → execute Replace (REPL) call to update the cargo report segment in the database, clear status code and set accept status to blank
- The system updates the follower cargo record → move spaces to database status code; Move blank to database accept status; Execute database Replace operation using cargo PCB; Pass cargo report segment for update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateFollowerCargoRecordinDatabase(["Start Step"])
E_UpdateFollowerCargoRecordinDatabase(["End Step"])
N_UpdateFollowerCargoRecordinDatabase_Node0{"The system saves the changes to the
database"}:::decision N_UpdateFollowerCargoRecordinDatabase_Node0_action["Execute Replace REPL call to update
the cargo report segment in the
database, clear status code and set
accept status to blank"]:::main N_UpdateFollowerCargoRecordinDatabase_Node0 -- Yes --> N_UpdateFollowerCargoRecordinDatabase_Node0_action N_UpdateFollowerCargoRecordinDatabase_Node0_action --> E_UpdateFollowerCargoRecordinDatabase S_UpdateFollowerCargoRecordinDatabase --> N_UpdateFollowerCargoRecordinDatabase_Node0 N_UpdateFollowerCargoRecordinDatabase_Node1{"The system updates the follower
cargo record"}:::decision N_UpdateFollowerCargoRecordinDatabase_Node1_action["Move spaces to database status code
Move blank to database accept status
Execute database Replace operation
using cargo PCB Pass cargo report
segment for update"]:::main N_UpdateFollowerCargoRecordinDatabase_Node1 -- Yes --> N_UpdateFollowerCargoRecordinDatabase_Node1_action N_UpdateFollowerCargoRecordinDatabase_Node1_action --> E_UpdateFollowerCargoRecordinDatabase N_UpdateFollowerCargoRecordinDatabase_Node0 -- No --> N_UpdateFollowerCargoRecordinDatabase_Node1 N_UpdateFollowerCargoRecordinDatabase_Node1 -- No --> E_UpdateFollowerCargoRecordinDatabase
database"}:::decision N_UpdateFollowerCargoRecordinDatabase_Node0_action["Execute Replace REPL call to update
the cargo report segment in the
database, clear status code and set
accept status to blank"]:::main N_UpdateFollowerCargoRecordinDatabase_Node0 -- Yes --> N_UpdateFollowerCargoRecordinDatabase_Node0_action N_UpdateFollowerCargoRecordinDatabase_Node0_action --> E_UpdateFollowerCargoRecordinDatabase S_UpdateFollowerCargoRecordinDatabase --> N_UpdateFollowerCargoRecordinDatabase_Node0 N_UpdateFollowerCargoRecordinDatabase_Node1{"The system updates the follower
cargo record"}:::decision N_UpdateFollowerCargoRecordinDatabase_Node1_action["Move spaces to database status code
Move blank to database accept status
Execute database Replace operation
using cargo PCB Pass cargo report
segment for update"]:::main N_UpdateFollowerCargoRecordinDatabase_Node1 -- Yes --> N_UpdateFollowerCargoRecordinDatabase_Node1_action N_UpdateFollowerCargoRecordinDatabase_Node1_action --> E_UpdateFollowerCargoRecordinDatabase N_UpdateFollowerCargoRecordinDatabase_Node0 -- No --> N_UpdateFollowerCargoRecordinDatabase_Node1 N_UpdateFollowerCargoRecordinDatabase_Node1 -- No --> E_UpdateFollowerCargoRecordinDatabase
File: GCX126R.cbl
GIVEN:
The follower cargo record has been updated with border arrival acknowledgment and logged
WHEN:
The system saves the changes to the database
THEN:
- Execute replace (repl) call to update the cargo report segment in the database, clear status code
- Set accept status to blank
File: GCX126R.cbl
GIVEN:
All release information has been set for the follower manifest and US manifest processing is complete
WHEN:
The system updates the follower cargo record
THEN:
Move spaces to database status code; Move blank to database accept status; Execute database Replace operation using cargo PCB; Pass cargo report segment for update
β Consolidated Acceptance Criteria
- The system checks if more followers exist → if loop counter J has not exceeded the total count AND the next array position does not contain spaces or low-values, continue to next follower; Otherwise, exit the follower processing loop
- The system checks for more followers → if the current position in the follower array is less than the total count of followers AND the next follower CCN is not spaces or low-values, then continue processing the next follower, otherwise end follower 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_MoreFollowers(["Start Step"])
E_MoreFollowers(["End Step"])
N_MoreFollowers_Node0{"The system checks if more followers
exist"}:::decision N_MoreFollowers_Node0_action["If loop counter J has not exceeded
the total count AND the next array
position does not contain spaces or
low-values, continue to next
follower Otherwise, exit the
follower processing loop"]:::main N_MoreFollowers_Node0 -- Yes --> N_MoreFollowers_Node0_action N_MoreFollowers_Node0_action --> E_MoreFollowers S_MoreFollowers --> N_MoreFollowers_Node0 N_MoreFollowers_Node1{"The system checks for more
followers"}:::decision N_MoreFollowers_Node1_action["If the current position in the
follower array is less than the
total count of followers AND the
next follower CCN is not spaces or
low-values, then continue processing
the next follower, otherwise end
follower processing"]:::main N_MoreFollowers_Node1 -- Yes --> N_MoreFollowers_Node1_action N_MoreFollowers_Node1_action --> E_MoreFollowers N_MoreFollowers_Node0 -- No --> N_MoreFollowers_Node1 N_MoreFollowers_Node1 -- No --> E_MoreFollowers
exist"}:::decision N_MoreFollowers_Node0_action["If loop counter J has not exceeded
the total count AND the next array
position does not contain spaces or
low-values, continue to next
follower Otherwise, exit the
follower processing loop"]:::main N_MoreFollowers_Node0 -- Yes --> N_MoreFollowers_Node0_action N_MoreFollowers_Node0_action --> E_MoreFollowers S_MoreFollowers --> N_MoreFollowers_Node0 N_MoreFollowers_Node1{"The system checks for more
followers"}:::decision N_MoreFollowers_Node1_action["If the current position in the
follower array is less than the
total count of followers AND the
next follower CCN is not spaces or
low-values, then continue processing
the next follower, otherwise end
follower processing"]:::main N_MoreFollowers_Node1 -- Yes --> N_MoreFollowers_Node1_action N_MoreFollowers_Node1_action --> E_MoreFollowers N_MoreFollowers_Node0 -- No --> N_MoreFollowers_Node1 N_MoreFollowers_Node1 -- No --> E_MoreFollowers
File: GCX126R.cbl
GIVEN:
A follower manifest has been updated in the database
WHEN:
The system checks if more followers exist
THEN:
- If loop counter j has not exceeded the total count
- The next array position does not contain spaces or low-values, continue to next follower; otherwise, exit the follower processing loop
File: GCX126R.cbl
GIVEN:
A follower manifest has been processed AND there is an array of follower CCNs
WHEN:
The system checks for more followers
THEN:
- If the current position in the follower array is less than the total count of followers
- The next follower ccn is not spaces or low-values, then continue processing the next follower, otherwise end follower processing
β Consolidated Acceptance Criteria
- The follower manifest retrieval process begins → the follower manifest array is cleared to spaces, the array index is set to 1, and the end-of-database flag is set to indicate more records may 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_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag(["Start Step"])
E_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag(["End Step"])
N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0{"The follower manifest retrieval
process begins"}:::decision N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0_action["The follower manifest array is
cleared to spaces, the array index
is set to 1, and the end-of-database
flag is set to indicate more records
may exist"]:::main N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0 -- Yes --> N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0_action N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0_action --> E_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag S_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag --> N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0 N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0 -- No --> E_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag
process begins"}:::decision N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0_action["The follower manifest array is
cleared to spaces, the array index
is set to 1, and the end-of-database
flag is set to indicate more records
may exist"]:::main N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0 -- Yes --> N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0_action N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0_action --> E_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag S_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag --> N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0 N_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag_Node0 -- No --> E_InitializeFollowerManifestArraySetIndexI1SetNotEndofDatabaseFlag
File: GCX126R.cbl
GIVEN:
A master manifest cargo record needs to have its follower manifests retrieved
WHEN:
The follower manifest retrieval process begins
THEN:
The follower manifest array is cleared to spaces, the array index is set to 1, and the end-of-database flag is set to indicate more records may exist
β Consolidated Acceptance Criteria
- The system prepares to search for follower manifests → the master manifest's CCN key is set as the search criterion for retrieving related follower manifests from the cargo 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_SetMasterCCNKeyfromCurrentCargoRecord(["Start Step"])
E_SetMasterCCNKeyfromCurrentCargoRecord(["End Step"])
N_SetMasterCCNKeyfromCurrentCargoRecord_Node0{"The system prepares to search for
follower manifests"}:::decision N_SetMasterCCNKeyfromCurrentCargoRecord_Node0_action["The master manifest s CCN key is
set as the search criterion for
retrieving related follower
manifests from the cargo database"]:::main N_SetMasterCCNKeyfromCurrentCargoRecord_Node0 -- Yes --> N_SetMasterCCNKeyfromCurrentCargoRecord_Node0_action N_SetMasterCCNKeyfromCurrentCargoRecord_Node0_action --> E_SetMasterCCNKeyfromCurrentCargoRecord S_SetMasterCCNKeyfromCurrentCargoRecord --> N_SetMasterCCNKeyfromCurrentCargoRecord_Node0 N_SetMasterCCNKeyfromCurrentCargoRecord_Node0 -- No --> E_SetMasterCCNKeyfromCurrentCargoRecord
follower manifests"}:::decision N_SetMasterCCNKeyfromCurrentCargoRecord_Node0_action["The master manifest s CCN key is
set as the search criterion for
retrieving related follower
manifests from the cargo database"]:::main N_SetMasterCCNKeyfromCurrentCargoRecord_Node0 -- Yes --> N_SetMasterCCNKeyfromCurrentCargoRecord_Node0_action N_SetMasterCCNKeyfromCurrentCargoRecord_Node0_action --> E_SetMasterCCNKeyfromCurrentCargoRecord S_SetMasterCCNKeyfromCurrentCargoRecord --> N_SetMasterCCNKeyfromCurrentCargoRecord_Node0 N_SetMasterCCNKeyfromCurrentCargoRecord_Node0 -- No --> E_SetMasterCCNKeyfromCurrentCargoRecord
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a master manifest with a valid CCN key
WHEN:
The system prepares to search for follower manifests
THEN:
The master manifest's CCN key is set as the search criterion for retrieving related follower manifests from the cargo database
β Consolidated Acceptance Criteria
- The system requests the next cargo record from the database → the database returns the next cargo record where the master manifest CCN matches the search key, and the database status code is set to indicate success or 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_GetNextCargoRecordUsingMasterCCNKey(["Start Step"])
E_GetNextCargoRecordUsingMasterCCNKey(["End Step"])
N_GetNextCargoRecordUsingMasterCCNKey_Node0{"The system requests the next cargo
record from the database"}:::decision N_GetNextCargoRecordUsingMasterCCNKey_Node0_action["The database returns the next cargo
record where the master manifest CCN
matches the search key, and the
database status code is set to
indicate success or failure"]:::main N_GetNextCargoRecordUsingMasterCCNKey_Node0 -- Yes --> N_GetNextCargoRecordUsingMasterCCNKey_Node0_action N_GetNextCargoRecordUsingMasterCCNKey_Node0_action --> E_GetNextCargoRecordUsingMasterCCNKey S_GetNextCargoRecordUsingMasterCCNKey --> N_GetNextCargoRecordUsingMasterCCNKey_Node0 N_GetNextCargoRecordUsingMasterCCNKey_Node0 -- No --> E_GetNextCargoRecordUsingMasterCCNKey
record from the database"}:::decision N_GetNextCargoRecordUsingMasterCCNKey_Node0_action["The database returns the next cargo
record where the master manifest CCN
matches the search key, and the
database status code is set to
indicate success or failure"]:::main N_GetNextCargoRecordUsingMasterCCNKey_Node0 -- Yes --> N_GetNextCargoRecordUsingMasterCCNKey_Node0_action N_GetNextCargoRecordUsingMasterCCNKey_Node0_action --> E_GetNextCargoRecordUsingMasterCCNKey S_GetNextCargoRecordUsingMasterCCNKey --> N_GetNextCargoRecordUsingMasterCCNKey_Node0 N_GetNextCargoRecordUsingMasterCCNKey_Node0 -- No --> E_GetNextCargoRecordUsingMasterCCNKey
File: GCX126R.cbl
GIVEN:
A master CCN key has been established as the search criterion
WHEN:
The system requests the next cargo record from the database
THEN:
The database returns the next cargo record where the master manifest CCN matches the search key, and the database status code is set to indicate success or failure
β Consolidated Acceptance Criteria
- The system stores the follower information → the follower manifest's CCN is moved to the array position indicated by the current index value I
- The CCN needs to be stored for later processing → the cargo CCN key is moved to the follower manifest array at position I
- The follower manifest is being recorded → the follower manifest CCN (GCCC-CCN-KEY) is stored in the follower manifest array at position I (WS-FOLLOWER-MANI(I))
- Storing the follower information → the follower manifest CCN is moved to the follower array at position I
- The follower manifest CCN needs to be stored → the CCN key (GCCC-CCN-KEY) is moved to the follower manifest array at position I (WS-FOLLOWER-MANI(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_StoreFollowerCCNinArrayPositionI(["Start Step"])
E_StoreFollowerCCNinArrayPositionI(["End Step"])
N_StoreFollowerCCNinArrayPositionI_Node0{"The system stores the follower
information"}:::decision N_StoreFollowerCCNinArrayPositionI_Node0_action["The follower manifest s CCN is
moved to the array position
indicated by the current index value
I"]:::main N_StoreFollowerCCNinArrayPositionI_Node0 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node0_action N_StoreFollowerCCNinArrayPositionI_Node0_action --> E_StoreFollowerCCNinArrayPositionI S_StoreFollowerCCNinArrayPositionI --> N_StoreFollowerCCNinArrayPositionI_Node0 N_StoreFollowerCCNinArrayPositionI_Node1{"The CCN needs to be stored for
later processing"}:::decision N_StoreFollowerCCNinArrayPositionI_Node1_action["The cargo CCN key is moved to the
follower manifest array at position
I"]:::main N_StoreFollowerCCNinArrayPositionI_Node1 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node1_action N_StoreFollowerCCNinArrayPositionI_Node1_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node0 -- No --> N_StoreFollowerCCNinArrayPositionI_Node1 N_StoreFollowerCCNinArrayPositionI_Node2{"The follower manifest is being
recorded"}:::decision N_StoreFollowerCCNinArrayPositionI_Node2_action["The follower manifest CCN
GCCC-CCN-KEY is stored in the
follower manifest array at position
I WS-FOLLOWER-MANII"]:::main N_StoreFollowerCCNinArrayPositionI_Node2 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node2_action N_StoreFollowerCCNinArrayPositionI_Node2_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node1 -- No --> N_StoreFollowerCCNinArrayPositionI_Node2 N_StoreFollowerCCNinArrayPositionI_Node3{"Storing the follower information"}:::decision N_StoreFollowerCCNinArrayPositionI_Node3_action["The follower manifest CCN is moved
to the follower array at position I"]:::main N_StoreFollowerCCNinArrayPositionI_Node3 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node3_action N_StoreFollowerCCNinArrayPositionI_Node3_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node2 -- No --> N_StoreFollowerCCNinArrayPositionI_Node3 N_StoreFollowerCCNinArrayPositionI_Node4{"The follower manifest CCN needs to
be stored"}:::decision N_StoreFollowerCCNinArrayPositionI_Node4_action["The CCN key GCCC-CCN-KEY is moved
to the follower manifest array at
position I WS-FOLLOWER-MANII"]:::main N_StoreFollowerCCNinArrayPositionI_Node4 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node4_action N_StoreFollowerCCNinArrayPositionI_Node4_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node3 -- No --> N_StoreFollowerCCNinArrayPositionI_Node4 N_StoreFollowerCCNinArrayPositionI_Node4 -- No --> E_StoreFollowerCCNinArrayPositionI
information"}:::decision N_StoreFollowerCCNinArrayPositionI_Node0_action["The follower manifest s CCN is
moved to the array position
indicated by the current index value
I"]:::main N_StoreFollowerCCNinArrayPositionI_Node0 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node0_action N_StoreFollowerCCNinArrayPositionI_Node0_action --> E_StoreFollowerCCNinArrayPositionI S_StoreFollowerCCNinArrayPositionI --> N_StoreFollowerCCNinArrayPositionI_Node0 N_StoreFollowerCCNinArrayPositionI_Node1{"The CCN needs to be stored for
later processing"}:::decision N_StoreFollowerCCNinArrayPositionI_Node1_action["The cargo CCN key is moved to the
follower manifest array at position
I"]:::main N_StoreFollowerCCNinArrayPositionI_Node1 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node1_action N_StoreFollowerCCNinArrayPositionI_Node1_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node0 -- No --> N_StoreFollowerCCNinArrayPositionI_Node1 N_StoreFollowerCCNinArrayPositionI_Node2{"The follower manifest is being
recorded"}:::decision N_StoreFollowerCCNinArrayPositionI_Node2_action["The follower manifest CCN
GCCC-CCN-KEY is stored in the
follower manifest array at position
I WS-FOLLOWER-MANII"]:::main N_StoreFollowerCCNinArrayPositionI_Node2 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node2_action N_StoreFollowerCCNinArrayPositionI_Node2_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node1 -- No --> N_StoreFollowerCCNinArrayPositionI_Node2 N_StoreFollowerCCNinArrayPositionI_Node3{"Storing the follower information"}:::decision N_StoreFollowerCCNinArrayPositionI_Node3_action["The follower manifest CCN is moved
to the follower array at position I"]:::main N_StoreFollowerCCNinArrayPositionI_Node3 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node3_action N_StoreFollowerCCNinArrayPositionI_Node3_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node2 -- No --> N_StoreFollowerCCNinArrayPositionI_Node3 N_StoreFollowerCCNinArrayPositionI_Node4{"The follower manifest CCN needs to
be stored"}:::decision N_StoreFollowerCCNinArrayPositionI_Node4_action["The CCN key GCCC-CCN-KEY is moved
to the follower manifest array at
position I WS-FOLLOWER-MANII"]:::main N_StoreFollowerCCNinArrayPositionI_Node4 -- Yes --> N_StoreFollowerCCNinArrayPositionI_Node4_action N_StoreFollowerCCNinArrayPositionI_Node4_action --> E_StoreFollowerCCNinArrayPositionI N_StoreFollowerCCNinArrayPositionI_Node3 -- No --> N_StoreFollowerCCNinArrayPositionI_Node4 N_StoreFollowerCCNinArrayPositionI_Node4 -- No --> E_StoreFollowerCCNinArrayPositionI
File: GCX126R.cbl
GIVEN:
A cargo record has been confirmed as a follower manifest with a valid CCN
WHEN:
The system stores the follower information
THEN:
The follower manifest's CCN is moved to the array position indicated by the current index value I
File: GCX126R.cbl
GIVEN:
A follower manifest record has been identified
WHEN:
The CCN needs to be stored for later processing
THEN:
The cargo CCN key is moved to the follower manifest array at position I
File: GCX126R.cbl
GIVEN:
A cargo record has been confirmed as a follower manifest of the current master
WHEN:
The follower manifest is being recorded
THEN:
The follower manifest CCN (GCCC-CCN-KEY) is stored in the follower manifest array at position I (WS-FOLLOWER-MANI(I))
File: GCX126R.cbl
GIVEN:
A follower manifest has been identified
WHEN:
Storing the follower information
THEN:
The follower manifest CCN is moved to the follower array at position I
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a follower manifest belonging to the master manifest
WHEN:
The follower manifest CCN needs to be stored
THEN:
The CCN key (GCCC-CCN-KEY) is moved to the follower manifest array at position I (WS-FOLLOWER-MANI(I))
β Consolidated Acceptance Criteria
- The system prepares to process the next potential follower → the array index I is incremented by 1
- Preparing to process the next follower → the index 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_IncrementIndexI(["Start Step"])
E_IncrementIndexI(["End Step"])
N_IncrementIndexI_Node0{"The system prepares to process the
next potential follower"}:::decision N_IncrementIndexI_Node0_action["The array index I is incremented by
1"]:::main N_IncrementIndexI_Node0 -- Yes --> N_IncrementIndexI_Node0_action N_IncrementIndexI_Node0_action --> E_IncrementIndexI S_IncrementIndexI --> N_IncrementIndexI_Node0 N_IncrementIndexI_Node1{"Preparing to process the next
follower"}:::decision N_IncrementIndexI_Node1_action["The index I is incremented by 1"]:::main N_IncrementIndexI_Node1 -- Yes --> N_IncrementIndexI_Node1_action N_IncrementIndexI_Node1_action --> E_IncrementIndexI N_IncrementIndexI_Node0 -- No --> N_IncrementIndexI_Node1 N_IncrementIndexI_Node1 -- No --> E_IncrementIndexI
next potential follower"}:::decision N_IncrementIndexI_Node0_action["The array index I is incremented by
1"]:::main N_IncrementIndexI_Node0 -- Yes --> N_IncrementIndexI_Node0_action N_IncrementIndexI_Node0_action --> E_IncrementIndexI S_IncrementIndexI --> N_IncrementIndexI_Node0 N_IncrementIndexI_Node1{"Preparing to process the next
follower"}:::decision N_IncrementIndexI_Node1_action["The index I is incremented by 1"]:::main N_IncrementIndexI_Node1 -- Yes --> N_IncrementIndexI_Node1_action N_IncrementIndexI_Node1_action --> E_IncrementIndexI N_IncrementIndexI_Node0 -- No --> N_IncrementIndexI_Node1 N_IncrementIndexI_Node1 -- No --> E_IncrementIndexI
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been successfully stored in the array
WHEN:
The system prepares to process the next potential follower
THEN:
The array index I is incremented by 1
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been stored in the array
WHEN:
Preparing to process the next follower
THEN:
The index I is incremented by 1
β Consolidated Acceptance Criteria
- The system checks the current value of index I → if index I is greater than 100, the end-of-database flag is set to terminate the retrieval loop; otherwise, the system continues to retrieve the 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_IndexI100(["Start Step"])
E_IndexI100(["End Step"])
N_IndexI100_Node0{"The system checks the current value
of index I"}:::decision N_IndexI100_Node0_action["If index I is greater than 100, the
end-of-database flag is set to
terminate the retrieval loop
otherwise, the system continues to
retrieve the next cargo record"]:::exclusion N_IndexI100_Node0 -- Yes -->|Alternative| N_IndexI100_Node0_action N_IndexI100_Node0_action --> E_IndexI100 S_IndexI100 --> N_IndexI100_Node0 N_IndexI100_Node0 -- No --> E_IndexI100
of index I"}:::decision N_IndexI100_Node0_action["If index I is greater than 100, the
end-of-database flag is set to
terminate the retrieval loop
otherwise, the system continues to
retrieve the next cargo record"]:::exclusion N_IndexI100_Node0 -- Yes -->|Alternative| N_IndexI100_Node0_action N_IndexI100_Node0_action --> E_IndexI100 S_IndexI100 --> N_IndexI100_Node0 N_IndexI100_Node0 -- No --> E_IndexI100
File: GCX126R.cbl
GIVEN:
The array index I has been incremented after storing a follower CCN or skipping a master record
WHEN:
The system checks the current value of index I
THEN:
If index I is greater than 100, the end-of-database flag is set to terminate the retrieval loop; otherwise, the system continues to retrieve the next cargo record
β Consolidated Acceptance Criteria
- The system calculates the final count of follower manifests → the value 1 is subtracted from index I to obtain the actual count of follower manifests stored 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_Subtract1fromIndexIFinalCountofFollowers(["Start Step"])
E_Subtract1fromIndexIFinalCountofFollowers(["End Step"])
N_Subtract1fromIndexIFinalCountofFollowers_Node0{"The system calculates the final
count of follower manifests"}:::decision N_Subtract1fromIndexIFinalCountofFollowers_Node0_action["The value 1 is subtracted from
index I to obtain the actual count
of follower manifests stored in the
array"]:::main N_Subtract1fromIndexIFinalCountofFollowers_Node0 -- Yes --> N_Subtract1fromIndexIFinalCountofFollowers_Node0_action N_Subtract1fromIndexIFinalCountofFollowers_Node0_action --> E_Subtract1fromIndexIFinalCountofFollowers S_Subtract1fromIndexIFinalCountofFollowers --> N_Subtract1fromIndexIFinalCountofFollowers_Node0 N_Subtract1fromIndexIFinalCountofFollowers_Node0 -- No --> E_Subtract1fromIndexIFinalCountofFollowers
count of follower manifests"}:::decision N_Subtract1fromIndexIFinalCountofFollowers_Node0_action["The value 1 is subtracted from
index I to obtain the actual count
of follower manifests stored in the
array"]:::main N_Subtract1fromIndexIFinalCountofFollowers_Node0 -- Yes --> N_Subtract1fromIndexIFinalCountofFollowers_Node0_action N_Subtract1fromIndexIFinalCountofFollowers_Node0_action --> E_Subtract1fromIndexIFinalCountofFollowers S_Subtract1fromIndexIFinalCountofFollowers --> N_Subtract1fromIndexIFinalCountofFollowers_Node0 N_Subtract1fromIndexIFinalCountofFollowers_Node0 -- No --> E_Subtract1fromIndexIFinalCountofFollowers
File: GCX126R.cbl
GIVEN:
The retrieval loop has terminated with the end-of-database flag set
WHEN:
The system calculates the final count of follower manifests
THEN:
The value 1 is subtracted from index I to obtain the actual count of follower manifests stored in the array
β Consolidated Acceptance Criteria
- The system checks if any followers were found → if the adjusted index I is less than or equal to 0, no follower manifests were found and the process exits; if I is greater than 0, follower manifests exist and are available for further processing
- Deciding whether to process followers → if the follower count is less than or equal to 0, exit the process; otherwise, proceed to process each follower
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FollowerCount0(["Start Step"])
E_FollowerCount0(["End Step"])
N_FollowerCount0_Node0{"The system checks if any followers
were found"}:::decision N_FollowerCount0_Node0_action["If the adjusted index I is less
than or equal to 0, no follower
manifests were found and the process
exits if I is greater than 0,
follower manifests exist and are
available for further processing"]:::main N_FollowerCount0_Node0 -- Yes --> N_FollowerCount0_Node0_action N_FollowerCount0_Node0_action --> E_FollowerCount0 S_FollowerCount0 --> N_FollowerCount0_Node0 N_FollowerCount0_Node1{"Deciding whether to process
followers"}:::decision N_FollowerCount0_Node1_action["If the follower count is less than
or equal to 0, exit the process
otherwise, proceed to process each
follower"]:::main N_FollowerCount0_Node1 -- Yes --> N_FollowerCount0_Node1_action N_FollowerCount0_Node1_action --> E_FollowerCount0 N_FollowerCount0_Node0 -- No --> N_FollowerCount0_Node1 N_FollowerCount0_Node1 -- No --> E_FollowerCount0
were found"}:::decision N_FollowerCount0_Node0_action["If the adjusted index I is less
than or equal to 0, no follower
manifests were found and the process
exits if I is greater than 0,
follower manifests exist and are
available for further processing"]:::main N_FollowerCount0_Node0 -- Yes --> N_FollowerCount0_Node0_action N_FollowerCount0_Node0_action --> E_FollowerCount0 S_FollowerCount0 --> N_FollowerCount0_Node0 N_FollowerCount0_Node1{"Deciding whether to process
followers"}:::decision N_FollowerCount0_Node1_action["If the follower count is less than
or equal to 0, exit the process
otherwise, proceed to process each
follower"]:::main N_FollowerCount0_Node1 -- Yes --> N_FollowerCount0_Node1_action N_FollowerCount0_Node1_action --> E_FollowerCount0 N_FollowerCount0_Node0 -- No --> N_FollowerCount0_Node1 N_FollowerCount0_Node1 -- No --> E_FollowerCount0
File: GCX126R.cbl
GIVEN:
The final follower count has been calculated by subtracting 1 from index I
WHEN:
The system checks if any followers were found
THEN:
- If the adjusted index i is less than or equal to 0, no follower manifests were found
- The process exits; if i is greater than 0, follower manifests exist
- Are available for further processing
File: GCX126R.cbl
GIVEN:
The total follower count has been calculated
WHEN:
Deciding whether to process followers
THEN:
If the follower count is less than or equal to 0, exit the process; otherwise, proceed to process each follower
β Consolidated Acceptance Criteria
- The system prepares to search for follower manifests → the master manifest's CCN key is stored as the search reference key for subsequent follower manifest 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_SetMasterCCNKeyfromCurrentCargo(["Start Step"])
E_SetMasterCCNKeyfromCurrentCargo(["End Step"])
N_SetMasterCCNKeyfromCurrentCargo_Node0{"The system prepares to search for
follower manifests"}:::decision N_SetMasterCCNKeyfromCurrentCargo_Node0_action["The master manifest s CCN key is
stored as the search reference key
for subsequent follower manifest
retrieval"]:::main N_SetMasterCCNKeyfromCurrentCargo_Node0 -- Yes --> N_SetMasterCCNKeyfromCurrentCargo_Node0_action N_SetMasterCCNKeyfromCurrentCargo_Node0_action --> E_SetMasterCCNKeyfromCurrentCargo S_SetMasterCCNKeyfromCurrentCargo --> N_SetMasterCCNKeyfromCurrentCargo_Node0 N_SetMasterCCNKeyfromCurrentCargo_Node0 -- No --> E_SetMasterCCNKeyfromCurrentCargo
follower manifests"}:::decision N_SetMasterCCNKeyfromCurrentCargo_Node0_action["The master manifest s CCN key is
stored as the search reference key
for subsequent follower manifest
retrieval"]:::main N_SetMasterCCNKeyfromCurrentCargo_Node0 -- Yes --> N_SetMasterCCNKeyfromCurrentCargo_Node0_action N_SetMasterCCNKeyfromCurrentCargo_Node0_action --> E_SetMasterCCNKeyfromCurrentCargo S_SetMasterCCNKeyfromCurrentCargo --> N_SetMasterCCNKeyfromCurrentCargo_Node0 N_SetMasterCCNKeyfromCurrentCargo_Node0 -- No --> E_SetMasterCCNKeyfromCurrentCargo
File: GCX126R.cbl
GIVEN:
A master manifest cargo record with a valid CCN key is currently loaded
WHEN:
The system prepares to search for follower manifests
THEN:
The master manifest's CCN key is stored as the search reference key for subsequent follower manifest retrieval
β Consolidated Acceptance Criteria
- The follower manifest collection process begins → the follower manifest array is initialized to spaces to ensure no residual data from previous processing
- The collection process begins → the system clears the follower manifest array by setting all entries to spaces
- The follower manifest retrieval process begins → the follower manifest array is cleared to spaces, the counter I is set to 1, and the database end flag is set to indicate not end of 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_InitializeFollowerManifestArray(["Start Step"])
E_InitializeFollowerManifestArray(["End Step"])
N_InitializeFollowerManifestArray_Node0{"The follower manifest collection
process begins"}:::decision N_InitializeFollowerManifestArray_Node0_action["The follower manifest array is
initialized to spaces to ensure no
residual data from previous
processing"]:::main N_InitializeFollowerManifestArray_Node0 -- Yes --> N_InitializeFollowerManifestArray_Node0_action N_InitializeFollowerManifestArray_Node0_action --> E_InitializeFollowerManifestArray S_InitializeFollowerManifestArray --> N_InitializeFollowerManifestArray_Node0 N_InitializeFollowerManifestArray_Node1{"The collection process begins"}:::decision N_InitializeFollowerManifestArray_Node1_action["The system clears the follower
manifest array by setting all
entries to spaces"]:::main N_InitializeFollowerManifestArray_Node1 -- Yes --> N_InitializeFollowerManifestArray_Node1_action N_InitializeFollowerManifestArray_Node1_action --> E_InitializeFollowerManifestArray N_InitializeFollowerManifestArray_Node0 -- No --> N_InitializeFollowerManifestArray_Node1 N_InitializeFollowerManifestArray_Node2{"The follower manifest retrieval
process begins"}:::decision N_InitializeFollowerManifestArray_Node2_action["The follower manifest array is
cleared to spaces, the counter I is
set to 1, and the database end flag
is set to indicate not end of
database"]:::main N_InitializeFollowerManifestArray_Node2 -- Yes --> N_InitializeFollowerManifestArray_Node2_action N_InitializeFollowerManifestArray_Node2_action --> E_InitializeFollowerManifestArray N_InitializeFollowerManifestArray_Node1 -- No --> N_InitializeFollowerManifestArray_Node2 N_InitializeFollowerManifestArray_Node2 -- No --> E_InitializeFollowerManifestArray
process begins"}:::decision N_InitializeFollowerManifestArray_Node0_action["The follower manifest array is
initialized to spaces to ensure no
residual data from previous
processing"]:::main N_InitializeFollowerManifestArray_Node0 -- Yes --> N_InitializeFollowerManifestArray_Node0_action N_InitializeFollowerManifestArray_Node0_action --> E_InitializeFollowerManifestArray S_InitializeFollowerManifestArray --> N_InitializeFollowerManifestArray_Node0 N_InitializeFollowerManifestArray_Node1{"The collection process begins"}:::decision N_InitializeFollowerManifestArray_Node1_action["The system clears the follower
manifest array by setting all
entries to spaces"]:::main N_InitializeFollowerManifestArray_Node1 -- Yes --> N_InitializeFollowerManifestArray_Node1_action N_InitializeFollowerManifestArray_Node1_action --> E_InitializeFollowerManifestArray N_InitializeFollowerManifestArray_Node0 -- No --> N_InitializeFollowerManifestArray_Node1 N_InitializeFollowerManifestArray_Node2{"The follower manifest retrieval
process begins"}:::decision N_InitializeFollowerManifestArray_Node2_action["The follower manifest array is
cleared to spaces, the counter I is
set to 1, and the database end flag
is set to indicate not end of
database"]:::main N_InitializeFollowerManifestArray_Node2 -- Yes --> N_InitializeFollowerManifestArray_Node2_action N_InitializeFollowerManifestArray_Node2_action --> E_InitializeFollowerManifestArray N_InitializeFollowerManifestArray_Node1 -- No --> N_InitializeFollowerManifestArray_Node2 N_InitializeFollowerManifestArray_Node2 -- No --> E_InitializeFollowerManifestArray
File: GCX126R.cbl
GIVEN:
The system is about to search for follower manifests
WHEN:
The follower manifest collection process begins
THEN:
The follower manifest array is initialized to spaces to ensure no residual data from previous processing
File: GCX126R.cbl
GIVEN:
The system is about to collect follower manifest CCNs
WHEN:
The collection process begins
THEN:
The system clears the follower manifest array by setting all entries to spaces
File: GCX126R.cbl
GIVEN:
A master manifest CCN needs to be processed for follower manifests
WHEN:
The follower manifest retrieval process begins
THEN:
The follower manifest array is cleared to spaces, the counter I is set to 1, and the database end flag is set to indicate not end of database
β Consolidated Acceptance Criteria
- The system initializes the database navigation state → the end-of-database flag is set to 'Not End of DB' to allow record retrieval to proceed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFollowerNotEndofDBFlag(["Start Step"])
E_SetFollowerNotEndofDBFlag(["End Step"])
N_SetFollowerNotEndofDBFlag_Node0{"The system initializes the database
navigation state"}:::decision N_SetFollowerNotEndofDBFlag_Node0_action["The end-of-database flag is set to
Not End of DB to allow record
retrieval to proceed"]:::main N_SetFollowerNotEndofDBFlag_Node0 -- Yes --> N_SetFollowerNotEndofDBFlag_Node0_action N_SetFollowerNotEndofDBFlag_Node0_action --> E_SetFollowerNotEndofDBFlag S_SetFollowerNotEndofDBFlag --> N_SetFollowerNotEndofDBFlag_Node0 N_SetFollowerNotEndofDBFlag_Node0 -- No --> E_SetFollowerNotEndofDBFlag
navigation state"}:::decision N_SetFollowerNotEndofDBFlag_Node0_action["The end-of-database flag is set to
Not End of DB to allow record
retrieval to proceed"]:::main N_SetFollowerNotEndofDBFlag_Node0 -- Yes --> N_SetFollowerNotEndofDBFlag_Node0_action N_SetFollowerNotEndofDBFlag_Node0_action --> E_SetFollowerNotEndofDBFlag S_SetFollowerNotEndofDBFlag --> N_SetFollowerNotEndofDBFlag_Node0 N_SetFollowerNotEndofDBFlag_Node0 -- No --> E_SetFollowerNotEndofDBFlag
File: GCX126R.cbl
GIVEN:
The follower manifest search is about to begin
WHEN:
The system initializes the database navigation state
THEN:
The end-of-database flag is set to 'Not End of DB' to allow record retrieval to proceed
β Consolidated Acceptance Criteria
- The system prepares to store follower manifest CCNs → the array index counter is set to 1 to point to the first available storage 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_SetIndexIto1(["Start Step"])
E_SetIndexIto1(["End Step"])
N_SetIndexIto1_Node0{"The system prepares to store
follower manifest CCNs"}:::decision N_SetIndexIto1_Node0_action["The array index counter is set to 1
to point to the first available
storage position"]:::main N_SetIndexIto1_Node0 -- Yes --> N_SetIndexIto1_Node0_action N_SetIndexIto1_Node0_action --> E_SetIndexIto1 S_SetIndexIto1 --> N_SetIndexIto1_Node0 N_SetIndexIto1_Node0 -- No --> E_SetIndexIto1
follower manifest CCNs"}:::decision N_SetIndexIto1_Node0_action["The array index counter is set to 1
to point to the first available
storage position"]:::main N_SetIndexIto1_Node0 -- Yes --> N_SetIndexIto1_Node0_action N_SetIndexIto1_Node0_action --> E_SetIndexIto1 S_SetIndexIto1 --> N_SetIndexIto1_Node0 N_SetIndexIto1_Node0 -- No --> E_SetIndexIto1
File: GCX126R.cbl
GIVEN:
The follower manifest array has been initialized
WHEN:
The system prepares to store follower manifest CCNs
THEN:
The array index counter is set to 1 to point to the first available storage position
β Consolidated Acceptance Criteria
- The system checks if more follower manifests can be retrieved → the search continues if the end of database has not been reached AND the array index is 100 or less, otherwise the search 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_EndofDBORIndex100(["Start Step"])
E_EndofDBORIndex100(["End Step"])
N_EndofDBORIndex100_Node0{"The system checks if more follower
manifests can be retrieved"}:::decision N_EndofDBORIndex100_Node0_action["The search continues if the end of
database has not been reached AND
the array index is 100 or less,
otherwise the search terminates"]:::main N_EndofDBORIndex100_Node0 -- Yes --> N_EndofDBORIndex100_Node0_action N_EndofDBORIndex100_Node0_action --> E_EndofDBORIndex100 S_EndofDBORIndex100 --> N_EndofDBORIndex100_Node0 N_EndofDBORIndex100_Node0 -- No --> E_EndofDBORIndex100
manifests can be retrieved"}:::decision N_EndofDBORIndex100_Node0_action["The search continues if the end of
database has not been reached AND
the array index is 100 or less,
otherwise the search terminates"]:::main N_EndofDBORIndex100_Node0 -- Yes --> N_EndofDBORIndex100_Node0_action N_EndofDBORIndex100_Node0_action --> E_EndofDBORIndex100 S_EndofDBORIndex100 --> N_EndofDBORIndex100_Node0 N_EndofDBORIndex100_Node0 -- No --> E_EndofDBORIndex100
File: GCX126R.cbl
GIVEN:
The system is in the process of collecting follower manifests AND the current array index position and database status are known
WHEN:
The system checks if more follower manifests can be retrieved
THEN:
- The search continues if the end of database has not been reached
- The array index is 100 or less, otherwise the search terminates
β Consolidated Acceptance Criteria
- The system requests the next cargo record → the database management system retrieves the next cargo record in the hierarchy using the GN (Get Next) function with the master CCN qualification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSwithGNFunctiontoGetNextCargoRecord(["Start Step"])
E_CallCIMSwithGNFunctiontoGetNextCargoRecord(["End Step"])
N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0{"The system requests the next cargo
record"}:::decision N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0_action["The database management system
retrieves the next cargo record in
the hierarchy using the GN Get Next
function with the master CCN
qualification"]:::main N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0 -- Yes --> N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0_action N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0_action --> E_CallCIMSwithGNFunctiontoGetNextCargoRecord S_CallCIMSwithGNFunctiontoGetNextCargoRecord --> N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0 N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0 -- No --> E_CallCIMSwithGNFunctiontoGetNextCargoRecord
record"}:::decision N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0_action["The database management system
retrieves the next cargo record in
the hierarchy using the GN Get Next
function with the master CCN
qualification"]:::main N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0 -- Yes --> N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0_action N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0_action --> E_CallCIMSwithGNFunctiontoGetNextCargoRecord S_CallCIMSwithGNFunctiontoGetNextCargoRecord --> N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0 N_CallCIMSwithGNFunctiontoGetNextCargoRecord_Node0 -- No --> E_CallCIMSwithGNFunctiontoGetNextCargoRecord
File: GCX126R.cbl
GIVEN:
The database access is initialized with 'GEGB' status AND the master CCN key is set AND the search should continue
WHEN:
The system requests the next cargo record
THEN:
The database management system retrieves the next cargo record in the hierarchy using the GN (Get Next) function with the master CCN qualification
β Consolidated Acceptance Criteria
- If the database operation result → if the status code is blank (spaces), the retrieval was successful and processing continues, otherwise the end-of-database flag is set
- The status code is evaluated → if status code is blank (spaces), continue processing; otherwise set end of database flag to true
- The status code from the database call is evaluated → if the status code is blank (spaces), the retrieval was successful and processing continues; otherwise, the end of database flag is set to true
- The system checks the database status code → if the status code equals blank (spaces), the record was successfully retrieved and processing continues; otherwise, the end of database flag 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_StatusCodeBlank(["Start Step"])
E_StatusCodeBlank(["End Step"])
N_StatusCodeBlank_Node0{"The system evaluates the database
operation result"}:::decision N_StatusCodeBlank_Node0_action["If the status code is blank spaces,
the retrieval was successful and
processing continues, otherwise the
end-of-database flag is set"]:::main N_StatusCodeBlank_Node0 -- Yes --> N_StatusCodeBlank_Node0_action N_StatusCodeBlank_Node0_action --> E_StatusCodeBlank S_StatusCodeBlank --> N_StatusCodeBlank_Node0 N_StatusCodeBlank_Node1{"The status code is evaluated"}:::decision N_StatusCodeBlank_Node1_action["If status code is blank spaces,
continue processing otherwise set
end of database flag to true"]:::main N_StatusCodeBlank_Node1 -- Yes --> N_StatusCodeBlank_Node1_action N_StatusCodeBlank_Node1_action --> E_StatusCodeBlank N_StatusCodeBlank_Node0 -- No --> N_StatusCodeBlank_Node1 N_StatusCodeBlank_Node2{"The status code from the database
call is evaluated"}:::decision N_StatusCodeBlank_Node2_action["If the status code is blank spaces,
the retrieval was successful and
processing continues otherwise, the
end of database flag is set to true"]:::main N_StatusCodeBlank_Node2 -- Yes --> N_StatusCodeBlank_Node2_action N_StatusCodeBlank_Node2_action --> E_StatusCodeBlank N_StatusCodeBlank_Node1 -- No --> N_StatusCodeBlank_Node2 N_StatusCodeBlank_Node3{"The system checks the database
status code"}:::decision N_StatusCodeBlank_Node3_action["If the status code equals blank
spaces, the record was successfully
retrieved and processing continues
otherwise, the end of database flag
is set"]:::main N_StatusCodeBlank_Node3 -- Yes --> N_StatusCodeBlank_Node3_action N_StatusCodeBlank_Node3_action --> E_StatusCodeBlank N_StatusCodeBlank_Node2 -- No --> N_StatusCodeBlank_Node3 N_StatusCodeBlank_Node3 -- No --> E_StatusCodeBlank
operation result"}:::decision N_StatusCodeBlank_Node0_action["If the status code is blank spaces,
the retrieval was successful and
processing continues, otherwise the
end-of-database flag is set"]:::main N_StatusCodeBlank_Node0 -- Yes --> N_StatusCodeBlank_Node0_action N_StatusCodeBlank_Node0_action --> E_StatusCodeBlank S_StatusCodeBlank --> N_StatusCodeBlank_Node0 N_StatusCodeBlank_Node1{"The status code is evaluated"}:::decision N_StatusCodeBlank_Node1_action["If status code is blank spaces,
continue processing otherwise set
end of database flag to true"]:::main N_StatusCodeBlank_Node1 -- Yes --> N_StatusCodeBlank_Node1_action N_StatusCodeBlank_Node1_action --> E_StatusCodeBlank N_StatusCodeBlank_Node0 -- No --> N_StatusCodeBlank_Node1 N_StatusCodeBlank_Node2{"The status code from the database
call is evaluated"}:::decision N_StatusCodeBlank_Node2_action["If the status code is blank spaces,
the retrieval was successful and
processing continues otherwise, the
end of database flag is set to true"]:::main N_StatusCodeBlank_Node2 -- Yes --> N_StatusCodeBlank_Node2_action N_StatusCodeBlank_Node2_action --> E_StatusCodeBlank N_StatusCodeBlank_Node1 -- No --> N_StatusCodeBlank_Node2 N_StatusCodeBlank_Node3{"The system checks the database
status code"}:::decision N_StatusCodeBlank_Node3_action["If the status code equals blank
spaces, the record was successfully
retrieved and processing continues
otherwise, the end of database flag
is set"]:::main N_StatusCodeBlank_Node3 -- Yes --> N_StatusCodeBlank_Node3_action N_StatusCodeBlank_Node3_action --> E_StatusCodeBlank N_StatusCodeBlank_Node2 -- No --> N_StatusCodeBlank_Node3 N_StatusCodeBlank_Node3 -- No --> E_StatusCodeBlank
File: GCX126R.cbl
GIVEN:
A database call to retrieve the next cargo record has been executed
WHEN:
The system evaluates the database operation result
THEN:
- If the status code is blank (spaces), the retrieval was successful
- Processing continues, otherwise the end-of-database flag is set
File: GCX126R.cbl
GIVEN:
A database Get Next operation has been executed
WHEN:
The status code is evaluated
THEN:
If status code is blank (spaces), continue processing; otherwise set end of database flag to true
File: GCX126R.cbl
GIVEN:
A database call has been made to retrieve the next cargo record
WHEN:
The status code from the database call is evaluated
THEN:
- If the status code is blank (spaces), the retrieval was successful
- Processing continues; otherwise, the end of database flag is set to true
File: GCX126R.cbl
GIVEN:
A database Get Next call has been executed to retrieve a cargo record
WHEN:
The system checks the database status code
THEN:
- If the status code equals blank (spaces), the record was successfully retrieved
- Processing continues; otherwise, the end of database flag is set
β Consolidated Acceptance Criteria
- The system validates the cargo record's master manifest association → if the retrieved cargo's master manifest CCN matches the stored master CCN key, the record is validated for further processing, otherwise the end-of-database flag 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_MasterCCNMatchesCurrentCCN(["Start Step"])
E_MasterCCNMatchesCurrentCCN(["End Step"])
N_MasterCCNMatchesCurrentCCN_Node0{"The system validates the cargo
record s master manifest association"}:::decision N_MasterCCNMatchesCurrentCCN_Node0_action["If the retrieved cargo s master
manifest CCN matches the stored
master CCN key, the record is
validated for further processing,
otherwise the end-of-database flag
is set"]:::main N_MasterCCNMatchesCurrentCCN_Node0 -- Yes --> N_MasterCCNMatchesCurrentCCN_Node0_action N_MasterCCNMatchesCurrentCCN_Node0_action --> E_MasterCCNMatchesCurrentCCN S_MasterCCNMatchesCurrentCCN --> N_MasterCCNMatchesCurrentCCN_Node0 N_MasterCCNMatchesCurrentCCN_Node0 -- No --> E_MasterCCNMatchesCurrentCCN
record s master manifest association"}:::decision N_MasterCCNMatchesCurrentCCN_Node0_action["If the retrieved cargo s master
manifest CCN matches the stored
master CCN key, the record is
validated for further processing,
otherwise the end-of-database flag
is set"]:::main N_MasterCCNMatchesCurrentCCN_Node0 -- Yes --> N_MasterCCNMatchesCurrentCCN_Node0_action N_MasterCCNMatchesCurrentCCN_Node0_action --> E_MasterCCNMatchesCurrentCCN S_MasterCCNMatchesCurrentCCN --> N_MasterCCNMatchesCurrentCCN_Node0 N_MasterCCNMatchesCurrentCCN_Node0 -- No --> E_MasterCCNMatchesCurrentCCN
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database AND the master CCN key is known
WHEN:
The system validates the cargo record's master manifest association
THEN:
If the retrieved cargo's master manifest CCN matches the stored master CCN key, the record is validated for further processing, otherwise the end-of-database flag is set
β Consolidated Acceptance Criteria
- The system stores the follower manifest information → the follower manifest's CCN key is stored in the array at the position indicated by the current index 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_StoreFollowerCCNinArrayatIndexI(["Start Step"])
E_StoreFollowerCCNinArrayatIndexI(["End Step"])
N_StoreFollowerCCNinArrayatIndexI_Node0{"The system stores the follower
manifest information"}:::decision N_StoreFollowerCCNinArrayatIndexI_Node0_action["The follower manifest s CCN key is
stored in the array at the position
indicated by the current index value"]:::main N_StoreFollowerCCNinArrayatIndexI_Node0 -- Yes --> N_StoreFollowerCCNinArrayatIndexI_Node0_action N_StoreFollowerCCNinArrayatIndexI_Node0_action --> E_StoreFollowerCCNinArrayatIndexI S_StoreFollowerCCNinArrayatIndexI --> N_StoreFollowerCCNinArrayatIndexI_Node0 N_StoreFollowerCCNinArrayatIndexI_Node0 -- No --> E_StoreFollowerCCNinArrayatIndexI
manifest information"}:::decision N_StoreFollowerCCNinArrayatIndexI_Node0_action["The follower manifest s CCN key is
stored in the array at the position
indicated by the current index value"]:::main N_StoreFollowerCCNinArrayatIndexI_Node0 -- Yes --> N_StoreFollowerCCNinArrayatIndexI_Node0_action N_StoreFollowerCCNinArrayatIndexI_Node0_action --> E_StoreFollowerCCNinArrayatIndexI S_StoreFollowerCCNinArrayatIndexI --> N_StoreFollowerCCNinArrayatIndexI_Node0 N_StoreFollowerCCNinArrayatIndexI_Node0 -- No --> E_StoreFollowerCCNinArrayatIndexI
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a follower manifest AND the current array index is within capacity (1-100)
WHEN:
The system stores the follower manifest information
THEN:
The follower manifest's CCN key is stored in the array at the position indicated by the current index value
β Consolidated Acceptance Criteria
- The system prepares for the next follower manifest → the array index counter is incremented by 1 to point to the next available storage 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_IncrementIndexIby1(["Start Step"])
E_IncrementIndexIby1(["End Step"])
N_IncrementIndexIby1_Node0{"The system prepares for the next
follower manifest"}:::decision N_IncrementIndexIby1_Node0_action["The array index counter is
incremented by 1 to point to the
next available storage position"]:::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
follower manifest"}:::decision N_IncrementIndexIby1_Node0_action["The array index counter is
incremented by 1 to point to the
next available storage position"]:::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: GCX126R.cbl
GIVEN:
A follower manifest CCN has been successfully stored in the array
WHEN:
The system prepares for the next follower manifest
THEN:
The array index counter is incremented by 1 to point to the next available storage position
β Consolidated Acceptance Criteria
- The system determines that no more valid follower manifests can be retrieved → the end-of-database flag is set to 'End of DB' to terminate the search 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_SetFollowerEndofDBFlag(["Start Step"])
E_SetFollowerEndofDBFlag(["End Step"])
N_SetFollowerEndofDBFlag_Node0{"The system determines that no more
valid follower manifests can be
retrieved"}:::decision N_SetFollowerEndofDBFlag_Node0_action["The end-of-database flag is set to
End of DB to terminate the search
loop"]:::exclusion N_SetFollowerEndofDBFlag_Node0 -- Yes -->|Alternative| N_SetFollowerEndofDBFlag_Node0_action N_SetFollowerEndofDBFlag_Node0_action --> E_SetFollowerEndofDBFlag S_SetFollowerEndofDBFlag --> N_SetFollowerEndofDBFlag_Node0 N_SetFollowerEndofDBFlag_Node0 -- No --> E_SetFollowerEndofDBFlag
valid follower manifests can be
retrieved"}:::decision N_SetFollowerEndofDBFlag_Node0_action["The end-of-database flag is set to
End of DB to terminate the search
loop"]:::exclusion N_SetFollowerEndofDBFlag_Node0 -- Yes -->|Alternative| N_SetFollowerEndofDBFlag_Node0_action N_SetFollowerEndofDBFlag_Node0_action --> E_SetFollowerEndofDBFlag S_SetFollowerEndofDBFlag --> N_SetFollowerEndofDBFlag_Node0 N_SetFollowerEndofDBFlag_Node0 -- No --> E_SetFollowerEndofDBFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Either the database retrieval returned a non-blank status code OR the retrieved cargo's master CCN does not match the current master CCN
WHEN:
The system determines that no more valid follower manifests can be retrieved
THEN:
The end-of-database flag is set to 'End of DB' to terminate the search loop
β Consolidated Acceptance Criteria
- The follower manifest search loop terminates → control returns to the calling process with the follower manifest array containing all collected follower CCNs (up to 100 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_EndReturntoCallingProcess(["Start Step"])
E_EndReturntoCallingProcess(["End Step"])
N_EndReturntoCallingProcess_Node0{"The follower manifest search loop
terminates"}:::decision N_EndReturntoCallingProcess_Node0_action["Control returns to the calling
process with the follower manifest
array containing all collected
follower CCNs up to 100 entries"]:::main N_EndReturntoCallingProcess_Node0 -- Yes --> N_EndReturntoCallingProcess_Node0_action N_EndReturntoCallingProcess_Node0_action --> E_EndReturntoCallingProcess S_EndReturntoCallingProcess --> N_EndReturntoCallingProcess_Node0 N_EndReturntoCallingProcess_Node0 -- No --> E_EndReturntoCallingProcess
terminates"}:::decision N_EndReturntoCallingProcess_Node0_action["Control returns to the calling
process with the follower manifest
array containing all collected
follower CCNs up to 100 entries"]:::main N_EndReturntoCallingProcess_Node0 -- Yes --> N_EndReturntoCallingProcess_Node0_action N_EndReturntoCallingProcess_Node0_action --> E_EndReturntoCallingProcess S_EndReturntoCallingProcess --> N_EndReturntoCallingProcess_Node0 N_EndReturntoCallingProcess_Node0 -- No --> E_EndReturntoCallingProcess
File: GCX126R.cbl
GIVEN:
Either the end-of-database has been reached OR the array capacity limit of 100 has been reached OR all follower manifests have been collected
WHEN:
The follower manifest search loop terminates
THEN:
Control returns to the calling process with the follower manifest array containing all collected follower CCNs (up to 100 entries)
β Consolidated Acceptance Criteria
- The system needs to find all follower manifests associated with this master → the system sets the master manifest CCN as the search key for database retrieval
- Preparing to search for follower manifests → the master manifest CCN is set as the search key in the database query 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_SetMasterCCNasSearchKey(["Start Step"])
E_SetMasterCCNasSearchKey(["End Step"])
N_SetMasterCCNasSearchKey_Node0{"The system needs to find all
follower manifests associated with
this master"}:::decision N_SetMasterCCNasSearchKey_Node0_action["The system sets the master manifest
CCN as the search key for database
retrieval"]:::main N_SetMasterCCNasSearchKey_Node0 -- Yes --> N_SetMasterCCNasSearchKey_Node0_action N_SetMasterCCNasSearchKey_Node0_action --> E_SetMasterCCNasSearchKey S_SetMasterCCNasSearchKey --> N_SetMasterCCNasSearchKey_Node0 N_SetMasterCCNasSearchKey_Node1{"Preparing to search for follower
manifests"}:::decision N_SetMasterCCNasSearchKey_Node1_action["The master manifest CCN is set as
the search key in the database query
structure"]:::main N_SetMasterCCNasSearchKey_Node1 -- Yes --> N_SetMasterCCNasSearchKey_Node1_action N_SetMasterCCNasSearchKey_Node1_action --> E_SetMasterCCNasSearchKey N_SetMasterCCNasSearchKey_Node0 -- No --> N_SetMasterCCNasSearchKey_Node1 N_SetMasterCCNasSearchKey_Node1 -- No --> E_SetMasterCCNasSearchKey
follower manifests associated with
this master"}:::decision N_SetMasterCCNasSearchKey_Node0_action["The system sets the master manifest
CCN as the search key for database
retrieval"]:::main N_SetMasterCCNasSearchKey_Node0 -- Yes --> N_SetMasterCCNasSearchKey_Node0_action N_SetMasterCCNasSearchKey_Node0_action --> E_SetMasterCCNasSearchKey S_SetMasterCCNasSearchKey --> N_SetMasterCCNasSearchKey_Node0 N_SetMasterCCNasSearchKey_Node1{"Preparing to search for follower
manifests"}:::decision N_SetMasterCCNasSearchKey_Node1_action["The master manifest CCN is set as
the search key in the database query
structure"]:::main N_SetMasterCCNasSearchKey_Node1 -- Yes --> N_SetMasterCCNasSearchKey_Node1_action N_SetMasterCCNasSearchKey_Node1_action --> E_SetMasterCCNasSearchKey N_SetMasterCCNasSearchKey_Node0 -- No --> N_SetMasterCCNasSearchKey_Node1 N_SetMasterCCNasSearchKey_Node1 -- No --> E_SetMasterCCNasSearchKey
File: GCX126R.cbl
GIVEN:
A master manifest cargo record exists with a valid CCN
WHEN:
The system needs to find all follower manifests associated with this master
THEN:
The system sets the master manifest CCN as the search key for database retrieval
File: GCX126R.cbl
GIVEN:
A master manifest CCN exists in the cargo report segment
WHEN:
Preparing to search for follower manifests
THEN:
The master manifest CCN is set as the search key in the database query structure
β Consolidated Acceptance Criteria
- The system prepares to iterate through cargo records → the system sets the counter variable to 1 to begin indexing from the first 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_SetCounterto1(["Start Step"])
E_SetCounterto1(["End Step"])
N_SetCounterto1_Node0{"The system prepares to iterate
through cargo records"}:::decision N_SetCounterto1_Node0_action["The system sets the counter
variable to 1 to begin indexing from
the first position"]:::main N_SetCounterto1_Node0 -- Yes --> N_SetCounterto1_Node0_action N_SetCounterto1_Node0_action --> E_SetCounterto1 S_SetCounterto1 --> N_SetCounterto1_Node0 N_SetCounterto1_Node0 -- No --> E_SetCounterto1
through cargo records"}:::decision N_SetCounterto1_Node0_action["The system sets the counter
variable to 1 to begin indexing from
the first position"]:::main N_SetCounterto1_Node0 -- Yes --> N_SetCounterto1_Node0_action N_SetCounterto1_Node0_action --> E_SetCounterto1 S_SetCounterto1 --> N_SetCounterto1_Node0 N_SetCounterto1_Node0 -- No --> E_SetCounterto1
File: GCX126R.cbl
GIVEN:
The follower manifest collection process is starting
WHEN:
The system prepares to iterate through cargo records
THEN:
The system sets the counter variable to 1 to begin indexing from the first position
β Consolidated Acceptance Criteria
- The system executes a database retrieval operation → the system retrieves the next cargo record that matches or follows the master CCN in the database hierarchy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,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 executes a database
retrieval operation"}:::decision N_RetrieveNextCargoRecord_Node0_action["The system retrieves the next cargo
record that matches or follows the
master CCN in the database hierarchy"]:::main N_RetrieveNextCargoRecord_Node0 -- Yes --> N_RetrieveNextCargoRecord_Node0_action N_RetrieveNextCargoRecord_Node0_action --> E_RetrieveNextCargoRecord S_RetrieveNextCargoRecord --> N_RetrieveNextCargoRecord_Node0 N_RetrieveNextCargoRecord_Node0 -- No --> E_RetrieveNextCargoRecord
retrieval operation"}:::decision N_RetrieveNextCargoRecord_Node0_action["The system retrieves the next cargo
record that matches or follows the
master CCN in the database hierarchy"]:::main N_RetrieveNextCargoRecord_Node0 -- Yes --> N_RetrieveNextCargoRecord_Node0_action N_RetrieveNextCargoRecord_Node0_action --> E_RetrieveNextCargoRecord S_RetrieveNextCargoRecord --> N_RetrieveNextCargoRecord_Node0 N_RetrieveNextCargoRecord_Node0 -- No --> E_RetrieveNextCargoRecord
File: GCX126R.cbl
GIVEN:
A master manifest CCN is set as the search key
WHEN:
The system executes a database retrieval operation
THEN:
The system retrieves the next cargo record that matches or follows the master CCN in the database hierarchy
β Consolidated Acceptance Criteria
- The system checks the database operation status code → if the status code is blank (spaces), the retrieval was successful and processing continues; otherwise, the system marks end of database and stops searching for more followers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusCodeBlank(["Start Step"])
E_StatusCodeBlank(["End Step"])
N_StatusCodeBlank_Node0{"The system checks the database
operation status code"}:::decision N_StatusCodeBlank_Node0_action["If the status code is blank spaces,
the retrieval was successful and
processing continues otherwise, the
system marks end of database and
stops searching for more followers"]:::main N_StatusCodeBlank_Node0 -- Yes --> N_StatusCodeBlank_Node0_action N_StatusCodeBlank_Node0_action --> E_StatusCodeBlank S_StatusCodeBlank --> N_StatusCodeBlank_Node0 N_StatusCodeBlank_Node0 -- No --> E_StatusCodeBlank
operation status code"}:::decision N_StatusCodeBlank_Node0_action["If the status code is blank spaces,
the retrieval was successful and
processing continues otherwise, the
system marks end of database and
stops searching for more followers"]:::main N_StatusCodeBlank_Node0 -- Yes --> N_StatusCodeBlank_Node0_action N_StatusCodeBlank_Node0_action --> E_StatusCodeBlank S_StatusCodeBlank --> N_StatusCodeBlank_Node0 N_StatusCodeBlank_Node0 -- No --> E_StatusCodeBlank
File: GCX126R.cbl
GIVEN:
A cargo record retrieval operation has been executed
WHEN:
The system checks the database operation status code
THEN:
- If the status code is blank (spaces), the retrieval was successful
- Processing continues; otherwise, the system marks end of database
- Stops searching for more followers
β Consolidated Acceptance Criteria
- The system needs to collect this follower for later processing → the system stores the follower manifest CCN in the array at the position indicated by the current counter value
- The system stores the follower CCN → the follower manifest CCN key is stored in the follower array at the current index position AND the index is incremented by 1
- The system stores the CCN key from the cargo record → the follower manifest CCN is placed in the follower manifest array 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_StoreFollowerCCNinArray(["Start Step"])
E_StoreFollowerCCNinArray(["End Step"])
N_StoreFollowerCCNinArray_Node0{"The system needs to collect this
follower for later processing"}:::decision N_StoreFollowerCCNinArray_Node0_action["The system stores the follower
manifest CCN in the array at the
position indicated by the current
counter value"]:::main N_StoreFollowerCCNinArray_Node0 -- Yes --> N_StoreFollowerCCNinArray_Node0_action N_StoreFollowerCCNinArray_Node0_action --> E_StoreFollowerCCNinArray S_StoreFollowerCCNinArray --> N_StoreFollowerCCNinArray_Node0 N_StoreFollowerCCNinArray_Node1{"The system stores the follower CCN"}:::decision N_StoreFollowerCCNinArray_Node1_action["The follower manifest CCN key is
stored in the follower array at the
current index position AND the index
is incremented by 1"]:::main N_StoreFollowerCCNinArray_Node1 -- Yes --> N_StoreFollowerCCNinArray_Node1_action N_StoreFollowerCCNinArray_Node1_action --> E_StoreFollowerCCNinArray N_StoreFollowerCCNinArray_Node0 -- No --> N_StoreFollowerCCNinArray_Node1 N_StoreFollowerCCNinArray_Node2{"The system stores the CCN key from
the cargo record"}:::decision N_StoreFollowerCCNinArray_Node2_action["The follower manifest CCN is placed
in the follower manifest array at
the current index position"]:::main N_StoreFollowerCCNinArray_Node2 -- Yes --> N_StoreFollowerCCNinArray_Node2_action N_StoreFollowerCCNinArray_Node2_action --> E_StoreFollowerCCNinArray N_StoreFollowerCCNinArray_Node1 -- No --> N_StoreFollowerCCNinArray_Node2 N_StoreFollowerCCNinArray_Node2 -- No --> E_StoreFollowerCCNinArray
follower for later processing"}:::decision N_StoreFollowerCCNinArray_Node0_action["The system stores the follower
manifest CCN in the array at the
position indicated by the current
counter value"]:::main N_StoreFollowerCCNinArray_Node0 -- Yes --> N_StoreFollowerCCNinArray_Node0_action N_StoreFollowerCCNinArray_Node0_action --> E_StoreFollowerCCNinArray S_StoreFollowerCCNinArray --> N_StoreFollowerCCNinArray_Node0 N_StoreFollowerCCNinArray_Node1{"The system stores the follower CCN"}:::decision N_StoreFollowerCCNinArray_Node1_action["The follower manifest CCN key is
stored in the follower array at the
current index position AND the index
is incremented by 1"]:::main N_StoreFollowerCCNinArray_Node1 -- Yes --> N_StoreFollowerCCNinArray_Node1_action N_StoreFollowerCCNinArray_Node1_action --> E_StoreFollowerCCNinArray N_StoreFollowerCCNinArray_Node0 -- No --> N_StoreFollowerCCNinArray_Node1 N_StoreFollowerCCNinArray_Node2{"The system stores the CCN key from
the cargo record"}:::decision N_StoreFollowerCCNinArray_Node2_action["The follower manifest CCN is placed
in the follower manifest array at
the current index position"]:::main N_StoreFollowerCCNinArray_Node2 -- Yes --> N_StoreFollowerCCNinArray_Node2_action N_StoreFollowerCCNinArray_Node2_action --> E_StoreFollowerCCNinArray N_StoreFollowerCCNinArray_Node1 -- No --> N_StoreFollowerCCNinArray_Node2 N_StoreFollowerCCNinArray_Node2 -- No --> E_StoreFollowerCCNinArray
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a follower manifest
WHEN:
The system needs to collect this follower for later processing
THEN:
The system stores the follower manifest CCN in the array at the position indicated by the current counter value
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a valid follower manifest
WHEN:
The system stores the follower CCN
THEN:
- The follower manifest ccn key is stored in the follower array at the current index position
- The index is incremented by 1
File: GCX126R.cbl
GIVEN:
A cargo record has been identified as a follower manifest belonging to the current master manifest
WHEN:
The system stores the CCN key from the cargo record
THEN:
The follower manifest CCN is placed in the follower manifest array at the current index position
β Consolidated Acceptance Criteria
- The system prepares to continue searching for more followers → the system adds 1 to the counter variable to move to the next array 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_IncrementCounter(["Start Step"])
E_IncrementCounter(["End Step"])
N_IncrementCounter_Node0{"The system prepares to continue
searching for more followers"}:::decision N_IncrementCounter_Node0_action["The system adds 1 to the counter
variable to move to the next array
position"]:::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
searching for more followers"}:::decision N_IncrementCounter_Node0_action["The system adds 1 to the counter
variable to move to the next array
position"]:::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: GCX126R.cbl
GIVEN:
A follower manifest CCN has been stored in the array
WHEN:
The system prepares to continue searching for more followers
THEN:
The system adds 1 to the counter variable to move to the next array position
β Consolidated Acceptance Criteria
- The system checks if the maximum limit has been reached → if the counter exceeds 100, the system stops searching for more followers and proceeds to calculate the total count; otherwise, it continues retrieving the 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_Counter100(["Start Step"])
E_Counter100(["End Step"])
N_Counter100_Node0{"The system checks if the maximum
limit has been reached"}:::decision N_Counter100_Node0_action["If the counter exceeds 100, the
system stops searching for more
followers and proceeds to calculate
the total count otherwise, it
continues retrieving the next cargo
record"]:::main N_Counter100_Node0 -- Yes --> N_Counter100_Node0_action N_Counter100_Node0_action --> E_Counter100 S_Counter100 --> N_Counter100_Node0 N_Counter100_Node0 -- No --> E_Counter100
limit has been reached"}:::decision N_Counter100_Node0_action["If the counter exceeds 100, the
system stops searching for more
followers and proceeds to calculate
the total count otherwise, it
continues retrieving the next cargo
record"]:::main N_Counter100_Node0 -- Yes --> N_Counter100_Node0_action N_Counter100_Node0_action --> E_Counter100 S_Counter100 --> N_Counter100_Node0 N_Counter100_Node0 -- No --> E_Counter100
File: GCX126R.cbl
GIVEN:
The counter has been incremented after storing a follower manifest CCN
WHEN:
The system checks if the maximum limit has been reached
THEN:
- If the counter exceeds 100, the system stops searching for more followers
- Proceeds to calculate the total count; otherwise, it continues retrieving the next cargo record
β Consolidated Acceptance Criteria
- The database operation returns a non-blank status code or the master CCN no longer matches → the system sets the end-of-database flag and stops searching for more follower 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_EndofDatabase(["Start Step"])
E_EndofDatabase(["End Step"])
N_EndofDatabase_Node0{"The database operation returns a
non-blank status code or the master
CCN no longer matches"}:::decision N_EndofDatabase_Node0_action["The system sets the end-of-database
flag and stops searching for more
follower manifests"]:::main N_EndofDatabase_Node0 -- Yes --> N_EndofDatabase_Node0_action N_EndofDatabase_Node0_action --> E_EndofDatabase S_EndofDatabase --> N_EndofDatabase_Node0 N_EndofDatabase_Node0 -- No --> E_EndofDatabase
non-blank status code or the master
CCN no longer matches"}:::decision N_EndofDatabase_Node0_action["The system sets the end-of-database
flag and stops searching for more
follower manifests"]:::main N_EndofDatabase_Node0 -- Yes --> N_EndofDatabase_Node0_action N_EndofDatabase_Node0_action --> E_EndofDatabase S_EndofDatabase --> N_EndofDatabase_Node0 N_EndofDatabase_Node0 -- No --> E_EndofDatabase
File: GCX126R.cbl
GIVEN:
The system has attempted to retrieve a cargo record
WHEN:
The database operation returns a non-blank status code or the master CCN no longer matches
THEN:
- The system sets the end-of-database flag
- Stops searching for more follower manifests
β Consolidated Acceptance Criteria
- The system needs to determine how many followers were actually found → the system subtracts 1 from the counter variable to get the accurate count of follower manifests stored 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_CalculateTotalFollowerCount(["Start Step"])
E_CalculateTotalFollowerCount(["End Step"])
N_CalculateTotalFollowerCount_Node0{"The system needs to determine how
many followers were actually found"}:::decision N_CalculateTotalFollowerCount_Node0_action["The system subtracts 1 from the
counter variable to get the accurate
count of follower manifests stored
in the array"]:::main N_CalculateTotalFollowerCount_Node0 -- Yes --> N_CalculateTotalFollowerCount_Node0_action N_CalculateTotalFollowerCount_Node0_action --> E_CalculateTotalFollowerCount S_CalculateTotalFollowerCount --> N_CalculateTotalFollowerCount_Node0 N_CalculateTotalFollowerCount_Node0 -- No --> E_CalculateTotalFollowerCount
many followers were actually found"}:::decision N_CalculateTotalFollowerCount_Node0_action["The system subtracts 1 from the
counter variable to get the accurate
count of follower manifests stored
in the array"]:::main N_CalculateTotalFollowerCount_Node0 -- Yes --> N_CalculateTotalFollowerCount_Node0_action N_CalculateTotalFollowerCount_Node0_action --> E_CalculateTotalFollowerCount S_CalculateTotalFollowerCount --> N_CalculateTotalFollowerCount_Node0 N_CalculateTotalFollowerCount_Node0 -- No --> E_CalculateTotalFollowerCount
File: GCX126R.cbl
GIVEN:
The search for follower manifests has completed (either by reaching the limit, end of database, or no more matches)
WHEN:
The system needs to determine how many followers were actually found
THEN:
The system subtracts 1 from the counter variable to get the accurate count of follower manifests stored in the array
β Consolidated Acceptance Criteria
- The system checks if any followers were collected → if the count is less than or equal to 0, the system exits the process without performing any updates; if the count is greater than 0, the system proceeds to process each follower
- The system validates the number of followers collected → subtract 1 from the counter to get the actual count of followers; If the count is less than or equal to 0, no followers were found and processing exits; If the count is greater than 0, proceed to process each follower 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_AnyFollowersFound(["Start Step"])
E_AnyFollowersFound(["End Step"])
N_AnyFollowersFound_Node0{"The system checks if any followers
were collected"}:::decision N_AnyFollowersFound_Node0_action["If the count is less than or equal
to 0, the system exits the process
without performing any updates if
the count is greater than 0, the
system proceeds to process each
follower"]:::main N_AnyFollowersFound_Node0 -- Yes --> N_AnyFollowersFound_Node0_action N_AnyFollowersFound_Node0_action --> E_AnyFollowersFound S_AnyFollowersFound --> N_AnyFollowersFound_Node0 N_AnyFollowersFound_Node1{"The system validates the number of
followers collected"}:::decision N_AnyFollowersFound_Node1_action["Subtract 1 from the counter to get
the actual count of followers If the
count is less than or equal to 0, no
followers were found and processing
exits If the count is greater than
0, proceed to process each follower
in the array"]:::main N_AnyFollowersFound_Node1 -- Yes --> N_AnyFollowersFound_Node1_action N_AnyFollowersFound_Node1_action --> E_AnyFollowersFound N_AnyFollowersFound_Node0 -- No --> N_AnyFollowersFound_Node1 N_AnyFollowersFound_Node1 -- No --> E_AnyFollowersFound
were collected"}:::decision N_AnyFollowersFound_Node0_action["If the count is less than or equal
to 0, the system exits the process
without performing any updates if
the count is greater than 0, the
system proceeds to process each
follower"]:::main N_AnyFollowersFound_Node0 -- Yes --> N_AnyFollowersFound_Node0_action N_AnyFollowersFound_Node0_action --> E_AnyFollowersFound S_AnyFollowersFound --> N_AnyFollowersFound_Node0 N_AnyFollowersFound_Node1{"The system validates the number of
followers collected"}:::decision N_AnyFollowersFound_Node1_action["Subtract 1 from the counter to get
the actual count of followers If the
count is less than or equal to 0, no
followers were found and processing
exits If the count is greater than
0, proceed to process each follower
in the array"]:::main N_AnyFollowersFound_Node1 -- Yes --> N_AnyFollowersFound_Node1_action N_AnyFollowersFound_Node1_action --> E_AnyFollowersFound N_AnyFollowersFound_Node0 -- No --> N_AnyFollowersFound_Node1 N_AnyFollowersFound_Node1 -- No --> E_AnyFollowersFound
File: GCX126R.cbl
GIVEN:
The follower manifest search has completed and the count has been calculated
WHEN:
The system checks if any followers were collected
THEN:
If the count is less than or equal to 0, the system exits the process without performing any updates; if the count is greater than 0, the system proceeds to process each follower
File: GCX126R.cbl
GIVEN:
The follower retrieval loop has completed
WHEN:
The system validates the number of followers collected
THEN:
- Subtract 1 from the counter to get the actual count of followers; if the count is less than or equal to 0, no followers were found
- Processing exits; if the count is greater than 0, proceed to process each follower in the array
β Consolidated Acceptance Criteria
- The system begins or continues the update process → the system retrieves the next follower manifest CCN from the array based on the current iteration 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_GetNextFollowerCCNfromArray(["Start Step"])
E_GetNextFollowerCCNfromArray(["End Step"])
N_GetNextFollowerCCNfromArray_Node0{"The system begins or continues the
update process"}:::decision N_GetNextFollowerCCNfromArray_Node0_action["The system retrieves the next
follower manifest CCN from the array
based on the current iteration
position"]:::main N_GetNextFollowerCCNfromArray_Node0 -- Yes --> N_GetNextFollowerCCNfromArray_Node0_action N_GetNextFollowerCCNfromArray_Node0_action --> E_GetNextFollowerCCNfromArray S_GetNextFollowerCCNfromArray --> N_GetNextFollowerCCNfromArray_Node0 N_GetNextFollowerCCNfromArray_Node0 -- No --> E_GetNextFollowerCCNfromArray
update process"}:::decision N_GetNextFollowerCCNfromArray_Node0_action["The system retrieves the next
follower manifest CCN from the array
based on the current iteration
position"]:::main N_GetNextFollowerCCNfromArray_Node0 -- Yes --> N_GetNextFollowerCCNfromArray_Node0_action N_GetNextFollowerCCNfromArray_Node0_action --> E_GetNextFollowerCCNfromArray S_GetNextFollowerCCNfromArray --> N_GetNextFollowerCCNfromArray_Node0 N_GetNextFollowerCCNfromArray_Node0 -- No --> E_GetNextFollowerCCNfromArray
File: GCX126R.cbl
GIVEN:
At least one follower manifest CCN exists in the collection array
WHEN:
The system begins or continues the update process
THEN:
The system retrieves the next follower manifest CCN from the array based on the current iteration position
β Consolidated Acceptance Criteria
- The system updates the cargo status → the system sets the border arrival acknowledgment flag to TRUE in 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_SetBorderArrivalFlagtoTRUE(["Start Step"])
E_SetBorderArrivalFlagtoTRUE(["End Step"])
N_SetBorderArrivalFlagtoTRUE_Node0{"The system updates the cargo status"}:::decision
N_SetBorderArrivalFlagtoTRUE_Node0_action["The system sets the border arrival
acknowledgment flag to TRUE in the
cargo record"]:::main N_SetBorderArrivalFlagtoTRUE_Node0 -- Yes --> N_SetBorderArrivalFlagtoTRUE_Node0_action N_SetBorderArrivalFlagtoTRUE_Node0_action --> E_SetBorderArrivalFlagtoTRUE S_SetBorderArrivalFlagtoTRUE --> N_SetBorderArrivalFlagtoTRUE_Node0 N_SetBorderArrivalFlagtoTRUE_Node0 -- No --> E_SetBorderArrivalFlagtoTRUE
acknowledgment flag to TRUE in the
cargo record"]:::main N_SetBorderArrivalFlagtoTRUE_Node0 -- Yes --> N_SetBorderArrivalFlagtoTRUE_Node0_action N_SetBorderArrivalFlagtoTRUE_Node0_action --> E_SetBorderArrivalFlagtoTRUE S_SetBorderArrivalFlagtoTRUE --> N_SetBorderArrivalFlagtoTRUE_Node0 N_SetBorderArrivalFlagtoTRUE_Node0 -- No --> E_SetBorderArrivalFlagtoTRUE
File: GCX126R.cbl
GIVEN:
A follower manifest cargo record has been retrieved and logged
WHEN:
The system updates the cargo status
THEN:
The system sets the border arrival acknowledgment flag to TRUE in the cargo record
β Consolidated Acceptance Criteria
- The system checks the iteration status → if there are more follower CCNs in the array that have not been processed (not spaces or low-values), the system retrieves the next follower CCN; otherwise, the process 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_MoreFollowerstoProcess(["Start Step"])
E_MoreFollowerstoProcess(["End Step"])
N_MoreFollowerstoProcess_Node0{"The system checks the iteration
status"}:::decision N_MoreFollowerstoProcess_Node0_action["If there are more follower CCNs in
the array that have not been
processed not spaces or low-values,
the system retrieves the next
follower CCN otherwise, the process
completes"]:::main N_MoreFollowerstoProcess_Node0 -- Yes --> N_MoreFollowerstoProcess_Node0_action N_MoreFollowerstoProcess_Node0_action --> E_MoreFollowerstoProcess S_MoreFollowerstoProcess --> N_MoreFollowerstoProcess_Node0 N_MoreFollowerstoProcess_Node0 -- No --> E_MoreFollowerstoProcess
status"}:::decision N_MoreFollowerstoProcess_Node0_action["If there are more follower CCNs in
the array that have not been
processed not spaces or low-values,
the system retrieves the next
follower CCN otherwise, the process
completes"]:::main N_MoreFollowerstoProcess_Node0 -- Yes --> N_MoreFollowerstoProcess_Node0_action N_MoreFollowerstoProcess_Node0_action --> E_MoreFollowerstoProcess S_MoreFollowerstoProcess --> N_MoreFollowerstoProcess_Node0 N_MoreFollowerstoProcess_Node0 -- No --> E_MoreFollowerstoProcess
File: GCX126R.cbl
GIVEN:
One follower manifest has been processed (either updated or skipped)
WHEN:
The system checks the iteration status
THEN:
If there are more follower CCNs in the array that have not been processed (not spaces or low-values), the system retrieves the next follower CCN; otherwise, the process completes
β Consolidated Acceptance Criteria
- The system begins to retrieve follower manifests → the loop counter I is set to 1 and the follower manifest array 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_InitializeLoopCounterI1(["Start Step"])
E_InitializeLoopCounterI1(["End Step"])
N_InitializeLoopCounterI1_Node0{"The system begins to retrieve
follower manifests"}:::decision N_InitializeLoopCounterI1_Node0_action["The loop counter I is set to 1 and
the follower manifest array is
initialized to spaces"]:::main N_InitializeLoopCounterI1_Node0 -- Yes --> N_InitializeLoopCounterI1_Node0_action N_InitializeLoopCounterI1_Node0_action --> E_InitializeLoopCounterI1 S_InitializeLoopCounterI1 --> N_InitializeLoopCounterI1_Node0 N_InitializeLoopCounterI1_Node0 -- No --> E_InitializeLoopCounterI1
follower manifests"}:::decision N_InitializeLoopCounterI1_Node0_action["The loop counter I is set to 1 and
the follower manifest array is
initialized to spaces"]:::main N_InitializeLoopCounterI1_Node0 -- Yes --> N_InitializeLoopCounterI1_Node0_action N_InitializeLoopCounterI1_Node0_action --> E_InitializeLoopCounterI1 S_InitializeLoopCounterI1 --> N_InitializeLoopCounterI1_Node0 N_InitializeLoopCounterI1_Node0 -- No --> E_InitializeLoopCounterI1
File: GCX126R.cbl
GIVEN:
A master manifest CCN has been identified for processing
WHEN:
The system begins to retrieve follower manifests
THEN:
- The loop counter i is set to 1
- The follower manifest array is initialized to spaces
β Consolidated Acceptance Criteria
- The CIMS program is called with GN (Get Next) function using PCB7 and qualified SSA for master CCN → the next cargo report segment is retrieved into the cargo report segment 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_CallCIMSwithGNFunction(["Start Step"])
E_CallCIMSwithGNFunction(["End Step"])
N_CallCIMSwithGNFunction_Node0{"The CIMS program is called with GN
Get Next function using PCB7 and
qualified SSA for master CCN"}:::decision N_CallCIMSwithGNFunction_Node0_action["The next cargo report segment is
retrieved into the cargo report
segment area"]:::main N_CallCIMSwithGNFunction_Node0 -- Yes --> N_CallCIMSwithGNFunction_Node0_action N_CallCIMSwithGNFunction_Node0_action --> E_CallCIMSwithGNFunction S_CallCIMSwithGNFunction --> N_CallCIMSwithGNFunction_Node0 N_CallCIMSwithGNFunction_Node0 -- No --> E_CallCIMSwithGNFunction
Get Next function using PCB7 and
qualified SSA for master CCN"}:::decision N_CallCIMSwithGNFunction_Node0_action["The next cargo report segment is
retrieved into the cargo report
segment area"]:::main N_CallCIMSwithGNFunction_Node0 -- Yes --> N_CallCIMSwithGNFunction_Node0_action N_CallCIMSwithGNFunction_Node0_action --> E_CallCIMSwithGNFunction S_CallCIMSwithGNFunction --> N_CallCIMSwithGNFunction_Node0 N_CallCIMSwithGNFunction_Node0 -- No --> E_CallCIMSwithGNFunction
File: GCX126R.cbl
GIVEN:
The accept status is set to 'GEGB' and the master CCN key is positioned
WHEN:
- The cims program is called with gn (get next) function using pcb7
- Qualified ssa for master ccn
THEN:
The next cargo report segment is retrieved into the cargo report segment area
β Consolidated Acceptance Criteria
- The master manifest CCN field of the retrieved record is compared to the saved CCN → if the master manifest CCN equals the saved CCN, continue processing; otherwise set end of database 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_MasterCCNMatchesSavedCCN(["Start Step"])
E_MasterCCNMatchesSavedCCN(["End Step"])
N_MasterCCNMatchesSavedCCN_Node0{"The master manifest CCN field of
the retrieved record is compared to
the saved CCN"}:::decision N_MasterCCNMatchesSavedCCN_Node0_action["If the master manifest CCN equals
the saved CCN, continue processing
otherwise set end of database flag
to true"]:::main N_MasterCCNMatchesSavedCCN_Node0 -- Yes --> N_MasterCCNMatchesSavedCCN_Node0_action N_MasterCCNMatchesSavedCCN_Node0_action --> E_MasterCCNMatchesSavedCCN S_MasterCCNMatchesSavedCCN --> N_MasterCCNMatchesSavedCCN_Node0 N_MasterCCNMatchesSavedCCN_Node0 -- No --> E_MasterCCNMatchesSavedCCN
the retrieved record is compared to
the saved CCN"}:::decision N_MasterCCNMatchesSavedCCN_Node0_action["If the master manifest CCN equals
the saved CCN, continue processing
otherwise set end of database flag
to true"]:::main N_MasterCCNMatchesSavedCCN_Node0 -- Yes --> N_MasterCCNMatchesSavedCCN_Node0_action N_MasterCCNMatchesSavedCCN_Node0_action --> E_MasterCCNMatchesSavedCCN S_MasterCCNMatchesSavedCCN --> N_MasterCCNMatchesSavedCCN_Node0 N_MasterCCNMatchesSavedCCN_Node0 -- No --> E_MasterCCNMatchesSavedCCN
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The master manifest CCN field of the retrieved record is compared to the saved CCN
THEN:
If the master manifest CCN equals the saved CCN, continue processing; otherwise set end of database flag to true
β Consolidated Acceptance Criteria
- The system prepares to retrieve the next follower manifest → the counter I is incremented by 1
- The counter is incremented → the loop counter I is increased by 1 to point to the next available array position
- The counter needs to be updated for the next iteration → the 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_IncrementCounterI(["Start Step"])
E_IncrementCounterI(["End Step"])
N_IncrementCounterI_Node0{"The system prepares to retrieve the
next follower manifest"}:::decision N_IncrementCounterI_Node0_action["The counter I is incremented by 1"]:::main N_IncrementCounterI_Node0 -- Yes --> N_IncrementCounterI_Node0_action N_IncrementCounterI_Node0_action --> E_IncrementCounterI S_IncrementCounterI --> N_IncrementCounterI_Node0 N_IncrementCounterI_Node1{"The counter is incremented"}:::decision N_IncrementCounterI_Node1_action["The loop counter I is increased by
1 to point to the next available
array position"]:::main N_IncrementCounterI_Node1 -- Yes --> N_IncrementCounterI_Node1_action N_IncrementCounterI_Node1_action --> E_IncrementCounterI N_IncrementCounterI_Node0 -- No --> N_IncrementCounterI_Node1 N_IncrementCounterI_Node2{"The counter needs to be updated for
the next iteration"}:::decision N_IncrementCounterI_Node2_action["The counter I is incremented by 1"]:::main N_IncrementCounterI_Node2 -- Yes --> N_IncrementCounterI_Node2_action N_IncrementCounterI_Node2_action --> E_IncrementCounterI N_IncrementCounterI_Node1 -- No --> N_IncrementCounterI_Node2 N_IncrementCounterI_Node2 -- No --> E_IncrementCounterI
next follower manifest"}:::decision N_IncrementCounterI_Node0_action["The counter I is incremented by 1"]:::main N_IncrementCounterI_Node0 -- Yes --> N_IncrementCounterI_Node0_action N_IncrementCounterI_Node0_action --> E_IncrementCounterI S_IncrementCounterI --> N_IncrementCounterI_Node0 N_IncrementCounterI_Node1{"The counter is incremented"}:::decision N_IncrementCounterI_Node1_action["The loop counter I is increased by
1 to point to the next available
array position"]:::main N_IncrementCounterI_Node1 -- Yes --> N_IncrementCounterI_Node1_action N_IncrementCounterI_Node1_action --> E_IncrementCounterI N_IncrementCounterI_Node0 -- No --> N_IncrementCounterI_Node1 N_IncrementCounterI_Node2{"The counter needs to be updated for
the next iteration"}:::decision N_IncrementCounterI_Node2_action["The counter I is incremented by 1"]:::main N_IncrementCounterI_Node2 -- Yes --> N_IncrementCounterI_Node2_action N_IncrementCounterI_Node2_action --> E_IncrementCounterI N_IncrementCounterI_Node1 -- No --> N_IncrementCounterI_Node2 N_IncrementCounterI_Node2 -- No --> E_IncrementCounterI
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been stored in the array
WHEN:
The system prepares to retrieve the next follower manifest
THEN:
The counter I is incremented by 1
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been stored in the array at position I
WHEN:
The counter is incremented
THEN:
The loop counter I is increased by 1 to point to the next available array position
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been stored in the array
WHEN:
The counter needs to be updated for the next iteration
THEN:
The counter I is incremented by 1
β Consolidated Acceptance Criteria
- The loop termination conditions are evaluated → if counter I exceeds 100 OR the end of database flag is true, exit the loop; otherwise continue retrieving 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_I100orEndofDatabase(["Start Step"])
E_I100orEndofDatabase(["End Step"])
N_I100orEndofDatabase_Node0{"The loop termination conditions are
evaluated"}:::decision N_I100orEndofDatabase_Node0_action["If counter I exceeds 100 OR the end
of database flag is true, exit the
loop otherwise continue retrieving
next record"]:::main N_I100orEndofDatabase_Node0 -- Yes --> N_I100orEndofDatabase_Node0_action N_I100orEndofDatabase_Node0_action --> E_I100orEndofDatabase S_I100orEndofDatabase --> N_I100orEndofDatabase_Node0 N_I100orEndofDatabase_Node0 -- No --> E_I100orEndofDatabase
evaluated"}:::decision N_I100orEndofDatabase_Node0_action["If counter I exceeds 100 OR the end
of database flag is true, exit the
loop otherwise continue retrieving
next record"]:::main N_I100orEndofDatabase_Node0 -- Yes --> N_I100orEndofDatabase_Node0_action N_I100orEndofDatabase_Node0_action --> E_I100orEndofDatabase S_I100orEndofDatabase --> N_I100orEndofDatabase_Node0 N_I100orEndofDatabase_Node0 -- No --> E_I100orEndofDatabase
File: GCX126R.cbl
GIVEN:
The system is processing follower manifests in a loop
WHEN:
The loop termination conditions are evaluated
THEN:
If counter I exceeds 100 OR the end of database flag is true, exit the loop; otherwise continue retrieving next record
β Consolidated Acceptance Criteria
- The loop termination point is reached → the counter I is decremented by 1 to reflect the actual count of follower manifests retrieved
- Loop processing ends → the loop counter I is decremented by 1 to reflect the actual count of follower manifests collected AND if the count is zero or negative, processing exits immediately OR if follower manifests were collected, they are available in the WS-FOLLOWER-MANI array 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_EndLoop(["Start Step"])
E_EndLoop(["End Step"])
N_EndLoop_Node0{"The loop termination point is
reached"}:::decision N_EndLoop_Node0_action["The counter I is decremented by 1
to reflect the actual count of
follower manifests retrieved"]:::main N_EndLoop_Node0 -- Yes --> N_EndLoop_Node0_action N_EndLoop_Node0_action --> E_EndLoop S_EndLoop --> N_EndLoop_Node0 N_EndLoop_Node1{"Loop processing ends"}:::decision N_EndLoop_Node1_action["The loop counter I is decremented
by 1 to reflect the actual count of
follower manifests collected AND if
the count is zero or negative,
processing exits immediately OR if
follower manifests were collected,
they are available in the
WS-FOLLOWER-MANI array for further
processing"]:::main N_EndLoop_Node1 -- Yes --> N_EndLoop_Node1_action N_EndLoop_Node1_action --> E_EndLoop N_EndLoop_Node0 -- No --> N_EndLoop_Node1 N_EndLoop_Node1 -- No --> E_EndLoop
reached"}:::decision N_EndLoop_Node0_action["The counter I is decremented by 1
to reflect the actual count of
follower manifests retrieved"]:::main N_EndLoop_Node0 -- Yes --> N_EndLoop_Node0_action N_EndLoop_Node0_action --> E_EndLoop S_EndLoop --> N_EndLoop_Node0 N_EndLoop_Node1{"Loop processing ends"}:::decision N_EndLoop_Node1_action["The loop counter I is decremented
by 1 to reflect the actual count of
follower manifests collected AND if
the count is zero or negative,
processing exits immediately OR if
follower manifests were collected,
they are available in the
WS-FOLLOWER-MANI array for further
processing"]:::main N_EndLoop_Node1 -- Yes --> N_EndLoop_Node1_action N_EndLoop_Node1_action --> E_EndLoop N_EndLoop_Node0 -- No --> N_EndLoop_Node1 N_EndLoop_Node1 -- No --> E_EndLoop
File: GCX126R.cbl
GIVEN:
The loop has processed all available follower manifests OR reached the maximum limit of 100 OR encountered end of database
WHEN:
The loop termination point is reached
THEN:
The counter I is decremented by 1 to reflect the actual count of follower manifests retrieved
File: GCX126R.cbl
GIVEN:
The follower manifest collection loop has completed due to end-of-database flag OR maximum iterations reached
WHEN:
Loop processing ends
THEN:
- The loop counter i is decremented by 1 to reflect the actual count of follower manifests collected
- If the count is zero or negative, processing exits immediately or if follower manifests were collected, they are available in the ws-follower-mani array for further processing
β Consolidated Acceptance Criteria
- The X4 related document ID (first 25 characters) matches the previously processed train ID stored in memory → the system skips all processing for this train ID and continues to the next segment without performing train lookup, validation, or border arrival acknowledgment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainIDSameasPreviousCRN(["Start Step"])
E_TrainIDSameasPreviousCRN(["End Step"])
N_TrainIDSameasPreviousCRN_Node0{"The X4 related document ID first 25
characters matches the previously
processed train ID stored in memory"}:::decision N_TrainIDSameasPreviousCRN_Node0_action["The system skips all processing for
this train ID and continues to the
next segment without performing
train lookup, validation, or border
arrival acknowledgment"]:::main N_TrainIDSameasPreviousCRN_Node0 -- Yes --> N_TrainIDSameasPreviousCRN_Node0_action N_TrainIDSameasPreviousCRN_Node0_action --> E_TrainIDSameasPreviousCRN S_TrainIDSameasPreviousCRN --> N_TrainIDSameasPreviousCRN_Node0 N_TrainIDSameasPreviousCRN_Node0 -- No --> E_TrainIDSameasPreviousCRN
characters matches the previously
processed train ID stored in memory"}:::decision N_TrainIDSameasPreviousCRN_Node0_action["The system skips all processing for
this train ID and continues to the
next segment without performing
train lookup, validation, or border
arrival acknowledgment"]:::main N_TrainIDSameasPreviousCRN_Node0 -- Yes --> N_TrainIDSameasPreviousCRN_Node0_action N_TrainIDSameasPreviousCRN_Node0_action --> E_TrainIDSameasPreviousCRN S_TrainIDSameasPreviousCRN --> N_TrainIDSameasPreviousCRN_Node0 N_TrainIDSameasPreviousCRN_Node0 -- No --> E_TrainIDSameasPreviousCRN
File: GCX126R.cbl
GIVEN:
A conveyance 350 message is being processed with X4 segment entry type code equal to '992' and the X4 related document ID (first 25 characters) is available
WHEN:
The X4 related document ID (first 25 characters) matches the previously processed train ID stored in memory
THEN:
- The system skips all processing for this train id
- Continues to the next segment without performing train lookup, validation, or border arrival acknowledgment
β Consolidated Acceptance Criteria
- The system needs to validate the train entry → the system stores the X4 related document ID (first 25 characters) as the current train ID in memory and performs a database lookup using this train ID as the key value to retrieve the train root 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_LookupTraininSystemUsingTrainID(["Start Step"])
E_LookupTraininSystemUsingTrainID(["End Step"])
N_LookupTraininSystemUsingTrainID_Node0{"The system needs to validate the
train entry"}:::decision N_LookupTraininSystemUsingTrainID_Node0_action["The system stores the X4 related
document ID first 25 characters as
the current train ID in memory and
performs a database lookup using
this train ID as the key value to
retrieve the train root segment"]:::main N_LookupTraininSystemUsingTrainID_Node0 -- Yes --> N_LookupTraininSystemUsingTrainID_Node0_action N_LookupTraininSystemUsingTrainID_Node0_action --> E_LookupTraininSystemUsingTrainID S_LookupTraininSystemUsingTrainID --> N_LookupTraininSystemUsingTrainID_Node0 N_LookupTraininSystemUsingTrainID_Node0 -- No --> E_LookupTraininSystemUsingTrainID
train entry"}:::decision N_LookupTraininSystemUsingTrainID_Node0_action["The system stores the X4 related
document ID first 25 characters as
the current train ID in memory and
performs a database lookup using
this train ID as the key value to
retrieve the train root segment"]:::main N_LookupTraininSystemUsingTrainID_Node0 -- Yes --> N_LookupTraininSystemUsingTrainID_Node0_action N_LookupTraininSystemUsingTrainID_Node0_action --> E_LookupTraininSystemUsingTrainID S_LookupTraininSystemUsingTrainID --> N_LookupTraininSystemUsingTrainID_Node0 N_LookupTraininSystemUsingTrainID_Node0 -- No --> E_LookupTraininSystemUsingTrainID
File: GCX126R.cbl
GIVEN:
A conveyance 350 message with X4 segment entry type code equal to '992' and the X4 related document ID (first 25 characters) is different from the previously processed train ID
WHEN:
The system needs to validate the train entry
THEN:
- The system stores the x4 related document id (first 25 characters) as the current train id in memory
- Performs a database lookup using this train id as the key value to retrieve the train root segment
β Consolidated Acceptance Criteria
- The database operation completes → if the database status code is not blank (spaces), the train does not exist and error processing is triggered; if the database status code is blank (spaces), the train exists and normal 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_TrainExistsinSystem(["Start Step"])
E_TrainExistsinSystem(["End Step"])
N_TrainExistsinSystem_Node0{"The database operation completes"}:::decision
N_TrainExistsinSystem_Node0_action["If the database status code is not
blank spaces, the train does not
exist and error processing is
triggered if the database status
code is blank spaces, the train
exists and normal processing
continues"]:::main N_TrainExistsinSystem_Node0 -- Yes --> N_TrainExistsinSystem_Node0_action N_TrainExistsinSystem_Node0_action --> E_TrainExistsinSystem S_TrainExistsinSystem --> N_TrainExistsinSystem_Node0 N_TrainExistsinSystem_Node0 -- No --> E_TrainExistsinSystem
blank spaces, the train does not
exist and error processing is
triggered if the database status
code is blank spaces, the train
exists and normal processing
continues"]:::main N_TrainExistsinSystem_Node0 -- Yes --> N_TrainExistsinSystem_Node0_action N_TrainExistsinSystem_Node0_action --> E_TrainExistsinSystem S_TrainExistsinSystem --> N_TrainExistsinSystem_Node0 N_TrainExistsinSystem_Node0 -- No --> E_TrainExistsinSystem
File: GCX126R.cbl
GIVEN:
A database lookup has been performed for a train ID from the X4 segment related document ID
WHEN:
The database operation completes
THEN:
- If the database status code is not blank (spaces), the train does not exist
- Error processing is triggered; if the database status code is blank (spaces), the train exists
- Normal processing continues
β Consolidated Acceptance Criteria
- The error report preparation begins → the system clears the first detail line of the report and sets the message to 'UNKNOWN TRAIN ENTRY IN EDI 350 ' concatenated with the train ID (first 25 characters of X4 related document 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_SetMessageUNKNOWNTRAINENTRYINEDI350(["Start Step"])
E_SetMessageUNKNOWNTRAINENTRYINEDI350(["End Step"])
N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0{"The error report preparation begins"}:::decision
N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0_action["The system clears the first detail
line of the report and sets the
message to UNKNOWN TRAIN ENTRY IN
EDI 350 concatenated with the train
ID first 25 characters of X4 related
document ID"]:::exclusion N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0 -- Yes -->|Alternative| N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0_action N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0_action --> E_SetMessageUNKNOWNTRAINENTRYINEDI350 S_SetMessageUNKNOWNTRAINENTRYINEDI350 --> N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0 N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0 -- No --> E_SetMessageUNKNOWNTRAINENTRYINEDI350
line of the report and sets the
message to UNKNOWN TRAIN ENTRY IN
EDI 350 concatenated with the train
ID first 25 characters of X4 related
document ID"]:::exclusion N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0 -- Yes -->|Alternative| N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0_action N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0_action --> E_SetMessageUNKNOWNTRAINENTRYINEDI350 S_SetMessageUNKNOWNTRAINENTRYINEDI350 --> N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0 N_SetMessageUNKNOWNTRAINENTRYINEDI350_Node0 -- No --> E_SetMessageUNKNOWNTRAINENTRYINEDI350
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A train ID lookup has failed and the train does not exist in the system
WHEN:
The error report preparation begins
THEN:
- The system clears the first detail line of the report
- Sets the message to 'unknown train entry in edi 350 ' concatenated with the train id (first 25 characters of x4 related document id)
β Consolidated Acceptance Criteria
- The train ID needs to be added to the report → the system appends the X4 related document ID (first 25 characters) to the error message 'UNKNOWN TRAIN ENTRY IN EDI 350 ' in the first detail line of 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_AddTrainIDtoReport(["Start Step"])
E_AddTrainIDtoReport(["End Step"])
N_AddTrainIDtoReport_Node0{"The train ID needs to be added to
the report"}:::decision N_AddTrainIDtoReport_Node0_action["The system appends the X4 related
document ID first 25 characters to
the error message UNKNOWN TRAIN
ENTRY IN EDI 350 in the first detail
line of the report"]:::main N_AddTrainIDtoReport_Node0 -- Yes --> N_AddTrainIDtoReport_Node0_action N_AddTrainIDtoReport_Node0_action --> E_AddTrainIDtoReport S_AddTrainIDtoReport --> N_AddTrainIDtoReport_Node0 N_AddTrainIDtoReport_Node0 -- No --> E_AddTrainIDtoReport
the report"}:::decision N_AddTrainIDtoReport_Node0_action["The system appends the X4 related
document ID first 25 characters to
the error message UNKNOWN TRAIN
ENTRY IN EDI 350 in the first detail
line of the report"]:::main N_AddTrainIDtoReport_Node0 -- Yes --> N_AddTrainIDtoReport_Node0_action N_AddTrainIDtoReport_Node0_action --> E_AddTrainIDtoReport S_AddTrainIDtoReport --> N_AddTrainIDtoReport_Node0 N_AddTrainIDtoReport_Node0 -- No --> E_AddTrainIDtoReport
File: GCX126R.cbl
GIVEN:
The error report header message is being prepared for an unknown train
WHEN:
The train ID needs to be added to the report
THEN:
The system appends the X4 related document ID (first 25 characters) to the error message 'UNKNOWN TRAIN ENTRY IN EDI 350 ' in the first detail line of the report
β Consolidated Acceptance Criteria
- Additional explanation is needed in the report → the system sets the third detail line of the report to the message 'THIS CRN WAS 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_AddMessageTHISCRNWASNOTFOUND(["Start Step"])
E_AddMessageTHISCRNWASNOTFOUND(["End Step"])
N_AddMessageTHISCRNWASNOTFOUND_Node0{"Additional explanation is needed in
the report"}:::decision N_AddMessageTHISCRNWASNOTFOUND_Node0_action["The system sets the third detail
line of the report to the message
THIS CRN WAS NOT FOUND."]:::main N_AddMessageTHISCRNWASNOTFOUND_Node0 -- Yes --> N_AddMessageTHISCRNWASNOTFOUND_Node0_action N_AddMessageTHISCRNWASNOTFOUND_Node0_action --> E_AddMessageTHISCRNWASNOTFOUND S_AddMessageTHISCRNWASNOTFOUND --> N_AddMessageTHISCRNWASNOTFOUND_Node0 N_AddMessageTHISCRNWASNOTFOUND_Node0 -- No --> E_AddMessageTHISCRNWASNOTFOUND
the report"}:::decision N_AddMessageTHISCRNWASNOTFOUND_Node0_action["The system sets the third detail
line of the report to the message
THIS CRN WAS NOT FOUND."]:::main N_AddMessageTHISCRNWASNOTFOUND_Node0 -- Yes --> N_AddMessageTHISCRNWASNOTFOUND_Node0_action N_AddMessageTHISCRNWASNOTFOUND_Node0_action --> E_AddMessageTHISCRNWASNOTFOUND S_AddMessageTHISCRNWASNOTFOUND --> N_AddMessageTHISCRNWASNOTFOUND_Node0 N_AddMessageTHISCRNWASNOTFOUND_Node0 -- No --> E_AddMessageTHISCRNWASNOTFOUND
File: GCX126R.cbl
GIVEN:
The error report is being prepared for an unknown train ID
WHEN:
Additional explanation is needed in the report
THEN:
The system sets the third detail line of the report to the message 'THIS CRN WAS NOT FOUND.'
β Consolidated Acceptance Criteria
- The report type needs to be set for routing purposes → the system sets the report line count to 4 and marks the report type indicator as 'UNKNOWN' 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_SetReportTypeUNKNOWN(["Start Step"])
E_SetReportTypeUNKNOWN(["End Step"])
N_SetReportTypeUNKNOWN_Node0{"The report type needs to be set for
routing purposes"}:::decision N_SetReportTypeUNKNOWN_Node0_action["The system sets the report line
count to 4 and marks the report type
indicator as UNKNOWN type"]:::main N_SetReportTypeUNKNOWN_Node0 -- Yes --> N_SetReportTypeUNKNOWN_Node0_action N_SetReportTypeUNKNOWN_Node0_action --> E_SetReportTypeUNKNOWN S_SetReportTypeUNKNOWN --> N_SetReportTypeUNKNOWN_Node0 N_SetReportTypeUNKNOWN_Node0 -- No --> E_SetReportTypeUNKNOWN
routing purposes"}:::decision N_SetReportTypeUNKNOWN_Node0_action["The system sets the report line
count to 4 and marks the report type
indicator as UNKNOWN type"]:::main N_SetReportTypeUNKNOWN_Node0 -- Yes --> N_SetReportTypeUNKNOWN_Node0_action N_SetReportTypeUNKNOWN_Node0_action --> E_SetReportTypeUNKNOWN S_SetReportTypeUNKNOWN --> N_SetReportTypeUNKNOWN_Node0 N_SetReportTypeUNKNOWN_Node0 -- No --> E_SetReportTypeUNKNOWN
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An error report has been prepared for a train ID that was not found in the system
WHEN:
The report type needs to be set for routing purposes
THEN:
- The system sets the report line count to 4
- Marks the report type indicator as 'unknown' type
β Consolidated Acceptance Criteria
- Train validation is complete → the system proceeds to log the train arrival information, create a log entry with action code 'ZZZ', message '350 ACK - ARRIVAL ACK AT BORDER', and spawns the logging transaction for the 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_ContinueProcessing(["Start Step"])
E_ContinueProcessing(["End Step"])
N_ContinueProcessing_Node0{"Train validation is complete"}:::decision
N_ContinueProcessing_Node0_action["The system proceeds to log the
train arrival information, create a
log entry with action code ZZZ ,
message 350 ACK - ARRIVAL ACK AT
BORDER , and spawns the logging
transaction for the train"]:::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
train arrival information, create a
log entry with action code ZZZ ,
message 350 ACK - ARRIVAL ACK AT
BORDER , and spawns the logging
transaction for the train"]:::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: GCX126R.cbl
GIVEN:
Either the train ID matches the previously processed train ID OR the train ID was successfully found in the system database
WHEN:
Train validation is complete
THEN:
The system proceeds to log the train arrival information, create a log entry with action code 'ZZZ', message '350 ACK - ARRIVAL ACK AT BORDER', and spawns the logging transaction for the train
β Consolidated Acceptance Criteria
- The system begins the K1 remarks logging process → the system initiates the loop to process all stored K1 remarks from index 1 to the maximum K1 remark index
- The K1 segment found indicator is set to false (no K1 segments were found) → the system skips the K1 remarks logging process entirely 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_CheckifK1SegmentsWereFound(["Start Step"])
E_CheckifK1SegmentsWereFound(["End Step"])
N_CheckifK1SegmentsWereFound_Node0{"The system begins the K1 remarks
logging process"}:::decision N_CheckifK1SegmentsWereFound_Node0_action["The system initiates the loop to
process all stored K1 remarks from
index 1 to the maximum K1 remark
index"]:::main N_CheckifK1SegmentsWereFound_Node0 -- Yes --> N_CheckifK1SegmentsWereFound_Node0_action N_CheckifK1SegmentsWereFound_Node0_action --> E_CheckifK1SegmentsWereFound S_CheckifK1SegmentsWereFound --> N_CheckifK1SegmentsWereFound_Node0 N_CheckifK1SegmentsWereFound_Node1{"The K1 segment found indicator is
set to false no K1 segments were
found"}:::decision N_CheckifK1SegmentsWereFound_Node1_action["The system skips the K1 remarks
logging process entirely and
proceeds to the next processing step"]:::main N_CheckifK1SegmentsWereFound_Node1 -- Yes --> N_CheckifK1SegmentsWereFound_Node1_action N_CheckifK1SegmentsWereFound_Node1_action --> E_CheckifK1SegmentsWereFound N_CheckifK1SegmentsWereFound_Node0 -- No --> N_CheckifK1SegmentsWereFound_Node1 N_CheckifK1SegmentsWereFound_Node1 -- No --> E_CheckifK1SegmentsWereFound
logging process"}:::decision N_CheckifK1SegmentsWereFound_Node0_action["The system initiates the loop to
process all stored K1 remarks from
index 1 to the maximum K1 remark
index"]:::main N_CheckifK1SegmentsWereFound_Node0 -- Yes --> N_CheckifK1SegmentsWereFound_Node0_action N_CheckifK1SegmentsWereFound_Node0_action --> E_CheckifK1SegmentsWereFound S_CheckifK1SegmentsWereFound --> N_CheckifK1SegmentsWereFound_Node0 N_CheckifK1SegmentsWereFound_Node1{"The K1 segment found indicator is
set to false no K1 segments were
found"}:::decision N_CheckifK1SegmentsWereFound_Node1_action["The system skips the K1 remarks
logging process entirely and
proceeds to the next processing step"]:::main N_CheckifK1SegmentsWereFound_Node1 -- Yes --> N_CheckifK1SegmentsWereFound_Node1_action N_CheckifK1SegmentsWereFound_Node1_action --> E_CheckifK1SegmentsWereFound N_CheckifK1SegmentsWereFound_Node0 -- No --> N_CheckifK1SegmentsWereFound_Node1 N_CheckifK1SegmentsWereFound_Node1 -- No --> E_CheckifK1SegmentsWereFound
File: GCX126R.cbl
GIVEN:
EDI 350 message segments have been processed and K1 segment found indicator is set to true
WHEN:
The system begins the K1 remarks logging process
THEN:
The system initiates the loop to process all stored K1 remarks from index 1 to the maximum K1 remark index
File: GCX126R.cbl
GIVEN:
EDI 350 message segments have been processed
WHEN:
The K1 segment found indicator is set to false (no K1 segments were found)
THEN:
- The system skips the k1 remarks logging process entirely
- Proceeds to the next processing step
β Consolidated Acceptance Criteria
- The current K1 remark entry in the array equals spaces → the system increments the loop counter and continues to check the next K1 remark without 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_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty(["Start Step"])
E_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty(["End Step"])
N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0{"The current K1 remark entry in the
array equals spaces"}:::decision N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0_action["The system increments the loop
counter and continues to check the
next K1 remark without logging"]:::main N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0 -- Yes --> N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0_action N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0_action --> E_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty S_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty --> N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0 N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0 -- No --> E_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty
array equals spaces"}:::decision N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0_action["The system increments the loop
counter and continues to check the
next K1 remark without logging"]:::main N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0 -- Yes --> N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0_action N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0_action --> E_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty S_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty --> N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0 N_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty_Node0 -- No --> E_CheckifK1SegmentsWereFoundMoreK1RemarkstoProcessK1RemarkEmpty
File: GCX126R.cbl
GIVEN:
K1 segments were found and the loop counter is within the valid range (counter <= K1 remark index)
WHEN:
The current K1 remark entry in the array equals spaces
THEN:
- The system increments the loop counter
- Continues to check the next k1 remark without logging
β Consolidated Acceptance Criteria
- The system retrieves the K1 segment from the remark array → the system initializes the K1 segment structure, moves the remark data to K1 segment, clears the information message work area, concatenates 'EDI 350 K1: ' with the first free-form message field (K1-01-FREE-FORM-MESSAGE), stores the result in the information message work area, and invokes the cargo information message 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_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage(["Start Step"])
E_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage(["End Step"])
N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0{"The system retrieves the K1 segment
from the remark array"}:::decision N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0_action["The system initializes the K1
segment structure, moves the remark
data to K1 segment, clears the
information message work area,
concatenates EDI 350 K1: with the
first free-form message field
K1-01-FREE-FORM-MESSAGE, stores the
result in the information message
work area, and invokes the cargo
information message logging process"]:::main N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0 -- Yes --> N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0_action N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0_action --> E_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage S_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage --> N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0 N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0 -- No --> E_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage
from the remark array"}:::decision N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0_action["The system initializes the K1
segment structure, moves the remark
data to K1 segment, clears the
information message work area,
concatenates EDI 350 K1: with the
first free-form message field
K1-01-FREE-FORM-MESSAGE, stores the
result in the information message
work area, and invokes the cargo
information message logging process"]:::main N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0 -- Yes --> N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0_action N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0_action --> E_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage S_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage --> N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0 N_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage_Node0 -- No --> E_GetK1RemarkfromArrayBuildLogMessageEDI350K1FirstFreeFormMessageLogCargoInformationMessage
File: GCX126R.cbl
GIVEN:
A non-empty K1 remark exists at the current loop index position
WHEN:
The system retrieves the K1 segment from the remark array
THEN:
The system initializes the K1 segment structure, moves the remark data to K1 segment, clears the information message work area, concatenates 'EDI 350 K1: ' with the first free-form message field (K1-01-FREE-FORM-MESSAGE), stores the result in the information message work area, and invokes the cargo information message logging process
β Consolidated Acceptance Criteria
- The second free-form message field (K1-02-FREE-FORM-MESSAGE) is not equal to spaces → the system clears the information message work area, concatenates 'EDI 350 K1: ' with the second free-form message field, stores the result in the information message work area, and invokes the cargo information message 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_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage(["Start Step"])
E_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage(["End Step"])
N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0{"The second free-form message field
K1-02-FREE-FORM-MESSAGE is not equal
to spaces"}:::decision N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0_action["The system clears the information
message work area, concatenates EDI
350 K1: with the second free-form
message field, stores the result in
the information message work area,
and invokes the cargo information
message logging process"]:::main N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0 -- Yes --> N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0_action N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0_action --> E_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage S_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage --> N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0 N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0 -- No --> E_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage
K1-02-FREE-FORM-MESSAGE is not equal
to spaces"}:::decision N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0_action["The system clears the information
message work area, concatenates EDI
350 K1: with the second free-form
message field, stores the result in
the information message work area,
and invokes the cargo information
message logging process"]:::main N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0 -- Yes --> N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0_action N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0_action --> E_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage S_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage --> N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0 N_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage_Node0 -- No --> E_CheckSecondFreeFormMessageExistsBuildLogMessageEDI350K1SecondFreeFormMessageLogCargoInformationMessage
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The first free-form message from the K1 segment has been logged and the K1 segment contains a second free-form message field
WHEN:
The second free-form message field (K1-02-FREE-FORM-MESSAGE) is not equal to spaces
THEN:
The system clears the information message work area, concatenates 'EDI 350 K1: ' with the second free-form message field, stores the result in the information message work area, and invokes the cargo information message logging process
β Consolidated Acceptance Criteria
- The system increments the loop counter by 1 → the system checks if the loop counter is less than or equal to the K1 remark index and if true, continues to process the next K1 remark, otherwise exits the K1 remarks 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_IncrementLoopCounterMoreK1RemarkstoProcess(["Start Step"])
E_IncrementLoopCounterMoreK1RemarkstoProcess(["End Step"])
N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0{"The system increments the loop
counter by 1"}:::decision N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0_action["The system checks if the loop
counter is less than or equal to the
K1 remark index and if true,
continues to process the next K1
remark, otherwise exits the K1
remarks logging process"]:::main N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0 -- Yes --> N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0_action N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0_action --> E_IncrementLoopCounterMoreK1RemarkstoProcess S_IncrementLoopCounterMoreK1RemarkstoProcess --> N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0 N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0 -- No --> E_IncrementLoopCounterMoreK1RemarkstoProcess
counter by 1"}:::decision N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0_action["The system checks if the loop
counter is less than or equal to the
K1 remark index and if true,
continues to process the next K1
remark, otherwise exits the K1
remarks logging process"]:::main N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0 -- Yes --> N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0_action N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0_action --> E_IncrementLoopCounterMoreK1RemarkstoProcess S_IncrementLoopCounterMoreK1RemarkstoProcess --> N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0 N_IncrementLoopCounterMoreK1RemarkstoProcess_Node0 -- No --> E_IncrementLoopCounterMoreK1RemarkstoProcess
File: GCX126R.cbl
GIVEN:
A K1 remark has been processed (logged or skipped due to being empty)
WHEN:
The system increments the loop counter by 1
THEN:
- The system checks if the loop counter is less than or equal to the k1 remark index
- If true, continues to process the next k1 remark, otherwise exits the k1 remarks logging process
β Consolidated Acceptance Criteria
- The N7 segment found indicator is set to false (WS-NO-N7-SEG-FOUND) → the system skips all N7 equipment logging operations and proceeds to the end of the logging process
- The N7 segment found indicator is set to true (WS-N7-SEGMENT-FOUND) → the system initiates the loop to process and log all equipment information from the LOG-LINE array starting at index 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_N7SegmentFound(["Start Step"])
E_N7SegmentFound(["End Step"])
N_N7SegmentFound_Node0{"The N7 segment found indicator is
set to false WS-NO-N7-SEG-FOUND"}:::decision N_N7SegmentFound_Node0_action["The system skips all N7 equipment
logging operations and proceeds to
the end of the logging process"]:::main N_N7SegmentFound_Node0 -- Yes --> N_N7SegmentFound_Node0_action N_N7SegmentFound_Node0_action --> E_N7SegmentFound S_N7SegmentFound --> N_N7SegmentFound_Node0 N_N7SegmentFound_Node1{"The N7 segment found indicator is
set to true WS-N7-SEGMENT-FOUND"}:::decision N_N7SegmentFound_Node1_action["The system initiates the loop to
process and log all equipment
information from the LOG-LINE array
starting at index 1"]:::main N_N7SegmentFound_Node1 -- Yes --> N_N7SegmentFound_Node1_action N_N7SegmentFound_Node1_action --> E_N7SegmentFound N_N7SegmentFound_Node0 -- No --> N_N7SegmentFound_Node1 N_N7SegmentFound_Node1 -- No --> E_N7SegmentFound
set to false WS-NO-N7-SEG-FOUND"}:::decision N_N7SegmentFound_Node0_action["The system skips all N7 equipment
logging operations and proceeds to
the end of the logging process"]:::main N_N7SegmentFound_Node0 -- Yes --> N_N7SegmentFound_Node0_action N_N7SegmentFound_Node0_action --> E_N7SegmentFound S_N7SegmentFound --> N_N7SegmentFound_Node0 N_N7SegmentFound_Node1{"The N7 segment found indicator is
set to true WS-N7-SEGMENT-FOUND"}:::decision N_N7SegmentFound_Node1_action["The system initiates the loop to
process and log all equipment
information from the LOG-LINE array
starting at index 1"]:::main N_N7SegmentFound_Node1 -- Yes --> N_N7SegmentFound_Node1_action N_N7SegmentFound_Node1_action --> E_N7SegmentFound N_N7SegmentFound_Node0 -- No --> N_N7SegmentFound_Node1 N_N7SegmentFound_Node1 -- No --> E_N7SegmentFound
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been processed and all segments have been parsed
WHEN:
The N7 segment found indicator is set to false (WS-NO-N7-SEG-FOUND)
THEN:
- The system skips all n7 equipment logging operations
- Proceeds to the end of the logging process
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been processed and N7 equipment segments were found
WHEN:
The N7 segment found indicator is set to true (WS-N7-SEGMENT-FOUND)
THEN:
- The system initiates the loop to process
- Log all equipment information from the log-line array starting at index 1
β Consolidated Acceptance Criteria
- The system begins the equipment logging process → the loop counter (LOG-INDX) is set to 1 to start processing from the first LOG-LINE 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_InitializeLoopCounterto1(["Start Step"])
E_InitializeLoopCounterto1(["End Step"])
N_InitializeLoopCounterto1_Node0{"The system begins the equipment
logging process"}:::decision N_InitializeLoopCounterto1_Node0_action["The loop counter LOG-INDX is set to
1 to start processing from the first
LOG-LINE entry"]:::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
logging process"}:::decision N_InitializeLoopCounterto1_Node0_action["The loop counter LOG-INDX is set to
1 to start processing from the first
LOG-LINE entry"]:::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: GCX126R.cbl
GIVEN:
N7 equipment segments were found in the EDI 350 message
WHEN:
The system begins the equipment logging process
THEN:
The loop counter (LOG-INDX) is set to 1 to start processing from the first LOG-LINE entry
β Consolidated Acceptance Criteria
- A LOG-LINE entry at the current loop index contains only spaces → the system terminates the equipment logging loop and proceeds to completion
- A LOG-LINE entry at the current loop index contains data (not spaces) → the system proceeds to check the loop counter limit before retrieving the entry
- The system continues the equipment logging loop → the system evaluates whether the LOG-LINE entry at the new counter position is empty or contains data to determine if 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_LOGLINEEntryEmpty(["Start Step"])
E_LOGLINEEntryEmpty(["End Step"])
N_LOGLINEEntryEmpty_Node0{"A LOG-LINE entry at the current
loop index contains only spaces"}:::decision N_LOGLINEEntryEmpty_Node0_action["The system terminates the equipment
logging loop and proceeds to
completion"]:::main N_LOGLINEEntryEmpty_Node0 -- Yes --> N_LOGLINEEntryEmpty_Node0_action N_LOGLINEEntryEmpty_Node0_action --> E_LOGLINEEntryEmpty S_LOGLINEEntryEmpty --> N_LOGLINEEntryEmpty_Node0 N_LOGLINEEntryEmpty_Node1{"A LOG-LINE entry at the current
loop index contains data not spaces"}:::decision N_LOGLINEEntryEmpty_Node1_action["The system proceeds to check the
loop counter limit before retrieving
the entry"]:::main N_LOGLINEEntryEmpty_Node1 -- Yes --> N_LOGLINEEntryEmpty_Node1_action N_LOGLINEEntryEmpty_Node1_action --> E_LOGLINEEntryEmpty N_LOGLINEEntryEmpty_Node0 -- No --> N_LOGLINEEntryEmpty_Node1 N_LOGLINEEntryEmpty_Node2{"The system continues the equipment
logging loop"}:::decision N_LOGLINEEntryEmpty_Node2_action["The system evaluates whether the
LOG-LINE entry at the new counter
position is empty or contains data
to determine if processing should
continue"]:::main N_LOGLINEEntryEmpty_Node2 -- Yes --> N_LOGLINEEntryEmpty_Node2_action N_LOGLINEEntryEmpty_Node2_action --> E_LOGLINEEntryEmpty N_LOGLINEEntryEmpty_Node1 -- No --> N_LOGLINEEntryEmpty_Node2 N_LOGLINEEntryEmpty_Node2 -- No --> E_LOGLINEEntryEmpty
loop index contains only spaces"}:::decision N_LOGLINEEntryEmpty_Node0_action["The system terminates the equipment
logging loop and proceeds to
completion"]:::main N_LOGLINEEntryEmpty_Node0 -- Yes --> N_LOGLINEEntryEmpty_Node0_action N_LOGLINEEntryEmpty_Node0_action --> E_LOGLINEEntryEmpty S_LOGLINEEntryEmpty --> N_LOGLINEEntryEmpty_Node0 N_LOGLINEEntryEmpty_Node1{"A LOG-LINE entry at the current
loop index contains data not spaces"}:::decision N_LOGLINEEntryEmpty_Node1_action["The system proceeds to check the
loop counter limit before retrieving
the entry"]:::main N_LOGLINEEntryEmpty_Node1 -- Yes --> N_LOGLINEEntryEmpty_Node1_action N_LOGLINEEntryEmpty_Node1_action --> E_LOGLINEEntryEmpty N_LOGLINEEntryEmpty_Node0 -- No --> N_LOGLINEEntryEmpty_Node1 N_LOGLINEEntryEmpty_Node2{"The system continues the equipment
logging loop"}:::decision N_LOGLINEEntryEmpty_Node2_action["The system evaluates whether the
LOG-LINE entry at the new counter
position is empty or contains data
to determine if processing should
continue"]:::main N_LOGLINEEntryEmpty_Node2 -- Yes --> N_LOGLINEEntryEmpty_Node2_action N_LOGLINEEntryEmpty_Node2_action --> E_LOGLINEEntryEmpty N_LOGLINEEntryEmpty_Node1 -- No --> N_LOGLINEEntryEmpty_Node2 N_LOGLINEEntryEmpty_Node2 -- No --> E_LOGLINEEntryEmpty
File: GCX126R.cbl
GIVEN:
The system is iterating through LOG-LINE entries to log equipment information
WHEN:
A LOG-LINE entry at the current loop index contains only spaces
THEN:
- The system terminates the equipment logging loop
- Proceeds to completion
File: GCX126R.cbl
GIVEN:
The system is iterating through LOG-LINE entries to log equipment information
WHEN:
A LOG-LINE entry at the current loop index contains data (not spaces)
THEN:
The system proceeds to check the loop counter limit before retrieving the entry
File: GCX126R.cbl
GIVEN:
The loop counter has been incremented to the next position
WHEN:
The system continues the equipment logging loop
THEN:
The system evaluates whether the LOG-LINE entry at the new counter position is empty or contains data to determine if processing should continue
β Consolidated Acceptance Criteria
- The loop counter (LOG-INDX) is greater than 50 → the system terminates the equipment logging loop and proceeds to completion
- The loop counter (LOG-INDX) is less than or equal to 50 → the system proceeds to retrieve the LOG-LINE entry for 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_Counter50(["Start Step"])
E_Counter50(["End Step"])
N_Counter50_Node0{"The loop counter LOG-INDX is
greater than 50"}:::decision N_Counter50_Node0_action["The system terminates the equipment
logging loop and proceeds to
completion"]:::main N_Counter50_Node0 -- Yes --> N_Counter50_Node0_action N_Counter50_Node0_action --> E_Counter50 S_Counter50 --> N_Counter50_Node0 N_Counter50_Node1{"The loop counter LOG-INDX is less
than or equal to 50"}:::decision N_Counter50_Node1_action["The system proceeds to retrieve the
LOG-LINE entry for logging"]:::main N_Counter50_Node1 -- Yes --> N_Counter50_Node1_action N_Counter50_Node1_action --> E_Counter50 N_Counter50_Node0 -- No --> N_Counter50_Node1 N_Counter50_Node1 -- No --> E_Counter50
greater than 50"}:::decision N_Counter50_Node0_action["The system terminates the equipment
logging loop and proceeds to
completion"]:::main N_Counter50_Node0 -- Yes --> N_Counter50_Node0_action N_Counter50_Node0_action --> E_Counter50 S_Counter50 --> N_Counter50_Node0 N_Counter50_Node1{"The loop counter LOG-INDX is less
than or equal to 50"}:::decision N_Counter50_Node1_action["The system proceeds to retrieve the
LOG-LINE entry for logging"]:::main N_Counter50_Node1 -- Yes --> N_Counter50_Node1_action N_Counter50_Node1_action --> E_Counter50 N_Counter50_Node0 -- No --> N_Counter50_Node1 N_Counter50_Node1 -- No --> E_Counter50
File: GCX126R.cbl
GIVEN:
The system is iterating through LOG-LINE entries with a non-empty entry at the current index
WHEN:
The loop counter (LOG-INDX) is greater than 50
THEN:
- The system terminates the equipment logging loop
- Proceeds to completion
File: GCX126R.cbl
GIVEN:
The system is iterating through LOG-LINE entries with a non-empty entry at the current index
WHEN:
The loop counter (LOG-INDX) is less than or equal to 50
THEN:
The system proceeds to retrieve the LOG-LINE entry for logging
β Consolidated Acceptance Criteria
- The system retrieves the LOG-LINE entry at the current loop index position → the LOG-LINE entry containing equipment information is available for 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_RetrieveLOGLINEEntry(["Start Step"])
E_RetrieveLOGLINEEntry(["End Step"])
N_RetrieveLOGLINEEntry_Node0{"The system retrieves the LOG-LINE
entry at the current loop index
position"}:::decision N_RetrieveLOGLINEEntry_Node0_action["The LOG-LINE entry containing
equipment information is available
for logging"]:::main N_RetrieveLOGLINEEntry_Node0 -- Yes --> N_RetrieveLOGLINEEntry_Node0_action N_RetrieveLOGLINEEntry_Node0_action --> E_RetrieveLOGLINEEntry S_RetrieveLOGLINEEntry --> N_RetrieveLOGLINEEntry_Node0 N_RetrieveLOGLINEEntry_Node0 -- No --> E_RetrieveLOGLINEEntry
entry at the current loop index
position"}:::decision N_RetrieveLOGLINEEntry_Node0_action["The LOG-LINE entry containing
equipment information is available
for logging"]:::main N_RetrieveLOGLINEEntry_Node0 -- Yes --> N_RetrieveLOGLINEEntry_Node0_action N_RetrieveLOGLINEEntry_Node0_action --> E_RetrieveLOGLINEEntry S_RetrieveLOGLINEEntry --> N_RetrieveLOGLINEEntry_Node0 N_RetrieveLOGLINEEntry_Node0 -- No --> E_RetrieveLOGLINEEntry
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The loop counter is within valid range (1-50) and the LOG-LINE entry at current index is not empty
WHEN:
The system retrieves the LOG-LINE entry at the current loop index position
THEN:
The LOG-LINE entry containing equipment information is available for logging
β Consolidated Acceptance Criteria
- The system prepares the equipment information for logging → the LOG-LINE entry content is moved to the WS-GCX105-INFO-MSG field, clearing any previous content in that 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_MoveLOGLINEtoMessageField(["Start Step"])
E_MoveLOGLINEtoMessageField(["End Step"])
N_MoveLOGLINEtoMessageField_Node0{"The system prepares the equipment
information for logging"}:::decision N_MoveLOGLINEtoMessageField_Node0_action["The LOG-LINE entry content is moved
to the WS-GCX105-INFO-MSG field,
clearing any previous content in
that field"]:::main N_MoveLOGLINEtoMessageField_Node0 -- Yes --> N_MoveLOGLINEtoMessageField_Node0_action N_MoveLOGLINEtoMessageField_Node0_action --> E_MoveLOGLINEtoMessageField S_MoveLOGLINEtoMessageField --> N_MoveLOGLINEtoMessageField_Node0 N_MoveLOGLINEtoMessageField_Node0 -- No --> E_MoveLOGLINEtoMessageField
information for logging"}:::decision N_MoveLOGLINEtoMessageField_Node0_action["The LOG-LINE entry content is moved
to the WS-GCX105-INFO-MSG field,
clearing any previous content in
that field"]:::main N_MoveLOGLINEtoMessageField_Node0 -- Yes --> N_MoveLOGLINEtoMessageField_Node0_action N_MoveLOGLINEtoMessageField_Node0_action --> E_MoveLOGLINEtoMessageField S_MoveLOGLINEtoMessageField --> N_MoveLOGLINEtoMessageField_Node0 N_MoveLOGLINEtoMessageField_Node0 -- No --> E_MoveLOGLINEtoMessageField
File: GCX126R.cbl
GIVEN:
A LOG-LINE entry has been retrieved from the array at the current loop index
WHEN:
The system prepares the equipment information for logging
THEN:
The LOG-LINE entry content is moved to the WS-GCX105-INFO-MSG field, clearing any previous content in that field
β Consolidated Acceptance Criteria
- The system prepares to process the next LOG-LINE entry → the loop counter (LOG-INDX) is incremented by 1 to point to the next LOG-LINE entry 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_IncrementLoopCounter(["Start Step"])
E_IncrementLoopCounter(["End Step"])
N_IncrementLoopCounter_Node0{"The system prepares to process the
next LOG-LINE entry"}:::decision N_IncrementLoopCounter_Node0_action["The loop counter LOG-INDX is
incremented by 1 to point to the
next LOG-LINE entry in the array"]:::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
next LOG-LINE entry"}:::decision N_IncrementLoopCounter_Node0_action["The loop counter LOG-INDX is
incremented by 1 to point to the
next LOG-LINE entry in the array"]:::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: GCX126R.cbl
GIVEN:
An equipment information entry has been successfully logged to cargo history
WHEN:
The system prepares to process the next LOG-LINE entry
THEN:
The loop counter (LOG-INDX) is incremented by 1 to point to the next LOG-LINE entry in the array
β Consolidated Acceptance Criteria
- The cargo lookup process is initiated → the CCN value from M10-07-CCN field (positions 1-25) is extracted and prepared for database 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_ExtractCCNfromM10SegmentM1007CCN(["Start Step"])
E_ExtractCCNfromM10SegmentM1007CCN(["End Step"])
N_ExtractCCNfromM10SegmentM1007CCN_Node0{"The cargo lookup process is
initiated"}:::decision N_ExtractCCNfromM10SegmentM1007CCN_Node0_action["The CCN value from M10-07-CCN field
positions 1-25 is extracted and
prepared for database search"]:::main N_ExtractCCNfromM10SegmentM1007CCN_Node0 -- Yes --> N_ExtractCCNfromM10SegmentM1007CCN_Node0_action N_ExtractCCNfromM10SegmentM1007CCN_Node0_action --> E_ExtractCCNfromM10SegmentM1007CCN S_ExtractCCNfromM10SegmentM1007CCN --> N_ExtractCCNfromM10SegmentM1007CCN_Node0 N_ExtractCCNfromM10SegmentM1007CCN_Node0 -- No --> E_ExtractCCNfromM10SegmentM1007CCN
initiated"}:::decision N_ExtractCCNfromM10SegmentM1007CCN_Node0_action["The CCN value from M10-07-CCN field
positions 1-25 is extracted and
prepared for database search"]:::main N_ExtractCCNfromM10SegmentM1007CCN_Node0 -- Yes --> N_ExtractCCNfromM10SegmentM1007CCN_Node0_action N_ExtractCCNfromM10SegmentM1007CCN_Node0_action --> E_ExtractCCNfromM10SegmentM1007CCN S_ExtractCCNfromM10SegmentM1007CCN --> N_ExtractCCNfromM10SegmentM1007CCN_Node0 N_ExtractCCNfromM10SegmentM1007CCN_Node0 -- No --> E_ExtractCCNfromM10SegmentM1007CCN
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been parsed and M10 segment data is available
WHEN:
The cargo lookup process is initiated
THEN:
- The ccn value from m10-07-ccn field (positions 1-25) is extracted
- Prepared for database search
β Consolidated Acceptance Criteria
- Database search keys need to be established → the CCN value is assigned to both CCRT-SSAQ KEY-VALUE and A2RT-SSAQ KEY-VALUE for qualified 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_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN(["Start Step"])
E_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN(["End Step"])
N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0{"Database search keys need to be
established"}:::decision N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0_action["The CCN value is assigned to both
CCRT-SSAQ KEY-VALUE and A2RT-SSAQ
KEY-VALUE for qualified segment
search"]:::main N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0 -- Yes --> N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0_action N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0_action --> E_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN S_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN --> N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0 N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0 -- No --> E_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN
established"}:::decision N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0_action["The CCN value is assigned to both
CCRT-SSAQ KEY-VALUE and A2RT-SSAQ
KEY-VALUE for qualified segment
search"]:::main N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0 -- Yes --> N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0_action N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0_action --> E_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN S_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN --> N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0 N_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN_Node0 -- No --> E_SetSearchKeysCCRTSSAQKeyCCNA2RTSSAQKeyCCN
File: GCX126R.cbl
GIVEN:
The CCN has been extracted from M10-07-CCN field
WHEN:
Database search keys need to be established
THEN:
- The ccn value is assigned to both ccrt-ssaq key-value
- A2rt-ssaq key-value for qualified segment search
β Consolidated Acceptance Criteria
- The cargo record retrieval is executed → the system calls CIMS with GHU function code against GCCC-PCB using CCRT-SSAQ qualified search to retrieve GCCC-CARGO-REPORT-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_CallDatabaseGHUFunctiontoRetrieveCargo(["Start Step"])
E_CallDatabaseGHUFunctiontoRetrieveCargo(["End Step"])
N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0{"The cargo record retrieval is
executed"}:::decision N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0_action["The system calls CIMS with GHU
function code against GCCC-PCB using
CCRT-SSAQ qualified search to
retrieve GCCC-CARGO-REPORT-SEGMENT"]:::main N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0 -- Yes --> N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0_action N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0_action --> E_CallDatabaseGHUFunctiontoRetrieveCargo S_CallDatabaseGHUFunctiontoRetrieveCargo --> N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0 N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0 -- No --> E_CallDatabaseGHUFunctiontoRetrieveCargo
executed"}:::decision N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0_action["The system calls CIMS with GHU
function code against GCCC-PCB using
CCRT-SSAQ qualified search to
retrieve GCCC-CARGO-REPORT-SEGMENT"]:::main N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0 -- Yes --> N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0_action N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0_action --> E_CallDatabaseGHUFunctiontoRetrieveCargo S_CallDatabaseGHUFunctiontoRetrieveCargo --> N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0 N_CallDatabaseGHUFunctiontoRetrieveCargo_Node0 -- No --> E_CallDatabaseGHUFunctiontoRetrieveCargo
File: GCX126R.cbl
GIVEN:
The search keys have been set with the CCN value
WHEN:
The cargo record retrieval is executed
THEN:
The system calls CIMS with GHU function code against GCCC-PCB using CCRT-SSAQ qualified search to retrieve GCCC-CARGO-REPORT-SEGMENT
β Consolidated Acceptance Criteria
- The database status code is evaluated → if CC-STATUS-CODE is not SPACES, the cargo is not found; if CC-STATUS-CODE is SPACES, the cargo is found
- Waybill validation is performed → if GCCC-WAYBILL-KEY-FOR-INDEX does not equal SAVE-WAYBILL-INDEX, set WS-CARGO-NOT-WB to TRUE; otherwise, proceed with status 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_CargoRecordFound(["Start Step"])
E_CargoRecordFound(["End Step"])
N_CargoRecordFound_Node0{"The database status code is
evaluated"}:::decision N_CargoRecordFound_Node0_action["If CC-STATUS-CODE is not SPACES,
the cargo is not found if
CC-STATUS-CODE is SPACES, the cargo
is found"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node1{"Waybill validation is performed"}:::decision N_CargoRecordFound_Node1_action["If GCCC-WAYBILL-KEY-FOR-INDEX does
not equal SAVE-WAYBILL-INDEX, set
WS-CARGO-NOT-WB to TRUE otherwise,
proceed with status checks"]:::main N_CargoRecordFound_Node1 -- Yes --> N_CargoRecordFound_Node1_action N_CargoRecordFound_Node1_action --> E_CargoRecordFound N_CargoRecordFound_Node0 -- No --> N_CargoRecordFound_Node1 N_CargoRecordFound_Node1 -- No --> E_CargoRecordFound
evaluated"}:::decision N_CargoRecordFound_Node0_action["If CC-STATUS-CODE is not SPACES,
the cargo is not found if
CC-STATUS-CODE is SPACES, the cargo
is found"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node1{"Waybill validation is performed"}:::decision N_CargoRecordFound_Node1_action["If GCCC-WAYBILL-KEY-FOR-INDEX does
not equal SAVE-WAYBILL-INDEX, set
WS-CARGO-NOT-WB to TRUE otherwise,
proceed with status checks"]:::main N_CargoRecordFound_Node1 -- Yes --> N_CargoRecordFound_Node1_action N_CargoRecordFound_Node1_action --> E_CargoRecordFound N_CargoRecordFound_Node0 -- No --> N_CargoRecordFound_Node1 N_CargoRecordFound_Node1 -- No --> E_CargoRecordFound
File: GCX126R.cbl
GIVEN:
The GHU database call has been executed
WHEN:
The database status code is evaluated
THEN:
If CC-STATUS-CODE is not SPACES, the cargo is not found; if CC-STATUS-CODE is SPACES, the cargo is found
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo record has been found and SAVE-WAYBILL-INDEX is not blank
WHEN:
Waybill validation is performed
THEN:
If GCCC-WAYBILL-KEY-FOR-INDEX does not equal SAVE-WAYBILL-INDEX, set WS-CARGO-NOT-WB to TRUE; otherwise, proceed with status checks
β Consolidated Acceptance Criteria
- The cargo existence check is completed → the system sets WS-CARGO-NOT-FOUND to TRUE and terminates the lookup 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_SetStatusWSCARGONOTFOUND(["Start Step"])
E_SetStatusWSCARGONOTFOUND(["End Step"])
N_SetStatusWSCARGONOTFOUND_Node0{"The cargo existence check is
completed"}:::decision N_SetStatusWSCARGONOTFOUND_Node0_action["The system sets WS-CARGO-NOT-FOUND
to TRUE and terminates the lookup
process"]:::main N_SetStatusWSCARGONOTFOUND_Node0 -- Yes --> N_SetStatusWSCARGONOTFOUND_Node0_action N_SetStatusWSCARGONOTFOUND_Node0_action --> E_SetStatusWSCARGONOTFOUND S_SetStatusWSCARGONOTFOUND --> N_SetStatusWSCARGONOTFOUND_Node0 N_SetStatusWSCARGONOTFOUND_Node0 -- No --> E_SetStatusWSCARGONOTFOUND
completed"}:::decision N_SetStatusWSCARGONOTFOUND_Node0_action["The system sets WS-CARGO-NOT-FOUND
to TRUE and terminates the lookup
process"]:::main N_SetStatusWSCARGONOTFOUND_Node0 -- Yes --> N_SetStatusWSCARGONOTFOUND_Node0_action N_SetStatusWSCARGONOTFOUND_Node0_action --> E_SetStatusWSCARGONOTFOUND S_SetStatusWSCARGONOTFOUND --> N_SetStatusWSCARGONOTFOUND_Node0 N_SetStatusWSCARGONOTFOUND_Node0 -- No --> E_SetStatusWSCARGONOTFOUND
File: GCX126R.cbl
GIVEN:
The database GHU call returned a non-space status code
WHEN:
The cargo existence check is completed
THEN:
- The system sets ws-cargo-not-found to true
- Terminates the lookup process
β Consolidated Acceptance Criteria
- Secondary segment retrieval is initiated → the system calls CIMS with GHU function code against GCA2-PCB using A2RT-SSAQ qualified search to retrieve GCSCCS52 segment, and if not found (status = 'GE'), initializes GCSCCS52 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_RetrieveSecondaryCargoSegmentGCSCCS52(["Start Step"])
E_RetrieveSecondaryCargoSegmentGCSCCS52(["End Step"])
N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0{"Secondary segment retrieval is
initiated"}:::decision N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0_action["The system calls CIMS with GHU
function code against GCA2-PCB using
A2RT-SSAQ qualified search to
retrieve GCSCCS52 segment, and if
not found status GE , initializes
GCSCCS52 to SPACES"]:::main N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0 -- Yes --> N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0_action N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0_action --> E_RetrieveSecondaryCargoSegmentGCSCCS52 S_RetrieveSecondaryCargoSegmentGCSCCS52 --> N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0 N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0 -- No --> E_RetrieveSecondaryCargoSegmentGCSCCS52
initiated"}:::decision N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0_action["The system calls CIMS with GHU
function code against GCA2-PCB using
A2RT-SSAQ qualified search to
retrieve GCSCCS52 segment, and if
not found status GE , initializes
GCSCCS52 to SPACES"]:::main N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0 -- Yes --> N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0_action N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0_action --> E_RetrieveSecondaryCargoSegmentGCSCCS52 S_RetrieveSecondaryCargoSegmentGCSCCS52 --> N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0 N_RetrieveSecondaryCargoSegmentGCSCCS52_Node0 -- No --> E_RetrieveSecondaryCargoSegmentGCSCCS52
File: GCX126R.cbl
GIVEN:
The primary cargo record has been successfully retrieved
WHEN:
Secondary segment retrieval is initiated
THEN:
The system calls CIMS with GHU function code against GCA2-PCB using A2RT-SSAQ qualified search to retrieve GCSCCS52 segment, and if not found (status = 'GE'), initializes GCSCCS52 to SPACES
β Consolidated Acceptance Criteria
- The cargo existence check is completed → the system sets WS-CARGO-FOUND to TRUE and proceeds with additional status 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_SetStatusWSCARGOFOUND(["Start Step"])
E_SetStatusWSCARGOFOUND(["End Step"])
N_SetStatusWSCARGOFOUND_Node0{"The cargo existence check is
completed"}:::decision N_SetStatusWSCARGOFOUND_Node0_action["The system sets WS-CARGO-FOUND to
TRUE and proceeds with additional
status checks"]:::main N_SetStatusWSCARGOFOUND_Node0 -- Yes --> N_SetStatusWSCARGOFOUND_Node0_action N_SetStatusWSCARGOFOUND_Node0_action --> E_SetStatusWSCARGOFOUND S_SetStatusWSCARGOFOUND --> N_SetStatusWSCARGOFOUND_Node0 N_SetStatusWSCARGOFOUND_Node0 -- No --> E_SetStatusWSCARGOFOUND
completed"}:::decision N_SetStatusWSCARGOFOUND_Node0_action["The system sets WS-CARGO-FOUND to
TRUE and proceeds with additional
status checks"]:::main N_SetStatusWSCARGOFOUND_Node0 -- Yes --> N_SetStatusWSCARGOFOUND_Node0_action N_SetStatusWSCARGOFOUND_Node0_action --> E_SetStatusWSCARGOFOUND S_SetStatusWSCARGOFOUND --> N_SetStatusWSCARGOFOUND_Node0 N_SetStatusWSCARGOFOUND_Node0 -- No --> E_SetStatusWSCARGOFOUND
File: GCX126R.cbl
GIVEN:
The database GHU call returned a space status code
WHEN:
The cargo existence check is completed
THEN:
- The system sets ws-cargo-found to true
- Proceeds with additional status checks
β Consolidated Acceptance Criteria
- The cargo delete status is evaluated → if GCCC-DELETE-STATUS equals 'D', the cargo is deleted; otherwise, proceed to check returned status
- The system checks the cargo's deletion status → if the cargo record has a deletion status indicator showing it is deleted, the record is skipped and processing continues to the next iteration; otherwise, proceed to check transfer receipt status
- The system checks if the US cargo record has a deleted status indicator → if the cargo is deleted, continue searching for next record without setting US manifest found flag; if not deleted, proceed to train creation 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_CargoDeleted(["Start Step"])
E_CargoDeleted(["End Step"])
N_CargoDeleted_Node0{"The cargo delete status is
evaluated"}:::decision N_CargoDeleted_Node0_action["If GCCC-DELETE-STATUS equals D ,
the cargo is deleted otherwise,
proceed to check returned status"]:::main N_CargoDeleted_Node0 -- Yes --> N_CargoDeleted_Node0_action N_CargoDeleted_Node0_action --> E_CargoDeleted S_CargoDeleted --> N_CargoDeleted_Node0 N_CargoDeleted_Node1{"The system checks the cargo s
deletion status"}:::decision N_CargoDeleted_Node1_action["If the cargo record has a deletion
status indicator showing it is
deleted, the record is skipped and
processing continues to the next
iteration otherwise, proceed to
check transfer receipt status"]:::main N_CargoDeleted_Node1 -- Yes --> N_CargoDeleted_Node1_action N_CargoDeleted_Node1_action --> E_CargoDeleted N_CargoDeleted_Node0 -- No --> N_CargoDeleted_Node1 N_CargoDeleted_Node2{"The system checks if the US cargo
record has a deleted status
indicator"}:::decision N_CargoDeleted_Node2_action["If the cargo is deleted, continue
searching for next record without
setting US manifest found flag if
not deleted, proceed to train
creation check"]:::main N_CargoDeleted_Node2 -- Yes --> N_CargoDeleted_Node2_action N_CargoDeleted_Node2_action --> E_CargoDeleted N_CargoDeleted_Node1 -- No --> N_CargoDeleted_Node2 N_CargoDeleted_Node2 -- No --> E_CargoDeleted
evaluated"}:::decision N_CargoDeleted_Node0_action["If GCCC-DELETE-STATUS equals D ,
the cargo is deleted otherwise,
proceed to check returned status"]:::main N_CargoDeleted_Node0 -- Yes --> N_CargoDeleted_Node0_action N_CargoDeleted_Node0_action --> E_CargoDeleted S_CargoDeleted --> N_CargoDeleted_Node0 N_CargoDeleted_Node1{"The system checks the cargo s
deletion status"}:::decision N_CargoDeleted_Node1_action["If the cargo record has a deletion
status indicator showing it is
deleted, the record is skipped and
processing continues to the next
iteration otherwise, proceed to
check transfer receipt status"]:::main N_CargoDeleted_Node1 -- Yes --> N_CargoDeleted_Node1_action N_CargoDeleted_Node1_action --> E_CargoDeleted N_CargoDeleted_Node0 -- No --> N_CargoDeleted_Node1 N_CargoDeleted_Node2{"The system checks if the US cargo
record has a deleted status
indicator"}:::decision N_CargoDeleted_Node2_action["If the cargo is deleted, continue
searching for next record without
setting US manifest found flag if
not deleted, proceed to train
creation check"]:::main N_CargoDeleted_Node2 -- Yes --> N_CargoDeleted_Node2_action N_CargoDeleted_Node2_action --> E_CargoDeleted N_CargoDeleted_Node1 -- No --> N_CargoDeleted_Node2 N_CargoDeleted_Node2 -- No --> E_CargoDeleted
File: GCX126R.cbl
GIVEN:
The cargo record has been found and retrieved
WHEN:
The cargo delete status is evaluated
THEN:
If GCCC-DELETE-STATUS equals 'D', the cargo is deleted; otherwise, proceed to check returned status
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and validated for car ID and waybill match
WHEN:
The system checks the cargo's deletion status
THEN:
- If the cargo record has a deletion status indicator showing it is deleted, the record is skipped
- Processing continues to the next iteration; otherwise, proceed to check transfer receipt status
File: GCX126R.cbl
GIVEN:
The US cargo record matches both car ID and waybill number criteria
WHEN:
The system checks if the US cargo record has a deleted status indicator
THEN:
If the cargo is deleted, continue searching for next record without setting US manifest found flag; if not deleted, proceed to train creation check
β Consolidated Acceptance Criteria
- The deleted status check is completed → the system sets WS-CARGO-DELETED to TRUE and proceeds to save cargo 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_SetStatusWSCARGODELETED(["Start Step"])
E_SetStatusWSCARGODELETED(["End Step"])
N_SetStatusWSCARGODELETED_Node0{"The deleted status check is
completed"}:::decision N_SetStatusWSCARGODELETED_Node0_action["The system sets WS-CARGO-DELETED to
TRUE and proceeds to save cargo data"]:::main N_SetStatusWSCARGODELETED_Node0 -- Yes --> N_SetStatusWSCARGODELETED_Node0_action N_SetStatusWSCARGODELETED_Node0_action --> E_SetStatusWSCARGODELETED S_SetStatusWSCARGODELETED --> N_SetStatusWSCARGODELETED_Node0 N_SetStatusWSCARGODELETED_Node0 -- No --> E_SetStatusWSCARGODELETED
completed"}:::decision N_SetStatusWSCARGODELETED_Node0_action["The system sets WS-CARGO-DELETED to
TRUE and proceeds to save cargo data"]:::main N_SetStatusWSCARGODELETED_Node0 -- Yes --> N_SetStatusWSCARGODELETED_Node0_action N_SetStatusWSCARGODELETED_Node0_action --> E_SetStatusWSCARGODELETED S_SetStatusWSCARGODELETED --> N_SetStatusWSCARGODELETED_Node0 N_SetStatusWSCARGODELETED_Node0 -- No --> E_SetStatusWSCARGODELETED
File: GCX126R.cbl
GIVEN:
The cargo record GCCC-DELETE-STATUS field equals 'D'
WHEN:
The deleted status check is completed
THEN:
- The system sets ws-cargo-deleted to true
- Proceeds to save cargo data
β Consolidated Acceptance Criteria
- The cargo return status is evaluated → if GCCC-STATUS-RETURN is TRUE, the cargo is returned; otherwise, proceed to check released 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_CargoReturned(["Start Step"])
E_CargoReturned(["End Step"])
N_CargoReturned_Node0{"The cargo return status is
evaluated"}:::decision N_CargoReturned_Node0_action["If GCCC-STATUS-RETURN is TRUE, the
cargo is returned otherwise, proceed
to check released status"]:::main N_CargoReturned_Node0 -- Yes --> N_CargoReturned_Node0_action N_CargoReturned_Node0_action --> E_CargoReturned S_CargoReturned --> N_CargoReturned_Node0 N_CargoReturned_Node0 -- No --> E_CargoReturned
evaluated"}:::decision N_CargoReturned_Node0_action["If GCCC-STATUS-RETURN is TRUE, the
cargo is returned otherwise, proceed
to check released status"]:::main N_CargoReturned_Node0 -- Yes --> N_CargoReturned_Node0_action N_CargoReturned_Node0_action --> E_CargoReturned S_CargoReturned --> N_CargoReturned_Node0 N_CargoReturned_Node0 -- No --> E_CargoReturned
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo record is not deleted
WHEN:
The cargo return status is evaluated
THEN:
If GCCC-STATUS-RETURN is TRUE, the cargo is returned; otherwise, proceed to check released status
β Consolidated Acceptance Criteria
- The returned status check is completed → the system sets WS-CARGO-RETURNED to TRUE and proceeds to check released 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_SetStatusWSCARGORETURNED(["Start Step"])
E_SetStatusWSCARGORETURNED(["End Step"])
N_SetStatusWSCARGORETURNED_Node0{"The returned status check is
completed"}:::decision N_SetStatusWSCARGORETURNED_Node0_action["The system sets WS-CARGO-RETURNED
to TRUE and proceeds to check
released status"]:::main N_SetStatusWSCARGORETURNED_Node0 -- Yes --> N_SetStatusWSCARGORETURNED_Node0_action N_SetStatusWSCARGORETURNED_Node0_action --> E_SetStatusWSCARGORETURNED S_SetStatusWSCARGORETURNED --> N_SetStatusWSCARGORETURNED_Node0 N_SetStatusWSCARGORETURNED_Node0 -- No --> E_SetStatusWSCARGORETURNED
completed"}:::decision N_SetStatusWSCARGORETURNED_Node0_action["The system sets WS-CARGO-RETURNED
to TRUE and proceeds to check
released status"]:::main N_SetStatusWSCARGORETURNED_Node0 -- Yes --> N_SetStatusWSCARGORETURNED_Node0_action N_SetStatusWSCARGORETURNED_Node0_action --> E_SetStatusWSCARGORETURNED S_SetStatusWSCARGORETURNED --> N_SetStatusWSCARGORETURNED_Node0 N_SetStatusWSCARGORETURNED_Node0 -- No --> E_SetStatusWSCARGORETURNED
File: GCX126R.cbl
GIVEN:
The cargo record GCCC-STATUS-RETURN condition is TRUE
WHEN:
The returned status check is completed
THEN:
- The system sets ws-cargo-returned to true
- Proceeds to check released status
β Consolidated Acceptance Criteria
- The cargo release status is evaluated → if GCCC-RELEASE-STATUS equals 'R', the cargo is released; otherwise, proceed to check if cargo is on a 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_CargoReleased(["Start Step"])
E_CargoReleased(["End Step"])
N_CargoReleased_Node0{"The cargo release status is
evaluated"}:::decision N_CargoReleased_Node0_action["If GCCC-RELEASE-STATUS equals R ,
the cargo is released otherwise,
proceed to check if cargo is on a
train"]:::main N_CargoReleased_Node0 -- Yes --> N_CargoReleased_Node0_action N_CargoReleased_Node0_action --> E_CargoReleased S_CargoReleased --> N_CargoReleased_Node0 N_CargoReleased_Node0 -- No --> E_CargoReleased
evaluated"}:::decision N_CargoReleased_Node0_action["If GCCC-RELEASE-STATUS equals R ,
the cargo is released otherwise,
proceed to check if cargo is on a
train"]:::main N_CargoReleased_Node0 -- Yes --> N_CargoReleased_Node0_action N_CargoReleased_Node0_action --> E_CargoReleased S_CargoReleased --> N_CargoReleased_Node0 N_CargoReleased_Node0 -- No --> E_CargoReleased
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo record is not deleted
WHEN:
The cargo release status is evaluated
THEN:
If GCCC-RELEASE-STATUS equals 'R', the cargo is released; otherwise, proceed to check if cargo is on a train
β Consolidated Acceptance Criteria
- The released status check is completed → the system sets WS-CARGO-RELEASED to TRUE and proceeds to check if cargo is on a 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_SetStatusWSCARGORELEASED(["Start Step"])
E_SetStatusWSCARGORELEASED(["End Step"])
N_SetStatusWSCARGORELEASED_Node0{"The released status check is
completed"}:::decision N_SetStatusWSCARGORELEASED_Node0_action["The system sets WS-CARGO-RELEASED
to TRUE and proceeds to check if
cargo is on a train"]:::main N_SetStatusWSCARGORELEASED_Node0 -- Yes --> N_SetStatusWSCARGORELEASED_Node0_action N_SetStatusWSCARGORELEASED_Node0_action --> E_SetStatusWSCARGORELEASED S_SetStatusWSCARGORELEASED --> N_SetStatusWSCARGORELEASED_Node0 N_SetStatusWSCARGORELEASED_Node0 -- No --> E_SetStatusWSCARGORELEASED
completed"}:::decision N_SetStatusWSCARGORELEASED_Node0_action["The system sets WS-CARGO-RELEASED
to TRUE and proceeds to check if
cargo is on a train"]:::main N_SetStatusWSCARGORELEASED_Node0 -- Yes --> N_SetStatusWSCARGORELEASED_Node0_action N_SetStatusWSCARGORELEASED_Node0_action --> E_SetStatusWSCARGORELEASED S_SetStatusWSCARGORELEASED --> N_SetStatusWSCARGORELEASED_Node0 N_SetStatusWSCARGORELEASED_Node0 -- No --> E_SetStatusWSCARGORELEASED
File: GCX126R.cbl
GIVEN:
The cargo record GCCC-RELEASE-STATUS field equals 'R'
WHEN:
The released status check is completed
THEN:
- The system sets ws-cargo-released to true
- Proceeds to check if cargo is on a train
β Consolidated Acceptance Criteria
- The cargo train assignment is evaluated → if GCCC-CP-TRAIN-ID is not SPACES, the cargo is on a train; otherwise, proceed to save cargo 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_CargoOnTrain(["Start Step"])
E_CargoOnTrain(["End Step"])
N_CargoOnTrain_Node0{"The cargo train assignment is
evaluated"}:::decision N_CargoOnTrain_Node0_action["If GCCC-CP-TRAIN-ID is not SPACES,
the cargo is on a train otherwise,
proceed to save cargo data"]:::main N_CargoOnTrain_Node0 -- Yes --> N_CargoOnTrain_Node0_action N_CargoOnTrain_Node0_action --> E_CargoOnTrain S_CargoOnTrain --> N_CargoOnTrain_Node0 N_CargoOnTrain_Node0 -- No --> E_CargoOnTrain
evaluated"}:::decision N_CargoOnTrain_Node0_action["If GCCC-CP-TRAIN-ID is not SPACES,
the cargo is on a train otherwise,
proceed to save cargo data"]:::main N_CargoOnTrain_Node0 -- Yes --> N_CargoOnTrain_Node0_action N_CargoOnTrain_Node0_action --> E_CargoOnTrain S_CargoOnTrain --> N_CargoOnTrain_Node0 N_CargoOnTrain_Node0 -- No --> E_CargoOnTrain
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo record is not deleted
WHEN:
The cargo train assignment is evaluated
THEN:
If GCCC-CP-TRAIN-ID is not SPACES, the cargo is on a train; otherwise, proceed to save cargo data
β Consolidated Acceptance Criteria
- The train assignment check is completed → the system sets WS-CARGO-ON-A-TRAIN to TRUE and proceeds to save cargo 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_SetStatusWSCARGOONATRAIN(["Start Step"])
E_SetStatusWSCARGOONATRAIN(["End Step"])
N_SetStatusWSCARGOONATRAIN_Node0{"The train assignment check is
completed"}:::decision N_SetStatusWSCARGOONATRAIN_Node0_action["The system sets WS-CARGO-ON-A-TRAIN
to TRUE and proceeds to save cargo
data"]:::main N_SetStatusWSCARGOONATRAIN_Node0 -- Yes --> N_SetStatusWSCARGOONATRAIN_Node0_action N_SetStatusWSCARGOONATRAIN_Node0_action --> E_SetStatusWSCARGOONATRAIN S_SetStatusWSCARGOONATRAIN --> N_SetStatusWSCARGOONATRAIN_Node0 N_SetStatusWSCARGOONATRAIN_Node0 -- No --> E_SetStatusWSCARGOONATRAIN
completed"}:::decision N_SetStatusWSCARGOONATRAIN_Node0_action["The system sets WS-CARGO-ON-A-TRAIN
to TRUE and proceeds to save cargo
data"]:::main N_SetStatusWSCARGOONATRAIN_Node0 -- Yes --> N_SetStatusWSCARGOONATRAIN_Node0_action N_SetStatusWSCARGOONATRAIN_Node0_action --> E_SetStatusWSCARGOONATRAIN S_SetStatusWSCARGOONATRAIN --> N_SetStatusWSCARGOONATRAIN_Node0 N_SetStatusWSCARGOONATRAIN_Node0 -- No --> E_SetStatusWSCARGOONATRAIN
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo record GCCC-CP-TRAIN-ID field is not SPACES
WHEN:
The train assignment check is completed
THEN:
- The system sets ws-cargo-on-a-train to true
- Proceeds to save cargo data
β Consolidated Acceptance Criteria
- Cargo data needs to be preserved for processing → the system saves GCCC-CARGO-REPORT-SEGMENT to WS-SAVE-GCSCCRT, GCCC-CCN-KEY to WS-CURRENT-CCN-KEY and WS-SAVE-CCN, GCCC-EQUIPMENT-CAR to WS-CURRENT-CARID-KEY, GCCC-RELEASE-INFORMATION to WS-SAVE-RELEASE-INFORMATION, and GCCC-WAYBILL-KEY-FOR-INDEX to SAVE-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_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation(["Start Step"])
E_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation(["End Step"])
N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0{"Cargo data needs to be preserved
for processing"}:::decision N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0_action["The system saves
GCCC-CARGO-REPORT-SEGMENT to
WS-SAVE-GCSCCRT, GCCC-CCN-KEY to
WS-CURRENT-CCN-KEY and WS-SAVE-CCN,
GCCC-EQUIPMENT-CAR to
WS-CURRENT-CARID-KEY,
GCCC-RELEASE-INFORMATION to
WS-SAVE-RELEASE-INFORMATION, and
GCCC-WAYBILL-KEY-FOR-INDEX to
SAVE-WAYBILL-INDEX"]:::main N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0 -- Yes --> N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0_action N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0_action --> E_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation S_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation --> N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0 N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0 -- No --> E_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation
for processing"}:::decision N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0_action["The system saves
GCCC-CARGO-REPORT-SEGMENT to
WS-SAVE-GCSCCRT, GCCC-CCN-KEY to
WS-CURRENT-CCN-KEY and WS-SAVE-CCN,
GCCC-EQUIPMENT-CAR to
WS-CURRENT-CARID-KEY,
GCCC-RELEASE-INFORMATION to
WS-SAVE-RELEASE-INFORMATION, and
GCCC-WAYBILL-KEY-FOR-INDEX to
SAVE-WAYBILL-INDEX"]:::main N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0 -- Yes --> N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0_action N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0_action --> E_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation S_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation --> N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0 N_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation_Node0 -- No --> E_SaveCargoDataCCNKeyEquipmentCarIDWaybillIndexReleaseInformation
File: GCX126R.cbl
GIVEN:
The cargo record has been successfully retrieved and status checks completed
WHEN:
Cargo data needs to be preserved for processing
THEN:
- The system saves gccc-cargo-report-segment to ws-save-gcsccrt, gccc-ccn-key to ws-current-ccn-key
- Ws-save-ccn, gccc-equipment-car to ws-current-carid-key, gccc-release-information to ws-save-release-information, and gccc-waybill-key-for-index to save-waybill-index
β Consolidated Acceptance Criteria
- The cargo status flag initialization process begins → all four cargo status switches (WS-SWITCH1-CARGO, WS-SWITCH2-CARGO, WS-SWITCH3-CARGO, WS-SWITCH4-CARGO) are set to space character
- The cargo status flag initialization process is invoked → all four cargo status switches (WS-SWITCH1-CARGO, WS-SWITCH2-CARGO, WS-SWITCH3-CARGO, WS-SWITCH4-CARGO) are set to space character to clear any previous 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_InitializeAllStatusFlagstoSpace(["Start Step"])
E_InitializeAllStatusFlagstoSpace(["End Step"])
N_InitializeAllStatusFlagstoSpace_Node0{"The cargo status flag
initialization process begins"}:::decision N_InitializeAllStatusFlagstoSpace_Node0_action["All four cargo status switches
WS-SWITCH1-CARGO, WS-SWITCH2-CARGO,
WS-SWITCH3-CARGO, WS-SWITCH4-CARGO
are set to space character"]:::main N_InitializeAllStatusFlagstoSpace_Node0 -- Yes --> N_InitializeAllStatusFlagstoSpace_Node0_action N_InitializeAllStatusFlagstoSpace_Node0_action --> E_InitializeAllStatusFlagstoSpace S_InitializeAllStatusFlagstoSpace --> N_InitializeAllStatusFlagstoSpace_Node0 N_InitializeAllStatusFlagstoSpace_Node1{"The cargo status flag
initialization process is invoked"}:::decision N_InitializeAllStatusFlagstoSpace_Node1_action["All four cargo status switches
WS-SWITCH1-CARGO, WS-SWITCH2-CARGO,
WS-SWITCH3-CARGO, WS-SWITCH4-CARGO
are set to space character to clear
any previous status indicators"]:::main N_InitializeAllStatusFlagstoSpace_Node1 -- Yes --> N_InitializeAllStatusFlagstoSpace_Node1_action N_InitializeAllStatusFlagstoSpace_Node1_action --> E_InitializeAllStatusFlagstoSpace N_InitializeAllStatusFlagstoSpace_Node0 -- No --> N_InitializeAllStatusFlagstoSpace_Node1 N_InitializeAllStatusFlagstoSpace_Node1 -- No --> E_InitializeAllStatusFlagstoSpace
initialization process begins"}:::decision N_InitializeAllStatusFlagstoSpace_Node0_action["All four cargo status switches
WS-SWITCH1-CARGO, WS-SWITCH2-CARGO,
WS-SWITCH3-CARGO, WS-SWITCH4-CARGO
are set to space character"]:::main N_InitializeAllStatusFlagstoSpace_Node0 -- Yes --> N_InitializeAllStatusFlagstoSpace_Node0_action N_InitializeAllStatusFlagstoSpace_Node0_action --> E_InitializeAllStatusFlagstoSpace S_InitializeAllStatusFlagstoSpace --> N_InitializeAllStatusFlagstoSpace_Node0 N_InitializeAllStatusFlagstoSpace_Node1{"The cargo status flag
initialization process is invoked"}:::decision N_InitializeAllStatusFlagstoSpace_Node1_action["All four cargo status switches
WS-SWITCH1-CARGO, WS-SWITCH2-CARGO,
WS-SWITCH3-CARGO, WS-SWITCH4-CARGO
are set to space character to clear
any previous status indicators"]:::main N_InitializeAllStatusFlagstoSpace_Node1 -- Yes --> N_InitializeAllStatusFlagstoSpace_Node1_action N_InitializeAllStatusFlagstoSpace_Node1_action --> E_InitializeAllStatusFlagstoSpace N_InitializeAllStatusFlagstoSpace_Node0 -- No --> N_InitializeAllStatusFlagstoSpace_Node1 N_InitializeAllStatusFlagstoSpace_Node1 -- No --> E_InitializeAllStatusFlagstoSpace
File: GCX126R.cbl
GIVEN:
The system needs to evaluate cargo status from database retrieval
WHEN:
The cargo status flag initialization process begins
THEN:
All four cargo status switches (WS-SWITCH1-CARGO, WS-SWITCH2-CARGO, WS-SWITCH3-CARGO, WS-SWITCH4-CARGO) are set to space character
File: GCX126R.cbl
GIVEN:
The system is about to evaluate cargo status switches
WHEN:
The cargo status flag initialization process is invoked
THEN:
All four cargo status switches (WS-SWITCH1-CARGO, WS-SWITCH2-CARGO, WS-SWITCH3-CARGO, WS-SWITCH4-CARGO) are set to space character to clear any previous status indicators
β Consolidated Acceptance Criteria
- The database status code is not equal to spaces → the cargo-not-found indicator flag is set to true
- The system processes the failed database response → the cargo not found indicator (WS-CARGO-NOT-FOUND) is set to true to indicate the cargo record does not 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_SetCargoNotFoundFlag(["Start Step"])
E_SetCargoNotFoundFlag(["End Step"])
N_SetCargoNotFoundFlag_Node0{"The database status code is not
equal to spaces"}:::decision N_SetCargoNotFoundFlag_Node0_action["The cargo-not-found indicator flag
is set to true"]:::main N_SetCargoNotFoundFlag_Node0 -- Yes --> N_SetCargoNotFoundFlag_Node0_action N_SetCargoNotFoundFlag_Node0_action --> E_SetCargoNotFoundFlag S_SetCargoNotFoundFlag --> N_SetCargoNotFoundFlag_Node0 N_SetCargoNotFoundFlag_Node1{"The system processes the failed
database response"}:::decision N_SetCargoNotFoundFlag_Node1_action["The cargo not found indicator
WS-CARGO-NOT-FOUND is set to true to
indicate the cargo record does not
exist"]:::exclusion N_SetCargoNotFoundFlag_Node1 -- Yes -->|Alternative| N_SetCargoNotFoundFlag_Node1_action N_SetCargoNotFoundFlag_Node1_action --> E_SetCargoNotFoundFlag N_SetCargoNotFoundFlag_Node0 -- No --> N_SetCargoNotFoundFlag_Node1 N_SetCargoNotFoundFlag_Node1 -- No --> E_SetCargoNotFoundFlag
equal to spaces"}:::decision N_SetCargoNotFoundFlag_Node0_action["The cargo-not-found indicator flag
is set to true"]:::main N_SetCargoNotFoundFlag_Node0 -- Yes --> N_SetCargoNotFoundFlag_Node0_action N_SetCargoNotFoundFlag_Node0_action --> E_SetCargoNotFoundFlag S_SetCargoNotFoundFlag --> N_SetCargoNotFoundFlag_Node0 N_SetCargoNotFoundFlag_Node1{"The system processes the failed
database response"}:::decision N_SetCargoNotFoundFlag_Node1_action["The cargo not found indicator
WS-CARGO-NOT-FOUND is set to true to
indicate the cargo record does not
exist"]:::exclusion N_SetCargoNotFoundFlag_Node1 -- Yes -->|Alternative| N_SetCargoNotFoundFlag_Node1_action N_SetCargoNotFoundFlag_Node1_action --> E_SetCargoNotFoundFlag N_SetCargoNotFoundFlag_Node0 -- No --> N_SetCargoNotFoundFlag_Node1 N_SetCargoNotFoundFlag_Node1 -- No --> E_SetCargoNotFoundFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo lookup has been performed in the database
WHEN:
The database status code is not equal to spaces
THEN:
The cargo-not-found indicator flag is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The database status code indicates unsuccessful cargo retrieval (status code is not spaces)
WHEN:
The system processes the failed database response
THEN:
The cargo not found indicator (WS-CARGO-NOT-FOUND) is set to true to indicate the cargo record does not exist
β Consolidated Acceptance Criteria
- The database status code equals spaces → the cargo-found indicator flag is set to true
- The system processes the successful database response → the cargo found indicator (WS-CARGO-FOUND) is set to true to indicate the 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_SetCargoFoundFlag(["Start Step"])
E_SetCargoFoundFlag(["End Step"])
N_SetCargoFoundFlag_Node0{"The database status code equals
spaces"}:::decision N_SetCargoFoundFlag_Node0_action["The cargo-found indicator flag is
set to true"]:::main N_SetCargoFoundFlag_Node0 -- Yes --> N_SetCargoFoundFlag_Node0_action N_SetCargoFoundFlag_Node0_action --> E_SetCargoFoundFlag S_SetCargoFoundFlag --> N_SetCargoFoundFlag_Node0 N_SetCargoFoundFlag_Node1{"The system processes the successful
database response"}:::decision N_SetCargoFoundFlag_Node1_action["The cargo found indicator
WS-CARGO-FOUND is set to true to
indicate the cargo record exists"]:::main N_SetCargoFoundFlag_Node1 -- Yes --> N_SetCargoFoundFlag_Node1_action N_SetCargoFoundFlag_Node1_action --> E_SetCargoFoundFlag N_SetCargoFoundFlag_Node0 -- No --> N_SetCargoFoundFlag_Node1 N_SetCargoFoundFlag_Node1 -- No --> E_SetCargoFoundFlag
spaces"}:::decision N_SetCargoFoundFlag_Node0_action["The cargo-found indicator flag is
set to true"]:::main N_SetCargoFoundFlag_Node0 -- Yes --> N_SetCargoFoundFlag_Node0_action N_SetCargoFoundFlag_Node0_action --> E_SetCargoFoundFlag S_SetCargoFoundFlag --> N_SetCargoFoundFlag_Node0 N_SetCargoFoundFlag_Node1{"The system processes the successful
database response"}:::decision N_SetCargoFoundFlag_Node1_action["The cargo found indicator
WS-CARGO-FOUND is set to true to
indicate the cargo record exists"]:::main N_SetCargoFoundFlag_Node1 -- Yes --> N_SetCargoFoundFlag_Node1_action N_SetCargoFoundFlag_Node1_action --> E_SetCargoFoundFlag N_SetCargoFoundFlag_Node0 -- No --> N_SetCargoFoundFlag_Node1 N_SetCargoFoundFlag_Node1 -- No --> E_SetCargoFoundFlag
File: GCX126R.cbl
GIVEN:
A cargo lookup has been performed in the database
WHEN:
The database status code equals spaces
THEN:
The cargo-found indicator flag is set to true
File: GCX126R.cbl
GIVEN:
The database status code indicates successful cargo retrieval (status code is spaces)
WHEN:
The system processes the successful database response
THEN:
The cargo found indicator (WS-CARGO-FOUND) is set to true to indicate the cargo record exists
β Consolidated Acceptance Criteria
- The cargo waybill key for index does not equal the saved waybill index AND the saved waybill index is not equal to space → the cargo-not-waybill indicator 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_SetCargoNotWaybillFlag(["Start Step"])
E_SetCargoNotWaybillFlag(["End Step"])
N_SetCargoNotWaybillFlag_Node0{"The cargo waybill key for index
does not equal the saved waybill
index AND the saved waybill index is
not equal to space"}:::decision N_SetCargoNotWaybillFlag_Node0_action["The cargo-not-waybill indicator
flag is set to true"]:::main N_SetCargoNotWaybillFlag_Node0 -- Yes --> N_SetCargoNotWaybillFlag_Node0_action N_SetCargoNotWaybillFlag_Node0_action --> E_SetCargoNotWaybillFlag S_SetCargoNotWaybillFlag --> N_SetCargoNotWaybillFlag_Node0 N_SetCargoNotWaybillFlag_Node0 -- No --> E_SetCargoNotWaybillFlag
does not equal the saved waybill
index AND the saved waybill index is
not equal to space"}:::decision N_SetCargoNotWaybillFlag_Node0_action["The cargo-not-waybill indicator
flag is set to true"]:::main N_SetCargoNotWaybillFlag_Node0 -- Yes --> N_SetCargoNotWaybillFlag_Node0_action N_SetCargoNotWaybillFlag_Node0_action --> E_SetCargoNotWaybillFlag S_SetCargoNotWaybillFlag --> N_SetCargoNotWaybillFlag_Node0 N_SetCargoNotWaybillFlag_Node0 -- No --> E_SetCargoNotWaybillFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has been found in the database with cargo-found flag set to true
WHEN:
- The cargo waybill key for index does not equal the saved waybill index
- The saved waybill index is not equal to space
THEN:
The cargo-not-waybill indicator flag is set to true
β Consolidated Acceptance Criteria
- The cargo delete status field equals 'D' → the cargo-deleted indicator 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_SetCargoDeletedFlag(["Start Step"])
E_SetCargoDeletedFlag(["End Step"])
N_SetCargoDeletedFlag_Node0{"The cargo delete status field
equals D"}:::decision N_SetCargoDeletedFlag_Node0_action["The cargo-deleted indicator flag is
set to true"]:::main N_SetCargoDeletedFlag_Node0 -- Yes --> N_SetCargoDeletedFlag_Node0_action N_SetCargoDeletedFlag_Node0_action --> E_SetCargoDeletedFlag S_SetCargoDeletedFlag --> N_SetCargoDeletedFlag_Node0 N_SetCargoDeletedFlag_Node0 -- No --> E_SetCargoDeletedFlag
equals D"}:::decision N_SetCargoDeletedFlag_Node0_action["The cargo-deleted indicator flag is
set to true"]:::main N_SetCargoDeletedFlag_Node0 -- Yes --> N_SetCargoDeletedFlag_Node0_action N_SetCargoDeletedFlag_Node0_action --> E_SetCargoDeletedFlag S_SetCargoDeletedFlag --> N_SetCargoDeletedFlag_Node0 N_SetCargoDeletedFlag_Node0 -- No --> E_SetCargoDeletedFlag
File: GCX126R.cbl
GIVEN:
Cargo has been found in the database AND waybill validation has passed (either matched or saved index is blank)
WHEN:
The cargo delete status field equals 'D'
THEN:
The cargo-deleted indicator flag is set to true
β Consolidated Acceptance Criteria
- The cargo status indicates a return status condition → the cargo-returned indicator 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_SetCargoReturnedFlag(["Start Step"])
E_SetCargoReturnedFlag(["End Step"])
N_SetCargoReturnedFlag_Node0{"The cargo status indicates a return
status condition"}:::decision N_SetCargoReturnedFlag_Node0_action["The cargo-returned indicator flag
is set to true"]:::main N_SetCargoReturnedFlag_Node0 -- Yes --> N_SetCargoReturnedFlag_Node0_action N_SetCargoReturnedFlag_Node0_action --> E_SetCargoReturnedFlag S_SetCargoReturnedFlag --> N_SetCargoReturnedFlag_Node0 N_SetCargoReturnedFlag_Node0 -- No --> E_SetCargoReturnedFlag
status condition"}:::decision N_SetCargoReturnedFlag_Node0_action["The cargo-returned indicator flag
is set to true"]:::main N_SetCargoReturnedFlag_Node0 -- Yes --> N_SetCargoReturnedFlag_Node0_action N_SetCargoReturnedFlag_Node0_action --> E_SetCargoReturnedFlag S_SetCargoReturnedFlag --> N_SetCargoReturnedFlag_Node0 N_SetCargoReturnedFlag_Node0 -- No --> E_SetCargoReturnedFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has been found in the database AND waybill validation has passed AND cargo delete status is not 'D'
WHEN:
The cargo status indicates a return status condition
THEN:
The cargo-returned indicator flag is set to true
β Consolidated Acceptance Criteria
- The cargo release status field equals 'R' → the cargo-released indicator 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_SetCargoReleasedFlag(["Start Step"])
E_SetCargoReleasedFlag(["End Step"])
N_SetCargoReleasedFlag_Node0{"The cargo release status field
equals R"}:::decision N_SetCargoReleasedFlag_Node0_action["The cargo-released indicator flag
is set to true"]:::main N_SetCargoReleasedFlag_Node0 -- Yes --> N_SetCargoReleasedFlag_Node0_action N_SetCargoReleasedFlag_Node0_action --> E_SetCargoReleasedFlag S_SetCargoReleasedFlag --> N_SetCargoReleasedFlag_Node0 N_SetCargoReleasedFlag_Node0 -- No --> E_SetCargoReleasedFlag
equals R"}:::decision N_SetCargoReleasedFlag_Node0_action["The cargo-released indicator flag
is set to true"]:::main N_SetCargoReleasedFlag_Node0 -- Yes --> N_SetCargoReleasedFlag_Node0_action N_SetCargoReleasedFlag_Node0_action --> E_SetCargoReleasedFlag S_SetCargoReleasedFlag --> N_SetCargoReleasedFlag_Node0 N_SetCargoReleasedFlag_Node0 -- No --> E_SetCargoReleasedFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has been found in the database AND waybill validation has passed AND cargo delete status is not 'D'
WHEN:
The cargo release status field equals 'R'
THEN:
The cargo-released indicator flag is set to true
β Consolidated Acceptance Criteria
- The cargo train ID field is not equal to spaces → the cargo-on-a-train indicator 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_SetCargoOnATrainFlag(["Start Step"])
E_SetCargoOnATrainFlag(["End Step"])
N_SetCargoOnATrainFlag_Node0{"The cargo train ID field is not
equal to spaces"}:::decision N_SetCargoOnATrainFlag_Node0_action["The cargo-on-a-train indicator flag
is set to true"]:::main N_SetCargoOnATrainFlag_Node0 -- Yes --> N_SetCargoOnATrainFlag_Node0_action N_SetCargoOnATrainFlag_Node0_action --> E_SetCargoOnATrainFlag S_SetCargoOnATrainFlag --> N_SetCargoOnATrainFlag_Node0 N_SetCargoOnATrainFlag_Node0 -- No --> E_SetCargoOnATrainFlag
equal to spaces"}:::decision N_SetCargoOnATrainFlag_Node0_action["The cargo-on-a-train indicator flag
is set to true"]:::main N_SetCargoOnATrainFlag_Node0 -- Yes --> N_SetCargoOnATrainFlag_Node0_action N_SetCargoOnATrainFlag_Node0_action --> E_SetCargoOnATrainFlag S_SetCargoOnATrainFlag --> N_SetCargoOnATrainFlag_Node0 N_SetCargoOnATrainFlag_Node0 -- No --> E_SetCargoOnATrainFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has been found in the database AND waybill validation has passed AND cargo delete status is not 'D'
WHEN:
The cargo train ID field is not equal to spaces
THEN:
The cargo-on-a-train indicator flag is set to true
β Consolidated Acceptance Criteria
- The V9 segment notice reason code is evaluated → the system checks if the notice reason code equals RELEASED (V9-02-RELEASED)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoticeReasonRELEASED(["Start Step"])
E_NoticeReasonRELEASED(["End Step"])
N_NoticeReasonRELEASED_Node0{"The V9 segment notice reason code
is evaluated"}:::decision N_NoticeReasonRELEASED_Node0_action["The system checks if the notice
reason code equals RELEASED
V9-02-RELEASED"]:::main N_NoticeReasonRELEASED_Node0 -- Yes --> N_NoticeReasonRELEASED_Node0_action N_NoticeReasonRELEASED_Node0_action --> E_NoticeReasonRELEASED S_NoticeReasonRELEASED --> N_NoticeReasonRELEASED_Node0 N_NoticeReasonRELEASED_Node0 -- No --> E_NoticeReasonRELEASED
is evaluated"}:::decision N_NoticeReasonRELEASED_Node0_action["The system checks if the notice
reason code equals RELEASED
V9-02-RELEASED"]:::main N_NoticeReasonRELEASED_Node0 -- Yes --> N_NoticeReasonRELEASED_Node0_action N_NoticeReasonRELEASED_Node0_action --> E_NoticeReasonRELEASED S_NoticeReasonRELEASED --> N_NoticeReasonRELEASED_Node0 N_NoticeReasonRELEASED_Node0 -- No --> E_NoticeReasonRELEASED
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record is not found in the database
WHEN:
The V9 segment notice reason code is evaluated
THEN:
The system checks if the notice reason code equals RELEASED (V9-02-RELEASED)
β Consolidated Acceptance Criteria
- The system constructs the error message → the system sets MRLN-DTL-LINE(01) to 'UNKNOWN EDI 350 RELEASE FROM CBSA ' concatenated with the CCN from M10-07-CCN (first 25 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_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN(["Start Step"])
E_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN(["End Step"])
N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0{"The system constructs the error
message"}:::decision N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0_action["The system sets MRLN-DTL-LINE01 to
UNKNOWN EDI 350 RELEASE FROM CBSA
concatenated with the CCN from
M10-07-CCN first 25 characters"]:::exclusion N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0 -- Yes -->|Alternative| N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0_action N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0_action --> E_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN S_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN --> N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0 N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0 -- No --> E_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN
message"}:::decision N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0_action["The system sets MRLN-DTL-LINE01 to
UNKNOWN EDI 350 RELEASE FROM CBSA
concatenated with the CCN from
M10-07-CCN first 25 characters"]:::exclusion N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0 -- Yes -->|Alternative| N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0_action N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0_action --> E_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN S_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN --> N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0 N_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN_Node0 -- No --> E_SetReportLine1UNKNOWNEDI350RELEASEFROMCBSACCN
File: GCX126R.cbl
GIVEN:
The error report structure is initialized
WHEN:
The system constructs the error message
THEN:
The system sets MRLN-DTL-LINE(01) to 'UNKNOWN EDI 350 RELEASE FROM CBSA ' concatenated with the CCN from M10-07-CCN (first 25 characters)
β Consolidated Acceptance Criteria
- The system continues building the error message → the system sets MRLN-DTL-LINE(03) to 'THIS CCN WAS 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_SetReportLine3THISCCNWASNOTFOUND(["Start Step"])
E_SetReportLine3THISCCNWASNOTFOUND(["End Step"])
N_SetReportLine3THISCCNWASNOTFOUND_Node0{"The system continues building the
error message"}:::decision N_SetReportLine3THISCCNWASNOTFOUND_Node0_action["The system sets MRLN-DTL-LINE03 to
THIS CCN WAS NOT FOUND."]:::exclusion N_SetReportLine3THISCCNWASNOTFOUND_Node0 -- Yes -->|Alternative| N_SetReportLine3THISCCNWASNOTFOUND_Node0_action N_SetReportLine3THISCCNWASNOTFOUND_Node0_action --> E_SetReportLine3THISCCNWASNOTFOUND S_SetReportLine3THISCCNWASNOTFOUND --> N_SetReportLine3THISCCNWASNOTFOUND_Node0 N_SetReportLine3THISCCNWASNOTFOUND_Node0 -- No --> E_SetReportLine3THISCCNWASNOTFOUND
error message"}:::decision N_SetReportLine3THISCCNWASNOTFOUND_Node0_action["The system sets MRLN-DTL-LINE03 to
THIS CCN WAS NOT FOUND."]:::exclusion N_SetReportLine3THISCCNWASNOTFOUND_Node0 -- Yes -->|Alternative| N_SetReportLine3THISCCNWASNOTFOUND_Node0_action N_SetReportLine3THISCCNWASNOTFOUND_Node0_action --> E_SetReportLine3THISCCNWASNOTFOUND S_SetReportLine3THISCCNWASNOTFOUND --> N_SetReportLine3THISCCNWASNOTFOUND_Node0 N_SetReportLine3THISCCNWASNOTFOUND_Node0 -- No --> E_SetReportLine3THISCCNWASNOTFOUND
File: GCX126R.cbl
GIVEN:
The first line of the error message has been set
WHEN:
The system continues building the error message
THEN:
The system sets MRLN-DTL-LINE(03) to 'THIS CCN WAS NOT FOUND.'
β Consolidated Acceptance Criteria
- The system adds release details to the error message → the system sets MRLN-DTL-LINE(04) by concatenating 'RELEASE NUMBER: ', X4-01-CBSA-REL-REF-ID (first 15 characters), ' DONE BY PORT ', and P4-01-PORT-CDE (first 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_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode(["Start Step"])
E_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode(["End Step"])
N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0{"The system adds release details to
the error message"}:::decision N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0_action["The system sets MRLN-DTL-LINE04 by
concatenating RELEASE NUMBER: ,
X4-01-CBSA-REL-REF-ID first 15
characters, DONE BY PORT , and
P4-01-PORT-CDE first 4 characters"]:::exclusion N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0 -- Yes -->|Alternative| N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0_action N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0_action --> E_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode S_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode --> N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0 N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0 -- No --> E_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode
the error message"}:::decision N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0_action["The system sets MRLN-DTL-LINE04 by
concatenating RELEASE NUMBER: ,
X4-01-CBSA-REL-REF-ID first 15
characters, DONE BY PORT , and
P4-01-PORT-CDE first 4 characters"]:::exclusion N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0 -- Yes -->|Alternative| N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0_action N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0_action --> E_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode S_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode --> N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0 N_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode_Node0 -- No --> E_SetReportLine4RELEASENUMBERReleaseReferenceDONEBYPORTPortCode
File: GCX126R.cbl
GIVEN:
The explanatory text has been added to line 3
WHEN:
The system adds release details to the error message
THEN:
The system sets MRLN-DTL-LINE(04) by concatenating 'RELEASE NUMBER: ', X4-01-CBSA-REL-REF-ID (first 15 characters), ' DONE BY PORT ', and P4-01-PORT-CDE (first 4 characters)
β Consolidated Acceptance Criteria
- The system finalizes the error report structure → the system sets MRLN-LINE to 5 indicating the total number of 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_SetReportLineCount5(["Start Step"])
E_SetReportLineCount5(["End Step"])
N_SetReportLineCount5_Node0{"The system finalizes the error
report structure"}:::decision N_SetReportLineCount5_Node0_action["The system sets MRLN-LINE to 5
indicating the total number of
report lines"]:::exclusion N_SetReportLineCount5_Node0 -- Yes -->|Alternative| N_SetReportLineCount5_Node0_action N_SetReportLineCount5_Node0_action --> E_SetReportLineCount5 S_SetReportLineCount5 --> N_SetReportLineCount5_Node0 N_SetReportLineCount5_Node0 -- No --> E_SetReportLineCount5
report structure"}:::decision N_SetReportLineCount5_Node0_action["The system sets MRLN-LINE to 5
indicating the total number of
report lines"]:::exclusion N_SetReportLineCount5_Node0 -- Yes -->|Alternative| N_SetReportLineCount5_Node0_action N_SetReportLineCount5_Node0_action --> E_SetReportLineCount5 S_SetReportLineCount5 --> N_SetReportLineCount5_Node0 N_SetReportLineCount5_Node0 -- No --> E_SetReportLineCount5
File: GCX126R.cbl
GIVEN:
All error message lines have been populated
WHEN:
The system finalizes the error report structure
THEN:
The system sets MRLN-LINE to 5 indicating the total number of report lines
β Consolidated Acceptance Criteria
- The system classifies the error report type → the system sets the report type indicator to 88-Z110-MRLN-TYPE-IS-UNKNOWN (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_SetReportTypeUNKNOWN(["Start Step"])
E_SetReportTypeUNKNOWN(["End Step"])
N_SetReportTypeUNKNOWN_Node0{"The system classifies the error
report type"}:::decision N_SetReportTypeUNKNOWN_Node0_action["The system sets the report type
indicator to
88-Z110-MRLN-TYPE-IS-UNKNOWN TRUE"]:::exclusion N_SetReportTypeUNKNOWN_Node0 -- Yes -->|Alternative| N_SetReportTypeUNKNOWN_Node0_action N_SetReportTypeUNKNOWN_Node0_action --> E_SetReportTypeUNKNOWN S_SetReportTypeUNKNOWN --> N_SetReportTypeUNKNOWN_Node0 N_SetReportTypeUNKNOWN_Node0 -- No --> E_SetReportTypeUNKNOWN
report type"}:::decision N_SetReportTypeUNKNOWN_Node0_action["The system sets the report type
indicator to
88-Z110-MRLN-TYPE-IS-UNKNOWN TRUE"]:::exclusion N_SetReportTypeUNKNOWN_Node0 -- Yes -->|Alternative| N_SetReportTypeUNKNOWN_Node0_action N_SetReportTypeUNKNOWN_Node0_action --> E_SetReportTypeUNKNOWN S_SetReportTypeUNKNOWN --> N_SetReportTypeUNKNOWN_Node0 N_SetReportTypeUNKNOWN_Node0 -- No --> E_SetReportTypeUNKNOWN
File: GCX126R.cbl
GIVEN:
The report line count has been set
WHEN:
The system classifies the error report type
THEN:
The system sets the report type indicator to 88-Z110-MRLN-TYPE-IS-UNKNOWN (TRUE)
β Consolidated Acceptance Criteria
- The system prepares to send the email notification → the system sets EMI-DESTINATION-FILENAME to 'UNKNOWN', clears EMI-TO-USERCODE to spaces, and sets EMI-TO-USERCODES(01) 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_RouteEmailtoOM01247(["Start Step"])
E_RouteEmailtoOM01247(["End Step"])
N_RouteEmailtoOM01247_Node0{"The system prepares to send the
email notification"}:::decision N_RouteEmailtoOM01247_Node0_action["The system sets
EMI-DESTINATION-FILENAME to UNKNOWN
, clears EMI-TO-USERCODE to spaces,
and sets EMI-TO-USERCODES01 to
OM01247"]:::main N_RouteEmailtoOM01247_Node0 -- Yes --> N_RouteEmailtoOM01247_Node0_action N_RouteEmailtoOM01247_Node0_action --> E_RouteEmailtoOM01247 S_RouteEmailtoOM01247 --> N_RouteEmailtoOM01247_Node0 N_RouteEmailtoOM01247_Node0 -- No --> E_RouteEmailtoOM01247
email notification"}:::decision N_RouteEmailtoOM01247_Node0_action["The system sets
EMI-DESTINATION-FILENAME to UNKNOWN
, clears EMI-TO-USERCODE to spaces,
and sets EMI-TO-USERCODES01 to
OM01247"]:::main N_RouteEmailtoOM01247_Node0 -- Yes --> N_RouteEmailtoOM01247_Node0_action N_RouteEmailtoOM01247_Node0_action --> E_RouteEmailtoOM01247 S_RouteEmailtoOM01247 --> N_RouteEmailtoOM01247_Node0 N_RouteEmailtoOM01247_Node0 -- No --> E_RouteEmailtoOM01247
File: GCX126R.cbl
GIVEN:
The error report type has been set to UNKNOWN
WHEN:
The system prepares to send the email notification
THEN:
The system sets EMI-DESTINATION-FILENAME to 'UNKNOWN', clears EMI-TO-USERCODE to spaces, and sets EMI-TO-USERCODES(01) to 'OM01247'
β Consolidated Acceptance Criteria
- The system executes the notification process → the system performs Z115-CALL-EMCSEND to send the email notification with the error report details
- The notification is ready to be dispatched → the system performs the email preparation and sending routine (Z110-PREP-EMCSEND)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendEmailNotification(["Start Step"])
E_SendEmailNotification(["End Step"])
N_SendEmailNotification_Node0{"The system executes the
notification process"}:::decision N_SendEmailNotification_Node0_action["The system performs
Z115-CALL-EMCSEND to send the email
notification with the error report
details"]:::main N_SendEmailNotification_Node0 -- Yes --> N_SendEmailNotification_Node0_action N_SendEmailNotification_Node0_action --> E_SendEmailNotification S_SendEmailNotification --> N_SendEmailNotification_Node0 N_SendEmailNotification_Node1{"The notification is ready to be
dispatched"}:::decision N_SendEmailNotification_Node1_action["The system performs the email
preparation and sending routine
Z110-PREP-EMCSEND"]:::main N_SendEmailNotification_Node1 -- Yes --> N_SendEmailNotification_Node1_action N_SendEmailNotification_Node1_action --> E_SendEmailNotification N_SendEmailNotification_Node0 -- No --> N_SendEmailNotification_Node1 N_SendEmailNotification_Node1 -- No --> E_SendEmailNotification
notification process"}:::decision N_SendEmailNotification_Node0_action["The system performs
Z115-CALL-EMCSEND to send the email
notification with the error report
details"]:::main N_SendEmailNotification_Node0 -- Yes --> N_SendEmailNotification_Node0_action N_SendEmailNotification_Node0_action --> E_SendEmailNotification S_SendEmailNotification --> N_SendEmailNotification_Node0 N_SendEmailNotification_Node1{"The notification is ready to be
dispatched"}:::decision N_SendEmailNotification_Node1_action["The system performs the email
preparation and sending routine
Z110-PREP-EMCSEND"]:::main N_SendEmailNotification_Node1 -- Yes --> N_SendEmailNotification_Node1_action N_SendEmailNotification_Node1_action --> E_SendEmailNotification N_SendEmailNotification_Node0 -- No --> N_SendEmailNotification_Node1 N_SendEmailNotification_Node1 -- No --> E_SendEmailNotification
File: GCX126R.cbl
GIVEN:
The email routing has been configured to OM01247 with destination UNKNOWN
WHEN:
The system executes the notification process
THEN:
The system performs Z115-CALL-EMCSEND to send the email notification with the error report details
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification has been fully prepared with subject, message lines, recipient, and email type
WHEN:
The notification is ready to be dispatched
THEN:
- The system performs the email preparation
- Sending routine (z110-prep-emcsend)
β Consolidated Acceptance Criteria
- If the cargo not found condition and the V9-02-DECON notice reason code is true → the system prepares an error report with subject line 'UNKNOWN EDI 350 DCON NOTICE' followed by the CCN from M10-07-CCN field (first 25 characters), sets detail line 3 to 'THIS CCN WAS NOT FOUND.', sets detail line 4 with house bill close number from X4-01-CBSA-REL-REF-ID (first 25 characters) and port code from P4-01-PORT-CDE (first 4 characters) in format 'HOUSE BILL CLOSE NUMBER [value] DONE BY PORT [value]', sets total lines to 5, marks message type as unknown, routes the notification to user OM01247 with filename UNKNOWN, and invokes the email 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_CheckNoticeReasonisDECON(["Start Step"])
E_CheckNoticeReasonisDECON(["End Step"])
N_CheckNoticeReasonisDECON_Node0{"The system evaluates the cargo not
found condition and the V9-02-DECON
notice reason code is true"}:::decision N_CheckNoticeReasonisDECON_Node0_action["The system prepares an error report
with subject line UNKNOWN EDI 350
DCON NOTICE followed by the CCN from
M10-07-CCN field first 25
characters, sets detail line 3 to
THIS CCN WAS NOT FOUND. , sets
detail line 4 with house bill close
number from X4-01-CBSA-REL-REF-ID
first 25 characters and port code
from P4-01-PORT-CDE first 4
characters in format HOUSE BILL
CLOSE NUMBER value DONE BY PORT
value , sets total lines to 5, marks
message type as unknown, routes the
notification to user OM01247 with
filename UNKNOWN, and invokes the
email notification process"]:::main N_CheckNoticeReasonisDECON_Node0 -- Yes --> N_CheckNoticeReasonisDECON_Node0_action N_CheckNoticeReasonisDECON_Node0_action --> E_CheckNoticeReasonisDECON S_CheckNoticeReasonisDECON --> N_CheckNoticeReasonisDECON_Node0 N_CheckNoticeReasonisDECON_Node0 -- No --> E_CheckNoticeReasonisDECON
found condition and the V9-02-DECON
notice reason code is true"}:::decision N_CheckNoticeReasonisDECON_Node0_action["The system prepares an error report
with subject line UNKNOWN EDI 350
DCON NOTICE followed by the CCN from
M10-07-CCN field first 25
characters, sets detail line 3 to
THIS CCN WAS NOT FOUND. , sets
detail line 4 with house bill close
number from X4-01-CBSA-REL-REF-ID
first 25 characters and port code
from P4-01-PORT-CDE first 4
characters in format HOUSE BILL
CLOSE NUMBER value DONE BY PORT
value , sets total lines to 5, marks
message type as unknown, routes the
notification to user OM01247 with
filename UNKNOWN, and invokes the
email notification process"]:::main N_CheckNoticeReasonisDECON_Node0 -- Yes --> N_CheckNoticeReasonisDECON_Node0_action N_CheckNoticeReasonisDECON_Node0_action --> E_CheckNoticeReasonisDECON S_CheckNoticeReasonisDECON --> N_CheckNoticeReasonisDECON_Node0 N_CheckNoticeReasonisDECON_Node0 -- No --> E_CheckNoticeReasonisDECON
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message has been received and parsed with V9 segment containing notice reason code indicating DECON, and the cargo lookup using the CCN from M10 segment has returned cargo not found status
WHEN:
- The system evaluates the cargo not found condition
- The v9-02-decon notice reason code is true
THEN:
The system prepares an error report with subject line 'UNKNOWN EDI 350 DCON NOTICE' followed by the CCN from M10-07-CCN field (first 25 characters), sets detail line 3 to 'THIS CCN WAS NOT FOUND.', sets detail line 4 with house bill close number from X4-01-CBSA-REL-REF-ID (first 25 characters) and port code from P4-01-PORT-CDE (first 4 characters) in format 'HOUSE BILL CLOSE NUMBER [value] DONE BY PORT [value]', sets total lines to 5, marks message type as unknown, routes the notification to user OM01247 with filename UNKNOWN, and invokes the email notification process
β Consolidated Acceptance Criteria
- The system begins preparing the error notification → the system clears MRLN-DTL-LINE array element 1, constructs a string 'UNKNOWN EDI 350 DCON NOTICE ' concatenated with M10-07-CCN field positions 1 through 25 and stores it in MRLN-DTL-LINE element 1, and sets MRLN-DTL-LINE element 3 to the literal value 'THIS CCN WAS NOT FOUND.'
- The system finalizes the error report structure → the system sets MRLN-LINE to value 5 indicating 5 detail lines are present and sets the 88-level condition 88-Z110-MRLN-TYPE-IS-UNKNOWN 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_PrepareErrorReportSubjectIncludeCCNMessage(["Start Step"])
E_PrepareErrorReportSubjectIncludeCCNMessage(["End Step"])
N_PrepareErrorReportSubjectIncludeCCNMessage_Node0{"The system begins preparing the
error notification"}:::decision N_PrepareErrorReportSubjectIncludeCCNMessage_Node0_action["The system clears MRLN-DTL-LINE
array element 1, constructs a string
UNKNOWN EDI 350 DCON NOTICE
concatenated with M10-07-CCN field
positions 1 through 25 and stores it
in MRLN-DTL-LINE element 1, and sets
MRLN-DTL-LINE element 3 to the
literal value THIS CCN WAS NOT
FOUND."]:::exclusion N_PrepareErrorReportSubjectIncludeCCNMessage_Node0 -- Yes -->|Alternative| N_PrepareErrorReportSubjectIncludeCCNMessage_Node0_action N_PrepareErrorReportSubjectIncludeCCNMessage_Node0_action --> E_PrepareErrorReportSubjectIncludeCCNMessage S_PrepareErrorReportSubjectIncludeCCNMessage --> N_PrepareErrorReportSubjectIncludeCCNMessage_Node0 N_PrepareErrorReportSubjectIncludeCCNMessage_Node1{"The system finalizes the error
report structure"}:::decision N_PrepareErrorReportSubjectIncludeCCNMessage_Node1_action["The system sets MRLN-LINE to value
5 indicating 5 detail lines are
present and sets the 88-level
condition
88-Z110-MRLN-TYPE-IS-UNKNOWN to true"]:::exclusion N_PrepareErrorReportSubjectIncludeCCNMessage_Node1 -- Yes -->|Alternative| N_PrepareErrorReportSubjectIncludeCCNMessage_Node1_action N_PrepareErrorReportSubjectIncludeCCNMessage_Node1_action --> E_PrepareErrorReportSubjectIncludeCCNMessage N_PrepareErrorReportSubjectIncludeCCNMessage_Node0 -- No --> N_PrepareErrorReportSubjectIncludeCCNMessage_Node1 N_PrepareErrorReportSubjectIncludeCCNMessage_Node1 -- No --> E_PrepareErrorReportSubjectIncludeCCNMessage
error notification"}:::decision N_PrepareErrorReportSubjectIncludeCCNMessage_Node0_action["The system clears MRLN-DTL-LINE
array element 1, constructs a string
UNKNOWN EDI 350 DCON NOTICE
concatenated with M10-07-CCN field
positions 1 through 25 and stores it
in MRLN-DTL-LINE element 1, and sets
MRLN-DTL-LINE element 3 to the
literal value THIS CCN WAS NOT
FOUND."]:::exclusion N_PrepareErrorReportSubjectIncludeCCNMessage_Node0 -- Yes -->|Alternative| N_PrepareErrorReportSubjectIncludeCCNMessage_Node0_action N_PrepareErrorReportSubjectIncludeCCNMessage_Node0_action --> E_PrepareErrorReportSubjectIncludeCCNMessage S_PrepareErrorReportSubjectIncludeCCNMessage --> N_PrepareErrorReportSubjectIncludeCCNMessage_Node0 N_PrepareErrorReportSubjectIncludeCCNMessage_Node1{"The system finalizes the error
report structure"}:::decision N_PrepareErrorReportSubjectIncludeCCNMessage_Node1_action["The system sets MRLN-LINE to value
5 indicating 5 detail lines are
present and sets the 88-level
condition
88-Z110-MRLN-TYPE-IS-UNKNOWN to true"]:::exclusion N_PrepareErrorReportSubjectIncludeCCNMessage_Node1 -- Yes -->|Alternative| N_PrepareErrorReportSubjectIncludeCCNMessage_Node1_action N_PrepareErrorReportSubjectIncludeCCNMessage_Node1_action --> E_PrepareErrorReportSubjectIncludeCCNMessage N_PrepareErrorReportSubjectIncludeCCNMessage_Node0 -- No --> N_PrepareErrorReportSubjectIncludeCCNMessage_Node1 N_PrepareErrorReportSubjectIncludeCCNMessage_Node1 -- No --> E_PrepareErrorReportSubjectIncludeCCNMessage
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo not found condition exists and V9-02-DECON notice reason code is true
WHEN:
The system begins preparing the error notification
THEN:
- The system clears mrln-dtl-line array element 1, constructs a string 'unknown edi 350 dcon notice ' concatenated with m10-07-ccn field positions 1 through 25
- Stores it in mrln-dtl-line element 1, and sets mrln-dtl-line element 3 to the literal value 'this ccn was not found.'
File: GCX126R.cbl
GIVEN:
All detail lines for the deconsolidation error report have been populated
WHEN:
The system finalizes the error report structure
THEN:
- The system sets mrln-line to value 5 indicating 5 detail lines are present
- Sets the 88-level condition 88-z110-mrln-type-is-unknown to true
β Consolidated Acceptance Criteria
- The system adds detailed information to the error report → the system constructs a string starting with 'HOUSE BILL CLOSE NUMBER' followed by X4-01-CBSA-REL-REF-ID field positions 1 through 25, then ' DONE BY PORT ' followed by P4-01-PORT-CDE field positions 1 through 4, and stores this complete string in MRLN-DTL-LINE array element 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_AddHouseBillCloseInformationHouseBillCloseNumberPortCode(["Start Step"])
E_AddHouseBillCloseInformationHouseBillCloseNumberPortCode(["End Step"])
N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0{"The system adds detailed
information to the error report"}:::decision N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0_action["The system constructs a string
starting with HOUSE BILL CLOSE
NUMBER followed by
X4-01-CBSA-REL-REF-ID field
positions 1 through 25, then DONE BY
PORT followed by P4-01-PORT-CDE
field positions 1 through 4, and
stores this complete string in
MRLN-DTL-LINE array element 4"]:::exclusion N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0 -- Yes -->|Alternative| N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0_action N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0_action --> E_AddHouseBillCloseInformationHouseBillCloseNumberPortCode S_AddHouseBillCloseInformationHouseBillCloseNumberPortCode --> N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0 N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0 -- No --> E_AddHouseBillCloseInformationHouseBillCloseNumberPortCode
information to the error report"}:::decision N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0_action["The system constructs a string
starting with HOUSE BILL CLOSE
NUMBER followed by
X4-01-CBSA-REL-REF-ID field
positions 1 through 25, then DONE BY
PORT followed by P4-01-PORT-CDE
field positions 1 through 4, and
stores this complete string in
MRLN-DTL-LINE array element 4"]:::exclusion N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0 -- Yes -->|Alternative| N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0_action N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0_action --> E_AddHouseBillCloseInformationHouseBillCloseNumberPortCode S_AddHouseBillCloseInformationHouseBillCloseNumberPortCode --> N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0 N_AddHouseBillCloseInformationHouseBillCloseNumberPortCode_Node0 -- No --> E_AddHouseBillCloseInformationHouseBillCloseNumberPortCode
File: GCX126R.cbl
GIVEN:
The error report header has been prepared with subject and primary message
WHEN:
The system adds detailed information to the error report
THEN:
The system constructs a string starting with 'HOUSE BILL CLOSE NUMBER' followed by X4-01-CBSA-REL-REF-ID field positions 1 through 25, then ' DONE BY PORT ' followed by P4-01-PORT-CDE field positions 1 through 4, and stores this complete string in MRLN-DTL-LINE array element 4
β Consolidated Acceptance Criteria
- The system determines the routing for the error notification → the system sets EMI-DESTINATION-FILENAME to 'UNKNOWN', clears EMI-TO-USERCODE to spaces, and sets EMI-TO-USERCODES array element 1 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_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN(["Start Step"])
E_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN(["End Step"])
N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0{"The system determines the routing
for the error notification"}:::decision N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0_action["The system sets
EMI-DESTINATION-FILENAME to UNKNOWN
, clears EMI-TO-USERCODE to spaces,
and sets EMI-TO-USERCODES array
element 1 to OM01247"]:::exclusion N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0 -- Yes -->|Alternative| N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0_action N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0_action --> E_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN S_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN --> N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0 N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0 -- No --> E_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN
for the error notification"}:::decision N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0_action["The system sets
EMI-DESTINATION-FILENAME to UNKNOWN
, clears EMI-TO-USERCODE to spaces,
and sets EMI-TO-USERCODES array
element 1 to OM01247"]:::exclusion N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0 -- Yes -->|Alternative| N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0_action N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0_action --> E_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN S_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN --> N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0 N_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN_Node0 -- No --> E_SetEmailRoutingRoutetoOM01247FilenameUNKNOWN
File: GCX126R.cbl
GIVEN:
The error report has been fully prepared with all detail lines and message type set to unknown
WHEN:
The system determines the routing for the error notification
THEN:
The system sets EMI-DESTINATION-FILENAME to 'UNKNOWN', clears EMI-TO-USERCODE to spaces, and sets EMI-TO-USERCODES array element 1 to 'OM01247'
β Consolidated Acceptance Criteria
- The system is ready to send the notification → the system invokes the Z115-CALL-EMCSEND procedure which calls the EMCSEND2 program passing the from usercode, destination filename, to usercode, copy usercode, subject, keywords, report content, return status flag, segment numbers, and item type 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_SendErrorEmailNotificationviaEMCSEND2(["Start Step"])
E_SendErrorEmailNotificationviaEMCSEND2(["End Step"])
N_SendErrorEmailNotificationviaEMCSEND2_Node0{"The system is ready to send the
notification"}:::decision N_SendErrorEmailNotificationviaEMCSEND2_Node0_action["The system invokes the
Z115-CALL-EMCSEND procedure which
calls the EMCSEND2 program passing
the from usercode, destination
filename, to usercode, copy
usercode, subject, keywords, report
content, return status flag, segment
numbers, and item type parameters"]:::main N_SendErrorEmailNotificationviaEMCSEND2_Node0 -- Yes --> N_SendErrorEmailNotificationviaEMCSEND2_Node0_action N_SendErrorEmailNotificationviaEMCSEND2_Node0_action --> E_SendErrorEmailNotificationviaEMCSEND2 S_SendErrorEmailNotificationviaEMCSEND2 --> N_SendErrorEmailNotificationviaEMCSEND2_Node0 N_SendErrorEmailNotificationviaEMCSEND2_Node0 -- No --> E_SendErrorEmailNotificationviaEMCSEND2
notification"}:::decision N_SendErrorEmailNotificationviaEMCSEND2_Node0_action["The system invokes the
Z115-CALL-EMCSEND procedure which
calls the EMCSEND2 program passing
the from usercode, destination
filename, to usercode, copy
usercode, subject, keywords, report
content, return status flag, segment
numbers, and item type parameters"]:::main N_SendErrorEmailNotificationviaEMCSEND2_Node0 -- Yes --> N_SendErrorEmailNotificationviaEMCSEND2_Node0_action N_SendErrorEmailNotificationviaEMCSEND2_Node0_action --> E_SendErrorEmailNotificationviaEMCSEND2 S_SendErrorEmailNotificationviaEMCSEND2 --> N_SendErrorEmailNotificationviaEMCSEND2_Node0 N_SendErrorEmailNotificationviaEMCSEND2_Node0 -- No --> E_SendErrorEmailNotificationviaEMCSEND2
File: GCX126R.cbl
GIVEN:
The error report is complete with subject line, detail lines, message type set to unknown, and routing configured to user OM01247 with filename UNKNOWN
WHEN:
The system is ready to send the notification
THEN:
The system invokes the Z115-CALL-EMCSEND procedure which calls the EMCSEND2 program passing the from usercode, destination filename, to usercode, copy usercode, subject, keywords, report content, return status flag, segment numbers, and item type parameters
β Consolidated Acceptance Criteria
- The V9 notice reason code is NOT 'RELEASED' AND NOT 'DECON' → the system prepares an error email notification with subject 'UNKNOWN EDI 350 ENTRY FROM CBSA' followed by the CCN, message line 1 contains 'UNKNOWN EDI 350 ENTRY FROM CBSA' with the CCN, message line 3 contains 'THIS CCN WAS NOT FOUND.', message line 4 contains 'NOTICE DOC TYPE: ' followed by the notice document type code, ' WITH REASON CODE ' followed by the first 4 characters of the notice reason code, sets the line count to 5, sets the recipient to 'OM01247', sets the email type indicator to 'UNKNOWN', and sends 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_HandleUnknownCargoEntry(["Start Step"])
E_HandleUnknownCargoEntry(["End Step"])
N_HandleUnknownCargoEntry_Node0{"The V9 notice reason code is NOT
RELEASED AND NOT DECON"}:::decision N_HandleUnknownCargoEntry_Node0_action["The system prepares an error email
notification with subject UNKNOWN
EDI 350 ENTRY FROM CBSA followed by
the CCN, message line 1 contains
UNKNOWN EDI 350 ENTRY FROM CBSA with
the CCN, message line 3 contains
THIS CCN WAS NOT FOUND. , message
line 4 contains NOTICE DOC TYPE:
followed by the notice document type
code, WITH REASON CODE followed by
the first 4 characters of the notice
reason code, sets the line count to
5, sets the recipient to OM01247 ,
sets the email type indicator to
UNKNOWN , and sends the email
notification"]:::main N_HandleUnknownCargoEntry_Node0 -- Yes --> N_HandleUnknownCargoEntry_Node0_action N_HandleUnknownCargoEntry_Node0_action --> E_HandleUnknownCargoEntry S_HandleUnknownCargoEntry --> N_HandleUnknownCargoEntry_Node0 N_HandleUnknownCargoEntry_Node0 -- No --> E_HandleUnknownCargoEntry
RELEASED AND NOT DECON"}:::decision N_HandleUnknownCargoEntry_Node0_action["The system prepares an error email
notification with subject UNKNOWN
EDI 350 ENTRY FROM CBSA followed by
the CCN, message line 1 contains
UNKNOWN EDI 350 ENTRY FROM CBSA with
the CCN, message line 3 contains
THIS CCN WAS NOT FOUND. , message
line 4 contains NOTICE DOC TYPE:
followed by the notice document type
code, WITH REASON CODE followed by
the first 4 characters of the notice
reason code, sets the line count to
5, sets the recipient to OM01247 ,
sets the email type indicator to
UNKNOWN , and sends the email
notification"]:::main N_HandleUnknownCargoEntry_Node0 -- Yes --> N_HandleUnknownCargoEntry_Node0_action N_HandleUnknownCargoEntry_Node0_action --> E_HandleUnknownCargoEntry S_HandleUnknownCargoEntry --> N_HandleUnknownCargoEntry_Node0 N_HandleUnknownCargoEntry_Node0 -- No --> E_HandleUnknownCargoEntry
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message has been processed with M10 segment containing CCN (Cargo Control Number), V9 segment containing notice document type code and notice reason code, and the cargo lookup returned 'cargo not found' status
WHEN:
The V9 notice reason code is NOT 'RELEASED' AND NOT 'DECON'
THEN:
The system prepares an error email notification with subject 'UNKNOWN EDI 350 ENTRY FROM CBSA' followed by the CCN, message line 1 contains 'UNKNOWN EDI 350 ENTRY FROM CBSA' with the CCN, message line 3 contains 'THIS CCN WAS NOT FOUND.', message line 4 contains 'NOTICE DOC TYPE: ' followed by the notice document type code, ' WITH REASON CODE ' followed by the first 4 characters of the notice reason code, sets the line count to 5, sets the recipient to 'OM01247', sets the email type indicator to 'UNKNOWN', and sends the email notification
β Consolidated Acceptance Criteria
- The V9 notice reason code indicates 'RELEASED' → the system skips the unknown entry notification process and exits without sending the generic unknown cargo entry email
- The V9 notice reason code indicates 'DECON' (deconsolidation) → the system skips the unknown entry notification process and exits without sending the generic unknown cargo entry email
- If the V9 segment notice reason code → if notice reason code indicates RELEASED then prepare release error notification OR if notice reason code indicates DECON then prepare deconsolidation error notification OR if notice reason code is any other value then prepare general entry 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_CheckNoticeReasonCode(["Start Step"])
E_CheckNoticeReasonCode(["End Step"])
N_CheckNoticeReasonCode_Node0{"The V9 notice reason code indicates
RELEASED"}:::decision N_CheckNoticeReasonCode_Node0_action["The system skips the unknown entry
notification process and exits
without sending the generic unknown
cargo entry email"]:::main N_CheckNoticeReasonCode_Node0 -- Yes --> N_CheckNoticeReasonCode_Node0_action N_CheckNoticeReasonCode_Node0_action --> E_CheckNoticeReasonCode S_CheckNoticeReasonCode --> N_CheckNoticeReasonCode_Node0 N_CheckNoticeReasonCode_Node1{"The V9 notice reason code indicates
DECON deconsolidation"}:::decision N_CheckNoticeReasonCode_Node1_action["The system skips the unknown entry
notification process and exits
without sending the generic unknown
cargo entry email"]:::main N_CheckNoticeReasonCode_Node1 -- Yes --> N_CheckNoticeReasonCode_Node1_action N_CheckNoticeReasonCode_Node1_action --> E_CheckNoticeReasonCode N_CheckNoticeReasonCode_Node0 -- No --> N_CheckNoticeReasonCode_Node1 N_CheckNoticeReasonCode_Node2{"The system evaluates the V9 segment
notice reason code"}:::decision N_CheckNoticeReasonCode_Node2_action["If notice reason code indicates
RELEASED then prepare release error
notification OR if notice reason
code indicates DECON then prepare
deconsolidation error notification
OR if notice reason code is any
other value then prepare general
entry error notification"]:::main N_CheckNoticeReasonCode_Node2 -- Yes --> N_CheckNoticeReasonCode_Node2_action N_CheckNoticeReasonCode_Node2_action --> E_CheckNoticeReasonCode N_CheckNoticeReasonCode_Node1 -- No --> N_CheckNoticeReasonCode_Node2 N_CheckNoticeReasonCode_Node2 -- No --> E_CheckNoticeReasonCode
RELEASED"}:::decision N_CheckNoticeReasonCode_Node0_action["The system skips the unknown entry
notification process and exits
without sending the generic unknown
cargo entry email"]:::main N_CheckNoticeReasonCode_Node0 -- Yes --> N_CheckNoticeReasonCode_Node0_action N_CheckNoticeReasonCode_Node0_action --> E_CheckNoticeReasonCode S_CheckNoticeReasonCode --> N_CheckNoticeReasonCode_Node0 N_CheckNoticeReasonCode_Node1{"The V9 notice reason code indicates
DECON deconsolidation"}:::decision N_CheckNoticeReasonCode_Node1_action["The system skips the unknown entry
notification process and exits
without sending the generic unknown
cargo entry email"]:::main N_CheckNoticeReasonCode_Node1 -- Yes --> N_CheckNoticeReasonCode_Node1_action N_CheckNoticeReasonCode_Node1_action --> E_CheckNoticeReasonCode N_CheckNoticeReasonCode_Node0 -- No --> N_CheckNoticeReasonCode_Node1 N_CheckNoticeReasonCode_Node2{"The system evaluates the V9 segment
notice reason code"}:::decision N_CheckNoticeReasonCode_Node2_action["If notice reason code indicates
RELEASED then prepare release error
notification OR if notice reason
code indicates DECON then prepare
deconsolidation error notification
OR if notice reason code is any
other value then prepare general
entry error notification"]:::main N_CheckNoticeReasonCode_Node2 -- Yes --> N_CheckNoticeReasonCode_Node2_action N_CheckNoticeReasonCode_Node2_action --> E_CheckNoticeReasonCode N_CheckNoticeReasonCode_Node1 -- No --> N_CheckNoticeReasonCode_Node2 N_CheckNoticeReasonCode_Node2 -- No --> E_CheckNoticeReasonCode
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message has been processed with cargo not found status and V9 segment containing notice reason code
WHEN:
The V9 notice reason code indicates 'RELEASED'
THEN:
- The system skips the unknown entry notification process
- Exits without sending the generic unknown cargo entry email
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message has been processed with cargo not found status and V9 segment containing notice reason code
WHEN:
The V9 notice reason code indicates 'DECON' (deconsolidation)
THEN:
- The system skips the unknown entry notification process
- Exits without sending the generic unknown cargo entry email
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message has been received AND the CCN does not exist in the cargo database
WHEN:
The system evaluates the V9 segment notice reason code
THEN:
If notice reason code indicates RELEASED then prepare release error notification OR if notice reason code indicates DECON then prepare deconsolidation error notification OR if notice reason code is any other value then prepare general entry error notification
β Consolidated Acceptance Criteria
- The email subject is being prepared → the system sets the email subject to 'UNKNOWN EDI 350 ENTRY FROM CBSA ' concatenated with the 25-character CCN from M10-07-CCN 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_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA(["Start Step"])
E_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA(["End Step"])
N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0{"The email subject is being prepared"}:::decision
N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0_action["The system sets the email subject
to UNKNOWN EDI 350 ENTRY FROM CBSA
concatenated with the 25-character
CCN from M10-07-CCN field"]:::main N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0 -- Yes --> N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0_action N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0_action --> E_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA S_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA --> N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0 N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0 -- No --> E_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA
to UNKNOWN EDI 350 ENTRY FROM CBSA
concatenated with the 25-character
CCN from M10-07-CCN field"]:::main N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0 -- Yes --> N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0_action N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0_action --> E_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA S_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA --> N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0 N_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA_Node0 -- No --> E_SetSubjectUNKNOWNEDI350ENTRYFROMCBSA
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification needs to be sent with CCN from M10 segment
WHEN:
The email subject is being prepared
THEN:
The system sets the email subject to 'UNKNOWN EDI 350 ENTRY FROM CBSA ' concatenated with the 25-character CCN from M10-07-CCN field
β Consolidated Acceptance Criteria
- The email message body is being constructed → the system sets message detail line 1 to 'UNKNOWN EDI 350 ENTRY FROM CBSA ' concatenated with the first 25 characters of M10-07-CCN 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_AddCCNtoMessageLine1(["Start Step"])
E_AddCCNtoMessageLine1(["End Step"])
N_AddCCNtoMessageLine1_Node0{"The email message body is being
constructed"}:::decision N_AddCCNtoMessageLine1_Node0_action["The system sets message detail line
1 to UNKNOWN EDI 350 ENTRY FROM CBSA
concatenated with the first 25
characters of M10-07-CCN field"]:::main N_AddCCNtoMessageLine1_Node0 -- Yes --> N_AddCCNtoMessageLine1_Node0_action N_AddCCNtoMessageLine1_Node0_action --> E_AddCCNtoMessageLine1 S_AddCCNtoMessageLine1 --> N_AddCCNtoMessageLine1_Node0 N_AddCCNtoMessageLine1_Node0 -- No --> E_AddCCNtoMessageLine1
constructed"}:::decision N_AddCCNtoMessageLine1_Node0_action["The system sets message detail line
1 to UNKNOWN EDI 350 ENTRY FROM CBSA
concatenated with the first 25
characters of M10-07-CCN field"]:::main N_AddCCNtoMessageLine1_Node0 -- Yes --> N_AddCCNtoMessageLine1_Node0_action N_AddCCNtoMessageLine1_Node0_action --> E_AddCCNtoMessageLine1 S_AddCCNtoMessageLine1 --> N_AddCCNtoMessageLine1_Node0 N_AddCCNtoMessageLine1_Node0 -- No --> E_AddCCNtoMessageLine1
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification is being prepared with CCN from M10 segment
WHEN:
The email message body is being constructed
THEN:
The system sets message detail line 1 to 'UNKNOWN EDI 350 ENTRY FROM CBSA ' concatenated with the first 25 characters of M10-07-CCN field
β Consolidated Acceptance Criteria
- The email message body is being constructed → the system sets message detail line 3 to 'THIS CCN WAS 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_AddTHISCCNWASNOTFOUNDtoMessageLine3(["Start Step"])
E_AddTHISCCNWASNOTFOUNDtoMessageLine3(["End Step"])
N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0{"The email message body is being
constructed"}:::decision N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0_action["The system sets message detail line
3 to THIS CCN WAS NOT FOUND."]:::main N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0 -- Yes --> N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0_action N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0_action --> E_AddTHISCCNWASNOTFOUNDtoMessageLine3 S_AddTHISCCNWASNOTFOUNDtoMessageLine3 --> N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0 N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0 -- No --> E_AddTHISCCNWASNOTFOUNDtoMessageLine3
constructed"}:::decision N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0_action["The system sets message detail line
3 to THIS CCN WAS NOT FOUND."]:::main N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0 -- Yes --> N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0_action N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0_action --> E_AddTHISCCNWASNOTFOUNDtoMessageLine3 S_AddTHISCCNWASNOTFOUNDtoMessageLine3 --> N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0 N_AddTHISCCNWASNOTFOUNDtoMessageLine3_Node0 -- No --> E_AddTHISCCNWASNOTFOUNDtoMessageLine3
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification is being prepared
WHEN:
The email message body is being constructed
THEN:
The system sets message detail line 3 to 'THIS CCN WAS NOT FOUND.'
β Consolidated Acceptance Criteria
- The email message body is being constructed → the system sets message detail line 4 to 'NOTICE DOC TYPE: ' concatenated with M10-05-NOTICE-DOC-TYP-CDE, followed by ' WITH REASON CODE ' concatenated with the first 4 characters of V9-02-NOTICE-RSN-CDE field
- The email is ready to be sent → the system sets the message line count 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_AddNoticeDocumentTypeandReasonCodetoLine4(["Start Step"])
E_AddNoticeDocumentTypeandReasonCodetoLine4(["End Step"])
N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0{"The email message body is being
constructed"}:::decision N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0_action["The system sets message detail line
4 to NOTICE DOC TYPE: concatenated
with M10-05-NOTICE-DOC-TYP-CDE,
followed by WITH REASON CODE
concatenated with the first 4
characters of V9-02-NOTICE-RSN-CDE
field"]:::main N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0 -- Yes --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0_action N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0_action --> E_AddNoticeDocumentTypeandReasonCodetoLine4 S_AddNoticeDocumentTypeandReasonCodetoLine4 --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0 N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1{"The email is ready to be sent"}:::decision N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1_action["The system sets the message line
count to 5"]:::main N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1 -- Yes --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1_action N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1_action --> E_AddNoticeDocumentTypeandReasonCodetoLine4 N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0 -- No --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1 N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1 -- No --> E_AddNoticeDocumentTypeandReasonCodetoLine4
constructed"}:::decision N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0_action["The system sets message detail line
4 to NOTICE DOC TYPE: concatenated
with M10-05-NOTICE-DOC-TYP-CDE,
followed by WITH REASON CODE
concatenated with the first 4
characters of V9-02-NOTICE-RSN-CDE
field"]:::main N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0 -- Yes --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0_action N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0_action --> E_AddNoticeDocumentTypeandReasonCodetoLine4 S_AddNoticeDocumentTypeandReasonCodetoLine4 --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0 N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1{"The email is ready to be sent"}:::decision N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1_action["The system sets the message line
count to 5"]:::main N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1 -- Yes --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1_action N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1_action --> E_AddNoticeDocumentTypeandReasonCodetoLine4 N_AddNoticeDocumentTypeandReasonCodetoLine4_Node0 -- No --> N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1 N_AddNoticeDocumentTypeandReasonCodetoLine4_Node1 -- No --> E_AddNoticeDocumentTypeandReasonCodetoLine4
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification is being prepared with M10 segment containing notice document type code and V9 segment containing notice reason code
WHEN:
The email message body is being constructed
THEN:
The system sets message detail line 4 to 'NOTICE DOC TYPE: ' concatenated with M10-05-NOTICE-DOC-TYP-CDE, followed by ' WITH REASON CODE ' concatenated with the first 4 characters of V9-02-NOTICE-RSN-CDE field
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification email has been prepared with 4 message detail lines
WHEN:
The email is ready to be sent
THEN:
The system sets the message line count to 5
β Consolidated Acceptance Criteria
- The email recipient is being determined → the system sets the recipient user code to 'OM01247'
- The system assigns the notification recipient → set the recipient user code to 'OM01247' as the default operations mailbox
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecipientOM01247(["Start Step"])
E_SetRecipientOM01247(["End Step"])
N_SetRecipientOM01247_Node0{"The email recipient is being
determined"}:::decision N_SetRecipientOM01247_Node0_action["The system sets the recipient user
code to OM01247"]:::main N_SetRecipientOM01247_Node0 -- Yes --> N_SetRecipientOM01247_Node0_action N_SetRecipientOM01247_Node0_action --> E_SetRecipientOM01247 S_SetRecipientOM01247 --> N_SetRecipientOM01247_Node0 N_SetRecipientOM01247_Node1{"The system assigns the notification
recipient"}:::decision N_SetRecipientOM01247_Node1_action["Set the recipient user code to
OM01247 as the default operations
mailbox"]:::main N_SetRecipientOM01247_Node1 -- Yes --> N_SetRecipientOM01247_Node1_action N_SetRecipientOM01247_Node1_action --> E_SetRecipientOM01247 N_SetRecipientOM01247_Node0 -- No --> N_SetRecipientOM01247_Node1 N_SetRecipientOM01247_Node1 -- No --> E_SetRecipientOM01247
determined"}:::decision N_SetRecipientOM01247_Node0_action["The system sets the recipient user
code to OM01247"]:::main N_SetRecipientOM01247_Node0 -- Yes --> N_SetRecipientOM01247_Node0_action N_SetRecipientOM01247_Node0_action --> E_SetRecipientOM01247 S_SetRecipientOM01247 --> N_SetRecipientOM01247_Node0 N_SetRecipientOM01247_Node1{"The system assigns the notification
recipient"}:::decision N_SetRecipientOM01247_Node1_action["Set the recipient user code to
OM01247 as the default operations
mailbox"]:::main N_SetRecipientOM01247_Node1 -- Yes --> N_SetRecipientOM01247_Node1_action N_SetRecipientOM01247_Node1_action --> E_SetRecipientOM01247 N_SetRecipientOM01247_Node0 -- No --> N_SetRecipientOM01247_Node1 N_SetRecipientOM01247_Node1 -- No --> E_SetRecipientOM01247
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification is ready to be sent
WHEN:
The email recipient is being determined
THEN:
The system sets the recipient user code to 'OM01247'
File: GCX126R.cbl
GIVEN:
An unknown cargo notification has been prepared AND the destination filename has been set to 'UNKNOWN'
WHEN:
The system assigns the notification recipient
THEN:
Set the recipient user code to 'OM01247' as the default operations mailbox
β Consolidated Acceptance Criteria
- The email type classification is being set → the system sets the email type indicator to 'UNKNOWN' (88-Z110-MRLN-TYPE-IS-UNKNOWN)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailTypeUNKNOWN(["Start Step"])
E_SetEmailTypeUNKNOWN(["End Step"])
N_SetEmailTypeUNKNOWN_Node0{"The email type classification is
being set"}:::decision N_SetEmailTypeUNKNOWN_Node0_action["The system sets the email type
indicator to UNKNOWN
88-Z110-MRLN-TYPE-IS-UNKNOWN"]:::main N_SetEmailTypeUNKNOWN_Node0 -- Yes --> N_SetEmailTypeUNKNOWN_Node0_action N_SetEmailTypeUNKNOWN_Node0_action --> E_SetEmailTypeUNKNOWN S_SetEmailTypeUNKNOWN --> N_SetEmailTypeUNKNOWN_Node0 N_SetEmailTypeUNKNOWN_Node0 -- No --> E_SetEmailTypeUNKNOWN
being set"}:::decision N_SetEmailTypeUNKNOWN_Node0_action["The system sets the email type
indicator to UNKNOWN
88-Z110-MRLN-TYPE-IS-UNKNOWN"]:::main N_SetEmailTypeUNKNOWN_Node0 -- Yes --> N_SetEmailTypeUNKNOWN_Node0_action N_SetEmailTypeUNKNOWN_Node0_action --> E_SetEmailTypeUNKNOWN S_SetEmailTypeUNKNOWN --> N_SetEmailTypeUNKNOWN_Node0 N_SetEmailTypeUNKNOWN_Node0 -- No --> E_SetEmailTypeUNKNOWN
File: GCX126R.cbl
GIVEN:
An unknown cargo entry notification is ready to be sent
WHEN:
The email type classification is being set
THEN:
The system sets the email type indicator to 'UNKNOWN' (88-Z110-MRLN-TYPE-IS-UNKNOWN)
β Consolidated Acceptance Criteria
- The V9 segment notice reason code indicates NOT-MATCHED status → the system clears the log information message variable, sets the message text to 'EDI 350: DOC NOT MATCHED', moves the message to the log info variable, and invokes the log cargo information message process to record the message with the current CCN, current machine date, current machine time, current user ID, action code for input message, and cargo type 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_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED(["Start Step"])
E_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED(["End Step"])
N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0{"The V9 segment notice reason code
indicates NOT-MATCHED status"}:::decision N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0_action["The system clears the log
information message variable, sets
the message text to EDI 350: DOC NOT
MATCHED , moves the message to the
log info variable, and invokes the
log cargo information message
process to record the message with
the current CCN, current machine
date, current machine time, current
user ID, action code for input
message, and cargo type indicator"]:::main N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0 -- Yes --> N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0_action N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0_action --> E_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED S_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED --> N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0 N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0 -- No --> E_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED
indicates NOT-MATCHED status"}:::decision N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0_action["The system clears the log
information message variable, sets
the message text to EDI 350: DOC NOT
MATCHED , moves the message to the
log info variable, and invokes the
log cargo information message
process to record the message with
the current CCN, current machine
date, current machine time, current
user ID, action code for input
message, and cargo type indicator"]:::main N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0 -- Yes --> N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0_action N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0_action --> E_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED S_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED --> N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0 N_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED_Node0 -- No --> E_ProcessDocumentNotMatchedLogDOCNOTMATCHEDmessagewhenV9noticereasonisNOTMATCHED
File: GCX126R.cbl
GIVEN:
A cargo record exists in the system with a valid CCN (Cargo Control Number) and an EDI 350 message has been received and parsed with a V9 segment containing a notice reason code
WHEN:
The V9 segment notice reason code indicates NOT-MATCHED status
THEN:
The system clears the log information message variable, sets the message text to 'EDI 350: DOC NOT MATCHED', moves the message to the log info variable, and invokes the log cargo information message process to record the message with the current CCN, current machine date, current machine time, current user ID, action code for input message, and cargo type indicator
β Consolidated Acceptance Criteria
- The system processes the V9 segment with CARGO-COMPLETE notice reason code → the system prepares a log message 'EDI 350: CARGO COMPLETE MESSAGE', sets the log information with current machine date and time, the cargo CCN key, action code for input message, and cargo type as CA-CARGO, and spawns a GCT1051E transaction to record the message in the cargo history 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_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE(["Start Step"])
E_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE(["End Step"])
N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0{"The system processes the V9 segment
with CARGO-COMPLETE notice reason
code"}:::decision N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0_action["The system prepares a log message
EDI 350: CARGO COMPLETE MESSAGE ,
sets the log information with
current machine date and time, the
cargo CCN key, action code for input
message, and cargo type as CA-CARGO,
and spawns a GCT1051E transaction to
record the message in the cargo
history log"]:::main N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0 -- Yes --> N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0_action N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0_action --> E_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE S_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE --> N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0 N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0 -- No --> E_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE
with CARGO-COMPLETE notice reason
code"}:::decision N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0_action["The system prepares a log message
EDI 350: CARGO COMPLETE MESSAGE ,
sets the log information with
current machine date and time, the
cargo CCN key, action code for input
message, and cargo type as CA-CARGO,
and spawns a GCT1051E transaction to
record the message in the cargo
history log"]:::main N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0 -- Yes --> N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0_action N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0_action --> E_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE S_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE --> N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0 N_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE_Node0 -- No --> E_ProcessCargoCompleteLogCARGOCOMPLETEMESSAGEwhenV9noticereasonisCARGOCOMPLETE
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been received and parsed, and a cargo record exists in the system matching the CCN from the M10 segment, and the V9 segment notice reason code indicates CARGO-COMPLETE status
WHEN:
The system processes the V9 segment with CARGO-COMPLETE notice reason code
THEN:
- The system prepares a log message 'edi 350: cargo complete message', sets the log information with current machine date
- Time, the cargo ccn key, action code for input message, and cargo type as ca-cargo, and spawns a gct1051e transaction to record the message in the cargo history log
β Consolidated Acceptance Criteria
- The X4 CBSA Release Reference ID (first 15 characters) is different from the current broker entry OR the X4 CBSA Release Reference ID (first 14 characters) is different from the current customs transaction number, AND the X4 CBSA Release Reference ID is not spaces → update the cargo broker entry with X4 Release Reference ID (first 15 characters), update the customs transaction number with X4 Release Reference ID (first 14 characters), update the broker date with current machine date, update the broker time with current machine time (first 4 characters), build and log the message 'EDI 350: DOC PKG COMPLETE : ' concatenated with X4 Release Reference ID (first 15 characters), and replace the cargo record 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_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord(["Start Step"])
E_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord(["End Step"])
N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0{"The X4 CBSA Release Reference ID
first 15 characters is different
from the current broker entry OR the
X4 CBSA Release Reference ID first
14 characters is different from the
current customs transaction number,
AND the X4 CBSA Release Reference ID
is not spaces"}:::decision N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0_action["Update the cargo broker entry with
X4 Release Reference ID first 15
characters, update the customs
transaction number with X4 Release
Reference ID first 14 characters,
update the broker date with current
machine date, update the broker time
with current machine time first 4
characters, build and log the
message EDI 350: DOC PKG COMPLETE :
concatenated with X4 Release
Reference ID first 15 characters,
and replace the cargo record in the
database"]:::main N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0 -- Yes --> N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0_action N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0_action --> E_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord S_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord --> N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0 N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0 -- No --> E_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord
first 15 characters is different
from the current broker entry OR the
X4 CBSA Release Reference ID first
14 characters is different from the
current customs transaction number,
AND the X4 CBSA Release Reference ID
is not spaces"}:::decision N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0_action["Update the cargo broker entry with
X4 Release Reference ID first 15
characters, update the customs
transaction number with X4 Release
Reference ID first 14 characters,
update the broker date with current
machine date, update the broker time
with current machine time first 4
characters, build and log the
message EDI 350: DOC PKG COMPLETE :
concatenated with X4 Release
Reference ID first 15 characters,
and replace the cargo record in the
database"]:::main N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0 -- Yes --> N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0_action N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0_action --> E_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord S_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord --> N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0 N_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord_Node0 -- No --> E_UpdatebrokerentrycustomstransactionnumberbrokerdatetimelogDOCPKGCOMPLETEmessageandupdatecargorecord
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists in the database with current broker entry and customs transaction number, and an EDI 350 message with V9 segment indicating Document Package Complete status and X4 segment containing CBSA Release Reference ID
WHEN:
The X4 CBSA Release Reference ID (first 15 characters) is different from the current broker entry OR the X4 CBSA Release Reference ID (first 14 characters) is different from the current customs transaction number, AND the X4 CBSA Release Reference ID is not spaces
THEN:
- Update the cargo broker entry with x4 release reference id (first 15 characters), update the customs transaction number with x4 release reference id (first 14 characters), update the broker date with current machine date, update the broker time with current machine time (first 4 characters), build
- Log the message 'edi 350: doc pkg complete : ' concatenated with x4 release reference id (first 15 characters), and replace the cargo record in the database
β Consolidated Acceptance Criteria
- The X4 CBSA Release Reference ID (first 15 characters) equals the current broker entry AND the X4 CBSA Release Reference ID (first 14 characters) equals the current customs transaction number → skip all update operations and continue to next processing step without modifying the cargo record
- The X4 CBSA Release Reference ID is spaces (blank) → skip all update operations and continue to next processing step without modifying 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_SkipUpdateValuesAlreadyMatch(["Start Step"])
E_SkipUpdateValuesAlreadyMatch(["End Step"])
N_SkipUpdateValuesAlreadyMatch_Node0{"The X4 CBSA Release Reference ID
first 15 characters equals the
current broker entry AND the X4 CBSA
Release Reference ID first 14
characters equals the current
customs transaction number"}:::decision N_SkipUpdateValuesAlreadyMatch_Node0_action["Skip all update operations and
continue to next processing step
without modifying the cargo record"]:::main N_SkipUpdateValuesAlreadyMatch_Node0 -- Yes --> N_SkipUpdateValuesAlreadyMatch_Node0_action N_SkipUpdateValuesAlreadyMatch_Node0_action --> E_SkipUpdateValuesAlreadyMatch S_SkipUpdateValuesAlreadyMatch --> N_SkipUpdateValuesAlreadyMatch_Node0 N_SkipUpdateValuesAlreadyMatch_Node1{"The X4 CBSA Release Reference ID is
spaces blank"}:::decision N_SkipUpdateValuesAlreadyMatch_Node1_action["Skip all update operations and
continue to next processing step
without modifying the cargo record"]:::main N_SkipUpdateValuesAlreadyMatch_Node1 -- Yes --> N_SkipUpdateValuesAlreadyMatch_Node1_action N_SkipUpdateValuesAlreadyMatch_Node1_action --> E_SkipUpdateValuesAlreadyMatch N_SkipUpdateValuesAlreadyMatch_Node0 -- No --> N_SkipUpdateValuesAlreadyMatch_Node1 N_SkipUpdateValuesAlreadyMatch_Node1 -- No --> E_SkipUpdateValuesAlreadyMatch
first 15 characters equals the
current broker entry AND the X4 CBSA
Release Reference ID first 14
characters equals the current
customs transaction number"}:::decision N_SkipUpdateValuesAlreadyMatch_Node0_action["Skip all update operations and
continue to next processing step
without modifying the cargo record"]:::main N_SkipUpdateValuesAlreadyMatch_Node0 -- Yes --> N_SkipUpdateValuesAlreadyMatch_Node0_action N_SkipUpdateValuesAlreadyMatch_Node0_action --> E_SkipUpdateValuesAlreadyMatch S_SkipUpdateValuesAlreadyMatch --> N_SkipUpdateValuesAlreadyMatch_Node0 N_SkipUpdateValuesAlreadyMatch_Node1{"The X4 CBSA Release Reference ID is
spaces blank"}:::decision N_SkipUpdateValuesAlreadyMatch_Node1_action["Skip all update operations and
continue to next processing step
without modifying the cargo record"]:::main N_SkipUpdateValuesAlreadyMatch_Node1 -- Yes --> N_SkipUpdateValuesAlreadyMatch_Node1_action N_SkipUpdateValuesAlreadyMatch_Node1_action --> E_SkipUpdateValuesAlreadyMatch N_SkipUpdateValuesAlreadyMatch_Node0 -- No --> N_SkipUpdateValuesAlreadyMatch_Node1 N_SkipUpdateValuesAlreadyMatch_Node1 -- No --> E_SkipUpdateValuesAlreadyMatch
File: GCX126R.cbl
GIVEN:
A cargo record exists with current broker entry and customs transaction number, and an EDI 350 message with V9 segment indicating Document Package Complete status and X4 segment containing CBSA Release Reference ID
WHEN:
- The x4 cbsa release reference id (first 15 characters) equals the current broker entry
- The x4 cbsa release reference id (first 14 characters) equals the current customs transaction number
THEN:
- Skip all update operations
- Continue to next processing step without modifying the cargo record
File: GCX126R.cbl
GIVEN:
A cargo record exists in the database and an EDI 350 message with V9 segment indicating Document Package Complete status and X4 segment
WHEN:
The X4 CBSA Release Reference ID is spaces (blank)
THEN:
- Skip all update operations
- Continue to next processing step without modifying the cargo record
β Consolidated Acceptance Criteria
- Updating cargo broker information → set the cargo broker entry field to the first 15 characters of X4 CBSA Release Reference ID (X4-01-CBSA-REL-REF-ID positions 1 through 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_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters(["Start Step"])
E_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters(["End Step"])
N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0{"Updating cargo broker information"}:::decision
N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0_action["Set the cargo broker entry field to
the first 15 characters of X4 CBSA
Release Reference ID
X4-01-CBSA-REL-REF-ID positions 1
through 15"]:::main N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0 -- Yes --> N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0_action N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0_action --> E_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters S_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters --> N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0 N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0 -- No --> E_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters
the first 15 characters of X4 CBSA
Release Reference ID
X4-01-CBSA-REL-REF-ID positions 1
through 15"]:::main N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0 -- Yes --> N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0_action N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0_action --> E_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters S_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters --> N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0 N_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters_Node0 -- No --> E_UpdateBrokerEntrywithX4ReleaseReferenceFirst15Characters
File: GCX126R.cbl
GIVEN:
The decision to update has been made based on differing release reference values and non-blank X4 Release Reference ID
WHEN:
Updating cargo broker information
THEN:
Set the cargo broker entry field to the first 15 characters of X4 CBSA Release Reference ID (X4-01-CBSA-REL-REF-ID positions 1 through 15)
β Consolidated Acceptance Criteria
- Updating cargo customs transaction information → set the customs transaction number field to the first 14 characters of X4 CBSA Release Reference ID (X4-01-CBSA-REL-REF-ID positions 1 through 14)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters(["Start Step"])
E_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters(["End Step"])
N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0{"Updating cargo customs transaction
information"}:::decision N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0_action["Set the customs transaction number
field to the first 14 characters of
X4 CBSA Release Reference ID
X4-01-CBSA-REL-REF-ID positions 1
through 14"]:::main N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0 -- Yes --> N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0_action N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0_action --> E_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters S_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters --> N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0 N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0 -- No --> E_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters
information"}:::decision N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0_action["Set the customs transaction number
field to the first 14 characters of
X4 CBSA Release Reference ID
X4-01-CBSA-REL-REF-ID positions 1
through 14"]:::main N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0 -- Yes --> N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0_action N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0_action --> E_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters S_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters --> N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0 N_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters_Node0 -- No --> E_UpdateCustomsTransactionNumberwithX4ReleaseReferenceFirst14Characters
File: GCX126R.cbl
GIVEN:
The decision to update has been made based on differing release reference values and non-blank X4 Release Reference ID
WHEN:
Updating cargo customs transaction information
THEN:
Set the customs transaction number field to the first 14 characters of X4 CBSA Release Reference ID (X4-01-CBSA-REL-REF-ID positions 1 through 14)
β Consolidated Acceptance Criteria
- Recording the timestamp of document package completion → set the cargo broker date field to the current machine date (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_UpdateBrokerDatewithCurrentMachineDate(["Start Step"])
E_UpdateBrokerDatewithCurrentMachineDate(["End Step"])
N_UpdateBrokerDatewithCurrentMachineDate_Node0{"Recording the timestamp of document
package completion"}:::decision N_UpdateBrokerDatewithCurrentMachineDate_Node0_action["Set the cargo broker date field to
the current machine date
CC-MACHINE-DATE from CCCOM"]:::main N_UpdateBrokerDatewithCurrentMachineDate_Node0 -- Yes --> N_UpdateBrokerDatewithCurrentMachineDate_Node0_action N_UpdateBrokerDatewithCurrentMachineDate_Node0_action --> E_UpdateBrokerDatewithCurrentMachineDate S_UpdateBrokerDatewithCurrentMachineDate --> N_UpdateBrokerDatewithCurrentMachineDate_Node0 N_UpdateBrokerDatewithCurrentMachineDate_Node0 -- No --> E_UpdateBrokerDatewithCurrentMachineDate
package completion"}:::decision N_UpdateBrokerDatewithCurrentMachineDate_Node0_action["Set the cargo broker date field to
the current machine date
CC-MACHINE-DATE from CCCOM"]:::main N_UpdateBrokerDatewithCurrentMachineDate_Node0 -- Yes --> N_UpdateBrokerDatewithCurrentMachineDate_Node0_action N_UpdateBrokerDatewithCurrentMachineDate_Node0_action --> E_UpdateBrokerDatewithCurrentMachineDate S_UpdateBrokerDatewithCurrentMachineDate --> N_UpdateBrokerDatewithCurrentMachineDate_Node0 N_UpdateBrokerDatewithCurrentMachineDate_Node0 -- No --> E_UpdateBrokerDatewithCurrentMachineDate
File: GCX126R.cbl
GIVEN:
The decision to update has been made and broker entry and customs transaction number have been updated
WHEN:
Recording the timestamp of document package completion
THEN:
Set the cargo broker date field to the current machine date (CC-MACHINE-DATE from CCCOM)
β Consolidated Acceptance Criteria
- Recording the time of document package completion → set the cargo broker time field to the first 4 characters of current machine time (CC-MACHINE-TIME from CCCOM, representing hours and minutes in HHMM 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_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters(["Start Step"])
E_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters(["End Step"])
N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0{"Recording the time of document
package completion"}:::decision N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0_action["Set the cargo broker time field to
the first 4 characters of current
machine time CC-MACHINE-TIME from
CCCOM, representing hours and
minutes in HHMM format"]:::main N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0 -- Yes --> N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0_action N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0_action --> E_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters S_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters --> N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0 N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0 -- No --> E_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters
package completion"}:::decision N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0_action["Set the cargo broker time field to
the first 4 characters of current
machine time CC-MACHINE-TIME from
CCCOM, representing hours and
minutes in HHMM format"]:::main N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0 -- Yes --> N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0_action N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0_action --> E_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters S_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters --> N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0 N_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters_Node0 -- No --> E_UpdateBrokerTimewithCurrentMachineTimeFirst4Characters
File: GCX126R.cbl
GIVEN:
The decision to update has been made and broker entry, customs transaction number, and broker date have been updated
WHEN:
Recording the time of document package completion
THEN:
- Set the cargo broker time field to the first 4 characters of current machine time (cc-machine-time from cccom, representing hours
- Minutes in hhmm format)
β Consolidated Acceptance Criteria
- Preparing to log the document package completion event → construct a log message by concatenating the literal text 'EDI 350: DOC PKG COMPLETE : ' with the first 15 characters of X4 CBSA Release Reference ID and store in the log 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_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters(["Start Step"])
E_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters(["End Step"])
N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0{"Preparing to log the document
package completion event"}:::decision N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0_action["Construct a log message by
concatenating the literal text EDI
350: DOC PKG COMPLETE : with the
first 15 characters of X4 CBSA
Release Reference ID and store in
the log message field"]:::main N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0 -- Yes --> N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0_action N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0_action --> E_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters S_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters --> N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0 N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0 -- No --> E_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters
package completion event"}:::decision N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0_action["Construct a log message by
concatenating the literal text EDI
350: DOC PKG COMPLETE : with the
first 15 characters of X4 CBSA
Release Reference ID and store in
the log message field"]:::main N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0 -- Yes --> N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0_action N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0_action --> E_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters S_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters --> N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0 N_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters_Node0 -- No --> E_BuildLogMessageEDI350DOCPKGCOMPLETEX4ReleaseReferenceFirst15Characters
File: GCX126R.cbl
GIVEN:
The cargo record has been updated with new broker entry, customs transaction number, broker date, and broker time
WHEN:
Preparing to log the document package completion event
THEN:
- Construct a log message by concatenating the literal text 'edi 350: doc pkg complete : ' with the first 15 characters of x4 cbsa release reference id
- Store in the log message field
β Consolidated Acceptance Criteria
- Recording the document package completion event → invoke the log cargo information message process (Z150-LOG-CARGO-INFO-MSG) to write the message to the cargo audit log with current date, time, user ID, CCN, and the constructed message text
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCargoInformationMessage(["Start Step"])
E_LogCargoInformationMessage(["End Step"])
N_LogCargoInformationMessage_Node0{"Recording the document package
completion event"}:::decision N_LogCargoInformationMessage_Node0_action["Invoke the log cargo information
message process
Z150-LOG-CARGO-INFO-MSG to write the
message to the cargo audit log with
current date, time, user ID, CCN,
and the constructed message text"]:::main N_LogCargoInformationMessage_Node0 -- Yes --> N_LogCargoInformationMessage_Node0_action N_LogCargoInformationMessage_Node0_action --> E_LogCargoInformationMessage S_LogCargoInformationMessage --> N_LogCargoInformationMessage_Node0 N_LogCargoInformationMessage_Node0 -- No --> E_LogCargoInformationMessage
completion event"}:::decision N_LogCargoInformationMessage_Node0_action["Invoke the log cargo information
message process
Z150-LOG-CARGO-INFO-MSG to write the
message to the cargo audit log with
current date, time, user ID, CCN,
and the constructed message text"]:::main N_LogCargoInformationMessage_Node0 -- Yes --> N_LogCargoInformationMessage_Node0_action N_LogCargoInformationMessage_Node0_action --> E_LogCargoInformationMessage S_LogCargoInformationMessage --> N_LogCargoInformationMessage_Node0 N_LogCargoInformationMessage_Node0 -- No --> E_LogCargoInformationMessage
File: GCX126R.cbl
GIVEN:
The log message has been constructed with document package complete details
WHEN:
Recording the document package completion event
THEN:
Invoke the log cargo information message process (Z150-LOG-CARGO-INFO-MSG) to write the message to the cargo audit log with current date, time, user ID, CCN, and the constructed message text
β Consolidated Acceptance Criteria
- Persisting the document package complete changes → invoke the replace cargo process (Z3100-REPL-CARGO) to update the cargo record in the database with all modified 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_UpdateCargoRecordReplaceCargoinDatabase(["Start Step"])
E_UpdateCargoRecordReplaceCargoinDatabase(["End Step"])
N_UpdateCargoRecordReplaceCargoinDatabase_Node0{"Persisting the document package
complete changes"}:::decision N_UpdateCargoRecordReplaceCargoinDatabase_Node0_action["Invoke the replace cargo process
Z3100-REPL-CARGO to update the cargo
record in the database with all
modified fields"]:::main N_UpdateCargoRecordReplaceCargoinDatabase_Node0 -- Yes --> N_UpdateCargoRecordReplaceCargoinDatabase_Node0_action N_UpdateCargoRecordReplaceCargoinDatabase_Node0_action --> E_UpdateCargoRecordReplaceCargoinDatabase S_UpdateCargoRecordReplaceCargoinDatabase --> N_UpdateCargoRecordReplaceCargoinDatabase_Node0 N_UpdateCargoRecordReplaceCargoinDatabase_Node0 -- No --> E_UpdateCargoRecordReplaceCargoinDatabase
complete changes"}:::decision N_UpdateCargoRecordReplaceCargoinDatabase_Node0_action["Invoke the replace cargo process
Z3100-REPL-CARGO to update the cargo
record in the database with all
modified fields"]:::main N_UpdateCargoRecordReplaceCargoinDatabase_Node0 -- Yes --> N_UpdateCargoRecordReplaceCargoinDatabase_Node0_action N_UpdateCargoRecordReplaceCargoinDatabase_Node0_action --> E_UpdateCargoRecordReplaceCargoinDatabase S_UpdateCargoRecordReplaceCargoinDatabase --> N_UpdateCargoRecordReplaceCargoinDatabase_Node0 N_UpdateCargoRecordReplaceCargoinDatabase_Node0 -- No --> E_UpdateCargoRecordReplaceCargoinDatabase
File: GCX126R.cbl
GIVEN:
The cargo record has been updated with new broker entry, customs transaction number, broker date, broker time, and the completion event has been logged
WHEN:
Persisting the document package complete changes
THEN:
Invoke the replace cargo process (Z3100-REPL-CARGO) to update the cargo record in the database with all modified fields
β Consolidated Acceptance Criteria
- The X4 release document type code (position 1, length 1) starts with 'R' indicating a release type transaction → the system logs an informational message 'EDI 350: DOC NOT ON FILE FOR RELEASE' concatenated with the CBSA release reference ID (first 15 characters) to the cargo information 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_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID(["Start Step"])
E_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID(["End Step"])
N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0{"The X4 release document type code
position 1, length 1 starts with R
indicating a release type
transaction"}:::decision N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0_action["The system logs an informational
message EDI 350: DOC NOT ON FILE FOR
RELEASE concatenated with the CBSA
release reference ID first 15
characters to the cargo information
log"]:::main N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0 -- Yes --> N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0_action N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0_action --> E_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID S_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID --> N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0 N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0 -- No --> E_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID
position 1, length 1 starts with R
indicating a release type
transaction"}:::decision N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0_action["The system logs an informational
message EDI 350: DOC NOT ON FILE FOR
RELEASE concatenated with the CBSA
release reference ID first 15
characters to the cargo information
log"]:::main N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0 -- Yes --> N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0_action N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0_action --> E_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID S_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID --> N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0 N_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID_Node0 -- No --> E_LogMessageEDI350DOCNOTONFILEFORRELEASEwithCBSAReleaseReferenceID
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed with V9 notice reason code indicating 'DOC-NOT-ON-FILE' and X4 segment contains release document type code and CBSA release reference ID
WHEN:
The X4 release document type code (position 1, length 1) starts with 'R' indicating a release type transaction
THEN:
The system logs an informational message 'EDI 350: DOC NOT ON FILE FOR RELEASE' concatenated with the CBSA release reference ID (first 15 characters) to the cargo information log
β Consolidated Acceptance Criteria
- The X4 release document type code (position 1, length 1) does not start with 'R' indicating a non-release type transaction (house bill close) → the system logs an informational message 'EDI 350:DOC NOT ON FILE H-BILL CLOSE' concatenated with the CBSA release reference ID (full 25 characters) to the cargo information 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_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID(["Start Step"])
E_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID(["End Step"])
N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0{"The X4 release document type code
position 1, length 1 does not start
with R indicating a non-release type
transaction house bill close"}:::decision N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0_action["The system logs an informational
message EDI 350:DOC NOT ON FILE
H-BILL CLOSE concatenated with the
CBSA release reference ID full 25
characters to the cargo information
log"]:::main N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0 -- Yes --> N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0_action N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0_action --> E_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID S_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID --> N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0 N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0 -- No --> E_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID
position 1, length 1 does not start
with R indicating a non-release type
transaction house bill close"}:::decision N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0_action["The system logs an informational
message EDI 350:DOC NOT ON FILE
H-BILL CLOSE concatenated with the
CBSA release reference ID full 25
characters to the cargo information
log"]:::main N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0 -- Yes --> N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0_action N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0_action --> E_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID S_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID --> N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0 N_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID_Node0 -- No --> E_LogMessageEDI350DOCNOTONFILEHBILLCLOSEwithCBSAReleaseReferenceID
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is being processed with V9 notice reason code indicating 'DOC-NOT-ON-FILE' and X4 segment contains release document type code and CBSA release reference ID
WHEN:
The X4 release document type code (position 1, length 1) does not start with 'R' indicating a non-release type transaction (house bill close)
THEN:
The system logs an informational message 'EDI 350:DOC NOT ON FILE H-BILL CLOSE' concatenated with the CBSA release reference ID (full 25 characters) to the cargo information log
β Consolidated Acceptance Criteria
- The V9 segment notice reason code equals 'DOC-NOT-ON-FILE' → the system proceeds to check the release document type to determine the appropriate logging 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_ProcessDocumentNotOnFile(["Start Step"])
E_ProcessDocumentNotOnFile(["End Step"])
N_ProcessDocumentNotOnFile_Node0{"The V9 segment notice reason code
equals DOC-NOT-ON-FILE"}:::decision N_ProcessDocumentNotOnFile_Node0_action["The system proceeds to check the
release document type to determine
the appropriate logging message
format"]:::main N_ProcessDocumentNotOnFile_Node0 -- Yes --> N_ProcessDocumentNotOnFile_Node0_action N_ProcessDocumentNotOnFile_Node0_action --> E_ProcessDocumentNotOnFile S_ProcessDocumentNotOnFile --> N_ProcessDocumentNotOnFile_Node0 N_ProcessDocumentNotOnFile_Node0 -- No --> E_ProcessDocumentNotOnFile
equals DOC-NOT-ON-FILE"}:::decision N_ProcessDocumentNotOnFile_Node0_action["The system proceeds to check the
release document type to determine
the appropriate logging message
format"]:::main N_ProcessDocumentNotOnFile_Node0 -- Yes --> N_ProcessDocumentNotOnFile_Node0_action N_ProcessDocumentNotOnFile_Node0_action --> E_ProcessDocumentNotOnFile S_ProcessDocumentNotOnFile --> N_ProcessDocumentNotOnFile_Node0 N_ProcessDocumentNotOnFile_Node0 -- No --> E_ProcessDocumentNotOnFile
File: GCX126R.cbl
GIVEN:
An EDI 350 message is being processed with cargo found in the system
WHEN:
The V9 segment notice reason code equals 'DOC-NOT-ON-FILE'
THEN:
The system proceeds to check the release document type to determine the appropriate logging message format
β Consolidated Acceptance Criteria
- The V9 segment notice reason code indicates REPORTED status → the system clears the message work area (WS-GCX105-INFO-MSG), builds the message string 'EDI 350: CARGO REPORTED', and invokes the log cargo information message process (Z150-LOG-CARGO-INFO-MSG) to record this status change in the cargo history with the current CCN, date, time, and user information
- If the V9 notice reason code against the REPORTED condition (V9-02-REPORTED) → if the condition is true, the system proceeds to log the cargo reported message; otherwise, the system continues to evaluate other notice reason code conditions
- The system prepares the log message content → the system clears the message work area (WS-GCX105-INFO-MSG) to spaces and builds the message string 'EDI 350: CARGO REPORTED' into the work area
- The system invokes the log cargo information message process (Z150-LOG-CARGO-INFO-MSG) → the logging service records the message to cargo history with the current machine date, machine time, user ID (ACF2-USERID), action code (LOG-USE-INPUT-MESSAGE), cargo CCN, cargo type indicator (GCX105-CA-CARGO), and the prepared message text
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED(["Start Step"])
E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED(["End Step"])
N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0{"The V9 segment notice reason code
indicates REPORTED status"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0_action["The system clears the message work
area WS-GCX105-INFO-MSG, builds the
message string EDI 350: CARGO
REPORTED , and invokes the log cargo
information message process
Z150-LOG-CARGO-INFO-MSG to record
this status change in the cargo
history with the current CCN, date,
time, and user information"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED S_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1{"The system evaluates the V9 notice
reason code against the REPORTED
condition V9-02-REPORTED"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1_action["If the condition is true, the
system proceeds to log the cargo
reported message otherwise, the
system continues to evaluate other
notice reason code conditions"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0 -- No --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2{"The system prepares the log message
content"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2_action["The system clears the message work
area WS-GCX105-INFO-MSG to spaces
and builds the message string EDI
350: CARGO REPORTED into the work
area"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1 -- No --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3{"The system invokes the log cargo
information message process
Z150-LOG-CARGO-INFO-MSG"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3_action["The logging service records the
message to cargo history with the
current machine date, machine time,
user ID ACF2-USERID, action code
LOG-USE-INPUT-MESSAGE, cargo CCN,
cargo type indicator
GCX105-CA-CARGO, and the prepared
message text"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2 -- No --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3 -- No --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED
indicates REPORTED status"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0_action["The system clears the message work
area WS-GCX105-INFO-MSG, builds the
message string EDI 350: CARGO
REPORTED , and invokes the log cargo
information message process
Z150-LOG-CARGO-INFO-MSG to record
this status change in the cargo
history with the current CCN, date,
time, and user information"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED S_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1{"The system evaluates the V9 notice
reason code against the REPORTED
condition V9-02-REPORTED"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1_action["If the condition is true, the
system proceeds to log the cargo
reported message otherwise, the
system continues to evaluate other
notice reason code conditions"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node0 -- No --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2{"The system prepares the log message
content"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2_action["The system clears the message work
area WS-GCX105-INFO-MSG to spaces
and builds the message string EDI
350: CARGO REPORTED into the work
area"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node1 -- No --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3{"The system invokes the log cargo
information message process
Z150-LOG-CARGO-INFO-MSG"}:::decision N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3_action["The logging service records the
message to cargo history with the
current machine date, machine time,
user ID ACF2-USERID, action code
LOG-USE-INPUT-MESSAGE, cargo CCN,
cargo type indicator
GCX105-CA-CARGO, and the prepared
message text"]:::main N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3 -- Yes --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3_action N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3_action --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node2 -- No --> N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3 N_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED_Node3 -- No --> E_ProcessCargoReportedLogCARGOREPORTEDmessagewhenV9noticereasonisREPORTED
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been received and parsed with V9 segment containing notice reason code, and cargo record exists in the database with a valid CCN (Cargo Control Number)
WHEN:
The V9 segment notice reason code indicates REPORTED status
THEN:
The system clears the message work area (WS-GCX105-INFO-MSG), builds the message string 'EDI 350: CARGO REPORTED', and invokes the log cargo information message process (Z150-LOG-CARGO-INFO-MSG) to record this status change in the cargo history with the current CCN, date, time, and user information
File: GCX126R.cbl
GIVEN:
An EDI 350 message V9 segment has been processed and the notice reason code field (V9-02-NOTICE-RSN-CDE) is available for evaluation
WHEN:
The system evaluates the V9 notice reason code against the REPORTED condition (V9-02-REPORTED)
THEN:
If the condition is true, the system proceeds to log the cargo reported message; otherwise, the system continues to evaluate other notice reason code conditions
File: GCX126R.cbl
GIVEN:
The V9 notice reason code has been confirmed as REPORTED status and the message work area (WS-GCX105-INFO-MSG) is available
WHEN:
The system prepares the log message content
THEN:
- The system clears the message work area (ws-gcx105-info-msg) to spaces
- Builds the message string 'edi 350: cargo reported' into the work area
File: GCX126R.cbl
GIVEN:
The cargo reported message 'EDI 350: CARGO REPORTED' has been prepared in the message work area (WS-GCX105-INFO-MSG), and the current cargo CCN is available in WS-CURRENT-CCN-KEY
WHEN:
The system invokes the log cargo information message process (Z150-LOG-CARGO-INFO-MSG)
THEN:
The logging service records the message to cargo history with the current machine date, machine time, user ID (ACF2-USERID), action code (LOG-USE-INPUT-MESSAGE), cargo CCN, cargo type indicator (GCX105-CA-CARGO), and the prepared message text
β Consolidated Acceptance Criteria
- The system processes the cargo arrival status → the system prepares a log message 'EDI 350: CARGO ARRIVED AT PORT' concatenated with the 4-character port code from P4 segment, sets the current machine date and time, sets the CCN key as the cargo identifier, sets the action code to indicate input message usage, marks the log as Canadian cargo type, and writes the log message to the IMS message queue via GCT1051E 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_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED(["Start Step"])
E_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED(["End Step"])
N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0{"The system processes the cargo
arrival status"}:::decision N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0_action["The system prepares a log message
EDI 350: CARGO ARRIVED AT PORT
concatenated with the 4-character
port code from P4 segment, sets the
current machine date and time, sets
the CCN key as the cargo identifier,
sets the action code to indicate
input message usage, marks the log
as Canadian cargo type, and writes
the log message to the IMS message
queue via GCT1051E transaction"]:::main N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0 -- Yes --> N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0_action N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0_action --> E_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED S_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED --> N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0 N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0 -- No --> E_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED
arrival status"}:::decision N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0_action["The system prepares a log message
EDI 350: CARGO ARRIVED AT PORT
concatenated with the 4-character
port code from P4 segment, sets the
current machine date and time, sets
the CCN key as the cargo identifier,
sets the action code to indicate
input message usage, marks the log
as Canadian cargo type, and writes
the log message to the IMS message
queue via GCT1051E transaction"]:::main N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0 -- Yes --> N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0_action N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0_action --> E_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED S_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED --> N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0 N_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED_Node0 -- No --> E_ProcessCargoArrivedLogCARGOARRIVEDATPORTmessagewhenV9noticereasonisARRIVED
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been received and parsed with V9 segment notice reason code indicating ARRIVED status and P4 segment containing a valid port code
WHEN:
The system processes the cargo arrival status
THEN:
- The system prepares a log message 'edi 350: cargo arrived at port' concatenated with the 4-character port code from p4 segment, sets the current machine date
- Time, sets the ccn key as the cargo identifier, sets the action code to indicate input message usage, marks the log as canadian cargo type, and writes the log message to the ims message queue via gct1051e transaction
β Consolidated Acceptance Criteria
- The system prepares the arrival log message → the system initializes the log message field to spaces, concatenates the text 'EDI 350: CARGO ARRIVED AT PORT ' with the 4-character port code from P4-01-PORT-CDE positions 1 through 4, and stores the result in WS-GCX105-INFO-MSG 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_PrepareLogMessageEDI350CARGOARRIVEDATPORT(["Start Step"])
E_PrepareLogMessageEDI350CARGOARRIVEDATPORT(["End Step"])
N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0{"The system prepares the arrival log
message"}:::decision N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0_action["The system initializes the log
message field to spaces,
concatenates the text EDI 350: CARGO
ARRIVED AT PORT with the 4-character
port code from P4-01-PORT-CDE
positions 1 through 4, and stores
the result in WS-GCX105-INFO-MSG
field"]:::main N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0 -- Yes --> N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0_action N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0_action --> E_PrepareLogMessageEDI350CARGOARRIVEDATPORT S_PrepareLogMessageEDI350CARGOARRIVEDATPORT --> N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0 N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0 -- No --> E_PrepareLogMessageEDI350CARGOARRIVEDATPORT
message"}:::decision N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0_action["The system initializes the log
message field to spaces,
concatenates the text EDI 350: CARGO
ARRIVED AT PORT with the 4-character
port code from P4-01-PORT-CDE
positions 1 through 4, and stores
the result in WS-GCX105-INFO-MSG
field"]:::main N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0 -- Yes --> N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0_action N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0_action --> E_PrepareLogMessageEDI350CARGOARRIVEDATPORT S_PrepareLogMessageEDI350CARGOARRIVEDATPORT --> N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0 N_PrepareLogMessageEDI350CARGOARRIVEDATPORT_Node0 -- No --> E_PrepareLogMessageEDI350CARGOARRIVEDATPORT
File: GCX126R.cbl
GIVEN:
The V9 segment indicates ARRIVED status and the P4 segment contains a port code in positions 1 through 4
WHEN:
The system prepares the arrival log message
THEN:
The system initializes the log message field to spaces, concatenates the text 'EDI 350: CARGO ARRIVED AT PORT ' with the 4-character port code from P4-01-PORT-CDE positions 1 through 4, and stores the result in WS-GCX105-INFO-MSG field
β Consolidated Acceptance Criteria
- The system sets the log information for the arrival event → the system clears the GCX105 input area to spaces, sets the security byte to high-value, sets the sending transaction to 'GCT1261E', sets the ACF2 user ID from the common control area, concatenates the machine century with the machine date to form GCX105-DATE, moves the machine time to GCX105-TIME, moves the current CCN key to GCX105-TRAIN-OR-US-CCN, sets the cargo type indicator to Canadian cargo, sets the action code to LOG-USE-INPUT-MESSAGE, and moves the prepared arrival message from WS-GCX105-INFO-MSG to GCX105-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_SetLogInformationCurrentDateTimeCCNKeyActionCode(["Start Step"])
E_SetLogInformationCurrentDateTimeCCNKeyActionCode(["End Step"])
N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0{"The system sets the log information
for the arrival event"}:::decision N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0_action["The system clears the GCX105 input
area to spaces, sets the security
byte to high-value, sets the sending
transaction to GCT1261E , sets the
ACF2 user ID from the common control
area, concatenates the machine
century with the machine date to
form GCX105-DATE, moves the machine
time to GCX105-TIME, moves the
current CCN key to
GCX105-TRAIN-OR-US-CCN, sets the
cargo type indicator to Canadian
cargo, sets the action code to
LOG-USE-INPUT-MESSAGE, and moves the
prepared arrival message from
WS-GCX105-INFO-MSG to GCX105-MESSAGE"]:::main N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0 -- Yes --> N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0_action N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0_action --> E_SetLogInformationCurrentDateTimeCCNKeyActionCode S_SetLogInformationCurrentDateTimeCCNKeyActionCode --> N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0 N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0 -- No --> E_SetLogInformationCurrentDateTimeCCNKeyActionCode
for the arrival event"}:::decision N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0_action["The system clears the GCX105 input
area to spaces, sets the security
byte to high-value, sets the sending
transaction to GCT1261E , sets the
ACF2 user ID from the common control
area, concatenates the machine
century with the machine date to
form GCX105-DATE, moves the machine
time to GCX105-TIME, moves the
current CCN key to
GCX105-TRAIN-OR-US-CCN, sets the
cargo type indicator to Canadian
cargo, sets the action code to
LOG-USE-INPUT-MESSAGE, and moves the
prepared arrival message from
WS-GCX105-INFO-MSG to GCX105-MESSAGE"]:::main N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0 -- Yes --> N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0_action N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0_action --> E_SetLogInformationCurrentDateTimeCCNKeyActionCode S_SetLogInformationCurrentDateTimeCCNKeyActionCode --> N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0 N_SetLogInformationCurrentDateTimeCCNKeyActionCode_Node0 -- No --> E_SetLogInformationCurrentDateTimeCCNKeyActionCode
File: GCX126R.cbl
GIVEN:
A cargo arrival log message has been prepared with port information and the current CCN key is available in WS-CURRENT-CCN-KEY
WHEN:
The system sets the log information for the arrival event
THEN:
The system clears the GCX105 input area to spaces, sets the security byte to high-value, sets the sending transaction to 'GCT1261E', sets the ACF2 user ID from the common control area, concatenates the machine century with the machine date to form GCX105-DATE, moves the machine time to GCX105-TIME, moves the current CCN key to GCX105-TRAIN-OR-US-CCN, sets the cargo type indicator to Canadian cargo, sets the action code to LOG-USE-INPUT-MESSAGE, and moves the prepared arrival message from WS-GCX105-INFO-MSG to GCX105-MESSAGE
β Consolidated Acceptance Criteria
- The system processes the release notification → the cargo destination station number index field is set to spaces AND the cargo destination station number for index field is set to spaces
- The system processes the release notification → the cargo release date is set to current machine date AND the cargo release time is set to current machine time
- The system processes the release notification → the cargo release by field is set to the current user ID from the system
- The system processes the release notification → the cargo current status field is set to 'RELEASED'
- The system processes the release notification → the cargo release status field is set to 'R'
- The system processes the release notification → the cargo release type field is set to 'A'
- The system processes the release notification → the cargo release reason field is set to spaces
- The system processes the release notification → the cargo error or release status index field is set to spaces
- The system processes the release notification → the cargo error status field 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_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields(["Start Step"])
E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields(["End Step"])
N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action["The cargo destination station
number index field is set to spaces
AND the cargo destination station
number for index field is set to
spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields S_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1_action["The cargo release date is set to
current machine date AND the cargo
release time is set to current
machine time"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2_action["The cargo release by field is set
to the current user ID from the
system"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3_action["The cargo current status field is
set to RELEASED"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4_action["The cargo release status field is
set to R"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5_action["The cargo release type field is set
to A"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6_action["The cargo release reason field is
set to spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7_action["The cargo error or release status
index field is set to spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8_action["The cargo error status field is set
to spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8 -- No --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action["The cargo destination station
number index field is set to spaces
AND the cargo destination station
number for index field is set to
spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields S_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1_action["The cargo release date is set to
current machine date AND the cargo
release time is set to current
machine time"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node0 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2_action["The cargo release by field is set
to the current user ID from the
system"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node1 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3_action["The cargo current status field is
set to RELEASED"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node2 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4_action["The cargo release status field is
set to R"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node3 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5_action["The cargo release type field is set
to A"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node4 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6_action["The cargo release reason field is
set to spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node5 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7_action["The cargo error or release status
index field is set to spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node6 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8{"The system processes the release
notification"}:::decision N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8_action["The cargo error status field is set
to spaces"]:::main N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8 -- Yes --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8_action N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8_action --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node7 -- No --> N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8 N_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields_Node8 -- No --> E_SetReleaseInformationCleardestinationstationSetreleasedatetimefromsystemSetreleasebyuserIDSetstatustoRELEASEDSetreleasestatusRSetreleasetypeAClearerrorfields
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
- The cargo destination station number index field is set to spaces
- The cargo destination station number for index field is set to spaces
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
- The cargo release date is set to current machine date
- The cargo release time is set to current machine time
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo release by field is set to the current user ID from the system
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo current status field is set to 'RELEASED'
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo release status field is set to 'R'
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo release type field is set to 'A'
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo release reason field is set to spaces
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo error or release status index field is set to spaces
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status
WHEN:
The system processes the release notification
THEN:
The cargo error status field is set to spaces
β Consolidated Acceptance Criteria
- The system builds the release log message → the log message is formatted as 'EDI 350: RELEASE : ' concatenated with the first 15 characters of X4 CBSA release reference ID concatenated with ' AT PORT ' concatenated with the first 4 characters of P4 port 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_BuildLogMessageRELEASEreleaserefATPORTportcode(["Start Step"])
E_BuildLogMessageRELEASEreleaserefATPORTportcode(["End Step"])
N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0{"The system builds the release log
message"}:::decision N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0_action["The log message is formatted as EDI
350: RELEASE : concatenated with the
first 15 characters of X4 CBSA
release reference ID concatenated
with AT PORT concatenated with the
first 4 characters of P4 port code"]:::main N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0 -- Yes --> N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0_action N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0_action --> E_BuildLogMessageRELEASEreleaserefATPORTportcode S_BuildLogMessageRELEASEreleaserefATPORTportcode --> N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0 N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0 -- No --> E_BuildLogMessageRELEASEreleaserefATPORTportcode
message"}:::decision N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0_action["The log message is formatted as EDI
350: RELEASE : concatenated with the
first 15 characters of X4 CBSA
release reference ID concatenated
with AT PORT concatenated with the
first 4 characters of P4 port code"]:::main N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0 -- Yes --> N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0_action N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0_action --> E_BuildLogMessageRELEASEreleaserefATPORTportcode S_BuildLogMessageRELEASEreleaserefATPORTportcode --> N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0 N_BuildLogMessageRELEASEreleaserefATPORTportcode_Node0 -- No --> E_BuildLogMessageRELEASEreleaserefATPORTportcode
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status AND X4 segment contains CBSA release reference ID AND P4 segment contains port code
WHEN:
The system builds the release log message
THEN:
The log message is formatted as 'EDI 350: RELEASE : ' concatenated with the first 15 characters of X4 CBSA release reference ID concatenated with ' AT PORT ' concatenated with the first 4 characters of P4 port code
β Consolidated Acceptance Criteria
- The system builds the release reason → the release reason is formatted as the first 15 characters of X4 CBSA release reference ID concatenated with '/' concatenated with the first 4 characters of P4 port 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_BuildReleaseReasonreleaserefportcode(["Start Step"])
E_BuildReleaseReasonreleaserefportcode(["End Step"])
N_BuildReleaseReasonreleaserefportcode_Node0{"The system builds the release
reason"}:::decision N_BuildReleaseReasonreleaserefportcode_Node0_action["The release reason is formatted as
the first 15 characters of X4 CBSA
release reference ID concatenated
with concatenated with the first 4
characters of P4 port code"]:::main N_BuildReleaseReasonreleaserefportcode_Node0 -- Yes --> N_BuildReleaseReasonreleaserefportcode_Node0_action N_BuildReleaseReasonreleaserefportcode_Node0_action --> E_BuildReleaseReasonreleaserefportcode S_BuildReleaseReasonreleaserefportcode --> N_BuildReleaseReasonreleaserefportcode_Node0 N_BuildReleaseReasonreleaserefportcode_Node0 -- No --> E_BuildReleaseReasonreleaserefportcode
reason"}:::decision N_BuildReleaseReasonreleaserefportcode_Node0_action["The release reason is formatted as
the first 15 characters of X4 CBSA
release reference ID concatenated
with concatenated with the first 4
characters of P4 port code"]:::main N_BuildReleaseReasonreleaserefportcode_Node0 -- Yes --> N_BuildReleaseReasonreleaserefportcode_Node0_action N_BuildReleaseReasonreleaserefportcode_Node0_action --> E_BuildReleaseReasonreleaserefportcode S_BuildReleaseReasonreleaserefportcode --> N_BuildReleaseReasonreleaserefportcode_Node0 N_BuildReleaseReasonreleaserefportcode_Node0 -- No --> E_BuildReleaseReasonreleaserefportcode
File: GCX126R.cbl
GIVEN:
A cargo record exists with V9 segment indicating RELEASED status AND X4 segment contains CBSA release reference ID AND P4 segment contains port code
WHEN:
The system builds the release reason
THEN:
The release reason is formatted as the first 15 characters of X4 CBSA release reference ID concatenated with '/' concatenated with the first 4 characters of P4 port code
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo release reason field is set to the constructed release reason string
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoReleaseReasonField(["Start Step"])
E_UpdateCargoReleaseReasonField(["End Step"])
N_UpdateCargoReleaseReasonField_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoReleaseReasonField_Node0_action["The cargo release reason field is
set to the constructed release
reason string"]:::main N_UpdateCargoReleaseReasonField_Node0 -- Yes --> N_UpdateCargoReleaseReasonField_Node0_action N_UpdateCargoReleaseReasonField_Node0_action --> E_UpdateCargoReleaseReasonField S_UpdateCargoReleaseReasonField --> N_UpdateCargoReleaseReasonField_Node0 N_UpdateCargoReleaseReasonField_Node0 -- No --> E_UpdateCargoReleaseReasonField
set to the constructed release
reason string"]:::main N_UpdateCargoReleaseReasonField_Node0 -- Yes --> N_UpdateCargoReleaseReasonField_Node0_action N_UpdateCargoReleaseReasonField_Node0_action --> E_UpdateCargoReleaseReasonField S_UpdateCargoReleaseReasonField --> N_UpdateCargoReleaseReasonField_Node0 N_UpdateCargoReleaseReasonField_Node0 -- No --> E_UpdateCargoReleaseReasonField
File: GCX126R.cbl
GIVEN:
The release reason has been built with format 'release-ref/port-code'
WHEN:
The system updates the cargo record
THEN:
The cargo release reason field is set to the constructed release reason string
β Consolidated Acceptance Criteria
- The system logs the release information → a log entry is created with current system date, current system time, cargo CCN as the reference, cargo type indicator set to Canadian cargo, action code set to use input message, and the message set to the constructed release 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_LogReleaseMessagetoCargo(["Start Step"])
E_LogReleaseMessagetoCargo(["End Step"])
N_LogReleaseMessagetoCargo_Node0{"The system logs the release
information"}:::decision N_LogReleaseMessagetoCargo_Node0_action["A log entry is created with current
system date, current system time,
cargo CCN as the reference, cargo
type indicator set to Canadian
cargo, action code set to use input
message, and the message set to the
constructed release log message"]:::main N_LogReleaseMessagetoCargo_Node0 -- Yes --> N_LogReleaseMessagetoCargo_Node0_action N_LogReleaseMessagetoCargo_Node0_action --> E_LogReleaseMessagetoCargo S_LogReleaseMessagetoCargo --> N_LogReleaseMessagetoCargo_Node0 N_LogReleaseMessagetoCargo_Node0 -- No --> E_LogReleaseMessagetoCargo
information"}:::decision N_LogReleaseMessagetoCargo_Node0_action["A log entry is created with current
system date, current system time,
cargo CCN as the reference, cargo
type indicator set to Canadian
cargo, action code set to use input
message, and the message set to the
constructed release log message"]:::main N_LogReleaseMessagetoCargo_Node0 -- Yes --> N_LogReleaseMessagetoCargo_Node0_action N_LogReleaseMessagetoCargo_Node0_action --> E_LogReleaseMessagetoCargo S_LogReleaseMessagetoCargo --> N_LogReleaseMessagetoCargo_Node0 N_LogReleaseMessagetoCargo_Node0 -- No --> E_LogReleaseMessagetoCargo
File: GCX126R.cbl
GIVEN:
The release log message has been constructed AND the cargo CCN is known
WHEN:
The system logs the release information
THEN:
A log entry is created with current system date, current system time, cargo CCN as the reference, cargo type indicator set to Canadian cargo, action code set to use input message, and the message set to the constructed release log message
β Consolidated Acceptance Criteria
- The system searches for associated US manifest → the system retrieves US cargo records where the car ID number index matches the first 12 characters of the current car ID AND the waybill number index matches the saved waybill index AND the cargo is not deleted AND no train has been created for it
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated(["Start Step"])
E_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated(["End Step"])
N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0{"The system searches for associated
US manifest"}:::decision N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0_action["The system retrieves US cargo
records where the car ID number
index matches the first 12
characters of the current car ID AND
the waybill number index matches the
saved waybill index AND the cargo is
not deleted AND no train has been
created for it"]:::main N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0 -- Yes --> N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0_action N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0_action --> E_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated S_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated --> N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0 N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0 -- No --> E_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated
US manifest"}:::decision N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0_action["The system retrieves US cargo
records where the car ID number
index matches the first 12
characters of the current car ID AND
the waybill number index matches the
saved waybill index AND the cargo is
not deleted AND no train has been
created for it"]:::main N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0 -- Yes --> N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0_action N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0_action --> E_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated S_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated --> N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0 N_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated_Node0 -- No --> E_SearchforAssociatedUSManifestMatchbyCarIDMatchbyWaybillNumberVerifynotdeletedVerifynoTRcreated
File: GCX126R.cbl
GIVEN:
A Canadian cargo record has been released AND the cargo has an equipment car ID and waybill number
WHEN:
The system searches for associated US manifest
THEN:
- The system retrieves us cargo records where the car id number index matches the first 12 characters of the current car id
- The waybill number index matches the saved waybill index
- The cargo is not deleted
- No train has been created for it
β Consolidated Acceptance Criteria
- If the search results → if a US cargo record is found where car ID matches AND waybill matches AND cargo is not deleted AND no train created, then US manifest found indicator is set to true, otherwise it is set to false
- If the search results → if a US cargo record is found where car ID matches AND waybill matches AND cargo is not deleted AND no train created, then US manifest found indicator is set to true, otherwise it is set to false
- The system checks the US manifest found flag → if US manifest found flag is false (not found), exit the process ELSE proceed to prepare log entry
- The system checks US manifest found flag → if US manifest found flag is true, proceed to prepare log information ELSE retrieve next US 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_USManifestFound(["Start Step"])
E_USManifestFound(["End Step"])
N_USManifestFound_Node0{"The system evaluates the search
results"}:::decision N_USManifestFound_Node0_action["If a US cargo record is found where
car ID matches AND waybill matches
AND cargo is not deleted AND no
train created, then US manifest
found indicator is set to true,
otherwise it is set to false"]:::main N_USManifestFound_Node0 -- Yes --> N_USManifestFound_Node0_action N_USManifestFound_Node0_action --> E_USManifestFound S_USManifestFound --> N_USManifestFound_Node0 N_USManifestFound_Node1{"The system evaluates the search
results"}:::decision N_USManifestFound_Node1_action["If a US cargo record is found where
car ID matches AND waybill matches
AND cargo is not deleted AND no
train created, then US manifest
found indicator is set to true,
otherwise it is set to false"]:::main N_USManifestFound_Node1 -- Yes --> N_USManifestFound_Node1_action N_USManifestFound_Node1_action --> E_USManifestFound N_USManifestFound_Node0 -- No --> N_USManifestFound_Node1 N_USManifestFound_Node2{"The system checks the US manifest
found flag"}:::decision N_USManifestFound_Node2_action["If US manifest found flag is false
not found, exit the process ELSE
proceed to prepare log entry"]:::main N_USManifestFound_Node2 -- Yes --> N_USManifestFound_Node2_action N_USManifestFound_Node2_action --> E_USManifestFound N_USManifestFound_Node1 -- No --> N_USManifestFound_Node2 N_USManifestFound_Node3{"The system checks US manifest found
flag"}:::decision N_USManifestFound_Node3_action["If US manifest found flag is true,
proceed to prepare log information
ELSE retrieve next US cargo record"]:::main N_USManifestFound_Node3 -- Yes --> N_USManifestFound_Node3_action N_USManifestFound_Node3_action --> E_USManifestFound N_USManifestFound_Node2 -- No --> N_USManifestFound_Node3 N_USManifestFound_Node3 -- No --> E_USManifestFound
results"}:::decision N_USManifestFound_Node0_action["If a US cargo record is found where
car ID matches AND waybill matches
AND cargo is not deleted AND no
train created, then US manifest
found indicator is set to true,
otherwise it is set to false"]:::main N_USManifestFound_Node0 -- Yes --> N_USManifestFound_Node0_action N_USManifestFound_Node0_action --> E_USManifestFound S_USManifestFound --> N_USManifestFound_Node0 N_USManifestFound_Node1{"The system evaluates the search
results"}:::decision N_USManifestFound_Node1_action["If a US cargo record is found where
car ID matches AND waybill matches
AND cargo is not deleted AND no
train created, then US manifest
found indicator is set to true,
otherwise it is set to false"]:::main N_USManifestFound_Node1 -- Yes --> N_USManifestFound_Node1_action N_USManifestFound_Node1_action --> E_USManifestFound N_USManifestFound_Node0 -- No --> N_USManifestFound_Node1 N_USManifestFound_Node2{"The system checks the US manifest
found flag"}:::decision N_USManifestFound_Node2_action["If US manifest found flag is false
not found, exit the process ELSE
proceed to prepare log entry"]:::main N_USManifestFound_Node2 -- Yes --> N_USManifestFound_Node2_action N_USManifestFound_Node2_action --> E_USManifestFound N_USManifestFound_Node1 -- No --> N_USManifestFound_Node2 N_USManifestFound_Node3{"The system checks US manifest found
flag"}:::decision N_USManifestFound_Node3_action["If US manifest found flag is true,
proceed to prepare log information
ELSE retrieve next US cargo record"]:::main N_USManifestFound_Node3 -- Yes --> N_USManifestFound_Node3_action N_USManifestFound_Node3_action --> E_USManifestFound N_USManifestFound_Node2 -- No --> N_USManifestFound_Node3 N_USManifestFound_Node3 -- No --> E_USManifestFound
File: GCX126R.cbl
GIVEN:
The system has searched for US cargo records matching the car ID and waybill number
WHEN:
The system evaluates the search results
THEN:
- If a us cargo record is found where car id matches
- Waybill matches
- Cargo is not deleted
- No train created, then us manifest found indicator is set to true, otherwise it is set to false
File: GCX126R.cbl
GIVEN:
The system has searched for US cargo records matching the follower's car ID and waybill number
WHEN:
The system evaluates the search results
THEN:
- If a us cargo record is found where car id matches
- Waybill matches
- Cargo is not deleted
- No train created, then us manifest found indicator is set to true, otherwise it is set to false
File: GCX126R.cbl
GIVEN:
The US manifest search process has completed all retrieval and validation steps
WHEN:
The system checks the US manifest found flag
THEN:
If US manifest found flag is false (not found), exit the process ELSE proceed to prepare log entry
File: GCX126R.cbl
GIVEN:
First US cargo retrieval and validation has completed
WHEN:
The system checks US manifest found flag
THEN:
If US manifest found flag is true, proceed to prepare log information ELSE retrieve next US cargo record
β Consolidated Acceptance Criteria
- The system logs the release to US cargo → a log entry is created with current system date, current system time, US CCN as the reference, cargo type indicator set to US cargo, action code set to use input message, and the message formatted as 'CDN CCN RLSED BY EDI 350: ' concatenated with the Canadian cargo CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn(["Start Step"])
E_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn(["End Step"])
N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0{"The system logs the release to US
cargo"}:::decision N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0_action["A log entry is created with current
system date, current system time, US
CCN as the reference, cargo type
indicator set to US cargo, action
code set to use input message, and
the message formatted as CDN CCN
RLSED BY EDI 350: concatenated with
the Canadian cargo CCN"]:::main N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0 -- Yes --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0_action N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0_action --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn S_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0 N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0 -- No --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn
cargo"}:::decision N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0_action["A log entry is created with current
system date, current system time, US
CCN as the reference, cargo type
indicator set to US cargo, action
code set to use input message, and
the message formatted as CDN CCN
RLSED BY EDI 350: concatenated with
the Canadian cargo CCN"]:::main N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0 -- Yes --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0_action N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0_action --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn S_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0 N_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn_Node0 -- No --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350canadianccn
File: GCX126R.cbl
GIVEN:
A US manifest record has been found that matches the Canadian cargo's car ID and waybill number
WHEN:
The system logs the release to US cargo
THEN:
A log entry is created with current system date, current system time, US CCN as the reference, cargo type indicator set to US cargo, action code set to use input message, and the message formatted as 'CDN CCN RLSED BY EDI 350: ' concatenated with the Canadian cargo CCN
β Consolidated Acceptance Criteria
- The system prepares to update the cargo record → the cargo release date is copied to a hold date field AND the cargo release time is copied to a hold 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_SaveReleaseDateTimeforLaterUse(["Start Step"])
E_SaveReleaseDateTimeforLaterUse(["End Step"])
N_SaveReleaseDateTimeforLaterUse_Node0{"The system prepares to update the
cargo record"}:::decision N_SaveReleaseDateTimeforLaterUse_Node0_action["The cargo release date is copied to
a hold date field AND the cargo
release time is copied to a hold
time field"]:::main N_SaveReleaseDateTimeforLaterUse_Node0 -- Yes --> N_SaveReleaseDateTimeforLaterUse_Node0_action N_SaveReleaseDateTimeforLaterUse_Node0_action --> E_SaveReleaseDateTimeforLaterUse S_SaveReleaseDateTimeforLaterUse --> N_SaveReleaseDateTimeforLaterUse_Node0 N_SaveReleaseDateTimeforLaterUse_Node0 -- No --> E_SaveReleaseDateTimeforLaterUse
cargo record"}:::decision N_SaveReleaseDateTimeforLaterUse_Node0_action["The cargo release date is copied to
a hold date field AND the cargo
release time is copied to a hold
time field"]:::main N_SaveReleaseDateTimeforLaterUse_Node0 -- Yes --> N_SaveReleaseDateTimeforLaterUse_Node0_action N_SaveReleaseDateTimeforLaterUse_Node0_action --> E_SaveReleaseDateTimeforLaterUse S_SaveReleaseDateTimeforLaterUse --> N_SaveReleaseDateTimeforLaterUse_Node0 N_SaveReleaseDateTimeforLaterUse_Node0 -- No --> E_SaveReleaseDateTimeforLaterUse
File: GCX126R.cbl
GIVEN:
The cargo release date and time have been set from the system clock
WHEN:
The system prepares to update the cargo record
THEN:
- The cargo release date is copied to a hold date field
- The cargo release time is copied to a hold time field
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo report segment is replaced in the database with the updated release 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_UpdateCanadianCargoRecordwithReleaseInformation(["Start Step"])
E_UpdateCanadianCargoRecordwithReleaseInformation(["End Step"])
N_UpdateCanadianCargoRecordwithReleaseInformation_Node0{"The system updates the cargo record"}:::decision
N_UpdateCanadianCargoRecordwithReleaseInformation_Node0_action["The cargo report segment is
replaced in the database with the
updated release information"]:::main N_UpdateCanadianCargoRecordwithReleaseInformation_Node0 -- Yes --> N_UpdateCanadianCargoRecordwithReleaseInformation_Node0_action N_UpdateCanadianCargoRecordwithReleaseInformation_Node0_action --> E_UpdateCanadianCargoRecordwithReleaseInformation S_UpdateCanadianCargoRecordwithReleaseInformation --> N_UpdateCanadianCargoRecordwithReleaseInformation_Node0 N_UpdateCanadianCargoRecordwithReleaseInformation_Node0 -- No --> E_UpdateCanadianCargoRecordwithReleaseInformation
replaced in the database with the
updated release information"]:::main N_UpdateCanadianCargoRecordwithReleaseInformation_Node0 -- Yes --> N_UpdateCanadianCargoRecordwithReleaseInformation_Node0_action N_UpdateCanadianCargoRecordwithReleaseInformation_Node0_action --> E_UpdateCanadianCargoRecordwithReleaseInformation S_UpdateCanadianCargoRecordwithReleaseInformation --> N_UpdateCanadianCargoRecordwithReleaseInformation_Node0 N_UpdateCanadianCargoRecordwithReleaseInformation_Node0 -- No --> E_UpdateCanadianCargoRecordwithReleaseInformation
File: GCX126R.cbl
GIVEN:
All release information has been set in the cargo segment including release date, time, user, status, type, and reason
WHEN:
The system updates the cargo record
THEN:
The cargo report segment is replaced in the database with the updated release information
β Consolidated Acceptance Criteria
- The system retrieves follower manifests → the system retrieves all cargo records where the master manifest CCN matches the current cargo CCN AND the cargo is a follower manifest (not a master) AND stores up to 100 follower CCN keys in an array AND stops retrieval when end of database is reached OR 100 records are retrieved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAllFollowerManifestsforMasterCCNupto100records(["Start Step"])
E_RetrieveAllFollowerManifestsforMasterCCNupto100records(["End Step"])
N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0{"The system retrieves follower
manifests"}:::decision N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0_action["The system retrieves all cargo
records where the master manifest
CCN matches the current cargo CCN
AND the cargo is a follower manifest
not a master AND stores up to 100
follower CCN keys in an array AND
stops retrieval when end of database
is reached OR 100 records are
retrieved"]:::main N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0 -- Yes --> N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0_action N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0_action --> E_RetrieveAllFollowerManifestsforMasterCCNupto100records S_RetrieveAllFollowerManifestsforMasterCCNupto100records --> N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0 N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0 -- No --> E_RetrieveAllFollowerManifestsforMasterCCNupto100records
manifests"}:::decision N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0_action["The system retrieves all cargo
records where the master manifest
CCN matches the current cargo CCN
AND the cargo is a follower manifest
not a master AND stores up to 100
follower CCN keys in an array AND
stops retrieval when end of database
is reached OR 100 records are
retrieved"]:::main N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0 -- Yes --> N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0_action N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0_action --> E_RetrieveAllFollowerManifestsforMasterCCNupto100records S_RetrieveAllFollowerManifestsforMasterCCNupto100records --> N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0 N_RetrieveAllFollowerManifestsforMasterCCNupto100records_Node0 -- No --> E_RetrieveAllFollowerManifestsforMasterCCNupto100records
File: GCX126R.cbl
GIVEN:
A cargo is identified as a master manifest with a specific CCN
WHEN:
The system retrieves follower manifests
THEN:
- The system retrieves all cargo records where the master manifest ccn matches the current cargo ccn
- The cargo is a follower manifest (not a master) and stores up to 100 follower ccn keys in an array
- Stops retrieval when end of database is reached or 100 records are retrieved
β Consolidated Acceptance Criteria
- The system processes follower manifests → for each follower CCN in the array from position 1 to the count of retrieved followers, the system retrieves the cargo record using the follower CCN AND processes it if the CCN is not 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_ForEachFollowerManifest(["Start Step"])
E_ForEachFollowerManifest(["End Step"])
N_ForEachFollowerManifest_Node0{"The system processes follower
manifests"}:::decision N_ForEachFollowerManifest_Node0_action["For each follower CCN in the array
from position 1 to the count of
retrieved followers, the system
retrieves the cargo record using the
follower CCN AND processes it if the
CCN is not spaces or low-values"]:::main N_ForEachFollowerManifest_Node0 -- Yes --> N_ForEachFollowerManifest_Node0_action N_ForEachFollowerManifest_Node0_action --> E_ForEachFollowerManifest S_ForEachFollowerManifest --> N_ForEachFollowerManifest_Node0 N_ForEachFollowerManifest_Node0 -- No --> E_ForEachFollowerManifest
manifests"}:::decision N_ForEachFollowerManifest_Node0_action["For each follower CCN in the array
from position 1 to the count of
retrieved followers, the system
retrieves the cargo record using the
follower CCN AND processes it if the
CCN is not spaces or low-values"]:::main N_ForEachFollowerManifest_Node0 -- Yes --> N_ForEachFollowerManifest_Node0_action N_ForEachFollowerManifest_Node0_action --> E_ForEachFollowerManifest S_ForEachFollowerManifest --> N_ForEachFollowerManifest_Node0 N_ForEachFollowerManifest_Node0 -- No --> E_ForEachFollowerManifest
File: GCX126R.cbl
GIVEN:
Follower manifest CCNs have been retrieved and stored in an array
WHEN:
The system processes follower manifests
THEN:
- For each follower ccn in the array from position 1 to the count of retrieved followers, the system retrieves the cargo record using the follower ccn
- Processes it if the ccn is not spaces or low-values
β Consolidated Acceptance Criteria
- The system sets release information for the follower → the follower cargo destination station number fields are cleared AND release date is set to current machine date AND release time is set to current machine time AND release by is set to current user ID AND current status is set to 'RELEASED' AND release status is set to 'R' AND release type is set to 'A' AND error fields are cleared
- The system applies release information → the destination station numbers are cleared, release date is set to current machine date, release time is set to current machine time, release by is set to current user ID, current status is set to 'RELEASED', release status is set to 'R', release type is set to 'A', error/release status index is cleared, and error status 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_SetReleaseInformationforFollower(["Start Step"])
E_SetReleaseInformationforFollower(["End Step"])
N_SetReleaseInformationforFollower_Node0{"The system sets release information
for the follower"}:::decision N_SetReleaseInformationforFollower_Node0_action["The follower cargo destination
station number fields are cleared
AND release date is set to current
machine date AND release time is set
to current machine time AND release
by is set to current user ID AND
current status is set to RELEASED
AND release status is set to R AND
release type is set to A AND error
fields are cleared"]:::main N_SetReleaseInformationforFollower_Node0 -- Yes --> N_SetReleaseInformationforFollower_Node0_action N_SetReleaseInformationforFollower_Node0_action --> E_SetReleaseInformationforFollower S_SetReleaseInformationforFollower --> N_SetReleaseInformationforFollower_Node0 N_SetReleaseInformationforFollower_Node1{"The system applies release
information"}:::decision N_SetReleaseInformationforFollower_Node1_action["The destination station numbers are
cleared, release date is set to
current machine date, release time
is set to current machine time,
release by is set to current user
ID, current status is set to
RELEASED , release status is set to
R , release type is set to A ,
errorrelease status index is
cleared, and error status is cleared"]:::main N_SetReleaseInformationforFollower_Node1 -- Yes --> N_SetReleaseInformationforFollower_Node1_action N_SetReleaseInformationforFollower_Node1_action --> E_SetReleaseInformationforFollower N_SetReleaseInformationforFollower_Node0 -- No --> N_SetReleaseInformationforFollower_Node1 N_SetReleaseInformationforFollower_Node1 -- No --> E_SetReleaseInformationforFollower
for the follower"}:::decision N_SetReleaseInformationforFollower_Node0_action["The follower cargo destination
station number fields are cleared
AND release date is set to current
machine date AND release time is set
to current machine time AND release
by is set to current user ID AND
current status is set to RELEASED
AND release status is set to R AND
release type is set to A AND error
fields are cleared"]:::main N_SetReleaseInformationforFollower_Node0 -- Yes --> N_SetReleaseInformationforFollower_Node0_action N_SetReleaseInformationforFollower_Node0_action --> E_SetReleaseInformationforFollower S_SetReleaseInformationforFollower --> N_SetReleaseInformationforFollower_Node0 N_SetReleaseInformationforFollower_Node1{"The system applies release
information"}:::decision N_SetReleaseInformationforFollower_Node1_action["The destination station numbers are
cleared, release date is set to
current machine date, release time
is set to current machine time,
release by is set to current user
ID, current status is set to
RELEASED , release status is set to
R , release type is set to A ,
errorrelease status index is
cleared, and error status is cleared"]:::main N_SetReleaseInformationforFollower_Node1 -- Yes --> N_SetReleaseInformationforFollower_Node1_action N_SetReleaseInformationforFollower_Node1_action --> E_SetReleaseInformationforFollower N_SetReleaseInformationforFollower_Node0 -- No --> N_SetReleaseInformationforFollower_Node1 N_SetReleaseInformationforFollower_Node1 -- No --> E_SetReleaseInformationforFollower
File: GCX126R.cbl
GIVEN:
A follower manifest cargo record has been retrieved
WHEN:
The system sets release information for the follower
THEN:
- The follower cargo destination station number fields are cleared
- Release date is set to current machine date
- Release time is set to current machine time
- Release by is set to current user id
- Current status is set to 'released' and release status is set to 'r' and release type is set to 'a' and error fields are cleared
File: GCX126R.cbl
GIVEN:
A follower cargo record has been successfully retrieved from the database
WHEN:
The system applies release information
THEN:
The destination station numbers are cleared, release date is set to current machine date, release time is set to current machine time, release by is set to current user ID, current status is set to 'RELEASED', release status is set to 'R', release type is set to 'A', error/release status index is cleared, and error status is cleared
β Consolidated Acceptance Criteria
- The system builds the log message for the follower → if V9 notice reason code indicates RELEASED, then format message as release type, otherwise if V9 notice reason code indicates DECON, then format message as deconsolidation 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_BuildMessageBasedonType(["Start Step"])
E_BuildMessageBasedonType(["End Step"])
N_BuildMessageBasedonType_Node0{"The system builds the log message
for the follower"}:::decision N_BuildMessageBasedonType_Node0_action["If V9 notice reason code indicates
RELEASED, then format message as
release type, otherwise if V9 notice
reason code indicates DECON, then
format message as deconsolidation
type"]:::main N_BuildMessageBasedonType_Node0 -- Yes --> N_BuildMessageBasedonType_Node0_action N_BuildMessageBasedonType_Node0_action --> E_BuildMessageBasedonType S_BuildMessageBasedonType --> N_BuildMessageBasedonType_Node0 N_BuildMessageBasedonType_Node0 -- No --> E_BuildMessageBasedonType
for the follower"}:::decision N_BuildMessageBasedonType_Node0_action["If V9 notice reason code indicates
RELEASED, then format message as
release type, otherwise if V9 notice
reason code indicates DECON, then
format message as deconsolidation
type"]:::main N_BuildMessageBasedonType_Node0 -- Yes --> N_BuildMessageBasedonType_Node0_action N_BuildMessageBasedonType_Node0_action --> E_BuildMessageBasedonType S_BuildMessageBasedonType --> N_BuildMessageBasedonType_Node0 N_BuildMessageBasedonType_Node0 -- No --> E_BuildMessageBasedonType
File: GCX126R.cbl
GIVEN:
A follower manifest is being processed AND the V9 segment contains a notice reason code
WHEN:
The system builds the log message for the follower
THEN:
If V9 notice reason code indicates RELEASED, then format message as release type, otherwise if V9 notice reason code indicates DECON, then format message as deconsolidation type
β Consolidated Acceptance Criteria
- The system builds the release message → the log message is formatted as 'EDI 350: RELEASE : ' concatenated with the first 15 characters of X4 CBSA release reference ID concatenated with ' AT PORT ' concatenated with the first 4 characters of P4 port 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_RELEASEreleaserefATPORTportcode(["Start Step"])
E_RELEASEreleaserefATPORTportcode(["End Step"])
N_RELEASEreleaserefATPORTportcode_Node0{"The system builds the release
message"}:::decision N_RELEASEreleaserefATPORTportcode_Node0_action["The log message is formatted as EDI
350: RELEASE : concatenated with the
first 15 characters of X4 CBSA
release reference ID concatenated
with AT PORT concatenated with the
first 4 characters of P4 port code"]:::main N_RELEASEreleaserefATPORTportcode_Node0 -- Yes --> N_RELEASEreleaserefATPORTportcode_Node0_action N_RELEASEreleaserefATPORTportcode_Node0_action --> E_RELEASEreleaserefATPORTportcode S_RELEASEreleaserefATPORTportcode --> N_RELEASEreleaserefATPORTportcode_Node0 N_RELEASEreleaserefATPORTportcode_Node0 -- No --> E_RELEASEreleaserefATPORTportcode
message"}:::decision N_RELEASEreleaserefATPORTportcode_Node0_action["The log message is formatted as EDI
350: RELEASE : concatenated with the
first 15 characters of X4 CBSA
release reference ID concatenated
with AT PORT concatenated with the
first 4 characters of P4 port code"]:::main N_RELEASEreleaserefATPORTportcode_Node0 -- Yes --> N_RELEASEreleaserefATPORTportcode_Node0_action N_RELEASEreleaserefATPORTportcode_Node0_action --> E_RELEASEreleaserefATPORTportcode S_RELEASEreleaserefATPORTportcode --> N_RELEASEreleaserefATPORTportcode_Node0 N_RELEASEreleaserefATPORTportcode_Node0 -- No --> E_RELEASEreleaserefATPORTportcode
File: GCX126R.cbl
GIVEN:
A follower manifest is being processed AND V9 segment indicates RELEASED status
WHEN:
The system builds the release message
THEN:
The log message is formatted as 'EDI 350: RELEASE : ' concatenated with the first 15 characters of X4 CBSA release reference ID concatenated with ' AT PORT ' concatenated with the first 4 characters of P4 port code
β Consolidated Acceptance Criteria
- The system builds the release message → the log message is formatted as 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with the first 4 characters of P4 port 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_RELEASEVIADECONATPORTportcode(["Start Step"])
E_RELEASEVIADECONATPORTportcode(["End Step"])
N_RELEASEVIADECONATPORTportcode_Node0{"The system builds the release
message"}:::decision N_RELEASEVIADECONATPORTportcode_Node0_action["The log message is formatted as EDI
350: RELEASE VIA DECON AT PORT
concatenated with the first 4
characters of P4 port code"]:::main N_RELEASEVIADECONATPORTportcode_Node0 -- Yes --> N_RELEASEVIADECONATPORTportcode_Node0_action N_RELEASEVIADECONATPORTportcode_Node0_action --> E_RELEASEVIADECONATPORTportcode S_RELEASEVIADECONATPORTportcode --> N_RELEASEVIADECONATPORTportcode_Node0 N_RELEASEVIADECONATPORTportcode_Node0 -- No --> E_RELEASEVIADECONATPORTportcode
message"}:::decision N_RELEASEVIADECONATPORTportcode_Node0_action["The log message is formatted as EDI
350: RELEASE VIA DECON AT PORT
concatenated with the first 4
characters of P4 port code"]:::main N_RELEASEVIADECONATPORTportcode_Node0 -- Yes --> N_RELEASEVIADECONATPORTportcode_Node0_action N_RELEASEVIADECONATPORTportcode_Node0_action --> E_RELEASEVIADECONATPORTportcode S_RELEASEVIADECONATPORTportcode --> N_RELEASEVIADECONATPORTportcode_Node0 N_RELEASEVIADECONATPORTportcode_Node0 -- No --> E_RELEASEVIADECONATPORTportcode
File: GCX126R.cbl
GIVEN:
A follower manifest is being processed AND V9 segment indicates DECON status
WHEN:
The system builds the release message
THEN:
The log message is formatted as 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with the first 4 characters of P4 port code
β Consolidated Acceptance Criteria
- The system builds the release reason for the follower → if V9 notice reason code indicates RELEASED, then format reason as standard release type, otherwise if V9 notice reason code indicates DECON, then format reason as deconsolidation 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_BuildReasonBasedonType(["Start Step"])
E_BuildReasonBasedonType(["End Step"])
N_BuildReasonBasedonType_Node0{"The system builds the release
reason for the follower"}:::decision N_BuildReasonBasedonType_Node0_action["If V9 notice reason code indicates
RELEASED, then format reason as
standard release type, otherwise if
V9 notice reason code indicates
DECON, then format reason as
deconsolidation type"]:::main N_BuildReasonBasedonType_Node0 -- Yes --> N_BuildReasonBasedonType_Node0_action N_BuildReasonBasedonType_Node0_action --> E_BuildReasonBasedonType S_BuildReasonBasedonType --> N_BuildReasonBasedonType_Node0 N_BuildReasonBasedonType_Node0 -- No --> E_BuildReasonBasedonType
reason for the follower"}:::decision N_BuildReasonBasedonType_Node0_action["If V9 notice reason code indicates
RELEASED, then format reason as
standard release type, otherwise if
V9 notice reason code indicates
DECON, then format reason as
deconsolidation type"]:::main N_BuildReasonBasedonType_Node0 -- Yes --> N_BuildReasonBasedonType_Node0_action N_BuildReasonBasedonType_Node0_action --> E_BuildReasonBasedonType S_BuildReasonBasedonType --> N_BuildReasonBasedonType_Node0 N_BuildReasonBasedonType_Node0 -- No --> E_BuildReasonBasedonType
File: GCX126R.cbl
GIVEN:
A follower manifest is being processed AND the V9 segment contains a notice reason code
WHEN:
The system builds the release reason for the follower
THEN:
If V9 notice reason code indicates RELEASED, then format reason as standard release type, otherwise if V9 notice reason code indicates DECON, then format reason as deconsolidation type
β Consolidated Acceptance Criteria
- The system builds the release reason → the release reason is formatted as the first 15 characters of X4 CBSA release reference ID concatenated with '/' concatenated with the first 4 characters of P4 port 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_releaserefportcode(["Start Step"])
E_releaserefportcode(["End Step"])
N_releaserefportcode_Node0{"The system builds the release
reason"}:::decision N_releaserefportcode_Node0_action["The release reason is formatted as
the first 15 characters of X4 CBSA
release reference ID concatenated
with concatenated with the first 4
characters of P4 port code"]:::main N_releaserefportcode_Node0 -- Yes --> N_releaserefportcode_Node0_action N_releaserefportcode_Node0_action --> E_releaserefportcode S_releaserefportcode --> N_releaserefportcode_Node0 N_releaserefportcode_Node0 -- No --> E_releaserefportcode
reason"}:::decision N_releaserefportcode_Node0_action["The release reason is formatted as
the first 15 characters of X4 CBSA
release reference ID concatenated
with concatenated with the first 4
characters of P4 port code"]:::main N_releaserefportcode_Node0 -- Yes --> N_releaserefportcode_Node0_action N_releaserefportcode_Node0_action --> E_releaserefportcode S_releaserefportcode --> N_releaserefportcode_Node0 N_releaserefportcode_Node0 -- No --> E_releaserefportcode
File: GCX126R.cbl
GIVEN:
A follower manifest is being processed AND V9 segment indicates RELEASED status
WHEN:
The system builds the release reason
THEN:
The release reason is formatted as the first 15 characters of X4 CBSA release reference ID concatenated with '/' concatenated with the first 4 characters of P4 port code
β Consolidated Acceptance Criteria
- The system builds the release reason → the release reason is formatted as 'DECONSOLIDATION AT ' concatenated with the first 4 characters of P4 port 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_DECONSOLIDATIONATportcode(["Start Step"])
E_DECONSOLIDATIONATportcode(["End Step"])
N_DECONSOLIDATIONATportcode_Node0{"The system builds the release
reason"}:::decision N_DECONSOLIDATIONATportcode_Node0_action["The release reason is formatted as
DECONSOLIDATION AT concatenated with
the first 4 characters of P4 port
code"]:::main N_DECONSOLIDATIONATportcode_Node0 -- Yes --> N_DECONSOLIDATIONATportcode_Node0_action N_DECONSOLIDATIONATportcode_Node0_action --> E_DECONSOLIDATIONATportcode S_DECONSOLIDATIONATportcode --> N_DECONSOLIDATIONATportcode_Node0 N_DECONSOLIDATIONATportcode_Node0 -- No --> E_DECONSOLIDATIONATportcode
reason"}:::decision N_DECONSOLIDATIONATportcode_Node0_action["The release reason is formatted as
DECONSOLIDATION AT concatenated with
the first 4 characters of P4 port
code"]:::main N_DECONSOLIDATIONATportcode_Node0 -- Yes --> N_DECONSOLIDATIONATportcode_Node0_action N_DECONSOLIDATIONATportcode_Node0_action --> E_DECONSOLIDATIONATportcode S_DECONSOLIDATIONATportcode --> N_DECONSOLIDATIONATportcode_Node0 N_DECONSOLIDATIONATportcode_Node0 -- No --> E_DECONSOLIDATIONATportcode
File: GCX126R.cbl
GIVEN:
A follower manifest is being processed AND V9 segment indicates DECON status
WHEN:
The system builds the release reason
THEN:
The release reason is formatted as 'DECONSOLIDATION AT ' concatenated with the first 4 characters of P4 port code
β Consolidated Acceptance Criteria
- The system logs the release information → a log entry is created with current system date, current system time, follower cargo CCN as the reference, cargo type indicator set to Canadian cargo, action code set to use input message, and the message set to the constructed release 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_LogReleaseMessagetoFollowerCargo(["Start Step"])
E_LogReleaseMessagetoFollowerCargo(["End Step"])
N_LogReleaseMessagetoFollowerCargo_Node0{"The system logs the release
information"}:::decision N_LogReleaseMessagetoFollowerCargo_Node0_action["A log entry is created with current
system date, current system time,
follower cargo CCN as the reference,
cargo type indicator set to Canadian
cargo, action code set to use input
message, and the message set to the
constructed release log message"]:::main N_LogReleaseMessagetoFollowerCargo_Node0 -- Yes --> N_LogReleaseMessagetoFollowerCargo_Node0_action N_LogReleaseMessagetoFollowerCargo_Node0_action --> E_LogReleaseMessagetoFollowerCargo S_LogReleaseMessagetoFollowerCargo --> N_LogReleaseMessagetoFollowerCargo_Node0 N_LogReleaseMessagetoFollowerCargo_Node0 -- No --> E_LogReleaseMessagetoFollowerCargo
information"}:::decision N_LogReleaseMessagetoFollowerCargo_Node0_action["A log entry is created with current
system date, current system time,
follower cargo CCN as the reference,
cargo type indicator set to Canadian
cargo, action code set to use input
message, and the message set to the
constructed release log message"]:::main N_LogReleaseMessagetoFollowerCargo_Node0 -- Yes --> N_LogReleaseMessagetoFollowerCargo_Node0_action N_LogReleaseMessagetoFollowerCargo_Node0_action --> E_LogReleaseMessagetoFollowerCargo S_LogReleaseMessagetoFollowerCargo --> N_LogReleaseMessagetoFollowerCargo_Node0 N_LogReleaseMessagetoFollowerCargo_Node0 -- No --> E_LogReleaseMessagetoFollowerCargo
File: GCX126R.cbl
GIVEN:
The release log message has been constructed for the follower AND the follower cargo CCN is known
WHEN:
The system logs the release information
THEN:
A log entry is created with current system date, current system time, follower cargo CCN as the reference, cargo type indicator set to Canadian cargo, action code set to use input message, and the message set to the constructed release log message
β Consolidated Acceptance Criteria
- The system updates the follower cargo record → the follower cargo release reason field is set to the constructed release reason string
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateFollowerReleaseReason(["Start Step"])
E_UpdateFollowerReleaseReason(["End Step"])
N_UpdateFollowerReleaseReason_Node0{"The system updates the follower
cargo record"}:::decision N_UpdateFollowerReleaseReason_Node0_action["The follower cargo release reason
field is set to the constructed
release reason string"]:::main N_UpdateFollowerReleaseReason_Node0 -- Yes --> N_UpdateFollowerReleaseReason_Node0_action N_UpdateFollowerReleaseReason_Node0_action --> E_UpdateFollowerReleaseReason S_UpdateFollowerReleaseReason --> N_UpdateFollowerReleaseReason_Node0 N_UpdateFollowerReleaseReason_Node0 -- No --> E_UpdateFollowerReleaseReason
cargo record"}:::decision N_UpdateFollowerReleaseReason_Node0_action["The follower cargo release reason
field is set to the constructed
release reason string"]:::main N_UpdateFollowerReleaseReason_Node0 -- Yes --> N_UpdateFollowerReleaseReason_Node0_action N_UpdateFollowerReleaseReason_Node0_action --> E_UpdateFollowerReleaseReason S_UpdateFollowerReleaseReason --> N_UpdateFollowerReleaseReason_Node0 N_UpdateFollowerReleaseReason_Node0 -- No --> E_UpdateFollowerReleaseReason
File: GCX126R.cbl
GIVEN:
The release reason has been built for the follower manifest
WHEN:
The system updates the follower cargo record
THEN:
The follower cargo release reason field is set to the constructed release reason string
β Consolidated Acceptance Criteria
- The system searches for associated US manifest → the system retrieves US cargo records where the car ID number index matches the first 12 characters of the follower's car ID AND the waybill number index matches the follower's waybill index AND the cargo is not deleted AND no train has been created for it
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FindAssociatedUSManifestforFollower(["Start Step"])
E_FindAssociatedUSManifestforFollower(["End Step"])
N_FindAssociatedUSManifestforFollower_Node0{"The system searches for associated
US manifest"}:::decision N_FindAssociatedUSManifestforFollower_Node0_action["The system retrieves US cargo
records where the car ID number
index matches the first 12
characters of the follower s car ID
AND the waybill number index matches
the follower s waybill index AND the
cargo is not deleted AND no train
has been created for it"]:::main N_FindAssociatedUSManifestforFollower_Node0 -- Yes --> N_FindAssociatedUSManifestforFollower_Node0_action N_FindAssociatedUSManifestforFollower_Node0_action --> E_FindAssociatedUSManifestforFollower S_FindAssociatedUSManifestforFollower --> N_FindAssociatedUSManifestforFollower_Node0 N_FindAssociatedUSManifestforFollower_Node0 -- No --> E_FindAssociatedUSManifestforFollower
US manifest"}:::decision N_FindAssociatedUSManifestforFollower_Node0_action["The system retrieves US cargo
records where the car ID number
index matches the first 12
characters of the follower s car ID
AND the waybill number index matches
the follower s waybill index AND the
cargo is not deleted AND no train
has been created for it"]:::main N_FindAssociatedUSManifestforFollower_Node0 -- Yes --> N_FindAssociatedUSManifestforFollower_Node0_action N_FindAssociatedUSManifestforFollower_Node0_action --> E_FindAssociatedUSManifestforFollower S_FindAssociatedUSManifestforFollower --> N_FindAssociatedUSManifestforFollower_Node0 N_FindAssociatedUSManifestforFollower_Node0 -- No --> E_FindAssociatedUSManifestforFollower
File: GCX126R.cbl
GIVEN:
A follower manifest cargo record has been released AND the follower has an equipment car ID and waybill number
WHEN:
The system searches for associated US manifest
THEN:
- The system retrieves us cargo records where the car id number index matches the first 12 characters of the follower's car id
- The waybill number index matches the follower's waybill index
- The cargo is not deleted
- No train has been created for it
β Consolidated Acceptance Criteria
- The system logs the release to US cargo → a log entry is created with current system date, current system time, US CCN as the reference, cargo type indicator set to US cargo, action code set to use input message, and the message formatted as 'CDN CCN RLSED BY EDI 350: ' concatenated with the follower Canadian cargo CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogtoUSCargoCDNCCNRLSEDBYEDI350(["Start Step"])
E_LogtoUSCargoCDNCCNRLSEDBYEDI350(["End Step"])
N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0{"The system logs the release to US
cargo"}:::decision N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0_action["A log entry is created with current
system date, current system time, US
CCN as the reference, cargo type
indicator set to US cargo, action
code set to use input message, and
the message formatted as CDN CCN
RLSED BY EDI 350: concatenated with
the follower Canadian cargo CCN"]:::main N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0 -- Yes --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0_action N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0_action --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350 S_LogtoUSCargoCDNCCNRLSEDBYEDI350 --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0 N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0 -- No --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350
cargo"}:::decision N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0_action["A log entry is created with current
system date, current system time, US
CCN as the reference, cargo type
indicator set to US cargo, action
code set to use input message, and
the message formatted as CDN CCN
RLSED BY EDI 350: concatenated with
the follower Canadian cargo CCN"]:::main N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0 -- Yes --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0_action N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0_action --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350 S_LogtoUSCargoCDNCCNRLSEDBYEDI350 --> N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0 N_LogtoUSCargoCDNCCNRLSEDBYEDI350_Node0 -- No --> E_LogtoUSCargoCDNCCNRLSEDBYEDI350
File: GCX126R.cbl
GIVEN:
A US manifest record has been found that matches the follower cargo's car ID and waybill number
WHEN:
The system logs the release to US cargo
THEN:
A log entry is created with current system date, current system time, US CCN as the reference, cargo type indicator set to US cargo, action code set to use input message, and the message formatted as 'CDN CCN RLSED BY EDI 350: ' concatenated with the follower Canadian cargo CCN
β Consolidated Acceptance Criteria
- The system initiates a search for associated US manifest records → the search parameters are initialized with car ID from current cargo equipment car key, waybill index from saved waybill index, and US CCN key index 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_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues(["Start Step"])
E_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues(["End Step"])
N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0{"The system initiates a search for
associated US manifest records"}:::decision N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0_action["The search parameters are
initialized with car ID from current
cargo equipment car key, waybill
index from saved waybill index, and
US CCN key index set to low values"]:::main N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0 -- Yes --> N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0_action N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0_action --> E_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues S_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues --> N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0 N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0 -- No --> E_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues
associated US manifest records"}:::decision N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0_action["The search parameters are
initialized with car ID from current
cargo equipment car key, waybill
index from saved waybill index, and
US CCN key index set to low values"]:::main N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0 -- Yes --> N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0_action N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0_action --> E_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues S_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues --> N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0 N_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues_Node0 -- No --> E_InitializeSearchParametersSetCarIDfromCurrentCargoSetWaybillIndexfromCurrentCargoSetUSCCNtoLowValues
File: GCX126R.cbl
GIVEN:
A cargo record has been processed and current cargo equipment car ID and waybill index are available
WHEN:
The system initiates a search for associated US manifest records
THEN:
The search parameters are initialized with car ID from current cargo equipment car key, waybill index from saved waybill index, and US CCN key index set to low values
β Consolidated Acceptance Criteria
- The system prepares to execute the database search → the search function is set to Get Unique (GU), segment type is set to US cargo record (GCSUSRT), index type is set to Car-Waybill, and operator is set to greater than or equal (>=)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual(["Start Step"])
E_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual(["End Step"])
N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0{"The system prepares to execute the
database search"}:::decision N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0_action["The search function is set to Get
Unique GU, segment type is set to US
cargo record GCSUSRT, index type is
set to Car-Waybill, and operator is
set to greater than or equal"]:::main N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0 -- Yes --> N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0_action N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0_action --> E_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual S_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual --> N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0 N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0 -- No --> E_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual
database search"}:::decision N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0_action["The search function is set to Get
Unique GU, segment type is set to US
cargo record GCSUSRT, index type is
set to Car-Waybill, and operator is
set to greater than or equal"]:::main N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0 -- Yes --> N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0_action N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0_action --> E_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual S_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual --> N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0 N_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual_Node0 -- No --> E_SetSearchCriteriaFunctionGetUniqueGUIndexTypeCarWaybillOperatorGreaterThanorEqual
File: GCX126R.cbl
GIVEN:
Search parameters have been initialized with car ID and waybill index
WHEN:
The system prepares to execute the database search
THEN:
The search function is set to Get Unique (GU), segment type is set to US cargo record (GCSUSRT), index type is set to Car-Waybill, and operator is set to greater than or equal (>=)
β Consolidated Acceptance Criteria
- The system executes the database call → the GCCUSIO program is invoked with the search parameters to retrieve US cargo records from GCSUSRT 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_ExecuteDatabaseSearchonUSCargoTable(["Start Step"])
E_ExecuteDatabaseSearchonUSCargoTable(["End Step"])
N_ExecuteDatabaseSearchonUSCargoTable_Node0{"The system executes the database
call"}:::decision N_ExecuteDatabaseSearchonUSCargoTable_Node0_action["The GCCUSIO program is invoked with
the search parameters to retrieve US
cargo records from GCSUSRT table"]:::main N_ExecuteDatabaseSearchonUSCargoTable_Node0 -- Yes --> N_ExecuteDatabaseSearchonUSCargoTable_Node0_action N_ExecuteDatabaseSearchonUSCargoTable_Node0_action --> E_ExecuteDatabaseSearchonUSCargoTable S_ExecuteDatabaseSearchonUSCargoTable --> N_ExecuteDatabaseSearchonUSCargoTable_Node0 N_ExecuteDatabaseSearchonUSCargoTable_Node0 -- No --> E_ExecuteDatabaseSearchonUSCargoTable
call"}:::decision N_ExecuteDatabaseSearchonUSCargoTable_Node0_action["The GCCUSIO program is invoked with
the search parameters to retrieve US
cargo records from GCSUSRT table"]:::main N_ExecuteDatabaseSearchonUSCargoTable_Node0 -- Yes --> N_ExecuteDatabaseSearchonUSCargoTable_Node0_action N_ExecuteDatabaseSearchonUSCargoTable_Node0_action --> E_ExecuteDatabaseSearchonUSCargoTable S_ExecuteDatabaseSearchonUSCargoTable --> N_ExecuteDatabaseSearchonUSCargoTable_Node0 N_ExecuteDatabaseSearchonUSCargoTable_Node0 -- No --> E_ExecuteDatabaseSearchonUSCargoTable
File: GCX126R.cbl
GIVEN:
Search criteria are configured with function GU, segment GCSUSRT, index Car-Waybill, and operator >=
WHEN:
The system executes the database call
THEN:
The GCCUSIO program is invoked with the search parameters to retrieve US cargo records from GCSUSRT table
β Consolidated Acceptance Criteria
- The database status code is not blank (indicating an error) → the end-of-file flag is set to true to terminate the 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_DatabaseStatusOKErrorPath(["Start Step"])
E_DatabaseStatusOKErrorPath(["End Step"])
N_DatabaseStatusOKErrorPath_Node0{"The database status code is not
blank indicating an error"}:::decision N_DatabaseStatusOKErrorPath_Node0_action["The end-of-file flag is set to true
to terminate the search process"]:::exclusion N_DatabaseStatusOKErrorPath_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKErrorPath_Node0_action N_DatabaseStatusOKErrorPath_Node0_action --> E_DatabaseStatusOKErrorPath S_DatabaseStatusOKErrorPath --> N_DatabaseStatusOKErrorPath_Node0 N_DatabaseStatusOKErrorPath_Node0 -- No --> E_DatabaseStatusOKErrorPath
blank indicating an error"}:::decision N_DatabaseStatusOKErrorPath_Node0_action["The end-of-file flag is set to true
to terminate the search process"]:::exclusion N_DatabaseStatusOKErrorPath_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKErrorPath_Node0_action N_DatabaseStatusOKErrorPath_Node0_action --> E_DatabaseStatusOKErrorPath S_DatabaseStatusOKErrorPath --> N_DatabaseStatusOKErrorPath_Node0 N_DatabaseStatusOKErrorPath_Node0 -- No --> E_DatabaseStatusOKErrorPath
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database search has been executed on US cargo table
WHEN:
The database status code is not blank (indicating an error)
THEN:
The end-of-file flag is set to true to terminate the search process
β Consolidated Acceptance Criteria
- The system checks the cargo processing eligibility → if the US cargo is marked as deleted OR the train-created-for-it indicator equals 'Y', the record is skipped and search continues, otherwise the US manifest found flag is set to true
- Checking the cargo's deletion status indicator or train creation flag → if cargo is marked as deleted OR train created flag equals 'Y', skip this record and continue search; otherwise, mark as valid US manifest 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_CargoDeletedORTRCreated(["Start Step"])
E_CargoDeletedORTRCreated(["End Step"])
N_CargoDeletedORTRCreated_Node0{"The system checks the cargo
processing eligibility"}:::decision N_CargoDeletedORTRCreated_Node0_action["If the US cargo is marked as
deleted OR the train-created-for-it
indicator equals Y , the record is
skipped and search continues,
otherwise the US manifest found flag
is set to true"]:::main N_CargoDeletedORTRCreated_Node0 -- Yes --> N_CargoDeletedORTRCreated_Node0_action N_CargoDeletedORTRCreated_Node0_action --> E_CargoDeletedORTRCreated S_CargoDeletedORTRCreated --> N_CargoDeletedORTRCreated_Node0 N_CargoDeletedORTRCreated_Node1{"Checking the cargo s deletion
status indicator or train creation
flag"}:::decision N_CargoDeletedORTRCreated_Node1_action["If cargo is marked as deleted OR
train created flag equals Y , skip
this record and continue search
otherwise, mark as valid US manifest
found"]:::main N_CargoDeletedORTRCreated_Node1 -- Yes --> N_CargoDeletedORTRCreated_Node1_action N_CargoDeletedORTRCreated_Node1_action --> E_CargoDeletedORTRCreated N_CargoDeletedORTRCreated_Node0 -- No --> N_CargoDeletedORTRCreated_Node1 N_CargoDeletedORTRCreated_Node1 -- No --> E_CargoDeletedORTRCreated
processing eligibility"}:::decision N_CargoDeletedORTRCreated_Node0_action["If the US cargo is marked as
deleted OR the train-created-for-it
indicator equals Y , the record is
skipped and search continues,
otherwise the US manifest found flag
is set to true"]:::main N_CargoDeletedORTRCreated_Node0 -- Yes --> N_CargoDeletedORTRCreated_Node0_action N_CargoDeletedORTRCreated_Node0_action --> E_CargoDeletedORTRCreated S_CargoDeletedORTRCreated --> N_CargoDeletedORTRCreated_Node0 N_CargoDeletedORTRCreated_Node1{"Checking the cargo s deletion
status indicator or train creation
flag"}:::decision N_CargoDeletedORTRCreated_Node1_action["If cargo is marked as deleted OR
train created flag equals Y , skip
this record and continue search
otherwise, mark as valid US manifest
found"]:::main N_CargoDeletedORTRCreated_Node1 -- Yes --> N_CargoDeletedORTRCreated_Node1_action N_CargoDeletedORTRCreated_Node1_action --> E_CargoDeletedORTRCreated N_CargoDeletedORTRCreated_Node0 -- No --> N_CargoDeletedORTRCreated_Node1 N_CargoDeletedORTRCreated_Node1 -- No --> E_CargoDeletedORTRCreated
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and validated for car ID and waybill match
WHEN:
The system checks the cargo processing eligibility
THEN:
- If the us cargo is marked as deleted or the train-created-for-it indicator equals 'y', the record is skipped
- Search continues, otherwise the us manifest found flag is set to true
File: GCX126R.cbl
GIVEN:
A US cargo record that matches the car ID and waybill criteria
WHEN:
Checking the cargo's deletion status indicator or train creation flag
THEN:
- If cargo is marked as deleted or train created flag equals 'y', skip this record
- Continue search; otherwise, mark as valid us manifest found
β Consolidated Acceptance Criteria
- The system needs to continue searching for valid records → the search function is set to Get Next (GN), segment type remains GCSUSRT, index type remains Car-Waybill, operator is set to greater than (>), and the database call is executed to retrieve the next record in sequence
- The system determines the current record should be skipped → control returns to the caller to continue the loop and retrieve the 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_ContinuetoNextRecord(["Start Step"])
E_ContinuetoNextRecord(["End Step"])
N_ContinuetoNextRecord_Node0{"The system needs to continue
searching for valid records"}:::decision N_ContinuetoNextRecord_Node0_action["The search function is set to Get
Next GN, segment type remains
GCSUSRT, index type remains
Car-Waybill, operator is set to
greater than , and the database call
is executed to retrieve the next
record in sequence"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node1{"The system determines the current
record should be skipped"}:::decision N_ContinuetoNextRecord_Node1_action["Control returns to the caller to
continue the loop and retrieve the
next cargo record"]:::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
searching for valid records"}:::decision N_ContinuetoNextRecord_Node0_action["The search function is set to Get
Next GN, segment type remains
GCSUSRT, index type remains
Car-Waybill, operator is set to
greater than , and the database call
is executed to retrieve the next
record in sequence"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node1{"The system determines the current
record should be skipped"}:::decision N_ContinuetoNextRecord_Node1_action["Control returns to the caller to
continue the loop and retrieve the
next cargo record"]:::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: GCX126R.cbl
GIVEN:
A US cargo record has been found but is marked as deleted OR has train created indicator set to 'Y'
WHEN:
The system needs to continue searching for valid records
THEN:
The search function is set to Get Next (GN), segment type remains GCSUSRT, index type remains Car-Waybill, operator is set to greater than (>), and the database call is executed to retrieve the next record in sequence
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The current cargo record is either a master manifest or not a follower manifest
WHEN:
The system determines the current record should be skipped
THEN:
- Control returns to the caller to continue the loop
- Retrieve the next cargo record
β Consolidated Acceptance Criteria
- The system validates the continued search result → the first 12 characters of the US cargo car ID number index are compared with current cargo equipment car key AND the US cargo waybill number index is compared with saved waybill index, and if either comparison fails, the end-of-file flag is set to true, otherwise the cargo deletion and train creation checks are performed again
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDandWaybillMatchAfterContinue(["Start Step"])
E_CarIDandWaybillMatchAfterContinue(["End Step"])
N_CarIDandWaybillMatchAfterContinue_Node0{"The system validates the continued
search result"}:::decision N_CarIDandWaybillMatchAfterContinue_Node0_action["The first 12 characters of the US
cargo car ID number index are
compared with current cargo
equipment car key AND the US cargo
waybill number index is compared
with saved waybill index, and if
either comparison fails, the
end-of-file flag is set to true,
otherwise the cargo deletion and
train creation checks are performed
again"]:::main N_CarIDandWaybillMatchAfterContinue_Node0 -- Yes --> N_CarIDandWaybillMatchAfterContinue_Node0_action N_CarIDandWaybillMatchAfterContinue_Node0_action --> E_CarIDandWaybillMatchAfterContinue S_CarIDandWaybillMatchAfterContinue --> N_CarIDandWaybillMatchAfterContinue_Node0 N_CarIDandWaybillMatchAfterContinue_Node0 -- No --> E_CarIDandWaybillMatchAfterContinue
search result"}:::decision N_CarIDandWaybillMatchAfterContinue_Node0_action["The first 12 characters of the US
cargo car ID number index are
compared with current cargo
equipment car key AND the US cargo
waybill number index is compared
with saved waybill index, and if
either comparison fails, the
end-of-file flag is set to true,
otherwise the cargo deletion and
train creation checks are performed
again"]:::main N_CarIDandWaybillMatchAfterContinue_Node0 -- Yes --> N_CarIDandWaybillMatchAfterContinue_Node0_action N_CarIDandWaybillMatchAfterContinue_Node0_action --> E_CarIDandWaybillMatchAfterContinue S_CarIDandWaybillMatchAfterContinue --> N_CarIDandWaybillMatchAfterContinue_Node0 N_CarIDandWaybillMatchAfterContinue_Node0 -- No --> E_CarIDandWaybillMatchAfterContinue
File: GCX126R.cbl
GIVEN:
A next US cargo record has been retrieved using Get Next function
WHEN:
The system validates the continued search result
THEN:
- The first 12 characters of the us cargo car id number index are compared with current cargo equipment car key
- The us cargo waybill number index is compared with saved waybill index, and if either comparison fails, the end-of-file flag is set to true, otherwise the cargo deletion
- Train creation checks are performed again
β Consolidated Acceptance Criteria
- The system prepares to search for associated US cargo records → the search parameters are initialized with the current cargo's equipment car ID in the car ID number index field and the saved waybill index in the waybill number index field
- Preparing to search for associated US cargo records → set search parameters with car ID from current cargo key, waybill index from saved waybill, US CCN key to LOW-VALUES, database accept status to 'GEGB', segment type to GCSUSRT, function to Get Unique (GU), index type to CAR-WB (Car-Waybill), and operator to greater than or equal ('>=')
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSearchParameters(["Start Step"])
E_SetSearchParameters(["End Step"])
N_SetSearchParameters_Node0{"The system prepares to search for
associated US cargo records"}:::decision N_SetSearchParameters_Node0_action["The search parameters are
initialized with the current cargo s
equipment car ID in the car ID
number index field and the saved
waybill index in the waybill number
index field"]:::main N_SetSearchParameters_Node0 -- Yes --> N_SetSearchParameters_Node0_action N_SetSearchParameters_Node0_action --> E_SetSearchParameters S_SetSearchParameters --> N_SetSearchParameters_Node0 N_SetSearchParameters_Node1{"Preparing to search for associated
US cargo records"}:::decision N_SetSearchParameters_Node1_action["Set search parameters with car ID
from current cargo key, waybill
index from saved waybill, US CCN key
to LOW-VALUES, database accept
status to GEGB , segment type to
GCSUSRT, function to Get Unique GU,
index type to CAR-WB Car-Waybill,
and operator to greater than or
equal"]:::main N_SetSearchParameters_Node1 -- Yes --> N_SetSearchParameters_Node1_action N_SetSearchParameters_Node1_action --> E_SetSearchParameters N_SetSearchParameters_Node0 -- No --> N_SetSearchParameters_Node1 N_SetSearchParameters_Node1 -- No --> E_SetSearchParameters
associated US cargo records"}:::decision N_SetSearchParameters_Node0_action["The search parameters are
initialized with the current cargo s
equipment car ID in the car ID
number index field and the saved
waybill index in the waybill number
index field"]:::main N_SetSearchParameters_Node0 -- Yes --> N_SetSearchParameters_Node0_action N_SetSearchParameters_Node0_action --> E_SetSearchParameters S_SetSearchParameters --> N_SetSearchParameters_Node0 N_SetSearchParameters_Node1{"Preparing to search for associated
US cargo records"}:::decision N_SetSearchParameters_Node1_action["Set search parameters with car ID
from current cargo key, waybill
index from saved waybill, US CCN key
to LOW-VALUES, database accept
status to GEGB , segment type to
GCSUSRT, function to Get Unique GU,
index type to CAR-WB Car-Waybill,
and operator to greater than or
equal"]:::main N_SetSearchParameters_Node1 -- Yes --> N_SetSearchParameters_Node1_action N_SetSearchParameters_Node1_action --> E_SetSearchParameters N_SetSearchParameters_Node0 -- No --> N_SetSearchParameters_Node1 N_SetSearchParameters_Node1 -- No --> E_SetSearchParameters
File: GCX126R.cbl
GIVEN:
A Canadian cargo record is being processed with an equipment car ID and waybill index
WHEN:
The system prepares to search for associated US cargo records
THEN:
- The search parameters are initialized with the current cargo's equipment car id in the car id number index field
- The saved waybill index in the waybill number index field
File: GCX126R.cbl
GIVEN:
A current cargo record with equipment car ID and waybill index
WHEN:
Preparing to search for associated US cargo records
THEN:
Set search parameters with car ID from current cargo key, waybill index from saved waybill, US CCN key to LOW-VALUES, database accept status to 'GEGB', segment type to GCSUSRT, function to Get Unique (GU), index type to CAR-WB (Car-Waybill), and operator to greater than or equal ('>=')
β Consolidated Acceptance Criteria
- The system needs to search for all US cargo records matching the equipment and waybill → the US CCN key index field is set to low values to start the search from the beginning of the range
- The search parameters are being initialized → the US CCN key index is set to low values to start the search from the lowest possible CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSCCNKeytoLowValues(["Start Step"])
E_SetUSCCNKeytoLowValues(["End Step"])
N_SetUSCCNKeytoLowValues_Node0{"The system needs to search for all
US cargo records matching the
equipment and waybill"}:::decision N_SetUSCCNKeytoLowValues_Node0_action["The US CCN key index field is set
to low values to start the search
from the beginning of the range"]:::main N_SetUSCCNKeytoLowValues_Node0 -- Yes --> N_SetUSCCNKeytoLowValues_Node0_action N_SetUSCCNKeytoLowValues_Node0_action --> E_SetUSCCNKeytoLowValues S_SetUSCCNKeytoLowValues --> N_SetUSCCNKeytoLowValues_Node0 N_SetUSCCNKeytoLowValues_Node1{"The search parameters are being
initialized"}:::decision N_SetUSCCNKeytoLowValues_Node1_action["The US CCN key index is set to low
values to start the search from the
lowest possible CCN"]:::main N_SetUSCCNKeytoLowValues_Node1 -- Yes --> N_SetUSCCNKeytoLowValues_Node1_action N_SetUSCCNKeytoLowValues_Node1_action --> E_SetUSCCNKeytoLowValues N_SetUSCCNKeytoLowValues_Node0 -- No --> N_SetUSCCNKeytoLowValues_Node1 N_SetUSCCNKeytoLowValues_Node1 -- No --> E_SetUSCCNKeytoLowValues
US cargo records matching the
equipment and waybill"}:::decision N_SetUSCCNKeytoLowValues_Node0_action["The US CCN key index field is set
to low values to start the search
from the beginning of the range"]:::main N_SetUSCCNKeytoLowValues_Node0 -- Yes --> N_SetUSCCNKeytoLowValues_Node0_action N_SetUSCCNKeytoLowValues_Node0_action --> E_SetUSCCNKeytoLowValues S_SetUSCCNKeytoLowValues --> N_SetUSCCNKeytoLowValues_Node0 N_SetUSCCNKeytoLowValues_Node1{"The search parameters are being
initialized"}:::decision N_SetUSCCNKeytoLowValues_Node1_action["The US CCN key index is set to low
values to start the search from the
lowest possible CCN"]:::main N_SetUSCCNKeytoLowValues_Node1 -- Yes --> N_SetUSCCNKeytoLowValues_Node1_action N_SetUSCCNKeytoLowValues_Node1_action --> E_SetUSCCNKeytoLowValues N_SetUSCCNKeytoLowValues_Node0 -- No --> N_SetUSCCNKeytoLowValues_Node1 N_SetUSCCNKeytoLowValues_Node1 -- No --> E_SetUSCCNKeytoLowValues
File: GCX126R.cbl
GIVEN:
The car ID and waybill search parameters are set
WHEN:
- The system needs to search for all us cargo records matching the equipment
- Waybill
THEN:
The US CCN key index field is set to low values to start the search from the beginning of the range
File: GCX126R.cbl
GIVEN:
The system is preparing to search for US cargo records by car identifier and waybill
WHEN:
The search parameters are being initialized
THEN:
The US CCN key index is set to low values to start the search from the lowest possible CCN
β Consolidated Acceptance Criteria
- The system executes the initial database search → the function code is set to GU (Get Unique) to retrieve the first matching record
- Configuring the database function for US cargo search → set GCWUSIO-FUNC-GU to TRUE to indicate Get Unique (GU) operation should be performed
- The database function type is being configured → the function code is set to GU (Get Unique) to retrieve the first matching 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_SetFunctiontoGUGetUnique(["Start Step"])
E_SetFunctiontoGUGetUnique(["End Step"])
N_SetFunctiontoGUGetUnique_Node0{"The system executes the initial
database search"}:::decision N_SetFunctiontoGUGetUnique_Node0_action["The function code is set to GU Get
Unique to retrieve the first
matching record"]:::main N_SetFunctiontoGUGetUnique_Node0 -- Yes --> N_SetFunctiontoGUGetUnique_Node0_action N_SetFunctiontoGUGetUnique_Node0_action --> E_SetFunctiontoGUGetUnique S_SetFunctiontoGUGetUnique --> N_SetFunctiontoGUGetUnique_Node0 N_SetFunctiontoGUGetUnique_Node1{"Configuring the database function
for US cargo search"}:::decision N_SetFunctiontoGUGetUnique_Node1_action["Set GCWUSIO-FUNC-GU to TRUE to
indicate Get Unique GU operation
should be performed"]:::main N_SetFunctiontoGUGetUnique_Node1 -- Yes --> N_SetFunctiontoGUGetUnique_Node1_action N_SetFunctiontoGUGetUnique_Node1_action --> E_SetFunctiontoGUGetUnique N_SetFunctiontoGUGetUnique_Node0 -- No --> N_SetFunctiontoGUGetUnique_Node1 N_SetFunctiontoGUGetUnique_Node2{"The database function type is being
configured"}:::decision N_SetFunctiontoGUGetUnique_Node2_action["The function code is set to GU Get
Unique to retrieve the first
matching record"]:::main N_SetFunctiontoGUGetUnique_Node2 -- Yes --> N_SetFunctiontoGUGetUnique_Node2_action N_SetFunctiontoGUGetUnique_Node2_action --> E_SetFunctiontoGUGetUnique N_SetFunctiontoGUGetUnique_Node1 -- No --> N_SetFunctiontoGUGetUnique_Node2 N_SetFunctiontoGUGetUnique_Node2 -- No --> E_SetFunctiontoGUGetUnique
database search"}:::decision N_SetFunctiontoGUGetUnique_Node0_action["The function code is set to GU Get
Unique to retrieve the first
matching record"]:::main N_SetFunctiontoGUGetUnique_Node0 -- Yes --> N_SetFunctiontoGUGetUnique_Node0_action N_SetFunctiontoGUGetUnique_Node0_action --> E_SetFunctiontoGUGetUnique S_SetFunctiontoGUGetUnique --> N_SetFunctiontoGUGetUnique_Node0 N_SetFunctiontoGUGetUnique_Node1{"Configuring the database function
for US cargo search"}:::decision N_SetFunctiontoGUGetUnique_Node1_action["Set GCWUSIO-FUNC-GU to TRUE to
indicate Get Unique GU operation
should be performed"]:::main N_SetFunctiontoGUGetUnique_Node1 -- Yes --> N_SetFunctiontoGUGetUnique_Node1_action N_SetFunctiontoGUGetUnique_Node1_action --> E_SetFunctiontoGUGetUnique N_SetFunctiontoGUGetUnique_Node0 -- No --> N_SetFunctiontoGUGetUnique_Node1 N_SetFunctiontoGUGetUnique_Node2{"The database function type is being
configured"}:::decision N_SetFunctiontoGUGetUnique_Node2_action["The function code is set to GU Get
Unique to retrieve the first
matching record"]:::main N_SetFunctiontoGUGetUnique_Node2 -- Yes --> N_SetFunctiontoGUGetUnique_Node2_action N_SetFunctiontoGUGetUnique_Node2_action --> E_SetFunctiontoGUGetUnique N_SetFunctiontoGUGetUnique_Node1 -- No --> N_SetFunctiontoGUGetUnique_Node2 N_SetFunctiontoGUGetUnique_Node2 -- No --> E_SetFunctiontoGUGetUnique
File: GCX126R.cbl
GIVEN:
Search parameters for car ID, waybill, and US CCN are initialized
WHEN:
The system executes the initial database search
THEN:
The function code is set to GU (Get Unique) to retrieve the first matching record
File: GCX126R.cbl
GIVEN:
Database operation type needs to be specified
WHEN:
Configuring the database function for US cargo search
THEN:
Set GCWUSIO-FUNC-GU to TRUE to indicate Get Unique (GU) operation should be performed
File: GCX126R.cbl
GIVEN:
The system is initiating a search for US cargo records
WHEN:
The database function type is being configured
THEN:
The function code is set to GU (Get Unique) to retrieve the first matching record
β Consolidated Acceptance Criteria
- The system needs to specify which index to use for the search → the index type is set to CAR-WB (Car-Waybill composite index)
- Specifying which index to use for US cargo lookup → set GCWUSIO-INDEX-CAR-WB to TRUE to indicate Car-Waybill index should be used for the 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_SetIndexTypetoCARWB(["Start Step"])
E_SetIndexTypetoCARWB(["End Step"])
N_SetIndexTypetoCARWB_Node0{"The system needs to specify which
index to use for the search"}:::decision N_SetIndexTypetoCARWB_Node0_action["The index type is set to CAR-WB
Car-Waybill composite index"]:::main N_SetIndexTypetoCARWB_Node0 -- Yes --> N_SetIndexTypetoCARWB_Node0_action N_SetIndexTypetoCARWB_Node0_action --> E_SetIndexTypetoCARWB S_SetIndexTypetoCARWB --> N_SetIndexTypetoCARWB_Node0 N_SetIndexTypetoCARWB_Node1{"Specifying which index to use for
US cargo lookup"}:::decision N_SetIndexTypetoCARWB_Node1_action["Set GCWUSIO-INDEX-CAR-WB to TRUE to
indicate Car-Waybill index should be
used for the search"]:::main N_SetIndexTypetoCARWB_Node1 -- Yes --> N_SetIndexTypetoCARWB_Node1_action N_SetIndexTypetoCARWB_Node1_action --> E_SetIndexTypetoCARWB N_SetIndexTypetoCARWB_Node0 -- No --> N_SetIndexTypetoCARWB_Node1 N_SetIndexTypetoCARWB_Node1 -- No --> E_SetIndexTypetoCARWB
index to use for the search"}:::decision N_SetIndexTypetoCARWB_Node0_action["The index type is set to CAR-WB
Car-Waybill composite index"]:::main N_SetIndexTypetoCARWB_Node0 -- Yes --> N_SetIndexTypetoCARWB_Node0_action N_SetIndexTypetoCARWB_Node0_action --> E_SetIndexTypetoCARWB S_SetIndexTypetoCARWB --> N_SetIndexTypetoCARWB_Node0 N_SetIndexTypetoCARWB_Node1{"Specifying which index to use for
US cargo lookup"}:::decision N_SetIndexTypetoCARWB_Node1_action["Set GCWUSIO-INDEX-CAR-WB to TRUE to
indicate Car-Waybill index should be
used for the search"]:::main N_SetIndexTypetoCARWB_Node1 -- Yes --> N_SetIndexTypetoCARWB_Node1_action N_SetIndexTypetoCARWB_Node1_action --> E_SetIndexTypetoCARWB N_SetIndexTypetoCARWB_Node0 -- No --> N_SetIndexTypetoCARWB_Node1 N_SetIndexTypetoCARWB_Node1 -- No --> E_SetIndexTypetoCARWB
File: GCX126R.cbl
GIVEN:
The database function is set to Get Unique
WHEN:
The system needs to specify which index to use for the search
THEN:
The index type is set to CAR-WB (Car-Waybill composite index)
File: GCX126R.cbl
GIVEN:
Database index selection is required for search optimization
WHEN:
Specifying which index to use for US cargo lookup
THEN:
Set GCWUSIO-INDEX-CAR-WB to TRUE to indicate Car-Waybill index should be used for the search
β Consolidated Acceptance Criteria
- The system defines the comparison logic for the database search → the operator is set to '>=' (greater than or equal) to include exact matches and subsequent 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_SetOperatortoGreaterThanorEqual(["Start Step"])
E_SetOperatortoGreaterThanorEqual(["End Step"])
N_SetOperatortoGreaterThanorEqual_Node0{"The system defines the comparison
logic for the database search"}:::decision N_SetOperatortoGreaterThanorEqual_Node0_action["The operator is set to greater than
or equal to include exact matches
and subsequent records"]:::main N_SetOperatortoGreaterThanorEqual_Node0 -- Yes --> N_SetOperatortoGreaterThanorEqual_Node0_action N_SetOperatortoGreaterThanorEqual_Node0_action --> E_SetOperatortoGreaterThanorEqual S_SetOperatortoGreaterThanorEqual --> N_SetOperatortoGreaterThanorEqual_Node0 N_SetOperatortoGreaterThanorEqual_Node0 -- No --> E_SetOperatortoGreaterThanorEqual
logic for the database search"}:::decision N_SetOperatortoGreaterThanorEqual_Node0_action["The operator is set to greater than
or equal to include exact matches
and subsequent records"]:::main N_SetOperatortoGreaterThanorEqual_Node0 -- Yes --> N_SetOperatortoGreaterThanorEqual_Node0_action N_SetOperatortoGreaterThanorEqual_Node0_action --> E_SetOperatortoGreaterThanorEqual S_SetOperatortoGreaterThanorEqual --> N_SetOperatortoGreaterThanorEqual_Node0 N_SetOperatortoGreaterThanorEqual_Node0 -- No --> E_SetOperatortoGreaterThanorEqual
File: GCX126R.cbl
GIVEN:
The search index is set to CAR-WB and search keys are initialized
WHEN:
The system defines the comparison logic for the database search
THEN:
- The operator is set to '>=' (greater than or equal) to include exact matches
- Subsequent records
β Consolidated Acceptance Criteria
- The system executes the database search → the GCCUSIO module is called with the control communication area, search parameters, and US cargo segment structure to retrieve matching 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_CallGCCUSIOtoSearchUSCargo(["Start Step"])
E_CallGCCUSIOtoSearchUSCargo(["End Step"])
N_CallGCCUSIOtoSearchUSCargo_Node0{"The system executes the database
search"}:::decision N_CallGCCUSIOtoSearchUSCargo_Node0_action["The GCCUSIO module is called with
the control communication area,
search parameters, and US cargo
segment structure to retrieve
matching records"]:::main N_CallGCCUSIOtoSearchUSCargo_Node0 -- Yes --> N_CallGCCUSIOtoSearchUSCargo_Node0_action N_CallGCCUSIOtoSearchUSCargo_Node0_action --> E_CallGCCUSIOtoSearchUSCargo S_CallGCCUSIOtoSearchUSCargo --> N_CallGCCUSIOtoSearchUSCargo_Node0 N_CallGCCUSIOtoSearchUSCargo_Node0 -- No --> E_CallGCCUSIOtoSearchUSCargo
search"}:::decision N_CallGCCUSIOtoSearchUSCargo_Node0_action["The GCCUSIO module is called with
the control communication area,
search parameters, and US cargo
segment structure to retrieve
matching records"]:::main N_CallGCCUSIOtoSearchUSCargo_Node0 -- Yes --> N_CallGCCUSIOtoSearchUSCargo_Node0_action N_CallGCCUSIOtoSearchUSCargo_Node0_action --> E_CallGCCUSIOtoSearchUSCargo S_CallGCCUSIOtoSearchUSCargo --> N_CallGCCUSIOtoSearchUSCargo_Node0 N_CallGCCUSIOtoSearchUSCargo_Node0 -- No --> E_CallGCCUSIOtoSearchUSCargo
File: GCX126R.cbl
GIVEN:
All search parameters are configured with segment type GCSUSRT, function GU, index CAR-WB, operator '>=', car ID, waybill index, and US CCN key
WHEN:
The system executes the database search
THEN:
The GCCUSIO module is called with the control communication area, search parameters, and US cargo segment structure to retrieve matching records
β Consolidated Acceptance Criteria
- The system detects the mismatch → the end-of-database flag (WS-EOF) is set to TRUE to terminate the 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_CarIDandWaybillMatchNoMatch(["Start Step"])
E_CarIDandWaybillMatchNoMatch(["End Step"])
N_CarIDandWaybillMatchNoMatch_Node0{"The system detects the mismatch"}:::decision
N_CarIDandWaybillMatchNoMatch_Node0_action["The end-of-database flag WS-EOF is
set to TRUE to terminate the search
process"]:::exclusion N_CarIDandWaybillMatchNoMatch_Node0 -- Yes -->|Alternative| N_CarIDandWaybillMatchNoMatch_Node0_action N_CarIDandWaybillMatchNoMatch_Node0_action --> E_CarIDandWaybillMatchNoMatch S_CarIDandWaybillMatchNoMatch --> N_CarIDandWaybillMatchNoMatch_Node0 N_CarIDandWaybillMatchNoMatch_Node0 -- No --> E_CarIDandWaybillMatchNoMatch
set to TRUE to terminate the search
process"]:::exclusion N_CarIDandWaybillMatchNoMatch_Node0 -- Yes -->|Alternative| N_CarIDandWaybillMatchNoMatch_Node0_action N_CarIDandWaybillMatchNoMatch_Node0_action --> E_CarIDandWaybillMatchNoMatch S_CarIDandWaybillMatchNoMatch --> N_CarIDandWaybillMatchNoMatch_Node0 N_CarIDandWaybillMatchNoMatch_Node0 -- No --> E_CarIDandWaybillMatchNoMatch
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record was retrieved but the car ID or waybill number does not match the search criteria
WHEN:
The system detects the mismatch
THEN:
The end-of-database flag (WS-EOF) is set to TRUE to terminate the search process
β Consolidated Acceptance Criteria
- The system processes the validation result → the system continues without setting the US manifest found flag, allowing the search to proceed to the 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_CargoDeletedorTRCreatedYesSkip(["Start Step"])
E_CargoDeletedorTRCreatedYesSkip(["End Step"])
N_CargoDeletedorTRCreatedYesSkip_Node0{"The system processes the validation
result"}:::decision N_CargoDeletedorTRCreatedYesSkip_Node0_action["The system continues without
setting the US manifest found flag,
allowing the search to proceed to
the next record"]:::main N_CargoDeletedorTRCreatedYesSkip_Node0 -- Yes --> N_CargoDeletedorTRCreatedYesSkip_Node0_action N_CargoDeletedorTRCreatedYesSkip_Node0_action --> E_CargoDeletedorTRCreatedYesSkip S_CargoDeletedorTRCreatedYesSkip --> N_CargoDeletedorTRCreatedYesSkip_Node0 N_CargoDeletedorTRCreatedYesSkip_Node0 -- No --> E_CargoDeletedorTRCreatedYesSkip
result"}:::decision N_CargoDeletedorTRCreatedYesSkip_Node0_action["The system continues without
setting the US manifest found flag,
allowing the search to proceed to
the next record"]:::main N_CargoDeletedorTRCreatedYesSkip_Node0 -- Yes --> N_CargoDeletedorTRCreatedYesSkip_Node0_action N_CargoDeletedorTRCreatedYesSkip_Node0_action --> E_CargoDeletedorTRCreatedYesSkip S_CargoDeletedorTRCreatedYesSkip --> N_CargoDeletedorTRCreatedYesSkip_Node0 N_CargoDeletedorTRCreatedYesSkip_Node0 -- No --> E_CargoDeletedorTRCreatedYesSkip
File: GCX126R.cbl
GIVEN:
A matching US cargo record is found with deletion status set OR train-created flag equals 'Y'
WHEN:
The system processes the validation result
THEN:
The system continues without setting the US manifest found flag, allowing the search to proceed to the next record
β Consolidated Acceptance Criteria
- Initializing search parameters for US cargo lookup → move WS-CURRENT-CARID-KEY to GCUSRT-RT073-CAR-ID-NUM-INDEX to use as the car ID search criterion
- The system prepares to search for associated US cargo records → the US cargo search car identifier index is populated with the current cargo's equipment car identifier 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_SetCarIDfromCurrentCargo(["Start Step"])
E_SetCarIDfromCurrentCargo(["End Step"])
N_SetCarIDfromCurrentCargo_Node0{"Initializing search parameters for
US cargo lookup"}:::decision N_SetCarIDfromCurrentCargo_Node0_action["Move WS-CURRENT-CARID-KEY to
GCUSRT-RT073-CAR-ID-NUM-INDEX to use
as the car ID search criterion"]:::main N_SetCarIDfromCurrentCargo_Node0 -- Yes --> N_SetCarIDfromCurrentCargo_Node0_action N_SetCarIDfromCurrentCargo_Node0_action --> E_SetCarIDfromCurrentCargo S_SetCarIDfromCurrentCargo --> N_SetCarIDfromCurrentCargo_Node0 N_SetCarIDfromCurrentCargo_Node1{"The system prepares to search for
associated US cargo records"}:::decision N_SetCarIDfromCurrentCargo_Node1_action["The US cargo search car identifier
index is populated with the current
cargo s equipment car identifier key"]:::main N_SetCarIDfromCurrentCargo_Node1 -- Yes --> N_SetCarIDfromCurrentCargo_Node1_action N_SetCarIDfromCurrentCargo_Node1_action --> E_SetCarIDfromCurrentCargo N_SetCarIDfromCurrentCargo_Node0 -- No --> N_SetCarIDfromCurrentCargo_Node1 N_SetCarIDfromCurrentCargo_Node1 -- No --> E_SetCarIDfromCurrentCargo
US cargo lookup"}:::decision N_SetCarIDfromCurrentCargo_Node0_action["Move WS-CURRENT-CARID-KEY to
GCUSRT-RT073-CAR-ID-NUM-INDEX to use
as the car ID search criterion"]:::main N_SetCarIDfromCurrentCargo_Node0 -- Yes --> N_SetCarIDfromCurrentCargo_Node0_action N_SetCarIDfromCurrentCargo_Node0_action --> E_SetCarIDfromCurrentCargo S_SetCarIDfromCurrentCargo --> N_SetCarIDfromCurrentCargo_Node0 N_SetCarIDfromCurrentCargo_Node1{"The system prepares to search for
associated US cargo records"}:::decision N_SetCarIDfromCurrentCargo_Node1_action["The US cargo search car identifier
index is populated with the current
cargo s equipment car identifier key"]:::main N_SetCarIDfromCurrentCargo_Node1 -- Yes --> N_SetCarIDfromCurrentCargo_Node1_action N_SetCarIDfromCurrentCargo_Node1_action --> E_SetCarIDfromCurrentCargo N_SetCarIDfromCurrentCargo_Node0 -- No --> N_SetCarIDfromCurrentCargo_Node1 N_SetCarIDfromCurrentCargo_Node1 -- No --> E_SetCarIDfromCurrentCargo
File: GCX126R.cbl
GIVEN:
Current cargo equipment car ID key is available in WS-CURRENT-CARID-KEY
WHEN:
Initializing search parameters for US cargo lookup
THEN:
Move WS-CURRENT-CARID-KEY to GCUSRT-RT073-CAR-ID-NUM-INDEX to use as the car ID search criterion
File: GCX126R.cbl
GIVEN:
A cargo record is being processed with a current equipment car identifier key
WHEN:
The system prepares to search for associated US cargo records
THEN:
The US cargo search car identifier index is populated with the current cargo's equipment car identifier key
β Consolidated Acceptance Criteria
- Initializing search parameters for US cargo lookup → move SAVE-WAYBILL-INDEX to GCUSRT-RT073-WB-NUM-INDEX to use as the waybill search criterion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillIndexfromCurrentCargo(["Start Step"])
E_SetWaybillIndexfromCurrentCargo(["End Step"])
N_SetWaybillIndexfromCurrentCargo_Node0{"Initializing search parameters for
US cargo lookup"}:::decision N_SetWaybillIndexfromCurrentCargo_Node0_action["Move SAVE-WAYBILL-INDEX to
GCUSRT-RT073-WB-NUM-INDEX to use as
the waybill search criterion"]:::main N_SetWaybillIndexfromCurrentCargo_Node0 -- Yes --> N_SetWaybillIndexfromCurrentCargo_Node0_action N_SetWaybillIndexfromCurrentCargo_Node0_action --> E_SetWaybillIndexfromCurrentCargo S_SetWaybillIndexfromCurrentCargo --> N_SetWaybillIndexfromCurrentCargo_Node0 N_SetWaybillIndexfromCurrentCargo_Node0 -- No --> E_SetWaybillIndexfromCurrentCargo
US cargo lookup"}:::decision N_SetWaybillIndexfromCurrentCargo_Node0_action["Move SAVE-WAYBILL-INDEX to
GCUSRT-RT073-WB-NUM-INDEX to use as
the waybill search criterion"]:::main N_SetWaybillIndexfromCurrentCargo_Node0 -- Yes --> N_SetWaybillIndexfromCurrentCargo_Node0_action N_SetWaybillIndexfromCurrentCargo_Node0_action --> E_SetWaybillIndexfromCurrentCargo S_SetWaybillIndexfromCurrentCargo --> N_SetWaybillIndexfromCurrentCargo_Node0 N_SetWaybillIndexfromCurrentCargo_Node0 -- No --> E_SetWaybillIndexfromCurrentCargo
File: GCX126R.cbl
GIVEN:
Saved waybill index is available in SAVE-WAYBILL-INDEX
WHEN:
Initializing search parameters for US cargo lookup
THEN:
Move SAVE-WAYBILL-INDEX to GCUSRT-RT073-WB-NUM-INDEX to use as the waybill search criterion
β Consolidated Acceptance Criteria
- Setting up the US CCN key parameter → move LOW-VALUES to GCUSRT-RT073-US-CCN-KEY-INDEX to start search from the beginning of matching 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_SetUSCCNtoLOWVALUES(["Start Step"])
E_SetUSCCNtoLOWVALUES(["End Step"])
N_SetUSCCNtoLOWVALUES_Node0{"Setting up the US CCN key parameter"}:::decision
N_SetUSCCNtoLOWVALUES_Node0_action["Move LOW-VALUES to
GCUSRT-RT073-US-CCN-KEY-INDEX to
start search from the beginning of
matching records"]:::main N_SetUSCCNtoLOWVALUES_Node0 -- Yes --> N_SetUSCCNtoLOWVALUES_Node0_action N_SetUSCCNtoLOWVALUES_Node0_action --> E_SetUSCCNtoLOWVALUES S_SetUSCCNtoLOWVALUES --> N_SetUSCCNtoLOWVALUES_Node0 N_SetUSCCNtoLOWVALUES_Node0 -- No --> E_SetUSCCNtoLOWVALUES
GCUSRT-RT073-US-CCN-KEY-INDEX to
start search from the beginning of
matching records"]:::main N_SetUSCCNtoLOWVALUES_Node0 -- Yes --> N_SetUSCCNtoLOWVALUES_Node0_action N_SetUSCCNtoLOWVALUES_Node0_action --> E_SetUSCCNtoLOWVALUES S_SetUSCCNtoLOWVALUES --> N_SetUSCCNtoLOWVALUES_Node0 N_SetUSCCNtoLOWVALUES_Node0 -- No --> E_SetUSCCNtoLOWVALUES
File: GCX126R.cbl
GIVEN:
US cargo search is being initialized
WHEN:
Setting up the US CCN key parameter
THEN:
Move LOW-VALUES to GCUSRT-RT073-US-CCN-KEY-INDEX to start search from the beginning of matching records
β Consolidated Acceptance Criteria
- Specifying which segment type to retrieve → set GCWUSIO-SEG-GCSUSRT to TRUE to indicate US cargo report segment (GCSUSRT) should be accessed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentTypetoGCSUSRT(["Start Step"])
E_SetSegmentTypetoGCSUSRT(["End Step"])
N_SetSegmentTypetoGCSUSRT_Node0{"Specifying which segment type to
retrieve"}:::decision N_SetSegmentTypetoGCSUSRT_Node0_action["Set GCWUSIO-SEG-GCSUSRT to TRUE to
indicate US cargo report segment
GCSUSRT should be accessed"]:::main N_SetSegmentTypetoGCSUSRT_Node0 -- Yes --> N_SetSegmentTypetoGCSUSRT_Node0_action N_SetSegmentTypetoGCSUSRT_Node0_action --> E_SetSegmentTypetoGCSUSRT S_SetSegmentTypetoGCSUSRT --> N_SetSegmentTypetoGCSUSRT_Node0 N_SetSegmentTypetoGCSUSRT_Node0 -- No --> E_SetSegmentTypetoGCSUSRT
retrieve"}:::decision N_SetSegmentTypetoGCSUSRT_Node0_action["Set GCWUSIO-SEG-GCSUSRT to TRUE to
indicate US cargo report segment
GCSUSRT should be accessed"]:::main N_SetSegmentTypetoGCSUSRT_Node0 -- Yes --> N_SetSegmentTypetoGCSUSRT_Node0_action N_SetSegmentTypetoGCSUSRT_Node0_action --> E_SetSegmentTypetoGCSUSRT S_SetSegmentTypetoGCSUSRT --> N_SetSegmentTypetoGCSUSRT_Node0 N_SetSegmentTypetoGCSUSRT_Node0 -- No --> E_SetSegmentTypetoGCSUSRT
File: GCX126R.cbl
GIVEN:
Database search parameters are being configured
WHEN:
Specifying which segment type to retrieve
THEN:
Set GCWUSIO-SEG-GCSUSRT to TRUE to indicate US cargo report segment (GCSUSRT) should be accessed
β Consolidated Acceptance Criteria
- Setting the operator for database record matching → move '>=' to GCWUSIO-OPERATOR to retrieve records with keys greater than or equal to the search criteria
- The search operator is being defined → the operator is set to '>=' to include the starting point and all subsequent records in 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_SetOperatorto(["Start Step"])
E_SetOperatorto(["End Step"])
N_SetOperatorto_Node0{"Setting the operator for database
record matching"}:::decision N_SetOperatorto_Node0_action["Move to GCWUSIO-OPERATOR to
retrieve records with keys greater
than or equal to the search criteria"]:::main N_SetOperatorto_Node0 -- Yes --> N_SetOperatorto_Node0_action N_SetOperatorto_Node0_action --> E_SetOperatorto S_SetOperatorto --> N_SetOperatorto_Node0 N_SetOperatorto_Node1{"The search operator is being
defined"}:::decision N_SetOperatorto_Node1_action["The operator is set to to include
the starting point and all
subsequent records in the index"]:::main N_SetOperatorto_Node1 -- Yes --> N_SetOperatorto_Node1_action N_SetOperatorto_Node1_action --> E_SetOperatorto N_SetOperatorto_Node0 -- No --> N_SetOperatorto_Node1 N_SetOperatorto_Node1 -- No --> E_SetOperatorto
record matching"}:::decision N_SetOperatorto_Node0_action["Move to GCWUSIO-OPERATOR to
retrieve records with keys greater
than or equal to the search criteria"]:::main N_SetOperatorto_Node0 -- Yes --> N_SetOperatorto_Node0_action N_SetOperatorto_Node0_action --> E_SetOperatorto S_SetOperatorto --> N_SetOperatorto_Node0 N_SetOperatorto_Node1{"The search operator is being
defined"}:::decision N_SetOperatorto_Node1_action["The operator is set to to include
the starting point and all
subsequent records in the index"]:::main N_SetOperatorto_Node1 -- Yes --> N_SetOperatorto_Node1_action N_SetOperatorto_Node1_action --> E_SetOperatorto N_SetOperatorto_Node0 -- No --> N_SetOperatorto_Node1 N_SetOperatorto_Node1 -- No --> E_SetOperatorto
File: GCX126R.cbl
GIVEN:
Search comparison logic needs to be defined
WHEN:
Setting the operator for database record matching
THEN:
Move '>=' to GCWUSIO-OPERATOR to retrieve records with keys greater than or equal to the search criteria
File: GCX126R.cbl
GIVEN:
The system is configuring a database search with specific car and waybill criteria
WHEN:
The search operator is being defined
THEN:
- The operator is set to '>=' to include the starting point
- All subsequent records in the index
β Consolidated Acceptance Criteria
- The system prepares to search for associated US cargo records → the search parameters are initialized with the equipment car ID from the current key, the waybill number from the saved index, and the US CCN key is set to its lowest possible value to enable range 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_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues(["Start Step"])
E_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues(["End Step"])
N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0{"The system prepares to search for
associated US cargo records"}:::decision N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0_action["The search parameters are
initialized with the equipment car
ID from the current key, the waybill
number from the saved index, and the
US CCN key is set to its lowest
possible value to enable range
searching"]:::main N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0 -- Yes --> N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0_action N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0_action --> E_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues S_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues --> N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0 N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0 -- No --> E_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues
associated US cargo records"}:::decision N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0_action["The search parameters are
initialized with the equipment car
ID from the current key, the waybill
number from the saved index, and the
US CCN key is set to its lowest
possible value to enable range
searching"]:::main N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0 -- Yes --> N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0_action N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0_action --> E_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues S_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues --> N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0 N_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues_Node0 -- No --> E_SetCarIDfromCurrentKeySetWaybillIndexfromSavedValueSetUSCCNKeytoLowValues
File: GCX126R.cbl
GIVEN:
A Canadian cargo record is being processed with a current equipment car ID key and a saved waybill index
WHEN:
The system prepares to search for associated US cargo records
THEN:
The search parameters are initialized with the equipment car ID from the current key, the waybill number from the saved index, and the US CCN key is set to its lowest possible value to enable range searching
β Consolidated Acceptance Criteria
- Performing the initial database search operation → the database function is set to Get Unique (GU), the index type is set to equipment-waybill (CAR-WB), and the search operator is set to greater-than-or-equal-to (>=) to find the first matching or 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_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual(["Start Step"])
E_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual(["End Step"])
N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0{"Performing the initial database
search operation"}:::decision N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0_action["The database function is set to Get
Unique GU, the index type is set to
equipment-waybill CAR-WB, and the
search operator is set to
greater-than-or-equal-to to find the
first matching or next available
record"]:::main N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0 -- Yes --> N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0_action N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0_action --> E_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual S_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual --> N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0 N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0 -- No --> E_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual
search operation"}:::decision N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0_action["The database function is set to Get
Unique GU, the index type is set to
equipment-waybill CAR-WB, and the
search operator is set to
greater-than-or-equal-to to find the
first matching or next available
record"]:::main N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0 -- Yes --> N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0_action N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0_action --> E_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual S_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual --> N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0 N_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual_Node0 -- No --> E_SetFunctiontoGUGetUniqueSetIndexTypetoCARWBSetOperatortoGreaterEqual
File: GCX126R.cbl
GIVEN:
The system needs to find the first US cargo record matching equipment car ID and waybill number
WHEN:
Performing the initial database search operation
THEN:
The database function is set to Get Unique (GU), the index type is set to equipment-waybill (CAR-WB), and the search operator is set to greater-than-or-equal-to (>=) to find the first matching or next available record
β Consolidated Acceptance Criteria
- Performing a follow-up database search operation → the database function is set to Get Next (GN), the index type is set to equipment-waybill (CAR-WB), and the search operator is set to greater-than (>) to find the next sequential 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_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan(["Start Step"])
E_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan(["End Step"])
N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0{"Performing a follow-up database
search operation"}:::decision N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0_action["The database function is set to Get
Next GN, the index type is set to
equipment-waybill CAR-WB, and the
search operator is set to
greater-than to find the next
sequential record"]:::main N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0 -- Yes --> N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0_action N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0_action --> E_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan S_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan --> N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0 N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0 -- No --> E_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan
search operation"}:::decision N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0_action["The database function is set to Get
Next GN, the index type is set to
equipment-waybill CAR-WB, and the
search operator is set to
greater-than to find the next
sequential record"]:::main N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0 -- Yes --> N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0_action N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0_action --> E_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan S_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan --> N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0 N_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan_Node0 -- No --> E_SetFunctiontoGNGetNextSetIndexTypetoCARWBSetOperatortoGreaterThan
File: GCX126R.cbl
GIVEN:
The system has already retrieved an initial US cargo record and needs to find subsequent records
WHEN:
Performing a follow-up database search operation
THEN:
The database function is set to Get Next (GN), the index type is set to equipment-waybill (CAR-WB), and the search operator is set to greater-than (>) to find the next sequential record
β Consolidated Acceptance Criteria
- The system executes the database search → the GCCUSIO program is called with the control communication area, search parameters, and US cargo segment structure to retrieve matching 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_CallGCCUSIOwithParameters(["Start Step"])
E_CallGCCUSIOwithParameters(["End Step"])
N_CallGCCUSIOwithParameters_Node0{"The system executes the database
search"}:::decision N_CallGCCUSIOwithParameters_Node0_action["The GCCUSIO program is called with
the control communication area,
search parameters, and US cargo
segment structure to retrieve
matching records"]:::main N_CallGCCUSIOwithParameters_Node0 -- Yes --> N_CallGCCUSIOwithParameters_Node0_action N_CallGCCUSIOwithParameters_Node0_action --> E_CallGCCUSIOwithParameters S_CallGCCUSIOwithParameters --> N_CallGCCUSIOwithParameters_Node0 N_CallGCCUSIOwithParameters_Node0 -- No --> E_CallGCCUSIOwithParameters
search"}:::decision N_CallGCCUSIOwithParameters_Node0_action["The GCCUSIO program is called with
the control communication area,
search parameters, and US cargo
segment structure to retrieve
matching records"]:::main N_CallGCCUSIOwithParameters_Node0 -- Yes --> N_CallGCCUSIOwithParameters_Node0_action N_CallGCCUSIOwithParameters_Node0_action --> E_CallGCCUSIOwithParameters S_CallGCCUSIOwithParameters --> N_CallGCCUSIOwithParameters_Node0 N_CallGCCUSIOwithParameters_Node0 -- No --> E_CallGCCUSIOwithParameters
File: GCX126R.cbl
GIVEN:
All search parameters are configured including segment type GCSUSRT, function type (GU or GN), index type CAR-WB, and search operator
WHEN:
The system executes the database search
THEN:
The GCCUSIO program is called with the control communication area, search parameters, and US cargo segment structure to retrieve matching records
β Consolidated Acceptance Criteria
- The database operation returns a non-successful status code indicating no records found or an error condition → the end-of-database flag is set to TRUE to indicate no more records are available and processing should terminate the search 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_DatabaseStatusOKSetEndofDatabaseFlag(["Start Step"])
E_DatabaseStatusOKSetEndofDatabaseFlag(["End Step"])
N_DatabaseStatusOKSetEndofDatabaseFlag_Node0{"The database operation returns a
non-successful status code
indicating no records found or an
error condition"}:::decision N_DatabaseStatusOKSetEndofDatabaseFlag_Node0_action["The end-of-database flag is set to
TRUE to indicate no more records are
available and processing should
terminate the search loop"]:::exclusion N_DatabaseStatusOKSetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKSetEndofDatabaseFlag_Node0_action N_DatabaseStatusOKSetEndofDatabaseFlag_Node0_action --> E_DatabaseStatusOKSetEndofDatabaseFlag S_DatabaseStatusOKSetEndofDatabaseFlag --> N_DatabaseStatusOKSetEndofDatabaseFlag_Node0 N_DatabaseStatusOKSetEndofDatabaseFlag_Node0 -- No --> E_DatabaseStatusOKSetEndofDatabaseFlag
non-successful status code
indicating no records found or an
error condition"}:::decision N_DatabaseStatusOKSetEndofDatabaseFlag_Node0_action["The end-of-database flag is set to
TRUE to indicate no more records are
available and processing should
terminate the search loop"]:::exclusion N_DatabaseStatusOKSetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKSetEndofDatabaseFlag_Node0_action N_DatabaseStatusOKSetEndofDatabaseFlag_Node0_action --> E_DatabaseStatusOKSetEndofDatabaseFlag S_DatabaseStatusOKSetEndofDatabaseFlag --> N_DatabaseStatusOKSetEndofDatabaseFlag_Node0 N_DatabaseStatusOKSetEndofDatabaseFlag_Node0 -- No --> E_DatabaseStatusOKSetEndofDatabaseFlag
File: GCX126R.cbl
GIVEN:
A database search operation has been executed for US cargo records
WHEN:
The database operation returns a non-successful status code indicating no records found or an error condition
THEN:
- The end-of-database flag is set to true to indicate no more records are available
- Processing should terminate the search loop
β Consolidated Acceptance Criteria
- The system validates the retrieved record against search criteria → the equipment car ID from the retrieved record (first 12 characters) is compared to the current equipment car ID key AND the waybill number from the retrieved record is compared to the saved waybill index, and both must match exactly for the record 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_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch(["Start Step"])
E_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch(["End Step"])
N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0{"The system validates the retrieved
record against search criteria"}:::decision N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0_action["The equipment car ID from the
retrieved record first 12 characters
is compared to the current equipment
car ID key AND the waybill number
from the retrieved record is
compared to the saved waybill index,
and both must match exactly for the
record to be considered valid"]:::main N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0 -- Yes --> N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0_action N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0_action --> E_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch S_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch --> N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0 N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0 -- No --> E_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch
record against search criteria"}:::decision N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0_action["The equipment car ID from the
retrieved record first 12 characters
is compared to the current equipment
car ID key AND the waybill number
from the retrieved record is
compared to the saved waybill index,
and both must match exactly for the
record to be considered valid"]:::main N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0 -- Yes --> N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0_action N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0_action --> E_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch S_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch --> N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0 N_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch_Node0 -- No --> E_VerifyCarIDMatchesCurrentKeyVerifyWaybillMatchesSavedIndexKeysMatch
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
The system validates the retrieved record against search criteria
THEN:
- The equipment car id from the retrieved record (first 12 characters) is compared to the current equipment car id key
- The waybill number from the retrieved record is compared to the saved waybill index, and both must match exactly for the record to be considered valid
β Consolidated Acceptance Criteria
- The key validation check fails → the end-of-database flag is set to TRUE to terminate the search loop, as records are indexed and sorted, indicating no further matching records will be 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_KeysMatchSetEndofDatabaseFlag(["Start Step"])
E_KeysMatchSetEndofDatabaseFlag(["End Step"])
N_KeysMatchSetEndofDatabaseFlag_Node0{"The key validation check fails"}:::decision
N_KeysMatchSetEndofDatabaseFlag_Node0_action["The end-of-database flag is set to
TRUE to terminate the search loop,
as records are indexed and sorted,
indicating no further matching
records will be found"]:::exclusion N_KeysMatchSetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_KeysMatchSetEndofDatabaseFlag_Node0_action N_KeysMatchSetEndofDatabaseFlag_Node0_action --> E_KeysMatchSetEndofDatabaseFlag S_KeysMatchSetEndofDatabaseFlag --> N_KeysMatchSetEndofDatabaseFlag_Node0 N_KeysMatchSetEndofDatabaseFlag_Node0 -- No --> E_KeysMatchSetEndofDatabaseFlag
TRUE to terminate the search loop,
as records are indexed and sorted,
indicating no further matching
records will be found"]:::exclusion N_KeysMatchSetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_KeysMatchSetEndofDatabaseFlag_Node0_action N_KeysMatchSetEndofDatabaseFlag_Node0_action --> E_KeysMatchSetEndofDatabaseFlag S_KeysMatchSetEndofDatabaseFlag --> N_KeysMatchSetEndofDatabaseFlag_Node0 N_KeysMatchSetEndofDatabaseFlag_Node0 -- No --> E_KeysMatchSetEndofDatabaseFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved but either the equipment car ID or waybill number does not match the search criteria
WHEN:
The key validation check fails
THEN:
- The end-of-database flag is set to true to terminate the search loop, as records are indexed
- Sorted, indicating no further matching records will be found
β Consolidated Acceptance Criteria
- The cargo record has a deletion status indicator set to deleted → the record is skipped without setting the US manifest found flag, and processing continues to allow searching for the 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_CargoDeletedContinuetoNextRecord(["Start Step"])
E_CargoDeletedContinuetoNextRecord(["End Step"])
N_CargoDeletedContinuetoNextRecord_Node0{"The cargo record has a deletion
status indicator set to deleted"}:::decision N_CargoDeletedContinuetoNextRecord_Node0_action["The record is skipped without
setting the US manifest found flag,
and processing continues to allow
searching for the next record"]:::main N_CargoDeletedContinuetoNextRecord_Node0 -- Yes --> N_CargoDeletedContinuetoNextRecord_Node0_action N_CargoDeletedContinuetoNextRecord_Node0_action --> E_CargoDeletedContinuetoNextRecord S_CargoDeletedContinuetoNextRecord --> N_CargoDeletedContinuetoNextRecord_Node0 N_CargoDeletedContinuetoNextRecord_Node0 -- No --> E_CargoDeletedContinuetoNextRecord
status indicator set to deleted"}:::decision N_CargoDeletedContinuetoNextRecord_Node0_action["The record is skipped without
setting the US manifest found flag,
and processing continues to allow
searching for the next record"]:::main N_CargoDeletedContinuetoNextRecord_Node0 -- Yes --> N_CargoDeletedContinuetoNextRecord_Node0_action N_CargoDeletedContinuetoNextRecord_Node0_action --> E_CargoDeletedContinuetoNextRecord S_CargoDeletedContinuetoNextRecord --> N_CargoDeletedContinuetoNextRecord_Node0 N_CargoDeletedContinuetoNextRecord_Node0 -- No --> E_CargoDeletedContinuetoNextRecord
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved that matches equipment and waybill criteria
WHEN:
The cargo record has a deletion status indicator set to deleted
THEN:
The record is skipped without setting the US manifest found flag, and processing continues to allow searching for the next record
β Consolidated Acceptance Criteria
- The cargo record has the train-created indicator set to 'Y' (Yes) → the record is skipped without setting the US manifest found flag, and processing continues to allow searching for the 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_TRCreatedContinuetoNextRecord(["Start Step"])
E_TRCreatedContinuetoNextRecord(["End Step"])
N_TRCreatedContinuetoNextRecord_Node0{"The cargo record has the
train-created indicator set to Y Yes"}:::decision N_TRCreatedContinuetoNextRecord_Node0_action["The record is skipped without
setting the US manifest found flag,
and processing continues to allow
searching for the next record"]:::main N_TRCreatedContinuetoNextRecord_Node0 -- Yes --> N_TRCreatedContinuetoNextRecord_Node0_action N_TRCreatedContinuetoNextRecord_Node0_action --> E_TRCreatedContinuetoNextRecord S_TRCreatedContinuetoNextRecord --> N_TRCreatedContinuetoNextRecord_Node0 N_TRCreatedContinuetoNextRecord_Node0 -- No --> E_TRCreatedContinuetoNextRecord
train-created indicator set to Y Yes"}:::decision N_TRCreatedContinuetoNextRecord_Node0_action["The record is skipped without
setting the US manifest found flag,
and processing continues to allow
searching for the next record"]:::main N_TRCreatedContinuetoNextRecord_Node0 -- Yes --> N_TRCreatedContinuetoNextRecord_Node0_action N_TRCreatedContinuetoNextRecord_Node0_action --> E_TRCreatedContinuetoNextRecord S_TRCreatedContinuetoNextRecord --> N_TRCreatedContinuetoNextRecord_Node0 N_TRCreatedContinuetoNextRecord_Node0 -- No --> E_TRCreatedContinuetoNextRecord
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches equipment and waybill criteria and is not deleted
WHEN:
The cargo record has the train-created indicator set to 'Y' (Yes)
THEN:
The record is skipped without setting the US manifest found flag, and processing continues to allow searching for the next record
β Consolidated Acceptance Criteria
- The system prepares to process follower manifests → save the complete master cargo report segment to working storage; Save the master CCN key; Save the master waybill key for index; Save the master equipment car identifier
- The system begins processing follower manifests → the master cargo segment, master CCN key, and master waybill index are saved to temporary storage for later restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveMasterCargoInformation(["Start Step"])
E_SaveMasterCargoInformation(["End Step"])
N_SaveMasterCargoInformation_Node0{"The system prepares to process
follower manifests"}:::decision N_SaveMasterCargoInformation_Node0_action["Save the complete master cargo
report segment to working storage
Save the master CCN key Save the
master waybill key for index Save
the master equipment car identifier"]:::main N_SaveMasterCargoInformation_Node0 -- Yes --> N_SaveMasterCargoInformation_Node0_action N_SaveMasterCargoInformation_Node0_action --> E_SaveMasterCargoInformation S_SaveMasterCargoInformation --> N_SaveMasterCargoInformation_Node0 N_SaveMasterCargoInformation_Node1{"The system begins processing
follower manifests"}:::decision N_SaveMasterCargoInformation_Node1_action["The master cargo segment, master
CCN key, and master waybill index
are saved to temporary storage for
later restoration"]:::main N_SaveMasterCargoInformation_Node1 -- Yes --> N_SaveMasterCargoInformation_Node1_action N_SaveMasterCargoInformation_Node1_action --> E_SaveMasterCargoInformation N_SaveMasterCargoInformation_Node0 -- No --> N_SaveMasterCargoInformation_Node1 N_SaveMasterCargoInformation_Node1 -- No --> E_SaveMasterCargoInformation
follower manifests"}:::decision N_SaveMasterCargoInformation_Node0_action["Save the complete master cargo
report segment to working storage
Save the master CCN key Save the
master waybill key for index Save
the master equipment car identifier"]:::main N_SaveMasterCargoInformation_Node0 -- Yes --> N_SaveMasterCargoInformation_Node0_action N_SaveMasterCargoInformation_Node0_action --> E_SaveMasterCargoInformation S_SaveMasterCargoInformation --> N_SaveMasterCargoInformation_Node0 N_SaveMasterCargoInformation_Node1{"The system begins processing
follower manifests"}:::decision N_SaveMasterCargoInformation_Node1_action["The master cargo segment, master
CCN key, and master waybill index
are saved to temporary storage for
later restoration"]:::main N_SaveMasterCargoInformation_Node1 -- Yes --> N_SaveMasterCargoInformation_Node1_action N_SaveMasterCargoInformation_Node1_action --> E_SaveMasterCargoInformation N_SaveMasterCargoInformation_Node0 -- No --> N_SaveMasterCargoInformation_Node1 N_SaveMasterCargoInformation_Node1 -- No --> E_SaveMasterCargoInformation
File: GCX126R.cbl
GIVEN:
The cargo is confirmed as a master manifest
WHEN:
The system prepares to process follower manifests
THEN:
Save the complete master cargo report segment to working storage; Save the master CCN key; Save the master waybill key for index; Save the master equipment car identifier
File: GCX126R.cbl
GIVEN:
A master manifest cargo record has been identified for deconsolidation processing
WHEN:
The system begins processing follower manifests
THEN:
The master cargo segment, master CCN key, and master waybill index are saved to temporary storage for later restoration
β Consolidated Acceptance Criteria
- The system begins collecting follower manifests → clear the follower manifest array (set all entries to spaces); Set the follower array counter to 1; Set the end-of-database flag to false (not end of database); Establish maximum limit of 100 follower 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_InitializeFollowerArraySetCounterto1Max100Followers(["Start Step"])
E_InitializeFollowerArraySetCounterto1Max100Followers(["End Step"])
N_InitializeFollowerArraySetCounterto1Max100Followers_Node0{"The system begins collecting
follower manifests"}:::decision N_InitializeFollowerArraySetCounterto1Max100Followers_Node0_action["Clear the follower manifest array
set all entries to spaces Set the
follower array counter to 1 Set the
end-of-database flag to false not
end of database Establish maximum
limit of 100 follower manifests"]:::main N_InitializeFollowerArraySetCounterto1Max100Followers_Node0 -- Yes --> N_InitializeFollowerArraySetCounterto1Max100Followers_Node0_action N_InitializeFollowerArraySetCounterto1Max100Followers_Node0_action --> E_InitializeFollowerArraySetCounterto1Max100Followers S_InitializeFollowerArraySetCounterto1Max100Followers --> N_InitializeFollowerArraySetCounterto1Max100Followers_Node0 N_InitializeFollowerArraySetCounterto1Max100Followers_Node0 -- No --> E_InitializeFollowerArraySetCounterto1Max100Followers
follower manifests"}:::decision N_InitializeFollowerArraySetCounterto1Max100Followers_Node0_action["Clear the follower manifest array
set all entries to spaces Set the
follower array counter to 1 Set the
end-of-database flag to false not
end of database Establish maximum
limit of 100 follower manifests"]:::main N_InitializeFollowerArraySetCounterto1Max100Followers_Node0 -- Yes --> N_InitializeFollowerArraySetCounterto1Max100Followers_Node0_action N_InitializeFollowerArraySetCounterto1Max100Followers_Node0_action --> E_InitializeFollowerArraySetCounterto1Max100Followers S_InitializeFollowerArraySetCounterto1Max100Followers --> N_InitializeFollowerArraySetCounterto1Max100Followers_Node0 N_InitializeFollowerArraySetCounterto1Max100Followers_Node0 -- No --> E_InitializeFollowerArraySetCounterto1Max100Followers
File: GCX126R.cbl
GIVEN:
Master cargo information has been saved
WHEN:
The system begins collecting follower manifests
THEN:
Clear the follower manifest array (set all entries to spaces); Set the follower array counter to 1; Set the end-of-database flag to false (not end of database); Establish maximum limit of 100 follower manifests
β Consolidated Acceptance Criteria
- The system requests the next follower manifest record → execute database Get Next operation using master CCN key; Set database accept status to 'GEGB'; Use cargo report segment PCB7; Use qualified SSA with master CCN key (CCRT-B0RT-SSAQ)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextFollowerManifestUsingMasterCCN(["Start Step"])
E_GetNextFollowerManifestUsingMasterCCN(["End Step"])
N_GetNextFollowerManifestUsingMasterCCN_Node0{"The system requests the next
follower manifest record"}:::decision N_GetNextFollowerManifestUsingMasterCCN_Node0_action["Execute database Get Next operation
using master CCN key Set database
accept status to GEGB Use cargo
report segment PCB7 Use qualified
SSA with master CCN key
CCRT-B0RT-SSAQ"]:::main N_GetNextFollowerManifestUsingMasterCCN_Node0 -- Yes --> N_GetNextFollowerManifestUsingMasterCCN_Node0_action N_GetNextFollowerManifestUsingMasterCCN_Node0_action --> E_GetNextFollowerManifestUsingMasterCCN S_GetNextFollowerManifestUsingMasterCCN --> N_GetNextFollowerManifestUsingMasterCCN_Node0 N_GetNextFollowerManifestUsingMasterCCN_Node0 -- No --> E_GetNextFollowerManifestUsingMasterCCN
follower manifest record"}:::decision N_GetNextFollowerManifestUsingMasterCCN_Node0_action["Execute database Get Next operation
using master CCN key Set database
accept status to GEGB Use cargo
report segment PCB7 Use qualified
SSA with master CCN key
CCRT-B0RT-SSAQ"]:::main N_GetNextFollowerManifestUsingMasterCCN_Node0 -- Yes --> N_GetNextFollowerManifestUsingMasterCCN_Node0_action N_GetNextFollowerManifestUsingMasterCCN_Node0_action --> E_GetNextFollowerManifestUsingMasterCCN S_GetNextFollowerManifestUsingMasterCCN --> N_GetNextFollowerManifestUsingMasterCCN_Node0 N_GetNextFollowerManifestUsingMasterCCN_Node0 -- No --> E_GetNextFollowerManifestUsingMasterCCN
File: GCX126R.cbl
GIVEN:
The follower collection process is active and the counter is within the 100-follower limit
WHEN:
The system requests the next follower manifest record
THEN:
Execute database Get Next operation using master CCN key; Set database accept status to 'GEGB'; Use cargo report segment PCB7; Use qualified SSA with master CCN key (CCRT-B0RT-SSAQ)
β Consolidated Acceptance Criteria
- The system validates the master-follower relationship → if the retrieved cargo's master manifest CCN equals the saved master CCN key, the relationship is valid and processing continues; If the master manifest CCN does not match, set the end-of-database flag to true and stop retrieving followers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FollowersMasterCCNMatchesCurrentMaster(["Start Step"])
E_FollowersMasterCCNMatchesCurrentMaster(["End Step"])
N_FollowersMasterCCNMatchesCurrentMaster_Node0{"The system validates the
master-follower relationship"}:::decision N_FollowersMasterCCNMatchesCurrentMaster_Node0_action["If the retrieved cargo s master
manifest CCN equals the saved master
CCN key, the relationship is valid
and processing continues If the
master manifest CCN does not match,
set the end-of-database flag to true
and stop retrieving followers"]:::main N_FollowersMasterCCNMatchesCurrentMaster_Node0 -- Yes --> N_FollowersMasterCCNMatchesCurrentMaster_Node0_action N_FollowersMasterCCNMatchesCurrentMaster_Node0_action --> E_FollowersMasterCCNMatchesCurrentMaster S_FollowersMasterCCNMatchesCurrentMaster --> N_FollowersMasterCCNMatchesCurrentMaster_Node0 N_FollowersMasterCCNMatchesCurrentMaster_Node0 -- No --> E_FollowersMasterCCNMatchesCurrentMaster
master-follower relationship"}:::decision N_FollowersMasterCCNMatchesCurrentMaster_Node0_action["If the retrieved cargo s master
manifest CCN equals the saved master
CCN key, the relationship is valid
and processing continues If the
master manifest CCN does not match,
set the end-of-database flag to true
and stop retrieving followers"]:::main N_FollowersMasterCCNMatchesCurrentMaster_Node0 -- Yes --> N_FollowersMasterCCNMatchesCurrentMaster_Node0_action N_FollowersMasterCCNMatchesCurrentMaster_Node0_action --> E_FollowersMasterCCNMatchesCurrentMaster S_FollowersMasterCCNMatchesCurrentMaster --> N_FollowersMasterCCNMatchesCurrentMaster_Node0 N_FollowersMasterCCNMatchesCurrentMaster_Node0 -- No --> E_FollowersMasterCCNMatchesCurrentMaster
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system validates the master-follower relationship
THEN:
- If the retrieved cargo's master manifest ccn equals the saved master ccn key, the relationship is valid
- Processing continues; if the master manifest ccn does not match, set the end-of-database flag to true
- Stop retrieving followers
β Consolidated Acceptance Criteria
- The system checks the manifest type indicator → if the cargo is identified as a follower manifest, store its CCN in the follower array; If the cargo is identified as a master manifest, skip storage and continue to check for more followers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsThisaFollowerManifest(["Start Step"])
E_IsThisaFollowerManifest(["End Step"])
N_IsThisaFollowerManifest_Node0{"The system checks the manifest type
indicator"}:::decision N_IsThisaFollowerManifest_Node0_action["If the cargo is identified as a
follower manifest, store its CCN in
the follower array If the cargo is
identified as a master manifest,
skip storage and continue to check
for more followers"]:::main N_IsThisaFollowerManifest_Node0 -- Yes --> N_IsThisaFollowerManifest_Node0_action N_IsThisaFollowerManifest_Node0_action --> E_IsThisaFollowerManifest S_IsThisaFollowerManifest --> N_IsThisaFollowerManifest_Node0 N_IsThisaFollowerManifest_Node0 -- No --> E_IsThisaFollowerManifest
indicator"}:::decision N_IsThisaFollowerManifest_Node0_action["If the cargo is identified as a
follower manifest, store its CCN in
the follower array If the cargo is
identified as a master manifest,
skip storage and continue to check
for more followers"]:::main N_IsThisaFollowerManifest_Node0 -- Yes --> N_IsThisaFollowerManifest_Node0_action N_IsThisaFollowerManifest_Node0_action --> E_IsThisaFollowerManifest S_IsThisaFollowerManifest --> N_IsThisaFollowerManifest_Node0 N_IsThisaFollowerManifest_Node0 -- No --> E_IsThisaFollowerManifest
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and validated as belonging to the current master
WHEN:
The system checks the manifest type indicator
THEN:
- If the cargo is identified as a follower manifest, store its ccn in the follower array; if the cargo is identified as a master manifest, skip storage
- Continue to check for more followers
β Consolidated Acceptance Criteria
- The system stores the follower information → move the follower's CCN key to the follower manifest array at position indicated by counter; Add 1 to the 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_StoreFollowerCCNinArrayIncrementCounter(["Start Step"])
E_StoreFollowerCCNinArrayIncrementCounter(["End Step"])
N_StoreFollowerCCNinArrayIncrementCounter_Node0{"The system stores the follower
information"}:::decision N_StoreFollowerCCNinArrayIncrementCounter_Node0_action["Move the follower s CCN key to the
follower manifest array at position
indicated by counter Add 1 to the
counter"]:::main N_StoreFollowerCCNinArrayIncrementCounter_Node0 -- Yes --> N_StoreFollowerCCNinArrayIncrementCounter_Node0_action N_StoreFollowerCCNinArrayIncrementCounter_Node0_action --> E_StoreFollowerCCNinArrayIncrementCounter S_StoreFollowerCCNinArrayIncrementCounter --> N_StoreFollowerCCNinArrayIncrementCounter_Node0 N_StoreFollowerCCNinArrayIncrementCounter_Node0 -- No --> E_StoreFollowerCCNinArrayIncrementCounter
information"}:::decision N_StoreFollowerCCNinArrayIncrementCounter_Node0_action["Move the follower s CCN key to the
follower manifest array at position
indicated by counter Add 1 to the
counter"]:::main N_StoreFollowerCCNinArrayIncrementCounter_Node0 -- Yes --> N_StoreFollowerCCNinArrayIncrementCounter_Node0_action N_StoreFollowerCCNinArrayIncrementCounter_Node0_action --> E_StoreFollowerCCNinArrayIncrementCounter S_StoreFollowerCCNinArrayIncrementCounter --> N_StoreFollowerCCNinArrayIncrementCounter_Node0 N_StoreFollowerCCNinArrayIncrementCounter_Node0 -- No --> E_StoreFollowerCCNinArrayIncrementCounter
File: GCX126R.cbl
GIVEN:
A cargo record has been confirmed as a follower manifest of the current master
WHEN:
The system stores the follower information
THEN:
Move the follower's CCN key to the follower manifest array at position indicated by counter; Add 1 to the counter
β Consolidated Acceptance Criteria
- The system determines whether to retrieve the next follower → if the end-of-database flag is false AND the counter is less than or equal to 100, continue to get the next follower; If the end-of-database flag is true OR the counter exceeds 100, stop retrieval and proceed to count 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_MoreFollowerstoRetrieve(["Start Step"])
E_MoreFollowerstoRetrieve(["End Step"])
N_MoreFollowerstoRetrieve_Node0{"The system determines whether to
retrieve the next follower"}:::decision N_MoreFollowerstoRetrieve_Node0_action["If the end-of-database flag is
false AND the counter is less than
or equal to 100, continue to get the
next follower If the end-of-database
flag is true OR the counter exceeds
100, stop retrieval and proceed to
count validation"]:::main N_MoreFollowerstoRetrieve_Node0 -- Yes --> N_MoreFollowerstoRetrieve_Node0_action N_MoreFollowerstoRetrieve_Node0_action --> E_MoreFollowerstoRetrieve S_MoreFollowerstoRetrieve --> N_MoreFollowerstoRetrieve_Node0 N_MoreFollowerstoRetrieve_Node0 -- No --> E_MoreFollowerstoRetrieve
retrieve the next follower"}:::decision N_MoreFollowerstoRetrieve_Node0_action["If the end-of-database flag is
false AND the counter is less than
or equal to 100, continue to get the
next follower If the end-of-database
flag is true OR the counter exceeds
100, stop retrieval and proceed to
count validation"]:::main N_MoreFollowerstoRetrieve_Node0 -- Yes --> N_MoreFollowerstoRetrieve_Node0_action N_MoreFollowerstoRetrieve_Node0_action --> E_MoreFollowerstoRetrieve S_MoreFollowerstoRetrieve --> N_MoreFollowerstoRetrieve_Node0 N_MoreFollowerstoRetrieve_Node0 -- No --> E_MoreFollowerstoRetrieve
File: GCX126R.cbl
GIVEN:
A follower has been processed or a continuation condition has been evaluated
WHEN:
The system determines whether to retrieve the next follower
THEN:
- If the end-of-database flag is false
- The counter is less than or equal to 100, continue to get the next follower; if the end-of-database flag is true or the counter exceeds 100, stop retrieval
- Proceed to count validation
β Consolidated Acceptance Criteria
- The system begins processing the collected followers → start loop with index J at position 1; Continue loop incrementing J by 1 each iteration; Stop loop when follower manifest array entry at position I is spaces or low-values OR when J exceeds I (the total count of followers)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoopThroughEachFollowerinArray(["Start Step"])
E_LoopThroughEachFollowerinArray(["End Step"])
N_LoopThroughEachFollowerinArray_Node0{"The system begins processing the
collected followers"}:::decision N_LoopThroughEachFollowerinArray_Node0_action["Start loop with index J at position
1 Continue loop incrementing J by 1
each iteration Stop loop when
follower manifest array entry at
position I is spaces or low-values
OR when J exceeds I the total count
of followers"]:::main N_LoopThroughEachFollowerinArray_Node0 -- Yes --> N_LoopThroughEachFollowerinArray_Node0_action N_LoopThroughEachFollowerinArray_Node0_action --> E_LoopThroughEachFollowerinArray S_LoopThroughEachFollowerinArray --> N_LoopThroughEachFollowerinArray_Node0 N_LoopThroughEachFollowerinArray_Node0 -- No --> E_LoopThroughEachFollowerinArray
collected followers"}:::decision N_LoopThroughEachFollowerinArray_Node0_action["Start loop with index J at position
1 Continue loop incrementing J by 1
each iteration Stop loop when
follower manifest array entry at
position I is spaces or low-values
OR when J exceeds I the total count
of followers"]:::main N_LoopThroughEachFollowerinArray_Node0 -- Yes --> N_LoopThroughEachFollowerinArray_Node0_action N_LoopThroughEachFollowerinArray_Node0_action --> E_LoopThroughEachFollowerinArray S_LoopThroughEachFollowerinArray --> N_LoopThroughEachFollowerinArray_Node0 N_LoopThroughEachFollowerinArray_Node0 -- No --> E_LoopThroughEachFollowerinArray
File: GCX126R.cbl
GIVEN:
At least one follower manifest has been collected in the array
WHEN:
The system begins processing the collected followers
THEN:
Start loop with index J at position 1; Continue loop incrementing J by 1 each iteration; Stop loop when follower manifest array entry at position I is spaces or low-values OR when J exceeds I (the total count of followers)
β Consolidated Acceptance Criteria
- The system retrieves the follower cargo record → move the follower CCN to the cargo report segment key value (CCRT-SSAQ); Move the follower CCN to the alternate segment key value (A2RT-SSAQ); Execute Get Hold Unique database operation (Z3000-GHU-CARGO); Evaluate cargo found status based on database return
- The system retrieves the cargo record → the follower CCN is used as the key value to retrieve the cargo report segment from 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_RetrieveFollowerCargobyCCN(["Start Step"])
E_RetrieveFollowerCargobyCCN(["End Step"])
N_RetrieveFollowerCargobyCCN_Node0{"The system retrieves the follower
cargo record"}:::decision N_RetrieveFollowerCargobyCCN_Node0_action["Move the follower CCN to the cargo
report segment key value CCRT-SSAQ
Move the follower CCN to the
alternate segment key value
A2RT-SSAQ Execute Get Hold Unique
database operation Z3000-GHU-CARGO
Evaluate cargo found status based on
database return"]:::main N_RetrieveFollowerCargobyCCN_Node0 -- Yes --> N_RetrieveFollowerCargobyCCN_Node0_action N_RetrieveFollowerCargobyCCN_Node0_action --> E_RetrieveFollowerCargobyCCN S_RetrieveFollowerCargobyCCN --> N_RetrieveFollowerCargobyCCN_Node0 N_RetrieveFollowerCargobyCCN_Node1{"The system retrieves the cargo
record"}:::decision N_RetrieveFollowerCargobyCCN_Node1_action["The follower CCN is used as the key
value to retrieve the cargo report
segment from the database"]:::main N_RetrieveFollowerCargobyCCN_Node1 -- Yes --> N_RetrieveFollowerCargobyCCN_Node1_action N_RetrieveFollowerCargobyCCN_Node1_action --> E_RetrieveFollowerCargobyCCN N_RetrieveFollowerCargobyCCN_Node0 -- No --> N_RetrieveFollowerCargobyCCN_Node1 N_RetrieveFollowerCargobyCCN_Node1 -- No --> E_RetrieveFollowerCargobyCCN
cargo record"}:::decision N_RetrieveFollowerCargobyCCN_Node0_action["Move the follower CCN to the cargo
report segment key value CCRT-SSAQ
Move the follower CCN to the
alternate segment key value
A2RT-SSAQ Execute Get Hold Unique
database operation Z3000-GHU-CARGO
Evaluate cargo found status based on
database return"]:::main N_RetrieveFollowerCargobyCCN_Node0 -- Yes --> N_RetrieveFollowerCargobyCCN_Node0_action N_RetrieveFollowerCargobyCCN_Node0_action --> E_RetrieveFollowerCargobyCCN S_RetrieveFollowerCargobyCCN --> N_RetrieveFollowerCargobyCCN_Node0 N_RetrieveFollowerCargobyCCN_Node1{"The system retrieves the cargo
record"}:::decision N_RetrieveFollowerCargobyCCN_Node1_action["The follower CCN is used as the key
value to retrieve the cargo report
segment from the database"]:::main N_RetrieveFollowerCargobyCCN_Node1 -- Yes --> N_RetrieveFollowerCargobyCCN_Node1_action N_RetrieveFollowerCargobyCCN_Node1_action --> E_RetrieveFollowerCargobyCCN N_RetrieveFollowerCargobyCCN_Node0 -- No --> N_RetrieveFollowerCargobyCCN_Node1 N_RetrieveFollowerCargobyCCN_Node1 -- No --> E_RetrieveFollowerCargobyCCN
File: GCX126R.cbl
GIVEN:
A follower CCN has been retrieved from the processing array at position J
WHEN:
The system retrieves the follower cargo record
THEN:
Move the follower CCN to the cargo report segment key value (CCRT-SSAQ); Move the follower CCN to the alternate segment key value (A2RT-SSAQ); Execute Get Hold Unique database operation (Z3000-GHU-CARGO); Evaluate cargo found status based on database return
File: GCX126R.cbl
GIVEN:
A follower manifest CCN exists at the current array position J
WHEN:
The system retrieves the cargo record
THEN:
The follower CCN is used as the key value to retrieve the cargo report segment from the database
β Consolidated Acceptance Criteria
- The system updates the follower with release information → move spaces to destination station number index; Move spaces to destination station number for index; Move current machine date to release date; Move current machine time to release time; Move current user ID to release by field; Move 'RELEASED' to current status field; Move 'R' to release status field; Move 'A' to release type field; Move spaces to release reason field; Move spaces to error or release status index; Move spaces to error status field
- Applying release information to the follower → the destination station numbers are cleared to spaces, release date is set to current machine date, release time is set to current machine time, release by is set to current user ID, current status is set to 'RELEASED', release status is set to 'R', release type is set to 'A', error/release status index is cleared to spaces, and error 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_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields(["Start Step"])
E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields(["End Step"])
N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0{"The system updates the follower
with release information"}:::decision N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0_action["Move spaces to destination station
number index Move spaces to
destination station number for index
Move current machine date to release
date Move current machine time to
release time Move current user ID to
release by field Move RELEASED to
current status field Move R to
release status field Move A to
release type field Move spaces to
release reason field Move spaces to
error or release status index Move
spaces to error status field"]:::main N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0 -- Yes --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0_action N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0_action --> E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields S_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0 N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1{"Applying release information to the
follower"}:::decision N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1_action["The destination station numbers are
cleared to spaces, release date is
set to current machine date, release
time is set to current machine time,
release by is set to current user
ID, current status is set to
RELEASED , release status is set to
R , release type is set to A ,
errorrelease status index is cleared
to spaces, and error status is
cleared to spaces"]:::main N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1 -- Yes --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1_action N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1_action --> E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0 -- No --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1 N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1 -- No --> E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields
with release information"}:::decision N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0_action["Move spaces to destination station
number index Move spaces to
destination station number for index
Move current machine date to release
date Move current machine time to
release time Move current user ID to
release by field Move RELEASED to
current status field Move R to
release status field Move A to
release type field Move spaces to
release reason field Move spaces to
error or release status index Move
spaces to error status field"]:::main N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0 -- Yes --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0_action N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0_action --> E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields S_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0 N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1{"Applying release information to the
follower"}:::decision N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1_action["The destination station numbers are
cleared to spaces, release date is
set to current machine date, release
time is set to current machine time,
release by is set to current user
ID, current status is set to
RELEASED , release status is set to
R , release type is set to A ,
errorrelease status index is cleared
to spaces, and error status is
cleared to spaces"]:::main N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1 -- Yes --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1_action N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1_action --> E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node0 -- No --> N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1 N_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields_Node1 -- No --> E_SetReleaseInformationClearDestinationStationSetReleaseDateTimeSetReleaseByUserSetStatustoRELEASEDClearErrorFields
File: GCX126R.cbl
GIVEN:
A follower cargo record has been successfully retrieved
WHEN:
The system updates the follower with release information
THEN:
Move spaces to destination station number index; Move spaces to destination station number for index; Move current machine date to release date; Move current machine time to release time; Move current user ID to release by field; Move 'RELEASED' to current status field; Move 'R' to release status field; Move 'A' to release type field; Move spaces to release reason field; Move spaces to error or release status index; Move spaces to error status field
File: GCX126R.cbl
GIVEN:
A follower cargo record has been found
WHEN:
Applying release information to the follower
THEN:
The destination station numbers are cleared to spaces, release date is set to current machine date, release time is set to current machine time, release by is set to current user ID, current status is set to 'RELEASED', release status is set to 'R', release type is set to 'A', error/release status index is cleared to spaces, and error status is cleared to spaces
β Consolidated Acceptance Criteria
- The system determines the type of release message to log → if the V9 notice reason code indicates RELEASED, proceed to log release message; If the V9 notice reason code indicates DECONSOLIDATION, proceed to log deconsolidation message
- The system determines the type of release message to create → if V9-02-RELEASED is true, process as standard release, otherwise if V9-02-DECON is true, process as deconsolidation release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoticeReasonType(["Start Step"])
E_NoticeReasonType(["End Step"])
N_NoticeReasonType_Node0{"The system determines the type of
release message to log"}:::decision N_NoticeReasonType_Node0_action["If the V9 notice reason code
indicates RELEASED, proceed to log
release message If the V9 notice
reason code indicates
DECONSOLIDATION, proceed to log
deconsolidation message"]:::main N_NoticeReasonType_Node0 -- Yes --> N_NoticeReasonType_Node0_action N_NoticeReasonType_Node0_action --> E_NoticeReasonType S_NoticeReasonType --> N_NoticeReasonType_Node0 N_NoticeReasonType_Node1{"The system determines the type of
release message to create"}:::decision N_NoticeReasonType_Node1_action["If V9-02-RELEASED is true, process
as standard release, otherwise if
V9-02-DECON is true, process as
deconsolidation release"]:::main N_NoticeReasonType_Node1 -- Yes --> N_NoticeReasonType_Node1_action N_NoticeReasonType_Node1_action --> E_NoticeReasonType N_NoticeReasonType_Node0 -- No --> N_NoticeReasonType_Node1 N_NoticeReasonType_Node1 -- No --> E_NoticeReasonType
release message to log"}:::decision N_NoticeReasonType_Node0_action["If the V9 notice reason code
indicates RELEASED, proceed to log
release message If the V9 notice
reason code indicates
DECONSOLIDATION, proceed to log
deconsolidation message"]:::main N_NoticeReasonType_Node0 -- Yes --> N_NoticeReasonType_Node0_action N_NoticeReasonType_Node0_action --> E_NoticeReasonType S_NoticeReasonType --> N_NoticeReasonType_Node0 N_NoticeReasonType_Node1{"The system determines the type of
release message to create"}:::decision N_NoticeReasonType_Node1_action["If V9-02-RELEASED is true, process
as standard release, otherwise if
V9-02-DECON is true, process as
deconsolidation release"]:::main N_NoticeReasonType_Node1 -- Yes --> N_NoticeReasonType_Node1_action N_NoticeReasonType_Node1_action --> E_NoticeReasonType N_NoticeReasonType_Node0 -- No --> N_NoticeReasonType_Node1 N_NoticeReasonType_Node1 -- No --> E_NoticeReasonType
File: GCX126R.cbl
GIVEN:
Release information has been set for the follower manifest
WHEN:
The system determines the type of release message to log
THEN:
If the V9 notice reason code indicates RELEASED, proceed to log release message; If the V9 notice reason code indicates DECONSOLIDATION, proceed to log deconsolidation message
File: GCX126R.cbl
GIVEN:
A valid cargo record exists for the follower manifest AND the V9 segment contains a notice reason code
WHEN:
The system determines the type of release message to create
THEN:
If V9-02-RELEASED is true, process as standard release, otherwise if V9-02-DECON is true, process as deconsolidation release
β Consolidated Acceptance Criteria
- The system logs the release information → clear the information message field to spaces; Build message string: 'EDI 350: RELEASE : ' concatenated with CBSA release reference ID (first 15 characters) concatenated with ' AT PORT ' concatenated with port code (first 4 characters); Move the built message to information message field; Build release reason string: CBSA release reference ID (first 15 characters) concatenated with '/' concatenated with port code (first 4 characters); Move the built reason to cargo release reason field; Set current CCN key to information message CCN key; Execute log cargo information message procedure (Z150-LOG-CARGO-INFO-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_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort(["Start Step"])
E_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort(["End Step"])
N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0{"The system logs the release
information"}:::decision N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0_action["Clear the information message field
to spaces Build message string: EDI
350: RELEASE : concatenated with
CBSA release reference ID first 15
characters concatenated with AT PORT
concatenated with port code first 4
characters Move the built message to
information message field Build
release reason string: CBSA release
reference ID first 15 characters
concatenated with concatenated with
port code first 4 characters Move
the built reason to cargo release
reason field Set current CCN key to
information message CCN key Execute
log cargo information message
procedure Z150-LOG-CARGO-INFO-MSG"]:::main N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0 -- Yes --> N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0_action N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0_action --> E_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort S_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort --> N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0 N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0 -- No --> E_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort
information"}:::decision N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0_action["Clear the information message field
to spaces Build message string: EDI
350: RELEASE : concatenated with
CBSA release reference ID first 15
characters concatenated with AT PORT
concatenated with port code first 4
characters Move the built message to
information message field Build
release reason string: CBSA release
reference ID first 15 characters
concatenated with concatenated with
port code first 4 characters Move
the built reason to cargo release
reason field Set current CCN key to
information message CCN key Execute
log cargo information message
procedure Z150-LOG-CARGO-INFO-MSG"]:::main N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0 -- Yes --> N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0_action N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0_action --> E_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort S_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort --> N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0 N_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort_Node0 -- No --> E_LogMessageEDI350RELEASERefATPORTPortSetReleaseReasonRefPort
File: GCX126R.cbl
GIVEN:
The follower manifest is being released through standard release process
WHEN:
The system logs the release information
THEN:
Clear the information message field to spaces; Build message string: 'EDI 350: RELEASE : ' concatenated with CBSA release reference ID (first 15 characters) concatenated with ' AT PORT ' concatenated with port code (first 4 characters); Move the built message to information message field; Build release reason string: CBSA release reference ID (first 15 characters) concatenated with '/' concatenated with port code (first 4 characters); Move the built reason to cargo release reason field; Set current CCN key to information message CCN key; Execute log cargo information message procedure (Z150-LOG-CARGO-INFO-MSG)
β Consolidated Acceptance Criteria
- The system logs the deconsolidation information → clear the information message field to spaces; Build message string: 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with port code (first 4 characters); Move the built message to information message field; Build release reason string: 'DECONSOLIDATION AT ' concatenated with port code (first 4 characters); Move the built reason to cargo release reason field; Set current CCN key to information message CCN key; Execute log cargo information message procedure (Z150-LOG-CARGO-INFO-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_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort(["Start Step"])
E_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort(["End Step"])
N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0{"The system logs the deconsolidation
information"}:::decision N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0_action["Clear the information message field
to spaces Build message string: EDI
350: RELEASE VIA DECON AT PORT
concatenated with port code first 4
characters Move the built message to
information message field Build
release reason string:
DECONSOLIDATION AT concatenated with
port code first 4 characters Move
the built reason to cargo release
reason field Set current CCN key to
information message CCN key Execute
log cargo information message
procedure Z150-LOG-CARGO-INFO-MSG"]:::main N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0 -- Yes --> N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0_action N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0_action --> E_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort S_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort --> N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0 N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0 -- No --> E_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort
information"}:::decision N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0_action["Clear the information message field
to spaces Build message string: EDI
350: RELEASE VIA DECON AT PORT
concatenated with port code first 4
characters Move the built message to
information message field Build
release reason string:
DECONSOLIDATION AT concatenated with
port code first 4 characters Move
the built reason to cargo release
reason field Set current CCN key to
information message CCN key Execute
log cargo information message
procedure Z150-LOG-CARGO-INFO-MSG"]:::main N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0 -- Yes --> N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0_action N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0_action --> E_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort S_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort --> N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0 N_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort_Node0 -- No --> E_LogMessageEDI350RELEASEVIADECONATPORTPortSetReleaseReasonDECONSOLIDATIONATPort
File: GCX126R.cbl
GIVEN:
The follower manifest is being released through deconsolidation process
WHEN:
The system logs the deconsolidation information
THEN:
Clear the information message field to spaces; Build message string: 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with port code (first 4 characters); Move the built message to information message field; Build release reason string: 'DECONSOLIDATION AT ' concatenated with port code (first 4 characters); Move the built reason to cargo release reason field; Set current CCN key to information message CCN key; Execute log cargo information message procedure (Z150-LOG-CARGO-INFO-MSG)
β Consolidated Acceptance Criteria
- The system processes associated US manifest → set US manifest not found flag to true; Set not end-of-file flag to true; Move current equipment car ID key to US cargo car ID index; Move saved waybill index to US cargo waybill index; Execute Get Unique US cargo by car and waybill (Z3300-GU-US-CARGO-BY-CARWB); Execute Get Next US cargo by car and waybill repeatedly (Z3350-GN-US-CARGO-BY-CARWB) until US manifest found or end-of-file; If end-of-file reached, exit US manifest processing; If US manifest found: move log information, build date string from machine century and date, move machine time to log time, set action code to use input message, move US CCN key to train or US CCN field, set US cargo indicator to true, build message string 'CDN CCN RLSED BY EDI 350: ' concatenated with Canadian CCN key, execute spawn log entry procedure (Z300-SPAWN-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_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN(["Start Step"])
E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN(["End Step"])
N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0{"The system processes associated US
manifest"}:::decision N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0_action["Set US manifest not found flag to
true Set not end-of-file flag to
true Move current equipment car ID
key to US cargo car ID index Move
saved waybill index to US cargo
waybill index Execute Get Unique US
cargo by car and waybill
Z3300-GU-US-CARGO-BY-CARWB Execute
Get Next US cargo by car and waybill
repeatedly
Z3350-GN-US-CARGO-BY-CARWB until US
manifest found or end-of-file If
end-of-file reached, exit US
manifest processing If US manifest
found: move log information, build
date string from machine century and
date, move machine time to log time,
set action code to use input
message, move US CCN key to train or
US CCN field, set US cargo indicator
to true, build message string CDN
CCN RLSED BY EDI 350: concatenated
with Canadian CCN key, execute spawn
log entry procedure
Z300-SPAWN-GCT1051E"]:::main N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0 -- Yes --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0_action N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0_action --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN S_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0 N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0 -- No --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN
manifest"}:::decision N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0_action["Set US manifest not found flag to
true Set not end-of-file flag to
true Move current equipment car ID
key to US cargo car ID index Move
saved waybill index to US cargo
waybill index Execute Get Unique US
cargo by car and waybill
Z3300-GU-US-CARGO-BY-CARWB Execute
Get Next US cargo by car and waybill
repeatedly
Z3350-GN-US-CARGO-BY-CARWB until US
manifest found or end-of-file If
end-of-file reached, exit US
manifest processing If US manifest
found: move log information, build
date string from machine century and
date, move machine time to log time,
set action code to use input
message, move US CCN key to train or
US CCN field, set US cargo indicator
to true, build message string CDN
CCN RLSED BY EDI 350: concatenated
with Canadian CCN key, execute spawn
log entry procedure
Z300-SPAWN-GCT1051E"]:::main N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0 -- Yes --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0_action N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0_action --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN S_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0 N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN_Node0 -- No --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleasetoUSCCN
File: GCX126R.cbl
GIVEN:
A follower manifest has been released or deconsolidated
WHEN:
The system processes associated US manifest
THEN:
- Set us manifest not found flag to true; set not end-of-file flag to true; move current equipment car id key to us cargo car id index; move saved waybill index to us cargo waybill index; execute get unique us cargo by car
- Waybill (z3300-gu-us-cargo-by-carwb); execute get next us cargo by car
- Waybill repeatedly (z3350-gn-us-cargo-by-carwb) until us manifest found or end-of-file; if end-of-file reached, exit us manifest processing; if us manifest found: move log information, build date string from machine century
- Date, move machine time to log time, set action code to use input message, move us ccn key to train or us ccn field, set us cargo indicator to true, build message string 'cdn ccn rlsed by edi 350: ' concatenated with canadian ccn key, execute spawn log entry procedure (z300-spawn-gct1051e)
β Consolidated Acceptance Criteria
- The system determines whether to continue the processing loop → if the current loop index J is less than the total follower count I, continue loop to process next follower; If the current loop index J equals or exceeds the total follower count I, exit loop and proceed to restore master 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_MoreFollowersinArray(["Start Step"])
E_MoreFollowersinArray(["End Step"])
N_MoreFollowersinArray_Node0{"The system determines whether to
continue the processing loop"}:::decision N_MoreFollowersinArray_Node0_action["If the current loop index J is less
than the total follower count I,
continue loop to process next
follower If the current loop index J
equals or exceeds the total follower
count I, exit loop and proceed to
restore master information"]:::main N_MoreFollowersinArray_Node0 -- Yes --> N_MoreFollowersinArray_Node0_action N_MoreFollowersinArray_Node0_action --> E_MoreFollowersinArray S_MoreFollowersinArray --> N_MoreFollowersinArray_Node0 N_MoreFollowersinArray_Node0 -- No --> E_MoreFollowersinArray
continue the processing loop"}:::decision N_MoreFollowersinArray_Node0_action["If the current loop index J is less
than the total follower count I,
continue loop to process next
follower If the current loop index J
equals or exceeds the total follower
count I, exit loop and proceed to
restore master information"]:::main N_MoreFollowersinArray_Node0 -- Yes --> N_MoreFollowersinArray_Node0_action N_MoreFollowersinArray_Node0_action --> E_MoreFollowersinArray S_MoreFollowersinArray --> N_MoreFollowersinArray_Node0 N_MoreFollowersinArray_Node0 -- No --> E_MoreFollowersinArray
File: GCX126R.cbl
GIVEN:
A follower manifest has been processed and updated
WHEN:
The system determines whether to continue the processing loop
THEN:
- If the current loop index j is less than the total follower count i, continue loop to process next follower; if the current loop index j equals or exceeds the total follower count i, exit loop
- Proceed to restore master information
β Consolidated Acceptance Criteria
- The system completes follower processing → move saved master cargo report segment to current cargo report segment; Move saved master waybill key to current waybill index; Move saved master equipment car to current car ID key
- The system completes follower processing → the saved master cargo segment is restored to the cargo report segment, the saved master waybill index is restored to the waybill index variable, and the saved master equipment car ID is restored to the current car ID key 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_RestoreMasterCargoInformation(["Start Step"])
E_RestoreMasterCargoInformation(["End Step"])
N_RestoreMasterCargoInformation_Node0{"The system completes follower
processing"}:::decision N_RestoreMasterCargoInformation_Node0_action["Move saved master cargo report
segment to current cargo report
segment Move saved master waybill
key to current waybill index Move
saved master equipment car to
current car ID key"]:::main N_RestoreMasterCargoInformation_Node0 -- Yes --> N_RestoreMasterCargoInformation_Node0_action N_RestoreMasterCargoInformation_Node0_action --> E_RestoreMasterCargoInformation S_RestoreMasterCargoInformation --> N_RestoreMasterCargoInformation_Node0 N_RestoreMasterCargoInformation_Node1{"The system completes follower
processing"}:::decision N_RestoreMasterCargoInformation_Node1_action["The saved master cargo segment is
restored to the cargo report
segment, the saved master waybill
index is restored to the waybill
index variable, and the saved master
equipment car ID is restored to the
current car ID key variable"]:::main N_RestoreMasterCargoInformation_Node1 -- Yes --> N_RestoreMasterCargoInformation_Node1_action N_RestoreMasterCargoInformation_Node1_action --> E_RestoreMasterCargoInformation N_RestoreMasterCargoInformation_Node0 -- No --> N_RestoreMasterCargoInformation_Node1 N_RestoreMasterCargoInformation_Node1 -- No --> E_RestoreMasterCargoInformation
processing"}:::decision N_RestoreMasterCargoInformation_Node0_action["Move saved master cargo report
segment to current cargo report
segment Move saved master waybill
key to current waybill index Move
saved master equipment car to
current car ID key"]:::main N_RestoreMasterCargoInformation_Node0 -- Yes --> N_RestoreMasterCargoInformation_Node0_action N_RestoreMasterCargoInformation_Node0_action --> E_RestoreMasterCargoInformation S_RestoreMasterCargoInformation --> N_RestoreMasterCargoInformation_Node0 N_RestoreMasterCargoInformation_Node1{"The system completes follower
processing"}:::decision N_RestoreMasterCargoInformation_Node1_action["The saved master cargo segment is
restored to the cargo report
segment, the saved master waybill
index is restored to the waybill
index variable, and the saved master
equipment car ID is restored to the
current car ID key variable"]:::main N_RestoreMasterCargoInformation_Node1 -- Yes --> N_RestoreMasterCargoInformation_Node1_action N_RestoreMasterCargoInformation_Node1_action --> E_RestoreMasterCargoInformation N_RestoreMasterCargoInformation_Node0 -- No --> N_RestoreMasterCargoInformation_Node1 N_RestoreMasterCargoInformation_Node1 -- No --> E_RestoreMasterCargoInformation
File: GCX126R.cbl
GIVEN:
All follower manifests have been processed and updated
WHEN:
The system completes follower processing
THEN:
Move saved master cargo report segment to current cargo report segment; Move saved master waybill key to current waybill index; Move saved master equipment car to current car ID key
File: GCX126R.cbl
GIVEN:
All follower manifests in the array have been processed OR an empty follower CCN position was encountered
WHEN:
The system completes follower processing
THEN:
The saved master cargo segment is restored to the cargo report segment, the saved master waybill index is restored to the waybill index variable, and the saved master equipment car ID is restored to the current car ID key variable
β Consolidated Acceptance Criteria
- The follower manifest collection process begins → the loop counter I is set to 1 AND the end-of-database flag is set to indicate more records may 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_InitializeLoopCounterI1SetNotEndofDBFlag(["Start Step"])
E_InitializeLoopCounterI1SetNotEndofDBFlag(["End Step"])
N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0{"The follower manifest collection
process begins"}:::decision N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0_action["The loop counter I is set to 1 AND
the end-of-database flag is set to
indicate more records may exist"]:::main N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0 -- Yes --> N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0_action N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0_action --> E_InitializeLoopCounterI1SetNotEndofDBFlag S_InitializeLoopCounterI1SetNotEndofDBFlag --> N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0 N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0 -- No --> E_InitializeLoopCounterI1SetNotEndofDBFlag
process begins"}:::decision N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0_action["The loop counter I is set to 1 AND
the end-of-database flag is set to
indicate more records may exist"]:::main N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0 -- Yes --> N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0_action N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0_action --> E_InitializeLoopCounterI1SetNotEndofDBFlag S_InitializeLoopCounterI1SetNotEndofDBFlag --> N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0 N_InitializeLoopCounterI1SetNotEndofDBFlag_Node0 -- No --> E_InitializeLoopCounterI1SetNotEndofDBFlag
File: GCX126R.cbl
GIVEN:
A master manifest needs to have its follower manifests identified
WHEN:
The follower manifest collection process begins
THEN:
- The loop counter i is set to 1
- The end-of-database flag is set to indicate more records may exist
β Consolidated Acceptance Criteria
- The IMS Get Next function is called with PCB7 using the CCRT-B0RT-SSAQ qualified search → the next cargo report segment is retrieved into GCCC-CARGO-REPORT-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_CallIMSGNFunctionUsingMasterCCNKey(["Start Step"])
E_CallIMSGNFunctionUsingMasterCCNKey(["End Step"])
N_CallIMSGNFunctionUsingMasterCCNKey_Node0{"The IMS Get Next function is called
with PCB7 using the CCRT-B0RT-SSAQ
qualified search"}:::decision N_CallIMSGNFunctionUsingMasterCCNKey_Node0_action["The next cargo report segment is
retrieved into
GCCC-CARGO-REPORT-SEGMENT"]:::main N_CallIMSGNFunctionUsingMasterCCNKey_Node0 -- Yes --> N_CallIMSGNFunctionUsingMasterCCNKey_Node0_action N_CallIMSGNFunctionUsingMasterCCNKey_Node0_action --> E_CallIMSGNFunctionUsingMasterCCNKey S_CallIMSGNFunctionUsingMasterCCNKey --> N_CallIMSGNFunctionUsingMasterCCNKey_Node0 N_CallIMSGNFunctionUsingMasterCCNKey_Node0 -- No --> E_CallIMSGNFunctionUsingMasterCCNKey
with PCB7 using the CCRT-B0RT-SSAQ
qualified search"}:::decision N_CallIMSGNFunctionUsingMasterCCNKey_Node0_action["The next cargo report segment is
retrieved into
GCCC-CARGO-REPORT-SEGMENT"]:::main N_CallIMSGNFunctionUsingMasterCCNKey_Node0 -- Yes --> N_CallIMSGNFunctionUsingMasterCCNKey_Node0_action N_CallIMSGNFunctionUsingMasterCCNKey_Node0_action --> E_CallIMSGNFunctionUsingMasterCCNKey S_CallIMSGNFunctionUsingMasterCCNKey --> N_CallIMSGNFunctionUsingMasterCCNKey_Node0 N_CallIMSGNFunctionUsingMasterCCNKey_Node0 -- No --> E_CallIMSGNFunctionUsingMasterCCNKey
File: GCX126R.cbl
GIVEN:
The master manifest CCN key is available in GCB0RT-CCN-KEY AND the database access mode is set to 'GEGB'
WHEN:
The IMS Get Next function is called with PCB7 using the CCRT-B0RT-SSAQ qualified search
THEN:
The next cargo report segment is retrieved into GCCC-CARGO-REPORT-SEGMENT
β Consolidated Acceptance Criteria
- The IMS status code is evaluated → if status code is blank (spaces), the retrieval was successful AND processing continues to validate the record OR If status code is not blank, an error occurred AND the end-of-database flag is set AND loop 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_IMSStatusCodeBlank(["Start Step"])
E_IMSStatusCodeBlank(["End Step"])
N_IMSStatusCodeBlank_Node0{"The IMS status code is evaluated"}:::decision
N_IMSStatusCodeBlank_Node0_action["If status code is blank spaces, the
retrieval was successful AND
processing continues to validate the
record OR If status code is not
blank, an error occurred AND the
end-of-database flag is set AND loop
processing terminates"]:::main N_IMSStatusCodeBlank_Node0 -- Yes --> N_IMSStatusCodeBlank_Node0_action N_IMSStatusCodeBlank_Node0_action --> E_IMSStatusCodeBlank S_IMSStatusCodeBlank --> N_IMSStatusCodeBlank_Node0 N_IMSStatusCodeBlank_Node0 -- No --> E_IMSStatusCodeBlank
retrieval was successful AND
processing continues to validate the
record OR If status code is not
blank, an error occurred AND the
end-of-database flag is set AND loop
processing terminates"]:::main N_IMSStatusCodeBlank_Node0 -- Yes --> N_IMSStatusCodeBlank_Node0_action N_IMSStatusCodeBlank_Node0_action --> E_IMSStatusCodeBlank S_IMSStatusCodeBlank --> N_IMSStatusCodeBlank_Node0 N_IMSStatusCodeBlank_Node0 -- No --> E_IMSStatusCodeBlank
File: GCX126R.cbl
GIVEN:
A Get Next operation has been executed to retrieve a cargo record
WHEN:
The IMS status code is evaluated
THEN:
- If status code is blank (spaces), the retrieval was successful
- Processing continues to validate the record or if status code is not blank, an error occurred
- The end-of-database flag is set
- Loop processing terminates
β Consolidated Acceptance Criteria
- The loop counter I is evaluated after incrementing → if counter I exceeds 100, the end-of-database flag is set AND loop processing terminates to prevent array overflow OR If counter I is 100 or less, the loop continues to retrieve the 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_CounterI100(["Start Step"])
E_CounterI100(["End Step"])
N_CounterI100_Node0{"The loop counter I is evaluated
after incrementing"}:::decision N_CounterI100_Node0_action["If counter I exceeds 100, the
end-of-database flag is set AND loop
processing terminates to prevent
array overflow OR If counter I is
100 or less, the loop continues to
retrieve the next record"]:::main N_CounterI100_Node0 -- Yes --> N_CounterI100_Node0_action N_CounterI100_Node0_action --> E_CounterI100 S_CounterI100 --> N_CounterI100_Node0 N_CounterI100_Node0 -- No --> E_CounterI100
after incrementing"}:::decision N_CounterI100_Node0_action["If counter I exceeds 100, the
end-of-database flag is set AND loop
processing terminates to prevent
array overflow OR If counter I is
100 or less, the loop continues to
retrieve the next record"]:::main N_CounterI100_Node0 -- Yes --> N_CounterI100_Node0_action N_CounterI100_Node0_action --> E_CounterI100 S_CounterI100 --> N_CounterI100_Node0 N_CounterI100_Node0 -- No --> E_CounterI100
File: GCX126R.cbl
GIVEN:
Follower manifests are being collected in an array with maximum capacity of 100
WHEN:
The loop counter I is evaluated after incrementing
THEN:
- If counter i exceeds 100, the end-of-database flag is set
- Loop processing terminates to prevent array overflow or if counter i is 100 or less, the loop continues to retrieve the next record
β Consolidated Acceptance Criteria
- The end-of-database flag is set → the flag WS-FOLLOWER-END-OF-DB is set to TRUE AND the loop will terminate on 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_SetEndofDBFlag(["Start Step"])
E_SetEndofDBFlag(["End Step"])
N_SetEndofDBFlag_Node0{"The end-of-database flag is set"}:::decision
N_SetEndofDBFlag_Node0_action["The flag WS-FOLLOWER-END-OF-DB is
set to TRUE AND the loop will
terminate on next iteration"]:::exclusion N_SetEndofDBFlag_Node0 -- Yes -->|Alternative| N_SetEndofDBFlag_Node0_action N_SetEndofDBFlag_Node0_action --> E_SetEndofDBFlag S_SetEndofDBFlag --> N_SetEndofDBFlag_Node0 N_SetEndofDBFlag_Node0 -- No --> E_SetEndofDBFlag
set to TRUE AND the loop will
terminate on next iteration"]:::exclusion N_SetEndofDBFlag_Node0 -- Yes -->|Alternative| N_SetEndofDBFlag_Node0_action N_SetEndofDBFlag_Node0_action --> E_SetEndofDBFlag S_SetEndofDBFlag --> N_SetEndofDBFlag_Node0 N_SetEndofDBFlag_Node0 -- No --> E_SetEndofDBFlag
File: GCX126R.cbl
GIVEN:
One of the following conditions has occurred: database retrieval error OR retrieved cargo belongs to different master OR maximum capacity of 100 followers reached
WHEN:
The end-of-database flag is set
THEN:
- The flag ws-follower-end-of-db is set to true
- The loop will terminate on next iteration
β Consolidated Acceptance Criteria
- The system initiates the release information setup process → the destination station number field is cleared to spaces
- The cargo is being released by customs → the destination station number index field is set to spaces and the destination station number for index field 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_ClearDestinationStationNumber(["Start Step"])
E_ClearDestinationStationNumber(["End Step"])
N_ClearDestinationStationNumber_Node0{"The system initiates the release
information setup process"}:::decision N_ClearDestinationStationNumber_Node0_action["The destination station number
field is cleared to spaces"]:::main N_ClearDestinationStationNumber_Node0 -- Yes --> N_ClearDestinationStationNumber_Node0_action N_ClearDestinationStationNumber_Node0_action --> E_ClearDestinationStationNumber S_ClearDestinationStationNumber --> N_ClearDestinationStationNumber_Node0 N_ClearDestinationStationNumber_Node1{"The cargo is being released by
customs"}:::decision N_ClearDestinationStationNumber_Node1_action["The destination station number
index field is set to spaces and the
destination station number for index
field is set to spaces"]:::main N_ClearDestinationStationNumber_Node1 -- Yes --> N_ClearDestinationStationNumber_Node1_action N_ClearDestinationStationNumber_Node1_action --> E_ClearDestinationStationNumber N_ClearDestinationStationNumber_Node0 -- No --> N_ClearDestinationStationNumber_Node1 N_ClearDestinationStationNumber_Node1 -- No --> E_ClearDestinationStationNumber
information setup process"}:::decision N_ClearDestinationStationNumber_Node0_action["The destination station number
field is cleared to spaces"]:::main N_ClearDestinationStationNumber_Node0 -- Yes --> N_ClearDestinationStationNumber_Node0_action N_ClearDestinationStationNumber_Node0_action --> E_ClearDestinationStationNumber S_ClearDestinationStationNumber --> N_ClearDestinationStationNumber_Node0 N_ClearDestinationStationNumber_Node1{"The cargo is being released by
customs"}:::decision N_ClearDestinationStationNumber_Node1_action["The destination station number
index field is set to spaces and the
destination station number for index
field is set to spaces"]:::main N_ClearDestinationStationNumber_Node1 -- Yes --> N_ClearDestinationStationNumber_Node1_action N_ClearDestinationStationNumber_Node1_action --> E_ClearDestinationStationNumber N_ClearDestinationStationNumber_Node0 -- No --> N_ClearDestinationStationNumber_Node1 N_ClearDestinationStationNumber_Node1 -- No --> E_ClearDestinationStationNumber
File: GCX126R.cbl
GIVEN:
A cargo record exists in the system with destination station information
WHEN:
The system initiates the release information setup process
THEN:
The destination station number field is cleared to spaces
File: GCX126R.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo is being released by customs
THEN:
- The destination station number index field is set to spaces
- The destination station number for index field is set to spaces
β Consolidated Acceptance Criteria
- The system initiates the release information setup process → the destination station index 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_ClearDestinationStationIndex(["Start Step"])
E_ClearDestinationStationIndex(["End Step"])
N_ClearDestinationStationIndex_Node0{"The system initiates the release
information setup process"}:::decision N_ClearDestinationStationIndex_Node0_action["The destination station index field
is cleared to spaces"]:::main N_ClearDestinationStationIndex_Node0 -- Yes --> N_ClearDestinationStationIndex_Node0_action N_ClearDestinationStationIndex_Node0_action --> E_ClearDestinationStationIndex S_ClearDestinationStationIndex --> N_ClearDestinationStationIndex_Node0 N_ClearDestinationStationIndex_Node0 -- No --> E_ClearDestinationStationIndex
information setup process"}:::decision N_ClearDestinationStationIndex_Node0_action["The destination station index field
is cleared to spaces"]:::main N_ClearDestinationStationIndex_Node0 -- Yes --> N_ClearDestinationStationIndex_Node0_action N_ClearDestinationStationIndex_Node0_action --> E_ClearDestinationStationIndex S_ClearDestinationStationIndex --> N_ClearDestinationStationIndex_Node0 N_ClearDestinationStationIndex_Node0 -- No --> E_ClearDestinationStationIndex
File: GCX126R.cbl
GIVEN:
A cargo record exists in the system with destination station index information
WHEN:
The system initiates the release information setup process
THEN:
The destination station index field is cleared to spaces
β Consolidated Acceptance Criteria
- The system sets release information → the release date is set to the current machine date from the system
- The release information is being set → the cargo release date field is populated with the current machine date 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_SetReleaseDatetoCurrentMachineDate(["Start Step"])
E_SetReleaseDatetoCurrentMachineDate(["End Step"])
N_SetReleaseDatetoCurrentMachineDate_Node0{"The system sets release information"}:::decision
N_SetReleaseDatetoCurrentMachineDate_Node0_action["The release date is set to the
current machine date from the system"]:::main N_SetReleaseDatetoCurrentMachineDate_Node0 -- Yes --> N_SetReleaseDatetoCurrentMachineDate_Node0_action N_SetReleaseDatetoCurrentMachineDate_Node0_action --> E_SetReleaseDatetoCurrentMachineDate S_SetReleaseDatetoCurrentMachineDate --> N_SetReleaseDatetoCurrentMachineDate_Node0 N_SetReleaseDatetoCurrentMachineDate_Node1{"The release information is being
set"}:::decision N_SetReleaseDatetoCurrentMachineDate_Node1_action["The cargo release date field is
populated with the current machine
date in CCYYMMDD format"]:::main N_SetReleaseDatetoCurrentMachineDate_Node1 -- Yes --> N_SetReleaseDatetoCurrentMachineDate_Node1_action N_SetReleaseDatetoCurrentMachineDate_Node1_action --> E_SetReleaseDatetoCurrentMachineDate N_SetReleaseDatetoCurrentMachineDate_Node0 -- No --> N_SetReleaseDatetoCurrentMachineDate_Node1 N_SetReleaseDatetoCurrentMachineDate_Node1 -- No --> E_SetReleaseDatetoCurrentMachineDate
current machine date from the system"]:::main N_SetReleaseDatetoCurrentMachineDate_Node0 -- Yes --> N_SetReleaseDatetoCurrentMachineDate_Node0_action N_SetReleaseDatetoCurrentMachineDate_Node0_action --> E_SetReleaseDatetoCurrentMachineDate S_SetReleaseDatetoCurrentMachineDate --> N_SetReleaseDatetoCurrentMachineDate_Node0 N_SetReleaseDatetoCurrentMachineDate_Node1{"The release information is being
set"}:::decision N_SetReleaseDatetoCurrentMachineDate_Node1_action["The cargo release date field is
populated with the current machine
date in CCYYMMDD format"]:::main N_SetReleaseDatetoCurrentMachineDate_Node1 -- Yes --> N_SetReleaseDatetoCurrentMachineDate_Node1_action N_SetReleaseDatetoCurrentMachineDate_Node1_action --> E_SetReleaseDatetoCurrentMachineDate N_SetReleaseDatetoCurrentMachineDate_Node0 -- No --> N_SetReleaseDatetoCurrentMachineDate_Node1 N_SetReleaseDatetoCurrentMachineDate_Node1 -- No --> E_SetReleaseDatetoCurrentMachineDate
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release
WHEN:
The system sets release information
THEN:
The release date is set to the current machine date from the system
File: GCX126R.cbl
GIVEN:
A cargo record is being released
WHEN:
The release information is being set
THEN:
The cargo release date field is populated with the current machine date in CCYYMMDD format
β Consolidated Acceptance Criteria
- The system sets release information → the release time is set to the current machine time from the system
- The release information is being set → the cargo release time field is populated with the current machine time in HHMMSS 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_SetReleaseTimetoCurrentMachineTime(["Start Step"])
E_SetReleaseTimetoCurrentMachineTime(["End Step"])
N_SetReleaseTimetoCurrentMachineTime_Node0{"The system sets release information"}:::decision
N_SetReleaseTimetoCurrentMachineTime_Node0_action["The release time is set to the
current machine time from the system"]:::main N_SetReleaseTimetoCurrentMachineTime_Node0 -- Yes --> N_SetReleaseTimetoCurrentMachineTime_Node0_action N_SetReleaseTimetoCurrentMachineTime_Node0_action --> E_SetReleaseTimetoCurrentMachineTime S_SetReleaseTimetoCurrentMachineTime --> N_SetReleaseTimetoCurrentMachineTime_Node0 N_SetReleaseTimetoCurrentMachineTime_Node1{"The release information is being
set"}:::decision N_SetReleaseTimetoCurrentMachineTime_Node1_action["The cargo release time field is
populated with the current machine
time in HHMMSS format"]:::main N_SetReleaseTimetoCurrentMachineTime_Node1 -- Yes --> N_SetReleaseTimetoCurrentMachineTime_Node1_action N_SetReleaseTimetoCurrentMachineTime_Node1_action --> E_SetReleaseTimetoCurrentMachineTime N_SetReleaseTimetoCurrentMachineTime_Node0 -- No --> N_SetReleaseTimetoCurrentMachineTime_Node1 N_SetReleaseTimetoCurrentMachineTime_Node1 -- No --> E_SetReleaseTimetoCurrentMachineTime
current machine time from the system"]:::main N_SetReleaseTimetoCurrentMachineTime_Node0 -- Yes --> N_SetReleaseTimetoCurrentMachineTime_Node0_action N_SetReleaseTimetoCurrentMachineTime_Node0_action --> E_SetReleaseTimetoCurrentMachineTime S_SetReleaseTimetoCurrentMachineTime --> N_SetReleaseTimetoCurrentMachineTime_Node0 N_SetReleaseTimetoCurrentMachineTime_Node1{"The release information is being
set"}:::decision N_SetReleaseTimetoCurrentMachineTime_Node1_action["The cargo release time field is
populated with the current machine
time in HHMMSS format"]:::main N_SetReleaseTimetoCurrentMachineTime_Node1 -- Yes --> N_SetReleaseTimetoCurrentMachineTime_Node1_action N_SetReleaseTimetoCurrentMachineTime_Node1_action --> E_SetReleaseTimetoCurrentMachineTime N_SetReleaseTimetoCurrentMachineTime_Node0 -- No --> N_SetReleaseTimetoCurrentMachineTime_Node1 N_SetReleaseTimetoCurrentMachineTime_Node1 -- No --> E_SetReleaseTimetoCurrentMachineTime
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release
WHEN:
The system sets release information
THEN:
The release time is set to the current machine time from the system
File: GCX126R.cbl
GIVEN:
A cargo record is being released
WHEN:
The release information is being set
THEN:
The cargo release time field is populated with the current machine time in HHMMSS format
β Consolidated Acceptance Criteria
- The system sets release information → the release by field is set to the current user ID from the 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_SetReleaseBytoCurrentUserID(["Start Step"])
E_SetReleaseBytoCurrentUserID(["End Step"])
N_SetReleaseBytoCurrentUserID_Node0{"The system sets release information"}:::decision
N_SetReleaseBytoCurrentUserID_Node0_action["The release by field is set to the
current user ID from the system"]:::main N_SetReleaseBytoCurrentUserID_Node0 -- Yes --> N_SetReleaseBytoCurrentUserID_Node0_action N_SetReleaseBytoCurrentUserID_Node0_action --> E_SetReleaseBytoCurrentUserID S_SetReleaseBytoCurrentUserID --> N_SetReleaseBytoCurrentUserID_Node0 N_SetReleaseBytoCurrentUserID_Node0 -- No --> E_SetReleaseBytoCurrentUserID
current user ID from the system"]:::main N_SetReleaseBytoCurrentUserID_Node0 -- Yes --> N_SetReleaseBytoCurrentUserID_Node0_action N_SetReleaseBytoCurrentUserID_Node0_action --> E_SetReleaseBytoCurrentUserID S_SetReleaseBytoCurrentUserID --> N_SetReleaseBytoCurrentUserID_Node0 N_SetReleaseBytoCurrentUserID_Node0 -- No --> E_SetReleaseBytoCurrentUserID
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release
WHEN:
The system sets release information
THEN:
The release by field is set to the current user ID from the system
β Consolidated Acceptance Criteria
- The system sets release information → the current status field is set to 'RELEASED'
- The release information is being set → the cargo current status field is set to the literal value 'RELEASED'
- The release information is being set → the cargo current status field is set to the literal value 'RELEASED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCurrentStatustoRELEASED(["Start Step"])
E_SetCurrentStatustoRELEASED(["End Step"])
N_SetCurrentStatustoRELEASED_Node0{"The system sets release information"}:::decision
N_SetCurrentStatustoRELEASED_Node0_action["The current status field is set to
RELEASED"]:::main N_SetCurrentStatustoRELEASED_Node0 -- Yes --> N_SetCurrentStatustoRELEASED_Node0_action N_SetCurrentStatustoRELEASED_Node0_action --> E_SetCurrentStatustoRELEASED S_SetCurrentStatustoRELEASED --> N_SetCurrentStatustoRELEASED_Node0 N_SetCurrentStatustoRELEASED_Node1{"The release information is being
set"}:::decision N_SetCurrentStatustoRELEASED_Node1_action["The cargo current status field is
set to the literal value RELEASED"]:::main N_SetCurrentStatustoRELEASED_Node1 -- Yes --> N_SetCurrentStatustoRELEASED_Node1_action N_SetCurrentStatustoRELEASED_Node1_action --> E_SetCurrentStatustoRELEASED N_SetCurrentStatustoRELEASED_Node0 -- No --> N_SetCurrentStatustoRELEASED_Node1 N_SetCurrentStatustoRELEASED_Node2{"The release information is being
set"}:::decision N_SetCurrentStatustoRELEASED_Node2_action["The cargo current status field is
set to the literal value RELEASED"]:::main N_SetCurrentStatustoRELEASED_Node2 -- Yes --> N_SetCurrentStatustoRELEASED_Node2_action N_SetCurrentStatustoRELEASED_Node2_action --> E_SetCurrentStatustoRELEASED N_SetCurrentStatustoRELEASED_Node1 -- No --> N_SetCurrentStatustoRELEASED_Node2 N_SetCurrentStatustoRELEASED_Node2 -- No --> E_SetCurrentStatustoRELEASED
RELEASED"]:::main N_SetCurrentStatustoRELEASED_Node0 -- Yes --> N_SetCurrentStatustoRELEASED_Node0_action N_SetCurrentStatustoRELEASED_Node0_action --> E_SetCurrentStatustoRELEASED S_SetCurrentStatustoRELEASED --> N_SetCurrentStatustoRELEASED_Node0 N_SetCurrentStatustoRELEASED_Node1{"The release information is being
set"}:::decision N_SetCurrentStatustoRELEASED_Node1_action["The cargo current status field is
set to the literal value RELEASED"]:::main N_SetCurrentStatustoRELEASED_Node1 -- Yes --> N_SetCurrentStatustoRELEASED_Node1_action N_SetCurrentStatustoRELEASED_Node1_action --> E_SetCurrentStatustoRELEASED N_SetCurrentStatustoRELEASED_Node0 -- No --> N_SetCurrentStatustoRELEASED_Node1 N_SetCurrentStatustoRELEASED_Node2{"The release information is being
set"}:::decision N_SetCurrentStatustoRELEASED_Node2_action["The cargo current status field is
set to the literal value RELEASED"]:::main N_SetCurrentStatustoRELEASED_Node2 -- Yes --> N_SetCurrentStatustoRELEASED_Node2_action N_SetCurrentStatustoRELEASED_Node2_action --> E_SetCurrentStatustoRELEASED N_SetCurrentStatustoRELEASED_Node1 -- No --> N_SetCurrentStatustoRELEASED_Node2 N_SetCurrentStatustoRELEASED_Node2 -- No --> E_SetCurrentStatustoRELEASED
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for customs release
WHEN:
The system sets release information
THEN:
The current status field is set to 'RELEASED'
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo current status field is set to the literal value 'RELEASED'
File: GCX126R.cbl
GIVEN:
A cargo record is being released by customs
WHEN:
The release information is being set
THEN:
The cargo current status field is set to the literal value 'RELEASED'
β Consolidated Acceptance Criteria
- The system sets release information → the release status indicator is set to 'R'
- The release information is being set → the cargo release status field is set to the code 'R' indicating released status
- The release information is being set → the cargo release status field is set to the character 'R'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseStatustoR(["Start Step"])
E_SetReleaseStatustoR(["End Step"])
N_SetReleaseStatustoR_Node0{"The system sets release information"}:::decision
N_SetReleaseStatustoR_Node0_action["The release status indicator is set
to R"]:::main N_SetReleaseStatustoR_Node0 -- Yes --> N_SetReleaseStatustoR_Node0_action N_SetReleaseStatustoR_Node0_action --> E_SetReleaseStatustoR S_SetReleaseStatustoR --> N_SetReleaseStatustoR_Node0 N_SetReleaseStatustoR_Node1{"The release information is being
set"}:::decision N_SetReleaseStatustoR_Node1_action["The cargo release status field is
set to the code R indicating
released status"]:::main N_SetReleaseStatustoR_Node1 -- Yes --> N_SetReleaseStatustoR_Node1_action N_SetReleaseStatustoR_Node1_action --> E_SetReleaseStatustoR N_SetReleaseStatustoR_Node0 -- No --> N_SetReleaseStatustoR_Node1 N_SetReleaseStatustoR_Node2{"The release information is being
set"}:::decision N_SetReleaseStatustoR_Node2_action["The cargo release status field is
set to the character R"]:::main N_SetReleaseStatustoR_Node2 -- Yes --> N_SetReleaseStatustoR_Node2_action N_SetReleaseStatustoR_Node2_action --> E_SetReleaseStatustoR N_SetReleaseStatustoR_Node1 -- No --> N_SetReleaseStatustoR_Node2 N_SetReleaseStatustoR_Node2 -- No --> E_SetReleaseStatustoR
to R"]:::main N_SetReleaseStatustoR_Node0 -- Yes --> N_SetReleaseStatustoR_Node0_action N_SetReleaseStatustoR_Node0_action --> E_SetReleaseStatustoR S_SetReleaseStatustoR --> N_SetReleaseStatustoR_Node0 N_SetReleaseStatustoR_Node1{"The release information is being
set"}:::decision N_SetReleaseStatustoR_Node1_action["The cargo release status field is
set to the code R indicating
released status"]:::main N_SetReleaseStatustoR_Node1 -- Yes --> N_SetReleaseStatustoR_Node1_action N_SetReleaseStatustoR_Node1_action --> E_SetReleaseStatustoR N_SetReleaseStatustoR_Node0 -- No --> N_SetReleaseStatustoR_Node1 N_SetReleaseStatustoR_Node2{"The release information is being
set"}:::decision N_SetReleaseStatustoR_Node2_action["The cargo release status field is
set to the character R"]:::main N_SetReleaseStatustoR_Node2 -- Yes --> N_SetReleaseStatustoR_Node2_action N_SetReleaseStatustoR_Node2_action --> E_SetReleaseStatustoR N_SetReleaseStatustoR_Node1 -- No --> N_SetReleaseStatustoR_Node2 N_SetReleaseStatustoR_Node2 -- No --> E_SetReleaseStatustoR
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for customs release
WHEN:
The system sets release information
THEN:
The release status indicator is set to 'R'
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo release status field is set to the code 'R' indicating released status
File: GCX126R.cbl
GIVEN:
A cargo record is being released by customs
WHEN:
The release information is being set
THEN:
The cargo release status field is set to the character 'R'
β Consolidated Acceptance Criteria
- The system sets release information → the release type is set to 'A' indicating automatic release
- The release information is being set → the cargo release type field is set to the code 'A' indicating automatic release
- The release information is being set → the cargo release type field is set to the character 'A'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseTypetoA(["Start Step"])
E_SetReleaseTypetoA(["End Step"])
N_SetReleaseTypetoA_Node0{"The system sets release information"}:::decision
N_SetReleaseTypetoA_Node0_action["The release type is set to A
indicating automatic release"]:::main N_SetReleaseTypetoA_Node0 -- Yes --> N_SetReleaseTypetoA_Node0_action N_SetReleaseTypetoA_Node0_action --> E_SetReleaseTypetoA S_SetReleaseTypetoA --> N_SetReleaseTypetoA_Node0 N_SetReleaseTypetoA_Node1{"The release information is being
set"}:::decision N_SetReleaseTypetoA_Node1_action["The cargo release type field is set
to the code A indicating automatic
release"]:::main N_SetReleaseTypetoA_Node1 -- Yes --> N_SetReleaseTypetoA_Node1_action N_SetReleaseTypetoA_Node1_action --> E_SetReleaseTypetoA N_SetReleaseTypetoA_Node0 -- No --> N_SetReleaseTypetoA_Node1 N_SetReleaseTypetoA_Node2{"The release information is being
set"}:::decision N_SetReleaseTypetoA_Node2_action["The cargo release type field is set
to the character A"]:::main N_SetReleaseTypetoA_Node2 -- Yes --> N_SetReleaseTypetoA_Node2_action N_SetReleaseTypetoA_Node2_action --> E_SetReleaseTypetoA N_SetReleaseTypetoA_Node1 -- No --> N_SetReleaseTypetoA_Node2 N_SetReleaseTypetoA_Node2 -- No --> E_SetReleaseTypetoA
indicating automatic release"]:::main N_SetReleaseTypetoA_Node0 -- Yes --> N_SetReleaseTypetoA_Node0_action N_SetReleaseTypetoA_Node0_action --> E_SetReleaseTypetoA S_SetReleaseTypetoA --> N_SetReleaseTypetoA_Node0 N_SetReleaseTypetoA_Node1{"The release information is being
set"}:::decision N_SetReleaseTypetoA_Node1_action["The cargo release type field is set
to the code A indicating automatic
release"]:::main N_SetReleaseTypetoA_Node1 -- Yes --> N_SetReleaseTypetoA_Node1_action N_SetReleaseTypetoA_Node1_action --> E_SetReleaseTypetoA N_SetReleaseTypetoA_Node0 -- No --> N_SetReleaseTypetoA_Node1 N_SetReleaseTypetoA_Node2{"The release information is being
set"}:::decision N_SetReleaseTypetoA_Node2_action["The cargo release type field is set
to the character A"]:::main N_SetReleaseTypetoA_Node2 -- Yes --> N_SetReleaseTypetoA_Node2_action N_SetReleaseTypetoA_Node2_action --> E_SetReleaseTypetoA N_SetReleaseTypetoA_Node1 -- No --> N_SetReleaseTypetoA_Node2 N_SetReleaseTypetoA_Node2 -- No --> E_SetReleaseTypetoA
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for customs release via EDI 350 message
WHEN:
The system sets release information
THEN:
The release type is set to 'A' indicating automatic release
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation via EDI 350 message
WHEN:
The release information is being set
THEN:
The cargo release type field is set to the code 'A' indicating automatic release
File: GCX126R.cbl
GIVEN:
A cargo record is being released through EDI 350 message processing
WHEN:
The release information is being set
THEN:
The cargo release type field is set to the character 'A'
β Consolidated Acceptance Criteria
- The system sets release information → the release reason field is initialized to spaces
- The release information is being set → the cargo release reason field 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_InitializeReleaseReasontoSpaces(["Start Step"])
E_InitializeReleaseReasontoSpaces(["End Step"])
N_InitializeReleaseReasontoSpaces_Node0{"The system sets release information"}:::decision
N_InitializeReleaseReasontoSpaces_Node0_action["The release reason field is
initialized to spaces"]:::main N_InitializeReleaseReasontoSpaces_Node0 -- Yes --> N_InitializeReleaseReasontoSpaces_Node0_action N_InitializeReleaseReasontoSpaces_Node0_action --> E_InitializeReleaseReasontoSpaces S_InitializeReleaseReasontoSpaces --> N_InitializeReleaseReasontoSpaces_Node0 N_InitializeReleaseReasontoSpaces_Node1{"The release information is being
set"}:::decision N_InitializeReleaseReasontoSpaces_Node1_action["The cargo release reason field is
set to spaces"]:::main N_InitializeReleaseReasontoSpaces_Node1 -- Yes --> N_InitializeReleaseReasontoSpaces_Node1_action N_InitializeReleaseReasontoSpaces_Node1_action --> E_InitializeReleaseReasontoSpaces N_InitializeReleaseReasontoSpaces_Node0 -- No --> N_InitializeReleaseReasontoSpaces_Node1 N_InitializeReleaseReasontoSpaces_Node1 -- No --> E_InitializeReleaseReasontoSpaces
initialized to spaces"]:::main N_InitializeReleaseReasontoSpaces_Node0 -- Yes --> N_InitializeReleaseReasontoSpaces_Node0_action N_InitializeReleaseReasontoSpaces_Node0_action --> E_InitializeReleaseReasontoSpaces S_InitializeReleaseReasontoSpaces --> N_InitializeReleaseReasontoSpaces_Node0 N_InitializeReleaseReasontoSpaces_Node1{"The release information is being
set"}:::decision N_InitializeReleaseReasontoSpaces_Node1_action["The cargo release reason field is
set to spaces"]:::main N_InitializeReleaseReasontoSpaces_Node1 -- Yes --> N_InitializeReleaseReasontoSpaces_Node1_action N_InitializeReleaseReasontoSpaces_Node1_action --> E_InitializeReleaseReasontoSpaces N_InitializeReleaseReasontoSpaces_Node0 -- No --> N_InitializeReleaseReasontoSpaces_Node1 N_InitializeReleaseReasontoSpaces_Node1 -- No --> E_InitializeReleaseReasontoSpaces
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release
WHEN:
The system sets release information
THEN:
The release reason field is initialized to spaces
File: GCX126R.cbl
GIVEN:
A cargo record is being released
WHEN:
The release information is being set
THEN:
The cargo release reason field is set to spaces
β Consolidated Acceptance Criteria
- The system sets release information → the error or release status index field is cleared to spaces
- The release information is being set → the cargo error or release status index field 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_ClearErrorReleaseStatusIndex(["Start Step"])
E_ClearErrorReleaseStatusIndex(["End Step"])
N_ClearErrorReleaseStatusIndex_Node0{"The system sets release information"}:::decision
N_ClearErrorReleaseStatusIndex_Node0_action["The error or release status index
field is cleared to spaces"]:::main N_ClearErrorReleaseStatusIndex_Node0 -- Yes --> N_ClearErrorReleaseStatusIndex_Node0_action N_ClearErrorReleaseStatusIndex_Node0_action --> E_ClearErrorReleaseStatusIndex S_ClearErrorReleaseStatusIndex --> N_ClearErrorReleaseStatusIndex_Node0 N_ClearErrorReleaseStatusIndex_Node1{"The release information is being
set"}:::decision N_ClearErrorReleaseStatusIndex_Node1_action["The cargo error or release status
index field is set to spaces"]:::main N_ClearErrorReleaseStatusIndex_Node1 -- Yes --> N_ClearErrorReleaseStatusIndex_Node1_action N_ClearErrorReleaseStatusIndex_Node1_action --> E_ClearErrorReleaseStatusIndex N_ClearErrorReleaseStatusIndex_Node0 -- No --> N_ClearErrorReleaseStatusIndex_Node1 N_ClearErrorReleaseStatusIndex_Node1 -- No --> E_ClearErrorReleaseStatusIndex
field is cleared to spaces"]:::main N_ClearErrorReleaseStatusIndex_Node0 -- Yes --> N_ClearErrorReleaseStatusIndex_Node0_action N_ClearErrorReleaseStatusIndex_Node0_action --> E_ClearErrorReleaseStatusIndex S_ClearErrorReleaseStatusIndex --> N_ClearErrorReleaseStatusIndex_Node0 N_ClearErrorReleaseStatusIndex_Node1{"The release information is being
set"}:::decision N_ClearErrorReleaseStatusIndex_Node1_action["The cargo error or release status
index field is set to spaces"]:::main N_ClearErrorReleaseStatusIndex_Node1 -- Yes --> N_ClearErrorReleaseStatusIndex_Node1_action N_ClearErrorReleaseStatusIndex_Node1_action --> E_ClearErrorReleaseStatusIndex N_ClearErrorReleaseStatusIndex_Node0 -- No --> N_ClearErrorReleaseStatusIndex_Node1 N_ClearErrorReleaseStatusIndex_Node1 -- No --> E_ClearErrorReleaseStatusIndex
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release
WHEN:
The system sets release information
THEN:
The error or release status index field is cleared to spaces
File: GCX126R.cbl
GIVEN:
A cargo record is being released
WHEN:
The release information is being set
THEN:
The cargo error or release status index field is set to spaces
β Consolidated Acceptance Criteria
- The system sets release information → the error status field is cleared to spaces
- The release information is being set → the cargo error status field 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_ClearErrorStatus(["Start Step"])
E_ClearErrorStatus(["End Step"])
N_ClearErrorStatus_Node0{"The system sets release information"}:::decision
N_ClearErrorStatus_Node0_action["The error status field is cleared
to spaces"]:::main N_ClearErrorStatus_Node0 -- Yes --> N_ClearErrorStatus_Node0_action N_ClearErrorStatus_Node0_action --> E_ClearErrorStatus S_ClearErrorStatus --> N_ClearErrorStatus_Node0 N_ClearErrorStatus_Node1{"The release information is being
set"}:::decision N_ClearErrorStatus_Node1_action["The cargo error status field is set
to spaces"]:::main N_ClearErrorStatus_Node1 -- Yes --> N_ClearErrorStatus_Node1_action N_ClearErrorStatus_Node1_action --> E_ClearErrorStatus N_ClearErrorStatus_Node0 -- No --> N_ClearErrorStatus_Node1 N_ClearErrorStatus_Node1 -- No --> E_ClearErrorStatus
to spaces"]:::main N_ClearErrorStatus_Node0 -- Yes --> N_ClearErrorStatus_Node0_action N_ClearErrorStatus_Node0_action --> E_ClearErrorStatus S_ClearErrorStatus --> N_ClearErrorStatus_Node0 N_ClearErrorStatus_Node1{"The release information is being
set"}:::decision N_ClearErrorStatus_Node1_action["The cargo error status field is set
to spaces"]:::main N_ClearErrorStatus_Node1 -- Yes --> N_ClearErrorStatus_Node1_action N_ClearErrorStatus_Node1_action --> E_ClearErrorStatus N_ClearErrorStatus_Node0 -- No --> N_ClearErrorStatus_Node1 N_ClearErrorStatus_Node1 -- No --> E_ClearErrorStatus
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release
WHEN:
The system sets release information
THEN:
The error status field is cleared to spaces
File: GCX126R.cbl
GIVEN:
A cargo record is being released
WHEN:
The release information is being set
THEN:
The cargo error status field is set to spaces
β Consolidated Acceptance Criteria
- The system initiates the US manifest search process → the US manifest not found flag is set to true AND the not end-of-file flag is set to true
- The system initiates US manifest search process → uS manifest found flag is set to false AND end of file flag is set to false
- The system begins searching for associated US manifest records → the US manifest found flag is set to NOT FOUND and the end-of-database flag is set to NOT END OF DB to enable iterative 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_InitializeUSManifestSearchFlags(["Start Step"])
E_InitializeUSManifestSearchFlags(["End Step"])
N_InitializeUSManifestSearchFlags_Node0{"The system initiates the US
manifest search process"}:::decision N_InitializeUSManifestSearchFlags_Node0_action["The US manifest not found flag is
set to true AND the not end-of-file
flag is set to true"]:::main N_InitializeUSManifestSearchFlags_Node0 -- Yes --> N_InitializeUSManifestSearchFlags_Node0_action N_InitializeUSManifestSearchFlags_Node0_action --> E_InitializeUSManifestSearchFlags S_InitializeUSManifestSearchFlags --> N_InitializeUSManifestSearchFlags_Node0 N_InitializeUSManifestSearchFlags_Node1{"The system initiates US manifest
search process"}:::decision N_InitializeUSManifestSearchFlags_Node1_action["US manifest found flag is set to
false AND end of file flag is set to
false"]:::main N_InitializeUSManifestSearchFlags_Node1 -- Yes --> N_InitializeUSManifestSearchFlags_Node1_action N_InitializeUSManifestSearchFlags_Node1_action --> E_InitializeUSManifestSearchFlags N_InitializeUSManifestSearchFlags_Node0 -- No --> N_InitializeUSManifestSearchFlags_Node1 N_InitializeUSManifestSearchFlags_Node2{"The system begins searching for
associated US manifest records"}:::decision N_InitializeUSManifestSearchFlags_Node2_action["The US manifest found flag is set
to NOT FOUND and the end-of-database
flag is set to NOT END OF DB to
enable iterative search"]:::main N_InitializeUSManifestSearchFlags_Node2 -- Yes --> N_InitializeUSManifestSearchFlags_Node2_action N_InitializeUSManifestSearchFlags_Node2_action --> E_InitializeUSManifestSearchFlags N_InitializeUSManifestSearchFlags_Node1 -- No --> N_InitializeUSManifestSearchFlags_Node2 N_InitializeUSManifestSearchFlags_Node2 -- No --> E_InitializeUSManifestSearchFlags
manifest search process"}:::decision N_InitializeUSManifestSearchFlags_Node0_action["The US manifest not found flag is
set to true AND the not end-of-file
flag is set to true"]:::main N_InitializeUSManifestSearchFlags_Node0 -- Yes --> N_InitializeUSManifestSearchFlags_Node0_action N_InitializeUSManifestSearchFlags_Node0_action --> E_InitializeUSManifestSearchFlags S_InitializeUSManifestSearchFlags --> N_InitializeUSManifestSearchFlags_Node0 N_InitializeUSManifestSearchFlags_Node1{"The system initiates US manifest
search process"}:::decision N_InitializeUSManifestSearchFlags_Node1_action["US manifest found flag is set to
false AND end of file flag is set to
false"]:::main N_InitializeUSManifestSearchFlags_Node1 -- Yes --> N_InitializeUSManifestSearchFlags_Node1_action N_InitializeUSManifestSearchFlags_Node1_action --> E_InitializeUSManifestSearchFlags N_InitializeUSManifestSearchFlags_Node0 -- No --> N_InitializeUSManifestSearchFlags_Node1 N_InitializeUSManifestSearchFlags_Node2{"The system begins searching for
associated US manifest records"}:::decision N_InitializeUSManifestSearchFlags_Node2_action["The US manifest found flag is set
to NOT FOUND and the end-of-database
flag is set to NOT END OF DB to
enable iterative search"]:::main N_InitializeUSManifestSearchFlags_Node2 -- Yes --> N_InitializeUSManifestSearchFlags_Node2_action N_InitializeUSManifestSearchFlags_Node2_action --> E_InitializeUSManifestSearchFlags N_InitializeUSManifestSearchFlags_Node1 -- No --> N_InitializeUSManifestSearchFlags_Node2 N_InitializeUSManifestSearchFlags_Node2 -- No --> E_InitializeUSManifestSearchFlags
File: GCX126R.cbl
GIVEN:
A Canadian cargo record has been processed for release or deconsolidation
WHEN:
The system initiates the US manifest search process
THEN:
- The us manifest not found flag is set to true
- The not end-of-file flag is set to true
File: GCX126R.cbl
GIVEN:
A Canadian cargo record has been processed with release or deconsolidation status
WHEN:
The system initiates US manifest search process
THEN:
- Us manifest found flag is set to false
- End of file flag is set to false
File: GCX126R.cbl
GIVEN:
A Canadian cargo record has been processed with release or deconsolidation status
WHEN:
The system begins searching for associated US manifest records
THEN:
- The us manifest found flag is set to not found
- The end-of-database flag is set to not end of db to enable iterative search
β Consolidated Acceptance Criteria
- The system prepares to search for US cargo → the US cargo search key is set to the current equipment car ID AND the US cargo waybill search key is set to the saved waybill index
- The system prepares to search for US manifest → uS cargo search key car ID is set to current Canadian cargo equipment car ID AND US cargo search key waybill index is set to saved Canadian cargo 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_SetSearchKeysCarIDandWaybillIndex(["Start Step"])
E_SetSearchKeysCarIDandWaybillIndex(["End Step"])
N_SetSearchKeysCarIDandWaybillIndex_Node0{"The system prepares to search for
US cargo"}:::decision N_SetSearchKeysCarIDandWaybillIndex_Node0_action["The US cargo search key is set to
the current equipment car ID AND the
US cargo waybill search key is set
to the saved waybill index"]:::main N_SetSearchKeysCarIDandWaybillIndex_Node0 -- Yes --> N_SetSearchKeysCarIDandWaybillIndex_Node0_action N_SetSearchKeysCarIDandWaybillIndex_Node0_action --> E_SetSearchKeysCarIDandWaybillIndex S_SetSearchKeysCarIDandWaybillIndex --> N_SetSearchKeysCarIDandWaybillIndex_Node0 N_SetSearchKeysCarIDandWaybillIndex_Node1{"The system prepares to search for
US manifest"}:::decision N_SetSearchKeysCarIDandWaybillIndex_Node1_action["US cargo search key car ID is set
to current Canadian cargo equipment
car ID AND US cargo search key
waybill index is set to saved
Canadian cargo waybill index"]:::main N_SetSearchKeysCarIDandWaybillIndex_Node1 -- Yes --> N_SetSearchKeysCarIDandWaybillIndex_Node1_action N_SetSearchKeysCarIDandWaybillIndex_Node1_action --> E_SetSearchKeysCarIDandWaybillIndex N_SetSearchKeysCarIDandWaybillIndex_Node0 -- No --> N_SetSearchKeysCarIDandWaybillIndex_Node1 N_SetSearchKeysCarIDandWaybillIndex_Node1 -- No --> E_SetSearchKeysCarIDandWaybillIndex
US cargo"}:::decision N_SetSearchKeysCarIDandWaybillIndex_Node0_action["The US cargo search key is set to
the current equipment car ID AND the
US cargo waybill search key is set
to the saved waybill index"]:::main N_SetSearchKeysCarIDandWaybillIndex_Node0 -- Yes --> N_SetSearchKeysCarIDandWaybillIndex_Node0_action N_SetSearchKeysCarIDandWaybillIndex_Node0_action --> E_SetSearchKeysCarIDandWaybillIndex S_SetSearchKeysCarIDandWaybillIndex --> N_SetSearchKeysCarIDandWaybillIndex_Node0 N_SetSearchKeysCarIDandWaybillIndex_Node1{"The system prepares to search for
US manifest"}:::decision N_SetSearchKeysCarIDandWaybillIndex_Node1_action["US cargo search key car ID is set
to current Canadian cargo equipment
car ID AND US cargo search key
waybill index is set to saved
Canadian cargo waybill index"]:::main N_SetSearchKeysCarIDandWaybillIndex_Node1 -- Yes --> N_SetSearchKeysCarIDandWaybillIndex_Node1_action N_SetSearchKeysCarIDandWaybillIndex_Node1_action --> E_SetSearchKeysCarIDandWaybillIndex N_SetSearchKeysCarIDandWaybillIndex_Node0 -- No --> N_SetSearchKeysCarIDandWaybillIndex_Node1 N_SetSearchKeysCarIDandWaybillIndex_Node1 -- No --> E_SetSearchKeysCarIDandWaybillIndex
File: GCX126R.cbl
GIVEN:
A Canadian cargo record with equipment car ID and waybill index exists
WHEN:
The system prepares to search for US cargo
THEN:
- The us cargo search key is set to the current equipment car id
- The us cargo waybill search key is set to the saved waybill index
File: GCX126R.cbl
GIVEN:
A Canadian cargo record with equipment car ID and waybill index exists
WHEN:
The system prepares to search for US manifest
THEN:
- Us cargo search key car id is set to current canadian cargo equipment car id
- Us cargo search key waybill index is set to saved canadian cargo waybill index
β Consolidated Acceptance Criteria
- The system executes the initial US cargo retrieval using GU function with CAR-WB index and >= operator → the system retrieves the first US cargo record matching or exceeding 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_RetrieveUSCargoRecordbyCarIDandWaybill(["Start Step"])
E_RetrieveUSCargoRecordbyCarIDandWaybill(["End Step"])
N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0{"The system executes the initial US
cargo retrieval using GU function
with CAR-WB index and operator"}:::decision N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0_action["The system retrieves the first US
cargo record matching or exceeding
the search criteria"]:::main N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveUSCargoRecordbyCarIDandWaybill S_RetrieveUSCargoRecordbyCarIDandWaybill --> N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0 N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0 -- No --> E_RetrieveUSCargoRecordbyCarIDandWaybill
cargo retrieval using GU function
with CAR-WB index and operator"}:::decision N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0_action["The system retrieves the first US
cargo record matching or exceeding
the search criteria"]:::main N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveUSCargoRecordbyCarIDandWaybill S_RetrieveUSCargoRecordbyCarIDandWaybill --> N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0 N_RetrieveUSCargoRecordbyCarIDandWaybill_Node0 -- No --> E_RetrieveUSCargoRecordbyCarIDandWaybill
File: GCX126R.cbl
GIVEN:
US cargo search keys are set with car ID and waybill index
WHEN:
The system executes the initial US cargo retrieval using GU function with CAR-WB index and >= operator
THEN:
The system retrieves the first US cargo record matching or exceeding the search criteria
β Consolidated Acceptance Criteria
- The system checks the database status code → if status code is not spaces, set end-of-file flag to true and exit the search process
- The system checks the database status code → if status code is not spaces, set end-of-file flag to true and proceed to check 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_USCargoStatus(["Start Step"])
E_USCargoStatus(["End Step"])
N_USCargoStatus_Node0{"The system checks the database
status code"}:::decision N_USCargoStatus_Node0_action["If status code is not spaces, set
end-of-file flag to true and exit
the search process"]:::main N_USCargoStatus_Node0 -- Yes --> N_USCargoStatus_Node0_action N_USCargoStatus_Node0_action --> E_USCargoStatus S_USCargoStatus --> N_USCargoStatus_Node0 N_USCargoStatus_Node1{"The system checks the database
status code"}:::decision N_USCargoStatus_Node1_action["If status code is not spaces, set
end-of-file flag to true and proceed
to check found flag"]:::main N_USCargoStatus_Node1 -- Yes --> N_USCargoStatus_Node1_action N_USCargoStatus_Node1_action --> E_USCargoStatus N_USCargoStatus_Node0 -- No --> N_USCargoStatus_Node1 N_USCargoStatus_Node1 -- No --> E_USCargoStatus
status code"}:::decision N_USCargoStatus_Node0_action["If status code is not spaces, set
end-of-file flag to true and exit
the search process"]:::main N_USCargoStatus_Node0 -- Yes --> N_USCargoStatus_Node0_action N_USCargoStatus_Node0_action --> E_USCargoStatus S_USCargoStatus --> N_USCargoStatus_Node0 N_USCargoStatus_Node1{"The system checks the database
status code"}:::decision N_USCargoStatus_Node1_action["If status code is not spaces, set
end-of-file flag to true and proceed
to check found flag"]:::main N_USCargoStatus_Node1 -- Yes --> N_USCargoStatus_Node1_action N_USCargoStatus_Node1_action --> E_USCargoStatus N_USCargoStatus_Node0 -- No --> N_USCargoStatus_Node1 N_USCargoStatus_Node1 -- No --> E_USCargoStatus
File: GCX126R.cbl
GIVEN:
A US cargo retrieval operation has been executed
WHEN:
The system checks the database status code
THEN:
- If status code is not spaces, set end-of-file flag to true
- Exit the search process
File: GCX126R.cbl
GIVEN:
A get-next US cargo retrieval operation has been executed
WHEN:
The system checks the database status code
THEN:
- If status code is not spaces, set end-of-file flag to true
- Proceed to check found flag
β Consolidated Acceptance Criteria
- The system executes GN function with CAR-WB index and > operator → the system retrieves the next US cargo record in sequence
- The system needs to find the next valid US cargo record → the system retrieves the next US cargo record from GCSUSRT table using GN (Get Next) function with '>' operator on the car-waybill index and re-validates car ID and waybill match
- Executing a get-next operation using the car-waybill index with greater-than operator → the system retrieves the next US cargo record in sequence from the GCSUSRT 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_GetNextUSCargoRecord(["Start Step"])
E_GetNextUSCargoRecord(["End Step"])
N_GetNextUSCargoRecord_Node0{"The system executes GN function
with CAR-WB index and operator"}:::decision N_GetNextUSCargoRecord_Node0_action["The system retrieves the next US
cargo record in sequence"]:::main N_GetNextUSCargoRecord_Node0 -- Yes --> N_GetNextUSCargoRecord_Node0_action N_GetNextUSCargoRecord_Node0_action --> E_GetNextUSCargoRecord S_GetNextUSCargoRecord --> N_GetNextUSCargoRecord_Node0 N_GetNextUSCargoRecord_Node1{"The system needs to find the next
valid US cargo record"}:::decision N_GetNextUSCargoRecord_Node1_action["The system retrieves the next US
cargo record from GCSUSRT table
using GN Get Next function with
operator on the car-waybill index
and re-validates car ID and waybill
match"]:::main N_GetNextUSCargoRecord_Node1 -- Yes --> N_GetNextUSCargoRecord_Node1_action N_GetNextUSCargoRecord_Node1_action --> E_GetNextUSCargoRecord N_GetNextUSCargoRecord_Node0 -- No --> N_GetNextUSCargoRecord_Node1 N_GetNextUSCargoRecord_Node2{"Executing a get-next operation
using the car-waybill index with
greater-than operator"}:::decision N_GetNextUSCargoRecord_Node2_action["The system retrieves the next US
cargo record in sequence from the
GCSUSRT table"]:::main N_GetNextUSCargoRecord_Node2 -- Yes --> N_GetNextUSCargoRecord_Node2_action N_GetNextUSCargoRecord_Node2_action --> E_GetNextUSCargoRecord N_GetNextUSCargoRecord_Node1 -- No --> N_GetNextUSCargoRecord_Node2 N_GetNextUSCargoRecord_Node2 -- No --> E_GetNextUSCargoRecord
with CAR-WB index and operator"}:::decision N_GetNextUSCargoRecord_Node0_action["The system retrieves the next US
cargo record in sequence"]:::main N_GetNextUSCargoRecord_Node0 -- Yes --> N_GetNextUSCargoRecord_Node0_action N_GetNextUSCargoRecord_Node0_action --> E_GetNextUSCargoRecord S_GetNextUSCargoRecord --> N_GetNextUSCargoRecord_Node0 N_GetNextUSCargoRecord_Node1{"The system needs to find the next
valid US cargo record"}:::decision N_GetNextUSCargoRecord_Node1_action["The system retrieves the next US
cargo record from GCSUSRT table
using GN Get Next function with
operator on the car-waybill index
and re-validates car ID and waybill
match"]:::main N_GetNextUSCargoRecord_Node1 -- Yes --> N_GetNextUSCargoRecord_Node1_action N_GetNextUSCargoRecord_Node1_action --> E_GetNextUSCargoRecord N_GetNextUSCargoRecord_Node0 -- No --> N_GetNextUSCargoRecord_Node1 N_GetNextUSCargoRecord_Node2{"Executing a get-next operation
using the car-waybill index with
greater-than operator"}:::decision N_GetNextUSCargoRecord_Node2_action["The system retrieves the next US
cargo record in sequence from the
GCSUSRT table"]:::main N_GetNextUSCargoRecord_Node2 -- Yes --> N_GetNextUSCargoRecord_Node2_action N_GetNextUSCargoRecord_Node2_action --> E_GetNextUSCargoRecord N_GetNextUSCargoRecord_Node1 -- No --> N_GetNextUSCargoRecord_Node2 N_GetNextUSCargoRecord_Node2 -- No --> E_GetNextUSCargoRecord
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The current US cargo record does not meet criteria (deleted or train created)
WHEN:
The system executes GN function with CAR-WB index and > operator
THEN:
The system retrieves the next US cargo record in sequence
File: GCX126R.cbl
GIVEN:
The current US cargo record is deleted or has train created
WHEN:
The system needs to find the next valid US cargo record
THEN:
- The system retrieves the next us cargo record from gcsusrt table using gn (get next) function with '>' operator on the car-waybill index
- Re-validates car id
- Waybill match
File: GCX126R.cbl
GIVEN:
The current US cargo record was skipped due to deletion or train creation status, and the search should continue
WHEN:
Executing a get-next operation using the car-waybill index with greater-than operator
THEN:
The system retrieves the next US cargo record in sequence from the GCSUSRT table
β Consolidated Acceptance Criteria
- The system prepares the log entry → the log date is set to current machine century concatenated with current machine date AND the log time is set to current machine time AND the action code is set to LOG-USE-INPUT-MESSAGE AND the US CCN key is set as the train or US CCN identifier AND the cargo type indicator is set to US cargo AND the message is set to 'CDN CCN RLSED BY EDI 350: ' concatenated with the Canadian 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_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350(["Start Step"])
E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350(["End Step"])
N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0{"The system prepares the log entry"}:::decision
N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action["The log date is set to current
machine century concatenated with
current machine date AND the log
time is set to current machine time
AND the action code is set to
LOG-USE-INPUT-MESSAGE AND the US CCN
key is set as the train or US CCN
identifier AND the cargo type
indicator is set to US cargo AND the
message is set to CDN CCN RLSED BY
EDI 350: concatenated with the
Canadian CCN key"]:::main N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- Yes --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 S_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- No --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350
machine century concatenated with
current machine date AND the log
time is set to current machine time
AND the action code is set to
LOG-USE-INPUT-MESSAGE AND the US CCN
key is set as the train or US CCN
identifier AND the cargo type
indicator is set to US cargo AND the
message is set to CDN CCN RLSED BY
EDI 350: concatenated with the
Canadian CCN key"]:::main N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- Yes --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 S_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- No --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350
File: GCX126R.cbl
GIVEN:
A valid US manifest record has been found
WHEN:
The system prepares the log entry
THEN:
- The log date is set to current machine century concatenated with current machine date
- The log time is set to current machine time
- The action code is set to log-use-input-message
- The us ccn key is set as the train or us ccn identifier
- The cargo type indicator is set to us cargo
- The message is set to 'cdn ccn rlsed by edi 350: ' concatenated with the canadian ccn key
β Consolidated Acceptance Criteria
- The system invokes the GCT1051E logging process → a log transaction is created recording the Canadian cargo release notification for the associated US 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_SpawnGCT1051ETransactiontoLogReleaseMessage(["Start Step"])
E_SpawnGCT1051ETransactiontoLogReleaseMessage(["End Step"])
N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0{"The system invokes the GCT1051E
logging process"}:::decision N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0_action["A log transaction is created
recording the Canadian cargo release
notification for the associated US
cargo"]:::main N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0 -- Yes --> N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0_action N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0_action --> E_SpawnGCT1051ETransactiontoLogReleaseMessage S_SpawnGCT1051ETransactiontoLogReleaseMessage --> N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0 N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0 -- No --> E_SpawnGCT1051ETransactiontoLogReleaseMessage
logging process"}:::decision N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0_action["A log transaction is created
recording the Canadian cargo release
notification for the associated US
cargo"]:::main N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0 -- Yes --> N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0_action N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0_action --> E_SpawnGCT1051ETransactiontoLogReleaseMessage S_SpawnGCT1051ETransactiontoLogReleaseMessage --> N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0 N_SpawnGCT1051ETransactiontoLogReleaseMessage_Node0 -- No --> E_SpawnGCT1051ETransactiontoLogReleaseMessage
File: GCX126R.cbl
GIVEN:
The log entry has been prepared with date, time, US CCN, action code, and release message
WHEN:
The system invokes the GCT1051E logging process
THEN:
A log transaction is created recording the Canadian cargo release notification for the associated US cargo
β Consolidated Acceptance Criteria
- ['The system processes the US manifest associated with the released Canadian cargo'] → ['Extract current machine century and date in CCYYMMDD format', 'Extract current machine time in HHMMSS format', 'Set the action code to LOG-USE-INPUT-MESSAGE', 'Set the target identifier to the US cargo control number', 'Set the cargo type indicator to US-CARGO', "Build the log message by concatenating 'CDN CCN RLSED BY EDI 350: ' with the Canadian cargo control number", 'Populate the GCX105 log structure with date, time, action code, US CCN, cargo type, and message', 'Invoke the GCT1051E transaction to create 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_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350(["Start Step"])
E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350(["End Step"])
N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0{"The system processes the US
manifest associated with the
released Canadian cargo"}:::decision N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action["Extract current machine century and
date in CCYYMMDD format , Extract
current machine time in HHMMSS
format , Set the action code to
LOG-USE-INPUT-MESSAGE , Set the
target identifier to the US cargo
control number , Set the cargo type
indicator to US-CARGO , Build the
log message by concatenating CDN CCN
RLSED BY EDI 350: with the Canadian
cargo control number , Populate the
GCX105 log structure with date,
time, action code, US CCN, cargo
type, and message , Invoke the
GCT1051E transaction to create the
log entry"]:::main N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- Yes --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 S_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- No --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350
manifest associated with the
released Canadian cargo"}:::decision N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action["Extract current machine century and
date in CCYYMMDD format , Extract
current machine time in HHMMSS
format , Set the action code to
LOG-USE-INPUT-MESSAGE , Set the
target identifier to the US cargo
control number , Set the cargo type
indicator to US-CARGO , Build the
log message by concatenating CDN CCN
RLSED BY EDI 350: with the Canadian
cargo control number , Populate the
GCX105 log structure with date,
time, action code, US CCN, cargo
type, and message , Invoke the
GCT1051E transaction to create the
log entry"]:::main N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- Yes --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0_action --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 S_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350 --> N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 N_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350_Node0 -- No --> E_PrepareLogEntryCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageCDNCCNRLSEDBYEDI350
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
['A Canadian cargo has been released via EDI 350 message', 'A corresponding US cargo manifest exists with matching equipment car ID and waybill number', 'The US cargo is not deleted and no train has been created for it', 'The system has current machine date and time available']
WHEN:
['The system processes the US manifest associated with the released Canadian cargo']
THEN:
- ['extract current machine century
- Date in ccyymmdd format', 'extract current machine time in hhmmss format', 'set the action code to log-use-input-message', 'set the target identifier to the us cargo control number', 'set the cargo type indicator to us-cargo', "build the log message by concatenating 'cdn ccn rlsed by edi 350: ' with the canadian cargo control number", 'populate the gcx105 log structure with date, time, action code, us ccn, cargo type, and message', 'invoke the gct1051e transaction to create the log entry']
β Consolidated Acceptance Criteria
- ['Preparing to log US cargo release information'] → ['Concatenate CC-MACHINE-CENTURY and CC-MACHINE-DATE-X', 'Store the result in GCX105-DATE field 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_FormatDateCCYYMMDD(["Start Step"])
E_FormatDateCCYYMMDD(["End Step"])
N_FormatDateCCYYMMDD_Node0{"Preparing to log US cargo release
information"}:::decision N_FormatDateCCYYMMDD_Node0_action["Concatenate CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X , Store the result
in GCX105-DATE field in CCYYMMDD
format"]:::main N_FormatDateCCYYMMDD_Node0 -- Yes --> N_FormatDateCCYYMMDD_Node0_action N_FormatDateCCYYMMDD_Node0_action --> E_FormatDateCCYYMMDD S_FormatDateCCYYMMDD --> N_FormatDateCCYYMMDD_Node0 N_FormatDateCCYYMMDD_Node0 -- No --> E_FormatDateCCYYMMDD
information"}:::decision N_FormatDateCCYYMMDD_Node0_action["Concatenate CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X , Store the result
in GCX105-DATE field in CCYYMMDD
format"]:::main N_FormatDateCCYYMMDD_Node0 -- Yes --> N_FormatDateCCYYMMDD_Node0_action N_FormatDateCCYYMMDD_Node0_action --> E_FormatDateCCYYMMDD S_FormatDateCCYYMMDD --> N_FormatDateCCYYMMDD_Node0 N_FormatDateCCYYMMDD_Node0 -- No --> E_FormatDateCCYYMMDD
File: GCX126R.cbl
GIVEN:
['The system has access to current machine century (CC-MACHINE-CENTURY)', 'The system has access to current machine date (CC-MACHINE-DATE-X)']
WHEN:
['Preparing to log US cargo release information']
THEN:
- ['concatenate cc-machine-century
- Cc-machine-date-x', 'store the result in gcx105-date field in ccyymmdd format']
β Consolidated Acceptance Criteria
- ['Preparing to log US cargo release information'] → ['Move CC-MACHINE-TIME-X to GCX105-TIME field in HHMMSS 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_FormatTimeHHMMSS(["Start Step"])
E_FormatTimeHHMMSS(["End Step"])
N_FormatTimeHHMMSS_Node0{"Preparing to log US cargo release
information"}:::decision N_FormatTimeHHMMSS_Node0_action["Move CC-MACHINE-TIME-X to
GCX105-TIME field in HHMMSS format"]:::main N_FormatTimeHHMMSS_Node0 -- Yes --> N_FormatTimeHHMMSS_Node0_action N_FormatTimeHHMMSS_Node0_action --> E_FormatTimeHHMMSS S_FormatTimeHHMMSS --> N_FormatTimeHHMMSS_Node0 N_FormatTimeHHMMSS_Node0 -- No --> E_FormatTimeHHMMSS
information"}:::decision N_FormatTimeHHMMSS_Node0_action["Move CC-MACHINE-TIME-X to
GCX105-TIME field in HHMMSS format"]:::main N_FormatTimeHHMMSS_Node0 -- Yes --> N_FormatTimeHHMMSS_Node0_action N_FormatTimeHHMMSS_Node0_action --> E_FormatTimeHHMMSS S_FormatTimeHHMMSS --> N_FormatTimeHHMMSS_Node0 N_FormatTimeHHMMSS_Node0 -- No --> E_FormatTimeHHMMSS
File: GCX126R.cbl
GIVEN:
['The system has access to current machine time (CC-MACHINE-TIME-X)']
WHEN:
['Preparing to log US cargo release information']
THEN:
['Move CC-MACHINE-TIME-X to GCX105-TIME field in HHMMSS format']
β Consolidated Acceptance Criteria
- ['Setting the action code for the log entry'] → ['Set GCX105-ACTION-CODE to LOG-USE-INPUT-MESSAGE']
- The action code is being assigned → the action code should be set to LOG-USE-INPUT-MESSAGE to indicate this is an input message 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_SetActionCodetoLOGUSEINPUTMESSAGE(["Start Step"])
E_SetActionCodetoLOGUSEINPUTMESSAGE(["End Step"])
N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0{"Setting the action code for the log
entry"}:::decision N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action["Set GCX105-ACTION-CODE to
LOG-USE-INPUT-MESSAGE"]:::main N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 -- Yes --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action --> E_SetActionCodetoLOGUSEINPUTMESSAGE S_SetActionCodetoLOGUSEINPUTMESSAGE --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1{"The action code is being assigned"}:::decision N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1_action["The action code should be set to
LOG-USE-INPUT-MESSAGE to indicate
this is an input message log"]:::main N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1 -- Yes --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1_action N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1_action --> E_SetActionCodetoLOGUSEINPUTMESSAGE N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 -- No --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1 N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1 -- No --> E_SetActionCodetoLOGUSEINPUTMESSAGE
entry"}:::decision N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action["Set GCX105-ACTION-CODE to
LOG-USE-INPUT-MESSAGE"]:::main N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 -- Yes --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action --> E_SetActionCodetoLOGUSEINPUTMESSAGE S_SetActionCodetoLOGUSEINPUTMESSAGE --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1{"The action code is being assigned"}:::decision N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1_action["The action code should be set to
LOG-USE-INPUT-MESSAGE to indicate
this is an input message log"]:::main N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1 -- Yes --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1_action N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1_action --> E_SetActionCodetoLOGUSEINPUTMESSAGE N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 -- No --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1 N_SetActionCodetoLOGUSEINPUTMESSAGE_Node1 -- No --> E_SetActionCodetoLOGUSEINPUTMESSAGE
File: GCX126R.cbl
GIVEN:
['A US cargo log entry is being prepared']
WHEN:
['Setting the action code for the log entry']
THEN:
['Set GCX105-ACTION-CODE to LOG-USE-INPUT-MESSAGE']
File: GCX126R.cbl
GIVEN:
The cargo type has been identified as Canadian cargo
WHEN:
The action code is being assigned
THEN:
The action code should be set to LOG-USE-INPUT-MESSAGE to indicate this is an input message log
β Consolidated Acceptance Criteria
- ['Preparing the log entry for US cargo release'] → ['Move GCUSRT-US-CCN-KEY to GCX105-TRAIN-OR-US-CCN field']
- The system identifies the target cargo → the train-or-US-CCN field in the log entry is set to the US cargo CCN key from the retrieved GCSUSRT 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_SetUSCCNasTarget(["Start Step"])
E_SetUSCCNasTarget(["End Step"])
N_SetUSCCNasTarget_Node0{"Preparing the log entry for US
cargo release"}:::decision N_SetUSCCNasTarget_Node0_action["Move GCUSRT-US-CCN-KEY to
GCX105-TRAIN-OR-US-CCN field"]:::main N_SetUSCCNasTarget_Node0 -- Yes --> N_SetUSCCNasTarget_Node0_action N_SetUSCCNasTarget_Node0_action --> E_SetUSCCNasTarget S_SetUSCCNasTarget --> N_SetUSCCNasTarget_Node0 N_SetUSCCNasTarget_Node1{"The system identifies the target
cargo"}:::decision N_SetUSCCNasTarget_Node1_action["The train-or-US-CCN field in the
log entry is set to the US cargo CCN
key from the retrieved GCSUSRT
record"]:::main N_SetUSCCNasTarget_Node1 -- Yes --> N_SetUSCCNasTarget_Node1_action N_SetUSCCNasTarget_Node1_action --> E_SetUSCCNasTarget N_SetUSCCNasTarget_Node0 -- No --> N_SetUSCCNasTarget_Node1 N_SetUSCCNasTarget_Node1 -- No --> E_SetUSCCNasTarget
cargo release"}:::decision N_SetUSCCNasTarget_Node0_action["Move GCUSRT-US-CCN-KEY to
GCX105-TRAIN-OR-US-CCN field"]:::main N_SetUSCCNasTarget_Node0 -- Yes --> N_SetUSCCNasTarget_Node0_action N_SetUSCCNasTarget_Node0_action --> E_SetUSCCNasTarget S_SetUSCCNasTarget --> N_SetUSCCNasTarget_Node0 N_SetUSCCNasTarget_Node1{"The system identifies the target
cargo"}:::decision N_SetUSCCNasTarget_Node1_action["The train-or-US-CCN field in the
log entry is set to the US cargo CCN
key from the retrieved GCSUSRT
record"]:::main N_SetUSCCNasTarget_Node1 -- Yes --> N_SetUSCCNasTarget_Node1_action N_SetUSCCNasTarget_Node1_action --> E_SetUSCCNasTarget N_SetUSCCNasTarget_Node0 -- No --> N_SetUSCCNasTarget_Node1 N_SetUSCCNasTarget_Node1 -- No --> E_SetUSCCNasTarget
File: GCX126R.cbl
GIVEN:
['A US cargo manifest has been retrieved (GCUSRT-US-CCN-KEY)', 'The US cargo control number is available']
WHEN:
['Preparing the log entry for US cargo release']
THEN:
['Move GCUSRT-US-CCN-KEY to GCX105-TRAIN-OR-US-CCN field']
File: GCX126R.cbl
GIVEN:
The action code has been set
WHEN:
The system identifies the target cargo
THEN:
The train-or-US-CCN field in the log entry is set to the US cargo CCN key from the retrieved GCSUSRT record
β Consolidated Acceptance Criteria
- ['Setting the cargo type indicator'] → ['Set GCX105-US-CARGO 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_SetCargoTypeFlagtoUSCARGO(["Start Step"])
E_SetCargoTypeFlagtoUSCARGO(["End Step"])
N_SetCargoTypeFlagtoUSCARGO_Node0{"Setting the cargo type indicator"}:::decision
N_SetCargoTypeFlagtoUSCARGO_Node0_action["Set GCX105-US-CARGO flag to TRUE"]:::main
N_SetCargoTypeFlagtoUSCARGO_Node0 -- Yes --> N_SetCargoTypeFlagtoUSCARGO_Node0_action
N_SetCargoTypeFlagtoUSCARGO_Node0_action --> E_SetCargoTypeFlagtoUSCARGO
S_SetCargoTypeFlagtoUSCARGO --> N_SetCargoTypeFlagtoUSCARGO_Node0
N_SetCargoTypeFlagtoUSCARGO_Node0 -- No --> E_SetCargoTypeFlagtoUSCARGO
File: GCX126R.cbl
GIVEN:
['A log entry is being created for US cargo']
WHEN:
['Setting the cargo type indicator']
THEN:
['Set GCX105-US-CARGO flag to TRUE']
β Consolidated Acceptance Criteria
- ['Building the log message text'] → ["Concatenate the literal text 'CDN CCN RLSED BY EDI 350: ' with GCCC-CCN-KEY", 'Store the concatenated message in GCX105-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_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN(["Start Step"])
E_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN(["End Step"])
N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0{"Building the log message text"}:::decision
N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["Concatenate the literal text CDN
CCN RLSED BY EDI 350: with
GCCC-CCN-KEY , Store the
concatenated message in
GCX105-MESSAGE field"]:::main N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN S_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN
CCN RLSED BY EDI 350: with
GCCC-CCN-KEY , Store the
concatenated message in
GCX105-MESSAGE field"]:::main N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN S_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildMessageTextandConcatenateCDNCCNRLSEDBYEDI350CanadianCCN
File: GCX126R.cbl
GIVEN:
['The Canadian cargo control number (GCCC-CCN-KEY) is available', 'A US cargo release is being logged']
WHEN:
['Building the log message text']
THEN:
["Concatenate the literal text 'CDN CCN RLSED BY EDI 350: ' with GCCC-CCN-KEY", 'Store the concatenated message in GCX105-MESSAGE field']
β Consolidated Acceptance Criteria
- ['Ready to create the log entry'] → ['Call Z300-SPAWN-GCT1051E procedure to create 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_CallGCT1051ETransactiontoLogEntry(["Start Step"])
E_CallGCT1051ETransactiontoLogEntry(["End Step"])
N_CallGCT1051ETransactiontoLogEntry_Node0{"Ready to create the log entry"}:::decision
N_CallGCT1051ETransactiontoLogEntry_Node0_action["Call Z300-SPAWN-GCT1051E procedure
to create the log entry"]:::main N_CallGCT1051ETransactiontoLogEntry_Node0 -- Yes --> N_CallGCT1051ETransactiontoLogEntry_Node0_action N_CallGCT1051ETransactiontoLogEntry_Node0_action --> E_CallGCT1051ETransactiontoLogEntry S_CallGCT1051ETransactiontoLogEntry --> N_CallGCT1051ETransactiontoLogEntry_Node0 N_CallGCT1051ETransactiontoLogEntry_Node0 -- No --> E_CallGCT1051ETransactiontoLogEntry
to create the log entry"]:::main N_CallGCT1051ETransactiontoLogEntry_Node0 -- Yes --> N_CallGCT1051ETransactiontoLogEntry_Node0_action N_CallGCT1051ETransactiontoLogEntry_Node0_action --> E_CallGCT1051ETransactiontoLogEntry S_CallGCT1051ETransactiontoLogEntry --> N_CallGCT1051ETransactiontoLogEntry_Node0 N_CallGCT1051ETransactiontoLogEntry_Node0 -- No --> E_CallGCT1051ETransactiontoLogEntry
File: GCX126R.cbl
GIVEN:
['GCX105 log structure is fully populated with date, time, action code, US CCN, cargo type, and message', 'All required log information has been prepared']
WHEN:
['Ready to create the log entry']
THEN:
['Call Z300-SPAWN-GCT1051E procedure to create the log entry']
β Consolidated Acceptance Criteria
- The log structure initialization is invoked → the log input area is cleared to spaces AND the security byte is set to high-value AND the sending transaction is set to 'GCT1261E' AND the user ID from the common control area is copied to the log 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_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure(["Start Step"])
E_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure(["End Step"])
N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0{"The log structure initialization is
invoked"}:::decision N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0_action["The log input area is cleared to
spaces AND the security byte is set
to high-value AND the sending
transaction is set to GCT1261E AND
the user ID from the common control
area is copied to the log structure"]:::main N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0 -- Yes --> N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0_action N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0_action --> E_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure S_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure --> N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0 N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0 -- No --> E_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure
invoked"}:::decision N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0_action["The log input area is cleared to
spaces AND the security byte is set
to high-value AND the sending
transaction is set to GCT1261E AND
the user ID from the common control
area is copied to the log structure"]:::main N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0 -- Yes --> N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0_action N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0_action --> E_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure S_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure --> N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0 N_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure_Node0 -- No --> E_CallZ200MOVELOGINFORMATIONtoInitializeLogStructure
File: GCX126R.cbl
GIVEN:
A cargo information message needs to be logged
WHEN:
The log structure initialization is invoked
THEN:
- The log input area is cleared to spaces
- The security byte is set to high-value
- The sending transaction is set to 'gct1261e' and the user id from the common control area is copied to the log structure
β Consolidated Acceptance Criteria
- The initialization process begins → the GCX105-INPUT field 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_ClearGCX105INPUTtoSpaces(["Start Step"])
E_ClearGCX105INPUTtoSpaces(["End Step"])
N_ClearGCX105INPUTtoSpaces_Node0{"The initialization process begins"}:::decision
N_ClearGCX105INPUTtoSpaces_Node0_action["The GCX105-INPUT field is set to
spaces"]:::main N_ClearGCX105INPUTtoSpaces_Node0 -- Yes --> N_ClearGCX105INPUTtoSpaces_Node0_action N_ClearGCX105INPUTtoSpaces_Node0_action --> E_ClearGCX105INPUTtoSpaces S_ClearGCX105INPUTtoSpaces --> N_ClearGCX105INPUTtoSpaces_Node0 N_ClearGCX105INPUTtoSpaces_Node0 -- No --> E_ClearGCX105INPUTtoSpaces
spaces"]:::main N_ClearGCX105INPUTtoSpaces_Node0 -- Yes --> N_ClearGCX105INPUTtoSpaces_Node0_action N_ClearGCX105INPUTtoSpaces_Node0_action --> E_ClearGCX105INPUTtoSpaces S_ClearGCX105INPUTtoSpaces --> N_ClearGCX105INPUTtoSpaces_Node0 N_ClearGCX105INPUTtoSpaces_Node0 -- No --> E_ClearGCX105INPUTtoSpaces
File: GCX126R.cbl
GIVEN:
The log structure is being initialized
WHEN:
The initialization process begins
THEN:
The GCX105-INPUT field is set to spaces
β Consolidated Acceptance Criteria
- Security settings are being configured → the GCX105-SECURITY-BYTE is set to HIGH-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_SetGCX105SECURITYBYTEtoHIGHVALUE(["Start Step"])
E_SetGCX105SECURITYBYTEtoHIGHVALUE(["End Step"])
N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0{"Security settings are being
configured"}:::decision N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0_action["The GCX105-SECURITY-BYTE is set to
HIGH-VALUE"]:::main N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0 -- Yes --> N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0_action N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0_action --> E_SetGCX105SECURITYBYTEtoHIGHVALUE S_SetGCX105SECURITYBYTEtoHIGHVALUE --> N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0 N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0 -- No --> E_SetGCX105SECURITYBYTEtoHIGHVALUE
configured"}:::decision N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0_action["The GCX105-SECURITY-BYTE is set to
HIGH-VALUE"]:::main N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0 -- Yes --> N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0_action N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0_action --> E_SetGCX105SECURITYBYTEtoHIGHVALUE S_SetGCX105SECURITYBYTEtoHIGHVALUE --> N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0 N_SetGCX105SECURITYBYTEtoHIGHVALUE_Node0 -- No --> E_SetGCX105SECURITYBYTEtoHIGHVALUE
File: GCX126R.cbl
GIVEN:
The log structure is being initialized
WHEN:
Security settings are being configured
THEN:
The GCX105-SECURITY-BYTE is set to HIGH-VALUE
β Consolidated Acceptance Criteria
- The transaction identifier is being set → the GCX105-SENDING-TRANSACTION is set to 'GCT1261E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetGCX105SENDINGTRANSACTIONtoGCT1261E(["Start Step"])
E_SetGCX105SENDINGTRANSACTIONtoGCT1261E(["End Step"])
N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0{"The transaction identifier is being
set"}:::decision N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0_action["The GCX105-SENDING-TRANSACTION is
set to GCT1261E"]:::main N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0 -- Yes --> N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0_action N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0_action --> E_SetGCX105SENDINGTRANSACTIONtoGCT1261E S_SetGCX105SENDINGTRANSACTIONtoGCT1261E --> N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0 N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0 -- No --> E_SetGCX105SENDINGTRANSACTIONtoGCT1261E
set"}:::decision N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0_action["The GCX105-SENDING-TRANSACTION is
set to GCT1261E"]:::main N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0 -- Yes --> N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0_action N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0_action --> E_SetGCX105SENDINGTRANSACTIONtoGCT1261E S_SetGCX105SENDINGTRANSACTIONtoGCT1261E --> N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0 N_SetGCX105SENDINGTRANSACTIONtoGCT1261E_Node0 -- No --> E_SetGCX105SENDINGTRANSACTIONtoGCT1261E
File: GCX126R.cbl
GIVEN:
The log structure is being initialized
WHEN:
The transaction identifier is being set
THEN:
The GCX105-SENDING-TRANSACTION is set to 'GCT1261E'
β Consolidated Acceptance Criteria
- User identification is being captured → the GCX105-ACF2-ID is set to the value from CC-ACF2-USERID 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_SetGCX105ACF2IDfromCCCOMUserID(["Start Step"])
E_SetGCX105ACF2IDfromCCCOMUserID(["End Step"])
N_SetGCX105ACF2IDfromCCCOMUserID_Node0{"User identification is being
captured"}:::decision N_SetGCX105ACF2IDfromCCCOMUserID_Node0_action["The GCX105-ACF2-ID is set to the
value from CC-ACF2-USERID in the
common control area"]:::main N_SetGCX105ACF2IDfromCCCOMUserID_Node0 -- Yes --> N_SetGCX105ACF2IDfromCCCOMUserID_Node0_action N_SetGCX105ACF2IDfromCCCOMUserID_Node0_action --> E_SetGCX105ACF2IDfromCCCOMUserID S_SetGCX105ACF2IDfromCCCOMUserID --> N_SetGCX105ACF2IDfromCCCOMUserID_Node0 N_SetGCX105ACF2IDfromCCCOMUserID_Node0 -- No --> E_SetGCX105ACF2IDfromCCCOMUserID
captured"}:::decision N_SetGCX105ACF2IDfromCCCOMUserID_Node0_action["The GCX105-ACF2-ID is set to the
value from CC-ACF2-USERID in the
common control area"]:::main N_SetGCX105ACF2IDfromCCCOMUserID_Node0 -- Yes --> N_SetGCX105ACF2IDfromCCCOMUserID_Node0_action N_SetGCX105ACF2IDfromCCCOMUserID_Node0_action --> E_SetGCX105ACF2IDfromCCCOMUserID S_SetGCX105ACF2IDfromCCCOMUserID --> N_SetGCX105ACF2IDfromCCCOMUserID_Node0 N_SetGCX105ACF2IDfromCCCOMUserID_Node0 -- No --> E_SetGCX105ACF2IDfromCCCOMUserID
File: GCX126R.cbl
GIVEN:
The log structure is being initialized AND the common control area contains the current user ID
WHEN:
User identification is being captured
THEN:
The GCX105-ACF2-ID is set to the value from CC-ACF2-USERID in the common control area
β Consolidated Acceptance Criteria
- The GCX105-MESSAGE field is empty (spaces) OR contains only low-values → the system skips the log entry creation process and exits the Z300-SPAWN-GCT1051E section without writing any log record
- The log message field contains only spaces OR low values → the system skips all logging operations and exits the Z300-SPAWN-GCT1051E section without writing any 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_LogMessageEmpty(["Start Step"])
E_LogMessageEmpty(["End Step"])
N_LogMessageEmpty_Node0{"The GCX105-MESSAGE field is empty
spaces OR contains only low-values"}:::decision N_LogMessageEmpty_Node0_action["The system skips the log entry
creation process and exits the
Z300-SPAWN-GCT1051E section without
writing any log record"]:::main N_LogMessageEmpty_Node0 -- Yes --> N_LogMessageEmpty_Node0_action N_LogMessageEmpty_Node0_action --> E_LogMessageEmpty S_LogMessageEmpty --> N_LogMessageEmpty_Node0 N_LogMessageEmpty_Node1{"The log message field contains only
spaces OR low values"}:::decision N_LogMessageEmpty_Node1_action["The system skips all logging
operations and exits the
Z300-SPAWN-GCT1051E section without
writing any log entry"]:::main N_LogMessageEmpty_Node1 -- Yes --> N_LogMessageEmpty_Node1_action N_LogMessageEmpty_Node1_action --> E_LogMessageEmpty N_LogMessageEmpty_Node0 -- No --> N_LogMessageEmpty_Node1 N_LogMessageEmpty_Node1 -- No --> E_LogMessageEmpty
spaces OR contains only low-values"}:::decision N_LogMessageEmpty_Node0_action["The system skips the log entry
creation process and exits the
Z300-SPAWN-GCT1051E section without
writing any log record"]:::main N_LogMessageEmpty_Node0 -- Yes --> N_LogMessageEmpty_Node0_action N_LogMessageEmpty_Node0_action --> E_LogMessageEmpty S_LogMessageEmpty --> N_LogMessageEmpty_Node0 N_LogMessageEmpty_Node1{"The log message field contains only
spaces OR low values"}:::decision N_LogMessageEmpty_Node1_action["The system skips all logging
operations and exits the
Z300-SPAWN-GCT1051E section without
writing any log entry"]:::main N_LogMessageEmpty_Node1 -- Yes --> N_LogMessageEmpty_Node1_action N_LogMessageEmpty_Node1_action --> E_LogMessageEmpty N_LogMessageEmpty_Node0 -- No --> N_LogMessageEmpty_Node1 N_LogMessageEmpty_Node1 -- No --> E_LogMessageEmpty
File: GCX126R.cbl
GIVEN:
A log entry creation request is initiated for GCT1051E
WHEN:
The GCX105-MESSAGE field is empty (spaces) OR contains only low-values
THEN:
- The system skips the log entry creation process
- Exits the z300-spawn-gct1051e section without writing any log record
File: GCX126R.cbl
GIVEN:
A log message (GCX105-MESSAGE) is being prepared for writing to the audit trail
WHEN:
The log message field contains only spaces OR low values
THEN:
- The system skips all logging operations
- Exits the z300-spawn-gct1051e section without writing any log entry
β Consolidated Acceptance Criteria
- The GCX105-DATE field contains space characters → the system replaces all spaces in GCX105-DATE with zeroes to ensure proper date 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_NormalizeDateReplaceSpaceswithZeros(["Start Step"])
E_NormalizeDateReplaceSpaceswithZeros(["End Step"])
N_NormalizeDateReplaceSpaceswithZeros_Node0{"The GCX105-DATE field contains
space characters"}:::decision N_NormalizeDateReplaceSpaceswithZeros_Node0_action["The system replaces all spaces in
GCX105-DATE with zeroes to ensure
proper date formatting"]:::main N_NormalizeDateReplaceSpaceswithZeros_Node0 -- Yes --> N_NormalizeDateReplaceSpaceswithZeros_Node0_action N_NormalizeDateReplaceSpaceswithZeros_Node0_action --> E_NormalizeDateReplaceSpaceswithZeros S_NormalizeDateReplaceSpaceswithZeros --> N_NormalizeDateReplaceSpaceswithZeros_Node0 N_NormalizeDateReplaceSpaceswithZeros_Node0 -- No --> E_NormalizeDateReplaceSpaceswithZeros
space characters"}:::decision N_NormalizeDateReplaceSpaceswithZeros_Node0_action["The system replaces all spaces in
GCX105-DATE with zeroes to ensure
proper date formatting"]:::main N_NormalizeDateReplaceSpaceswithZeros_Node0 -- Yes --> N_NormalizeDateReplaceSpaceswithZeros_Node0_action N_NormalizeDateReplaceSpaceswithZeros_Node0_action --> E_NormalizeDateReplaceSpaceswithZeros S_NormalizeDateReplaceSpaceswithZeros --> N_NormalizeDateReplaceSpaceswithZeros_Node0 N_NormalizeDateReplaceSpaceswithZeros_Node0 -- No --> E_NormalizeDateReplaceSpaceswithZeros
File: GCX126R.cbl
GIVEN:
A valid log message exists in GCX105-MESSAGE
WHEN:
The GCX105-DATE field contains space characters
THEN:
The system replaces all spaces in GCX105-DATE with zeroes to ensure proper date formatting
β Consolidated Acceptance Criteria
- The GCX105-TIME field contains space characters → the system replaces all spaces in GCX105-TIME with the character '1' to ensure proper time 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_NormalizeTimeReplaceSpaceswith1(["Start Step"])
E_NormalizeTimeReplaceSpaceswith1(["End Step"])
N_NormalizeTimeReplaceSpaceswith1_Node0{"The GCX105-TIME field contains
space characters"}:::decision N_NormalizeTimeReplaceSpaceswith1_Node0_action["The system replaces all spaces in
GCX105-TIME with the character 1 to
ensure proper time formatting"]:::main N_NormalizeTimeReplaceSpaceswith1_Node0 -- Yes --> N_NormalizeTimeReplaceSpaceswith1_Node0_action N_NormalizeTimeReplaceSpaceswith1_Node0_action --> E_NormalizeTimeReplaceSpaceswith1 S_NormalizeTimeReplaceSpaceswith1 --> N_NormalizeTimeReplaceSpaceswith1_Node0 N_NormalizeTimeReplaceSpaceswith1_Node0 -- No --> E_NormalizeTimeReplaceSpaceswith1
space characters"}:::decision N_NormalizeTimeReplaceSpaceswith1_Node0_action["The system replaces all spaces in
GCX105-TIME with the character 1 to
ensure proper time formatting"]:::main N_NormalizeTimeReplaceSpaceswith1_Node0 -- Yes --> N_NormalizeTimeReplaceSpaceswith1_Node0_action N_NormalizeTimeReplaceSpaceswith1_Node0_action --> E_NormalizeTimeReplaceSpaceswith1 S_NormalizeTimeReplaceSpaceswith1 --> N_NormalizeTimeReplaceSpaceswith1_Node0 N_NormalizeTimeReplaceSpaceswith1_Node0 -- No --> E_NormalizeTimeReplaceSpaceswith1
File: GCX126R.cbl
GIVEN:
A valid log message exists in GCX105-MESSAGE AND the GCX105-DATE field has been normalized
WHEN:
The GCX105-TIME field contains space characters
THEN:
The system replaces all spaces in GCX105-TIME with the character '1' to ensure proper time formatting
β Consolidated Acceptance Criteria
- The log entry preparation is in progress → the system moves the complete GCX105-INPUT structure to the GCT1051E-MSG field
- The log message is ready to be written to the audit trail → the system moves the entire log input structure to the GCT1051E message format (GCT1051E-MSG)
- The log data is being transferred to the message structure → the complete log input structure should be moved to the GCT1051E 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_MoveLogInputtoGCT1051EMessage(["Start Step"])
E_MoveLogInputtoGCT1051EMessage(["End Step"])
N_MoveLogInputtoGCT1051EMessage_Node0{"The log entry preparation is in
progress"}:::decision N_MoveLogInputtoGCT1051EMessage_Node0_action["The system moves the complete
GCX105-INPUT structure to the
GCT1051E-MSG field"]:::main N_MoveLogInputtoGCT1051EMessage_Node0 -- Yes --> N_MoveLogInputtoGCT1051EMessage_Node0_action N_MoveLogInputtoGCT1051EMessage_Node0_action --> E_MoveLogInputtoGCT1051EMessage S_MoveLogInputtoGCT1051EMessage --> N_MoveLogInputtoGCT1051EMessage_Node0 N_MoveLogInputtoGCT1051EMessage_Node1{"The log message is ready to be
written to the audit trail"}:::decision N_MoveLogInputtoGCT1051EMessage_Node1_action["The system moves the entire log
input structure to the GCT1051E
message format GCT1051E-MSG"]:::main N_MoveLogInputtoGCT1051EMessage_Node1 -- Yes --> N_MoveLogInputtoGCT1051EMessage_Node1_action N_MoveLogInputtoGCT1051EMessage_Node1_action --> E_MoveLogInputtoGCT1051EMessage N_MoveLogInputtoGCT1051EMessage_Node0 -- No --> N_MoveLogInputtoGCT1051EMessage_Node1 N_MoveLogInputtoGCT1051EMessage_Node2{"The log data is being transferred
to the message structure"}:::decision N_MoveLogInputtoGCT1051EMessage_Node2_action["The complete log input structure
should be moved to the GCT1051E
message field"]:::main N_MoveLogInputtoGCT1051EMessage_Node2 -- Yes --> N_MoveLogInputtoGCT1051EMessage_Node2_action N_MoveLogInputtoGCT1051EMessage_Node2_action --> E_MoveLogInputtoGCT1051EMessage N_MoveLogInputtoGCT1051EMessage_Node1 -- No --> N_MoveLogInputtoGCT1051EMessage_Node2 N_MoveLogInputtoGCT1051EMessage_Node2 -- No --> E_MoveLogInputtoGCT1051EMessage
progress"}:::decision N_MoveLogInputtoGCT1051EMessage_Node0_action["The system moves the complete
GCX105-INPUT structure to the
GCT1051E-MSG field"]:::main N_MoveLogInputtoGCT1051EMessage_Node0 -- Yes --> N_MoveLogInputtoGCT1051EMessage_Node0_action N_MoveLogInputtoGCT1051EMessage_Node0_action --> E_MoveLogInputtoGCT1051EMessage S_MoveLogInputtoGCT1051EMessage --> N_MoveLogInputtoGCT1051EMessage_Node0 N_MoveLogInputtoGCT1051EMessage_Node1{"The log message is ready to be
written to the audit trail"}:::decision N_MoveLogInputtoGCT1051EMessage_Node1_action["The system moves the entire log
input structure to the GCT1051E
message format GCT1051E-MSG"]:::main N_MoveLogInputtoGCT1051EMessage_Node1 -- Yes --> N_MoveLogInputtoGCT1051EMessage_Node1_action N_MoveLogInputtoGCT1051EMessage_Node1_action --> E_MoveLogInputtoGCT1051EMessage N_MoveLogInputtoGCT1051EMessage_Node0 -- No --> N_MoveLogInputtoGCT1051EMessage_Node1 N_MoveLogInputtoGCT1051EMessage_Node2{"The log data is being transferred
to the message structure"}:::decision N_MoveLogInputtoGCT1051EMessage_Node2_action["The complete log input structure
should be moved to the GCT1051E
message field"]:::main N_MoveLogInputtoGCT1051EMessage_Node2 -- Yes --> N_MoveLogInputtoGCT1051EMessage_Node2_action N_MoveLogInputtoGCT1051EMessage_Node2_action --> E_MoveLogInputtoGCT1051EMessage N_MoveLogInputtoGCT1051EMessage_Node1 -- No --> N_MoveLogInputtoGCT1051EMessage_Node2 N_MoveLogInputtoGCT1051EMessage_Node2 -- No --> E_MoveLogInputtoGCT1051EMessage
File: GCX126R.cbl
GIVEN:
The GCX105-DATE and GCX105-TIME fields have been normalized AND a valid log message exists
WHEN:
The log entry preparation is in progress
THEN:
The system moves the complete GCX105-INPUT structure to the GCT1051E-MSG field
File: GCX126R.cbl
GIVEN:
A validated log input structure (GCX105-INPUT) with normalized date and time fields
WHEN:
The log message is ready to be written to the audit trail
THEN:
The system moves the entire log input structure to the GCT1051E message format (GCT1051E-MSG)
File: GCX126R.cbl
GIVEN:
Date and time values have been normalized
WHEN:
The log data is being transferred to the message structure
THEN:
The complete log input structure should be moved to the GCT1051E message field
β Consolidated Acceptance Criteria
- The system is ready to write the log entry → the system calls CIMS with CHNG function using the alternate PCB and GCT1051E message to change the message destination
- The system needs to write the log entry to the audit trail → the system calls CIMS with CHNG function using the alternate PCB (ALT-PCB OF CCCOM) and the GCT1051E message structure to change the message destination
- The message destination needs to be set in the IMS message queue → the system calls CIMS with CHNG function using the alternate PCB and GCT1051E message structure to establish the message destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSwithCHNGFunction(["Start Step"])
E_CallCIMSwithCHNGFunction(["End Step"])
N_CallCIMSwithCHNGFunction_Node0{"The system is ready to write the
log entry"}:::decision N_CallCIMSwithCHNGFunction_Node0_action["The system calls CIMS with CHNG
function using the alternate PCB and
GCT1051E message to change the
message destination"]:::main N_CallCIMSwithCHNGFunction_Node0 -- Yes --> N_CallCIMSwithCHNGFunction_Node0_action N_CallCIMSwithCHNGFunction_Node0_action --> E_CallCIMSwithCHNGFunction S_CallCIMSwithCHNGFunction --> N_CallCIMSwithCHNGFunction_Node0 N_CallCIMSwithCHNGFunction_Node1{"The system needs to write the log
entry to the audit trail"}:::decision N_CallCIMSwithCHNGFunction_Node1_action["The system calls CIMS with CHNG
function using the alternate PCB
ALT-PCB OF CCCOM and the GCT1051E
message structure to change the
message destination"]:::main N_CallCIMSwithCHNGFunction_Node1 -- Yes --> N_CallCIMSwithCHNGFunction_Node1_action N_CallCIMSwithCHNGFunction_Node1_action --> E_CallCIMSwithCHNGFunction N_CallCIMSwithCHNGFunction_Node0 -- No --> N_CallCIMSwithCHNGFunction_Node1 N_CallCIMSwithCHNGFunction_Node2{"The message destination needs to be
set in the IMS message queue"}:::decision N_CallCIMSwithCHNGFunction_Node2_action["The system calls CIMS with CHNG
function using the alternate PCB and
GCT1051E message structure to
establish the message destination"]:::main N_CallCIMSwithCHNGFunction_Node2 -- Yes --> N_CallCIMSwithCHNGFunction_Node2_action N_CallCIMSwithCHNGFunction_Node2_action --> E_CallCIMSwithCHNGFunction N_CallCIMSwithCHNGFunction_Node1 -- No --> N_CallCIMSwithCHNGFunction_Node2 N_CallCIMSwithCHNGFunction_Node2 -- No --> E_CallCIMSwithCHNGFunction
log entry"}:::decision N_CallCIMSwithCHNGFunction_Node0_action["The system calls CIMS with CHNG
function using the alternate PCB and
GCT1051E message to change the
message destination"]:::main N_CallCIMSwithCHNGFunction_Node0 -- Yes --> N_CallCIMSwithCHNGFunction_Node0_action N_CallCIMSwithCHNGFunction_Node0_action --> E_CallCIMSwithCHNGFunction S_CallCIMSwithCHNGFunction --> N_CallCIMSwithCHNGFunction_Node0 N_CallCIMSwithCHNGFunction_Node1{"The system needs to write the log
entry to the audit trail"}:::decision N_CallCIMSwithCHNGFunction_Node1_action["The system calls CIMS with CHNG
function using the alternate PCB
ALT-PCB OF CCCOM and the GCT1051E
message structure to change the
message destination"]:::main N_CallCIMSwithCHNGFunction_Node1 -- Yes --> N_CallCIMSwithCHNGFunction_Node1_action N_CallCIMSwithCHNGFunction_Node1_action --> E_CallCIMSwithCHNGFunction N_CallCIMSwithCHNGFunction_Node0 -- No --> N_CallCIMSwithCHNGFunction_Node1 N_CallCIMSwithCHNGFunction_Node2{"The message destination needs to be
set in the IMS message queue"}:::decision N_CallCIMSwithCHNGFunction_Node2_action["The system calls CIMS with CHNG
function using the alternate PCB and
GCT1051E message structure to
establish the message destination"]:::main N_CallCIMSwithCHNGFunction_Node2 -- Yes --> N_CallCIMSwithCHNGFunction_Node2_action N_CallCIMSwithCHNGFunction_Node2_action --> E_CallCIMSwithCHNGFunction N_CallCIMSwithCHNGFunction_Node1 -- No --> N_CallCIMSwithCHNGFunction_Node2 N_CallCIMSwithCHNGFunction_Node2 -- No --> E_CallCIMSwithCHNGFunction
File: GCX126R.cbl
GIVEN:
The GCT1051E message structure has been populated with log data
WHEN:
The system is ready to write the log entry
THEN:
- The system calls cims with chng function using the alternate pcb
- Gct1051e message to change the message destination
File: GCX126R.cbl
GIVEN:
A formatted log message (GCT1051E) ready to be written
WHEN:
The system needs to write the log entry to the audit trail
THEN:
The system calls CIMS with CHNG function using the alternate PCB (ALT-PCB OF CCCOM) and the GCT1051E message structure to change the message destination
File: GCX126R.cbl
GIVEN:
A cargo information message is prepared in GCT1051E format
WHEN:
The message destination needs to be set in the IMS message queue
THEN:
- The system calls cims with chng function using the alternate pcb
- Gct1051e message structure to establish the message destination
β Consolidated Acceptance Criteria
- The system is ready to persist the log entry → the system calls WRITMSGL with the alternate PCB, GCT1051E message code, message content, message length, and module name to write the log entry
- The message needs to be permanently logged → the system calls WRITMSGL with the alternate PCB, message code (GCT1051E-MSG-CODE), message content (GCT1051E-MESSAGE), message length (GCT1051E-MSG-LGTH), and module name (GCT1051E-MOD-NAME) to write 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_CallWRITMSGLtoWriteMessageLog(["Start Step"])
E_CallWRITMSGLtoWriteMessageLog(["End Step"])
N_CallWRITMSGLtoWriteMessageLog_Node0{"The system is ready to persist the
log entry"}:::decision N_CallWRITMSGLtoWriteMessageLog_Node0_action["The system calls WRITMSGL with the
alternate PCB, GCT1051E message
code, message content, message
length, and module name to write the
log entry"]:::main N_CallWRITMSGLtoWriteMessageLog_Node0 -- Yes --> N_CallWRITMSGLtoWriteMessageLog_Node0_action N_CallWRITMSGLtoWriteMessageLog_Node0_action --> E_CallWRITMSGLtoWriteMessageLog S_CallWRITMSGLtoWriteMessageLog --> N_CallWRITMSGLtoWriteMessageLog_Node0 N_CallWRITMSGLtoWriteMessageLog_Node1{"The message needs to be permanently
logged"}:::decision N_CallWRITMSGLtoWriteMessageLog_Node1_action["The system calls WRITMSGL with the
alternate PCB, message code
GCT1051E-MSG-CODE, message content
GCT1051E-MESSAGE, message length
GCT1051E-MSG-LGTH, and module name
GCT1051E-MOD-NAME to write the log
entry"]:::main N_CallWRITMSGLtoWriteMessageLog_Node1 -- Yes --> N_CallWRITMSGLtoWriteMessageLog_Node1_action N_CallWRITMSGLtoWriteMessageLog_Node1_action --> E_CallWRITMSGLtoWriteMessageLog N_CallWRITMSGLtoWriteMessageLog_Node0 -- No --> N_CallWRITMSGLtoWriteMessageLog_Node1 N_CallWRITMSGLtoWriteMessageLog_Node1 -- No --> E_CallWRITMSGLtoWriteMessageLog
log entry"}:::decision N_CallWRITMSGLtoWriteMessageLog_Node0_action["The system calls WRITMSGL with the
alternate PCB, GCT1051E message
code, message content, message
length, and module name to write the
log entry"]:::main N_CallWRITMSGLtoWriteMessageLog_Node0 -- Yes --> N_CallWRITMSGLtoWriteMessageLog_Node0_action N_CallWRITMSGLtoWriteMessageLog_Node0_action --> E_CallWRITMSGLtoWriteMessageLog S_CallWRITMSGLtoWriteMessageLog --> N_CallWRITMSGLtoWriteMessageLog_Node0 N_CallWRITMSGLtoWriteMessageLog_Node1{"The message needs to be permanently
logged"}:::decision N_CallWRITMSGLtoWriteMessageLog_Node1_action["The system calls WRITMSGL with the
alternate PCB, message code
GCT1051E-MSG-CODE, message content
GCT1051E-MESSAGE, message length
GCT1051E-MSG-LGTH, and module name
GCT1051E-MOD-NAME to write the log
entry"]:::main N_CallWRITMSGLtoWriteMessageLog_Node1 -- Yes --> N_CallWRITMSGLtoWriteMessageLog_Node1_action N_CallWRITMSGLtoWriteMessageLog_Node1_action --> E_CallWRITMSGLtoWriteMessageLog N_CallWRITMSGLtoWriteMessageLog_Node0 -- No --> N_CallWRITMSGLtoWriteMessageLog_Node1 N_CallWRITMSGLtoWriteMessageLog_Node1 -- No --> E_CallWRITMSGLtoWriteMessageLog
File: GCX126R.cbl
GIVEN:
The message destination has been changed to the alternate PCB AND the GCT1051E message is populated
WHEN:
The system is ready to persist the log entry
THEN:
The system calls WRITMSGL with the alternate PCB, GCT1051E message code, message content, message length, and module name to write the log entry
File: GCX126R.cbl
GIVEN:
A cargo information message is formatted in GCT1051E structure with destination set
WHEN:
The message needs to be permanently logged
THEN:
The system calls WRITMSGL with the alternate PCB, message code (GCT1051E-MSG-CODE), message content (GCT1051E-MESSAGE), message length (GCT1051E-MSG-LGTH), and module name (GCT1051E-MOD-NAME) to write the log entry
β Consolidated Acceptance Criteria
- The log entry write operation is complete → the system calls CIMS with PURG function using the alternate PCB to commit the transaction and make the log entry permanent
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSwithPURGFunctiontoCommit(["Start Step"])
E_CallCIMSwithPURGFunctiontoCommit(["End Step"])
N_CallCIMSwithPURGFunctiontoCommit_Node0{"The log entry write operation is
complete"}:::decision N_CallCIMSwithPURGFunctiontoCommit_Node0_action["The system calls CIMS with PURG
function using the alternate PCB to
commit the transaction and make the
log entry permanent"]:::main N_CallCIMSwithPURGFunctiontoCommit_Node0 -- Yes --> N_CallCIMSwithPURGFunctiontoCommit_Node0_action N_CallCIMSwithPURGFunctiontoCommit_Node0_action --> E_CallCIMSwithPURGFunctiontoCommit S_CallCIMSwithPURGFunctiontoCommit --> N_CallCIMSwithPURGFunctiontoCommit_Node0 N_CallCIMSwithPURGFunctiontoCommit_Node0 -- No --> E_CallCIMSwithPURGFunctiontoCommit
complete"}:::decision N_CallCIMSwithPURGFunctiontoCommit_Node0_action["The system calls CIMS with PURG
function using the alternate PCB to
commit the transaction and make the
log entry permanent"]:::main N_CallCIMSwithPURGFunctiontoCommit_Node0 -- Yes --> N_CallCIMSwithPURGFunctiontoCommit_Node0_action N_CallCIMSwithPURGFunctiontoCommit_Node0_action --> E_CallCIMSwithPURGFunctiontoCommit S_CallCIMSwithPURGFunctiontoCommit --> N_CallCIMSwithPURGFunctiontoCommit_Node0 N_CallCIMSwithPURGFunctiontoCommit_Node0 -- No --> E_CallCIMSwithPURGFunctiontoCommit
File: GCX126R.cbl
GIVEN:
The log entry has been written to the message queue via WRITMSGL
WHEN:
The log entry write operation is complete
THEN:
- The system calls cims with purg function using the alternate pcb to commit the transaction
- Make the log entry permanent
β Consolidated Acceptance Criteria
- The authorization to deliver processing begins → the system logs the message 'EDI 350: AUTHORIZED TO PROCEED' to the cargo information log with current date, time, and cargo CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageEDI350AUTHORIZEDTOPROCEED(["Start Step"])
E_LogMessageEDI350AUTHORIZEDTOPROCEED(["End Step"])
N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0{"The authorization to deliver
processing begins"}:::decision N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0_action["The system logs the message EDI
350: AUTHORIZED TO PROCEED to the
cargo information log with current
date, time, and cargo CCN"]:::main N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0 -- Yes --> N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0_action N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0_action --> E_LogMessageEDI350AUTHORIZEDTOPROCEED S_LogMessageEDI350AUTHORIZEDTOPROCEED --> N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0 N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0 -- No --> E_LogMessageEDI350AUTHORIZEDTOPROCEED
processing begins"}:::decision N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0_action["The system logs the message EDI
350: AUTHORIZED TO PROCEED to the
cargo information log with current
date, time, and cargo CCN"]:::main N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0 -- Yes --> N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0_action N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0_action --> E_LogMessageEDI350AUTHORIZEDTOPROCEED S_LogMessageEDI350AUTHORIZEDTOPROCEED --> N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0 N_LogMessageEDI350AUTHORIZEDTOPROCEED_Node0 -- No --> E_LogMessageEDI350AUTHORIZEDTOPROCEED
File: GCX126R.cbl
GIVEN:
An EDI 350 message with V9 segment notice reason code indicating 'AUTH TO DELIVER' status
WHEN:
The authorization to deliver processing begins
THEN:
The system logs the message 'EDI 350: AUTHORIZED TO PROCEED' to the cargo information log with current date, time, and cargo CCN
β Consolidated Acceptance Criteria
- If the cargo's CSA indicator → if CSA indicator is ON, proceed with CSA authorization processing; If CSA indicator is OFF, log non-CSA rejection message
- The system processes the authorization to deliver message → the system logs the message 'EDI 350: ACCEPTED - CSA' AND sets the cargo current status to CSA-DLV (GCCC-STATUS-CSA-DLV) AND sets the CSA authorization to deliver received flag to TRUE (GCCC-CSA-AUTH-DELIVER-RECD) AND updates the cargo record in the database
- The system processes the authorization to deliver message → the system logs the message 'EDI 350: NOT ACCEPTED - NON-CSA' AND does not update the cargo record 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_IsCargoCSAManifest(["Start Step"])
E_IsCargoCSAManifest(["End Step"])
N_IsCargoCSAManifest_Node0{"The system evaluates the cargo s
CSA indicator"}:::decision N_IsCargoCSAManifest_Node0_action["If CSA indicator is ON, proceed
with CSA authorization processing If
CSA indicator is OFF, log non-CSA
rejection message"]:::main N_IsCargoCSAManifest_Node0 -- Yes --> N_IsCargoCSAManifest_Node0_action N_IsCargoCSAManifest_Node0_action --> E_IsCargoCSAManifest S_IsCargoCSAManifest --> N_IsCargoCSAManifest_Node0 N_IsCargoCSAManifest_Node1{"The system processes the
authorization to deliver message"}:::decision N_IsCargoCSAManifest_Node1_action["The system logs the message EDI
350: ACCEPTED - CSA AND sets the
cargo current status to CSA-DLV
GCCC-STATUS-CSA-DLV AND sets the CSA
authorization to deliver received
flag to TRUE
GCCC-CSA-AUTH-DELIVER-RECD AND
updates the cargo record in the
database"]:::main N_IsCargoCSAManifest_Node1 -- Yes --> N_IsCargoCSAManifest_Node1_action N_IsCargoCSAManifest_Node1_action --> E_IsCargoCSAManifest N_IsCargoCSAManifest_Node0 -- No --> N_IsCargoCSAManifest_Node1 N_IsCargoCSAManifest_Node2{"The system processes the
authorization to deliver message"}:::decision N_IsCargoCSAManifest_Node2_action["The system logs the message EDI
350: NOT ACCEPTED - NON-CSA AND does
not update the cargo record in the
database"]:::main N_IsCargoCSAManifest_Node2 -- Yes --> N_IsCargoCSAManifest_Node2_action N_IsCargoCSAManifest_Node2_action --> E_IsCargoCSAManifest N_IsCargoCSAManifest_Node1 -- No --> N_IsCargoCSAManifest_Node2 N_IsCargoCSAManifest_Node2 -- No --> E_IsCargoCSAManifest
CSA indicator"}:::decision N_IsCargoCSAManifest_Node0_action["If CSA indicator is ON, proceed
with CSA authorization processing If
CSA indicator is OFF, log non-CSA
rejection message"]:::main N_IsCargoCSAManifest_Node0 -- Yes --> N_IsCargoCSAManifest_Node0_action N_IsCargoCSAManifest_Node0_action --> E_IsCargoCSAManifest S_IsCargoCSAManifest --> N_IsCargoCSAManifest_Node0 N_IsCargoCSAManifest_Node1{"The system processes the
authorization to deliver message"}:::decision N_IsCargoCSAManifest_Node1_action["The system logs the message EDI
350: ACCEPTED - CSA AND sets the
cargo current status to CSA-DLV
GCCC-STATUS-CSA-DLV AND sets the CSA
authorization to deliver received
flag to TRUE
GCCC-CSA-AUTH-DELIVER-RECD AND
updates the cargo record in the
database"]:::main N_IsCargoCSAManifest_Node1 -- Yes --> N_IsCargoCSAManifest_Node1_action N_IsCargoCSAManifest_Node1_action --> E_IsCargoCSAManifest N_IsCargoCSAManifest_Node0 -- No --> N_IsCargoCSAManifest_Node1 N_IsCargoCSAManifest_Node2{"The system processes the
authorization to deliver message"}:::decision N_IsCargoCSAManifest_Node2_action["The system logs the message EDI
350: NOT ACCEPTED - NON-CSA AND does
not update the cargo record in the
database"]:::main N_IsCargoCSAManifest_Node2 -- Yes --> N_IsCargoCSAManifest_Node2_action N_IsCargoCSAManifest_Node2_action --> E_IsCargoCSAManifest N_IsCargoCSAManifest_Node1 -- No --> N_IsCargoCSAManifest_Node2 N_IsCargoCSAManifest_Node2 -- No --> E_IsCargoCSAManifest
File: GCX126R.cbl
GIVEN:
A cargo record with authorization to deliver status from EDI 350
WHEN:
The system evaluates the cargo's CSA indicator
THEN:
If CSA indicator is ON, proceed with CSA authorization processing; If CSA indicator is OFF, log non-CSA rejection message
File: GCX126R.cbl
GIVEN:
An EDI 350 message with V9 segment notice reason code indicating 'Authorization to Deliver' AND the cargo record exists in the database AND the cargo has CSA indicator turned ON (GCCC-CSA-IND-ON is true)
WHEN:
The system processes the authorization to deliver message
THEN:
The system logs the message 'EDI 350: ACCEPTED - CSA' AND sets the cargo current status to CSA-DLV (GCCC-STATUS-CSA-DLV) AND sets the CSA authorization to deliver received flag to TRUE (GCCC-CSA-AUTH-DELIVER-RECD) AND updates the cargo record in the database
File: GCX126R.cbl
GIVEN:
An EDI 350 message with V9 segment notice reason code indicating 'Authorization to Deliver' AND the cargo record exists in the database AND the cargo has CSA indicator turned OFF (GCCC-CSA-IND-ON is false)
WHEN:
The system processes the authorization to deliver message
THEN:
The system logs the message 'EDI 350: NOT ACCEPTED - NON-CSA' AND does not update the cargo record in the database
β Consolidated Acceptance Criteria
- The system processes the CSA authorization → the system logs 'EDI 350: ACCEPTED - CSA' message, sets cargo current status to 'CSA-DLV', sets CSA authorization to deliver received 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_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag(["Start Step"])
E_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag(["End Step"])
N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0{"The system processes the CSA
authorization"}:::decision N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0_action["The system logs EDI 350: ACCEPTED -
CSA message, sets cargo current
status to CSA-DLV , sets CSA
authorization to deliver received
flag to TRUE"]:::main N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0 -- Yes --> N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0_action N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0_action --> E_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag S_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag --> N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0 N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0 -- No --> E_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag
authorization"}:::decision N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0_action["The system logs EDI 350: ACCEPTED -
CSA message, sets cargo current
status to CSA-DLV , sets CSA
authorization to deliver received
flag to TRUE"]:::main N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0 -- Yes --> N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0_action N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0_action --> E_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag S_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag --> N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0 N_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag_Node0 -- No --> E_ProcessCSAAuthorizationLogEDI350ACCEPTEDCSASetStatustoCSADLVSetCSAAuthorizationFlag
File: GCX126R.cbl
GIVEN:
A cargo record with CSA indicator ON and authorization to deliver status from EDI 350
WHEN:
The system processes the CSA authorization
THEN:
The system logs 'EDI 350: ACCEPTED - CSA' message, sets cargo current status to 'CSA-DLV', sets CSA authorization to deliver received flag to TRUE
β Consolidated Acceptance Criteria
- The CSA authorization processing is complete → the system replaces the cargo record in the database with updated CSA delivery status and authorization received 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_UpdateCargoRecordwithCSAStatus(["Start Step"])
E_UpdateCargoRecordwithCSAStatus(["End Step"])
N_UpdateCargoRecordwithCSAStatus_Node0{"The CSA authorization processing is
complete"}:::decision N_UpdateCargoRecordwithCSAStatus_Node0_action["The system replaces the cargo
record in the database with updated
CSA delivery status and
authorization received flag"]:::main N_UpdateCargoRecordwithCSAStatus_Node0 -- Yes --> N_UpdateCargoRecordwithCSAStatus_Node0_action N_UpdateCargoRecordwithCSAStatus_Node0_action --> E_UpdateCargoRecordwithCSAStatus S_UpdateCargoRecordwithCSAStatus --> N_UpdateCargoRecordwithCSAStatus_Node0 N_UpdateCargoRecordwithCSAStatus_Node0 -- No --> E_UpdateCargoRecordwithCSAStatus
complete"}:::decision N_UpdateCargoRecordwithCSAStatus_Node0_action["The system replaces the cargo
record in the database with updated
CSA delivery status and
authorization received flag"]:::main N_UpdateCargoRecordwithCSAStatus_Node0 -- Yes --> N_UpdateCargoRecordwithCSAStatus_Node0_action N_UpdateCargoRecordwithCSAStatus_Node0_action --> E_UpdateCargoRecordwithCSAStatus S_UpdateCargoRecordwithCSAStatus --> N_UpdateCargoRecordwithCSAStatus_Node0 N_UpdateCargoRecordwithCSAStatus_Node0 -- No --> E_UpdateCargoRecordwithCSAStatus
File: GCX126R.cbl
GIVEN:
A cargo record with CSA status and authorization flag set
WHEN:
The CSA authorization processing is complete
THEN:
- The system replaces the cargo record in the database with updated csa delivery status
- Authorization received flag
β Consolidated Acceptance Criteria
- If the non-CSA cargo → the system logs 'EDI 350: NOT ACCEPTED - NON-CSA' message to the cargo information log without updating cargo status
- The system logs the non-CSA rejection → the system creates a log message 'EDI 350: NOT ACCEPTED - NON-CSA' AND includes the current machine date in format CCYYMMDD AND includes the current machine time in format HHMMSS AND includes the current CCN key (WS-CURRENT-CCN-KEY) AND sets the cargo type indicator to CA-CARGO AND sets the action code to 'LOG-USE-INPUT-MESSAGE' AND spawns a GCT1051E 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_LogMessageEDI350NOTACCEPTEDNONCSA(["Start Step"])
E_LogMessageEDI350NOTACCEPTEDNONCSA(["End Step"])
N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0{"The system evaluates the non-CSA
cargo"}:::decision N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0_action["The system logs EDI 350: NOT
ACCEPTED - NON-CSA message to the
cargo information log without
updating cargo status"]:::main N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0 -- Yes --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0_action N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0_action --> E_LogMessageEDI350NOTACCEPTEDNONCSA S_LogMessageEDI350NOTACCEPTEDNONCSA --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0 N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1{"The system logs the non-CSA
rejection"}:::decision N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1_action["The system creates a log message
EDI 350: NOT ACCEPTED - NON-CSA AND
includes the current machine date in
format CCYYMMDD AND includes the
current machine time in format
HHMMSS AND includes the current CCN
key WS-CURRENT-CCN-KEY AND sets the
cargo type indicator to CA-CARGO AND
sets the action code to
LOG-USE-INPUT-MESSAGE AND spawns a
GCT1051E log entry"]:::main N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1 -- Yes --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1_action N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1_action --> E_LogMessageEDI350NOTACCEPTEDNONCSA N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0 -- No --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1 N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1 -- No --> E_LogMessageEDI350NOTACCEPTEDNONCSA
cargo"}:::decision N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0_action["The system logs EDI 350: NOT
ACCEPTED - NON-CSA message to the
cargo information log without
updating cargo status"]:::main N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0 -- Yes --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0_action N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0_action --> E_LogMessageEDI350NOTACCEPTEDNONCSA S_LogMessageEDI350NOTACCEPTEDNONCSA --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0 N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1{"The system logs the non-CSA
rejection"}:::decision N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1_action["The system creates a log message
EDI 350: NOT ACCEPTED - NON-CSA AND
includes the current machine date in
format CCYYMMDD AND includes the
current machine time in format
HHMMSS AND includes the current CCN
key WS-CURRENT-CCN-KEY AND sets the
cargo type indicator to CA-CARGO AND
sets the action code to
LOG-USE-INPUT-MESSAGE AND spawns a
GCT1051E log entry"]:::main N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1 -- Yes --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1_action N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1_action --> E_LogMessageEDI350NOTACCEPTEDNONCSA N_LogMessageEDI350NOTACCEPTEDNONCSA_Node0 -- No --> N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1 N_LogMessageEDI350NOTACCEPTEDNONCSA_Node1 -- No --> E_LogMessageEDI350NOTACCEPTEDNONCSA
File: GCX126R.cbl
GIVEN:
A cargo record with CSA indicator OFF and authorization to deliver status from EDI 350
WHEN:
The system evaluates the non-CSA cargo
THEN:
The system logs 'EDI 350: NOT ACCEPTED - NON-CSA' message to the cargo information log without updating cargo status
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The cargo is not a CSA manifest (GCCC-CSA-IND-ON is false) AND an authorization to deliver message is being processed
WHEN:
The system logs the non-CSA rejection
THEN:
- The system creates a log message 'edi 350: not accepted - non-csa' and includes the current machine date in format ccyymmdd
- Includes the current machine time in format hhmmss
- Includes the current ccn key (ws-current-ccn-key) and sets the cargo type indicator to ca-cargo
- Sets the action code to 'log-use-input-message' and spawns a gct1051e log entry
β Consolidated Acceptance Criteria
- The authorization processing is complete → the system searches for US cargo records matching the car ID and waybill number, and if found and not deleted and no train created, logs a message 'CDN CCN RLSED BY EDI 350' with the Canadian CCN to the US cargo 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_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN(["Start Step"])
E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN(["End Step"])
N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0{"The authorization processing is
complete"}:::decision N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0_action["The system searches for US cargo
records matching the car ID and
waybill number, and if found and not
deleted and no train created, logs a
message CDN CCN RLSED BY EDI 350
with the Canadian CCN to the US
cargo log entry"]:::main N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0 -- Yes --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0_action N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0_action --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN S_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0 N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0 -- No --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN
complete"}:::decision N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0_action["The system searches for US cargo
records matching the car ID and
waybill number, and if found and not
deleted and no train created, logs a
message CDN CCN RLSED BY EDI 350
with the Canadian CCN to the US
cargo log entry"]:::main N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0 -- Yes --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0_action N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0_action --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN S_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN --> N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0 N_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN_Node0 -- No --> E_ProcessAssociatedUSManifestFindUSCargobyCarIDandWaybillLogReleaseMessagetoUSCCNReferenceCanadianCCN
File: GCX126R.cbl
GIVEN:
A cargo record with authorization to deliver status and associated equipment car ID and waybill number
WHEN:
The authorization processing is complete
THEN:
- The system searches for us cargo records matching the car id
- Waybill number, and if found
- Not deleted
- No train created, logs a message 'cdn ccn rlsed by edi 350' with the canadian ccn to the us cargo log entry
β Consolidated Acceptance Criteria
- The cargo hold processing is initiated → the system logs the message 'EDI 350: GOODS HELD FOR EXAMINATION' to the cargo information 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_LogMessageEDI350GOODSHELDFOREXAMINATION(["Start Step"])
E_LogMessageEDI350GOODSHELDFOREXAMINATION(["End Step"])
N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0{"The cargo hold processing is
initiated"}:::decision N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0_action["The system logs the message EDI
350: GOODS HELD FOR EXAMINATION to
the cargo information log"]:::main N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0 -- Yes --> N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0_action N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0_action --> E_LogMessageEDI350GOODSHELDFOREXAMINATION S_LogMessageEDI350GOODSHELDFOREXAMINATION --> N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0 N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0 -- No --> E_LogMessageEDI350GOODSHELDFOREXAMINATION
initiated"}:::decision N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0_action["The system logs the message EDI
350: GOODS HELD FOR EXAMINATION to
the cargo information log"]:::main N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0 -- Yes --> N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0_action N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0_action --> E_LogMessageEDI350GOODSHELDFOREXAMINATION S_LogMessageEDI350GOODSHELDFOREXAMINATION --> N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0 N_LogMessageEDI350GOODSHELDFOREXAMINATION_Node0 -- No --> E_LogMessageEDI350GOODSHELDFOREXAMINATION
File: GCX126R.cbl
GIVEN:
An EDI 350 message with V9 notice reason code indicating HELD status has been received for a cargo
WHEN:
The cargo hold processing is initiated
THEN:
The system logs the message 'EDI 350: GOODS HELD FOR EXAMINATION' to the cargo information log
β Consolidated Acceptance Criteria
- The hold status processing is executed → the cargo status is set to HOLD in 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_SetCargoStatustoHOLD(["Start Step"])
E_SetCargoStatustoHOLD(["End Step"])
N_SetCargoStatustoHOLD_Node0{"The hold status processing is
executed"}:::decision N_SetCargoStatustoHOLD_Node0_action["The cargo status is set to HOLD in
the cargo record"]:::main N_SetCargoStatustoHOLD_Node0 -- Yes --> N_SetCargoStatustoHOLD_Node0_action N_SetCargoStatustoHOLD_Node0_action --> E_SetCargoStatustoHOLD S_SetCargoStatustoHOLD --> N_SetCargoStatustoHOLD_Node0 N_SetCargoStatustoHOLD_Node0 -- No --> E_SetCargoStatustoHOLD
executed"}:::decision N_SetCargoStatustoHOLD_Node0_action["The cargo status is set to HOLD in
the cargo record"]:::main N_SetCargoStatustoHOLD_Node0 -- Yes --> N_SetCargoStatustoHOLD_Node0_action N_SetCargoStatustoHOLD_Node0_action --> E_SetCargoStatustoHOLD S_SetCargoStatustoHOLD --> N_SetCargoStatustoHOLD_Node0 N_SetCargoStatustoHOLD_Node0 -- No --> E_SetCargoStatustoHOLD
File: GCX126R.cbl
GIVEN:
A cargo record exists in the system and customs has issued a hold notice via EDI 350
WHEN:
The hold status processing is executed
THEN:
The cargo status is set to HOLD in the cargo record
β Consolidated Acceptance Criteria
- The system checks the first 4 characters of the CCN (Cargo Control Number) → if the CCN starts with '6105', the system proceeds to prepare a hold notification email; otherwise, the hold processing 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_CCNPrefix6105(["Start Step"])
E_CCNPrefix6105(["End Step"])
N_CCNPrefix6105_Node0{"The system checks the first 4
characters of the CCN Cargo Control
Number"}:::decision N_CCNPrefix6105_Node0_action["If the CCN starts with 6105 , the
system proceeds to prepare a hold
notification email otherwise, the
hold processing is complete"]:::main N_CCNPrefix6105_Node0 -- Yes --> N_CCNPrefix6105_Node0_action N_CCNPrefix6105_Node0_action --> E_CCNPrefix6105 S_CCNPrefix6105 --> N_CCNPrefix6105_Node0 N_CCNPrefix6105_Node0 -- No --> E_CCNPrefix6105
characters of the CCN Cargo Control
Number"}:::decision N_CCNPrefix6105_Node0_action["If the CCN starts with 6105 , the
system proceeds to prepare a hold
notification email otherwise, the
hold processing is complete"]:::main N_CCNPrefix6105_Node0 -- Yes --> N_CCNPrefix6105_Node0_action N_CCNPrefix6105_Node0_action --> E_CCNPrefix6105 S_CCNPrefix6105 --> N_CCNPrefix6105_Node0 N_CCNPrefix6105_Node0 -- No --> E_CCNPrefix6105
File: GCX126R.cbl
GIVEN:
A cargo has been placed on hold by customs
WHEN:
The system checks the first 4 characters of the CCN (Cargo Control Number)
THEN:
If the CCN starts with '6105', the system proceeds to prepare a hold notification email; otherwise, the hold processing is complete
β Consolidated Acceptance Criteria
- The hold notification preparation is executed → the system creates an email with subject 'CBSA CARGO HOLD - [CCN]' and body containing: line 1 - 'Cargo on HOLD for inspection by CBSA - EDI350', line 3 - 'Equipment: [Equipment ID]', line 4 - 'Waybill: [Carrier][Origin Station][Waybill Number]', line 5 - 'CCN: [CCN]', line 6 - 'DESTINATION: [Destination Station Name], [State Code]', line 7 - 'MANIFEST UPON: [Manifest Station 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_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation(["Start Step"])
E_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation(["End Step"])
N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0{"The hold notification preparation
is executed"}:::decision N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0_action["The system creates an email with
subject CBSA CARGO HOLD - CCN and
body containing: line 1 - Cargo on
HOLD for inspection by CBSA - EDI350
, line 3 - Equipment: Equipment ID ,
line 4 - Waybill: CarrierOrigin
StationWaybill Number , line 5 -
CCN: CCN , line 6 - DESTINATION:
Destination Station Name, State Code
, line 7 - MANIFEST UPON: Manifest
Station Name"]:::main N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0 -- Yes --> N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0_action N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0_action --> E_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation S_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation --> N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0 N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0 -- No --> E_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation
is executed"}:::decision N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0_action["The system creates an email with
subject CBSA CARGO HOLD - CCN and
body containing: line 1 - Cargo on
HOLD for inspection by CBSA - EDI350
, line 3 - Equipment: Equipment ID ,
line 4 - Waybill: CarrierOrigin
StationWaybill Number , line 5 -
CCN: CCN , line 6 - DESTINATION:
Destination Station Name, State Code
, line 7 - MANIFEST UPON: Manifest
Station Name"]:::main N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0 -- Yes --> N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0_action N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0_action --> E_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation S_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation --> N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0 N_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation_Node0 -- No --> E_PrepareHoldEmailSubjectCBSACARGOHOLDEquipmentIDWaybillNumberCCNDestinationStationManifestStation
File: GCX126R.cbl
GIVEN:
A cargo with CCN starting with '6105' has been placed on hold
WHEN:
The hold notification preparation is executed
THEN:
The system creates an email with subject 'CBSA CARGO HOLD - [CCN]' and body containing: line 1 - 'Cargo on HOLD for inspection by CBSA - EDI350', line 3 - 'Equipment: [Equipment ID]', line 4 - 'Waybill: [Carrier][Origin Station][Waybill Number]', line 5 - 'CCN: [CCN]', line 6 - 'DESTINATION: [Destination Station Name], [State Code]', line 7 - 'MANIFEST UPON: [Manifest Station Name]'
β Consolidated Acceptance Criteria
- The email routing is configured → the system sets the destination filename to 'CAHOLD', sets the primary recipient to 'OM01247', and sets the message type indicator to 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_SetEmailRouteFilenameCAHOLDToOM01247(["Start Step"])
E_SetEmailRouteFilenameCAHOLDToOM01247(["End Step"])
N_SetEmailRouteFilenameCAHOLDToOM01247_Node0{"The email routing is configured"}:::decision
N_SetEmailRouteFilenameCAHOLDToOM01247_Node0_action["The system sets the destination
filename to CAHOLD , sets the
primary recipient to OM01247 , and
sets the message type indicator to
HOLD"]:::main N_SetEmailRouteFilenameCAHOLDToOM01247_Node0 -- Yes --> N_SetEmailRouteFilenameCAHOLDToOM01247_Node0_action N_SetEmailRouteFilenameCAHOLDToOM01247_Node0_action --> E_SetEmailRouteFilenameCAHOLDToOM01247 S_SetEmailRouteFilenameCAHOLDToOM01247 --> N_SetEmailRouteFilenameCAHOLDToOM01247_Node0 N_SetEmailRouteFilenameCAHOLDToOM01247_Node0 -- No --> E_SetEmailRouteFilenameCAHOLDToOM01247
filename to CAHOLD , sets the
primary recipient to OM01247 , and
sets the message type indicator to
HOLD"]:::main N_SetEmailRouteFilenameCAHOLDToOM01247_Node0 -- Yes --> N_SetEmailRouteFilenameCAHOLDToOM01247_Node0_action N_SetEmailRouteFilenameCAHOLDToOM01247_Node0_action --> E_SetEmailRouteFilenameCAHOLDToOM01247 S_SetEmailRouteFilenameCAHOLDToOM01247 --> N_SetEmailRouteFilenameCAHOLDToOM01247_Node0 N_SetEmailRouteFilenameCAHOLDToOM01247_Node0 -- No --> E_SetEmailRouteFilenameCAHOLDToOM01247
File: GCX126R.cbl
GIVEN:
The hold notification email content has been prepared
WHEN:
The email routing is configured
THEN:
The system sets the destination filename to 'CAHOLD', sets the primary recipient to 'OM01247', and sets the message type indicator to HOLD
β Consolidated Acceptance Criteria
- The email send operation is invoked → the system calls EMCSEND2 program to transmit the hold notification email with the prepared content 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_SendEmailNotificationviaEMCSEND2(["Start Step"])
E_SendEmailNotificationviaEMCSEND2(["End Step"])
N_SendEmailNotificationviaEMCSEND2_Node0{"The email send operation is invoked"}:::decision
N_SendEmailNotificationviaEMCSEND2_Node0_action["The system calls EMCSEND2 program
to transmit the hold notification
email with the prepared content and
routing information"]:::main N_SendEmailNotificationviaEMCSEND2_Node0 -- Yes --> N_SendEmailNotificationviaEMCSEND2_Node0_action N_SendEmailNotificationviaEMCSEND2_Node0_action --> E_SendEmailNotificationviaEMCSEND2 S_SendEmailNotificationviaEMCSEND2 --> N_SendEmailNotificationviaEMCSEND2_Node0 N_SendEmailNotificationviaEMCSEND2_Node0 -- No --> E_SendEmailNotificationviaEMCSEND2
to transmit the hold notification
email with the prepared content and
routing information"]:::main N_SendEmailNotificationviaEMCSEND2_Node0 -- Yes --> N_SendEmailNotificationviaEMCSEND2_Node0_action N_SendEmailNotificationviaEMCSEND2_Node0_action --> E_SendEmailNotificationviaEMCSEND2 S_SendEmailNotificationviaEMCSEND2 --> N_SendEmailNotificationviaEMCSEND2_Node0 N_SendEmailNotificationviaEMCSEND2_Node0 -- No --> E_SendEmailNotificationviaEMCSEND2
File: GCX126R.cbl
GIVEN:
The hold notification email has been prepared with routing parameters set to CAHOLD destination and OM01247 recipient
WHEN:
The email send operation is invoked
THEN:
- The system calls emcsend2 program to transmit the hold notification email with the prepared content
- Routing information
β Consolidated Acceptance Criteria
- If the V9 notice reason code field → if V9-02-DECON is true, proceed with deconsolidation release processing; otherwise, skip deconsolidation processing and continue to next 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_V9NoticeReasonDECON(["Start Step"])
E_V9NoticeReasonDECON(["End Step"])
N_V9NoticeReasonDECON_Node0{"The system evaluates the V9 notice
reason code field"}:::decision N_V9NoticeReasonDECON_Node0_action["If V9-02-DECON is true, proceed
with deconsolidation release
processing otherwise, skip
deconsolidation processing and
continue to next evaluation"]:::main N_V9NoticeReasonDECON_Node0 -- Yes --> N_V9NoticeReasonDECON_Node0_action N_V9NoticeReasonDECON_Node0_action --> E_V9NoticeReasonDECON S_V9NoticeReasonDECON --> N_V9NoticeReasonDECON_Node0 N_V9NoticeReasonDECON_Node0 -- No --> E_V9NoticeReasonDECON
reason code field"}:::decision N_V9NoticeReasonDECON_Node0_action["If V9-02-DECON is true, proceed
with deconsolidation release
processing otherwise, skip
deconsolidation processing and
continue to next evaluation"]:::main N_V9NoticeReasonDECON_Node0 -- Yes --> N_V9NoticeReasonDECON_Node0_action N_V9NoticeReasonDECON_Node0_action --> E_V9NoticeReasonDECON S_V9NoticeReasonDECON --> N_V9NoticeReasonDECON_Node0 N_V9NoticeReasonDECON_Node0 -- No --> E_V9NoticeReasonDECON
File: GCX126R.cbl
GIVEN:
An EDI 350 message has been received and parsed with V9 segment containing notice reason code
WHEN:
The system evaluates the V9 notice reason code field
THEN:
- If v9-02-decon is true, proceed with deconsolidation release processing; otherwise, skip deconsolidation processing
- Continue to next evaluation
β Consolidated Acceptance Criteria
- The system logs the deconsolidation release event → construct message 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4-01-PORT-CDE (first 4 characters), store in WS-GCX105-INFO-MSG, and perform Z150-LOG-CARGO-INFO-MSG to create audit 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_LogMessageRELEASEVIADECONATPORTPortCode(["Start Step"])
E_LogMessageRELEASEVIADECONATPORTPortCode(["End Step"])
N_LogMessageRELEASEVIADECONATPORTPortCode_Node0{"The system logs the deconsolidation
release event"}:::decision N_LogMessageRELEASEVIADECONATPORTPortCode_Node0_action["Construct message EDI 350: RELEASE
VIA DECON AT PORT concatenated with
P4-01-PORT-CDE first 4 characters,
store in WS-GCX105-INFO-MSG, and
perform Z150-LOG-CARGO-INFO-MSG to
create audit log entry"]:::main N_LogMessageRELEASEVIADECONATPORTPortCode_Node0 -- Yes --> N_LogMessageRELEASEVIADECONATPORTPortCode_Node0_action N_LogMessageRELEASEVIADECONATPORTPortCode_Node0_action --> E_LogMessageRELEASEVIADECONATPORTPortCode S_LogMessageRELEASEVIADECONATPORTPortCode --> N_LogMessageRELEASEVIADECONATPORTPortCode_Node0 N_LogMessageRELEASEVIADECONATPORTPortCode_Node0 -- No --> E_LogMessageRELEASEVIADECONATPORTPortCode
release event"}:::decision N_LogMessageRELEASEVIADECONATPORTPortCode_Node0_action["Construct message EDI 350: RELEASE
VIA DECON AT PORT concatenated with
P4-01-PORT-CDE first 4 characters,
store in WS-GCX105-INFO-MSG, and
perform Z150-LOG-CARGO-INFO-MSG to
create audit log entry"]:::main N_LogMessageRELEASEVIADECONATPORTPortCode_Node0 -- Yes --> N_LogMessageRELEASEVIADECONATPORTPortCode_Node0_action N_LogMessageRELEASEVIADECONATPORTPortCode_Node0_action --> E_LogMessageRELEASEVIADECONATPORTPortCode S_LogMessageRELEASEVIADECONATPORTPortCode --> N_LogMessageRELEASEVIADECONATPORTPortCode_Node0 N_LogMessageRELEASEVIADECONATPORTPortCode_Node0 -- No --> E_LogMessageRELEASEVIADECONATPORTPortCode
File: GCX126R.cbl
GIVEN:
Deconsolidation release information has been set and P4 segment contains port code
WHEN:
The system logs the deconsolidation release event
THEN:
Construct message 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with P4-01-PORT-CDE (first 4 characters), store in WS-GCX105-INFO-MSG, and perform Z150-LOG-CARGO-INFO-MSG to create audit log entry
β Consolidated Acceptance Criteria
- The system updates the release reason for deconsolidation → construct string 'DECONSOLIDATION AT ' concatenated with P4-01-PORT-CDE (first 4 characters) and store in GCCC-RELEASE-REASON 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_UpdateReleaseReasonDECONSOLIDATIONATPortCode(["Start Step"])
E_UpdateReleaseReasonDECONSOLIDATIONATPortCode(["End Step"])
N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0{"The system updates the release
reason for deconsolidation"}:::decision N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0_action["Construct string DECONSOLIDATION AT
concatenated with P4-01-PORT-CDE
first 4 characters and store in
GCCC-RELEASE-REASON field"]:::main N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0 -- Yes --> N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0_action N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0_action --> E_UpdateReleaseReasonDECONSOLIDATIONATPortCode S_UpdateReleaseReasonDECONSOLIDATIONATPortCode --> N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0 N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0 -- No --> E_UpdateReleaseReasonDECONSOLIDATIONATPortCode
reason for deconsolidation"}:::decision N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0_action["Construct string DECONSOLIDATION AT
concatenated with P4-01-PORT-CDE
first 4 characters and store in
GCCC-RELEASE-REASON field"]:::main N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0 -- Yes --> N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0_action N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0_action --> E_UpdateReleaseReasonDECONSOLIDATIONATPortCode S_UpdateReleaseReasonDECONSOLIDATIONATPortCode --> N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0 N_UpdateReleaseReasonDECONSOLIDATIONATPortCode_Node0 -- No --> E_UpdateReleaseReasonDECONSOLIDATIONATPortCode
File: GCX126R.cbl
GIVEN:
P4 segment contains the port code where deconsolidation occurred
WHEN:
The system updates the release reason for deconsolidation
THEN:
Construct string 'DECONSOLIDATION AT ' concatenated with P4-01-PORT-CDE (first 4 characters) and store in GCCC-RELEASE-REASON field
β Consolidated Acceptance Criteria
- The system saves the release date and time → move GCCC-RELEASE-DATE to HOLD-DATE and move GCCC-RELEASE-TIME to HOLD-TIME
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveReleaseDateTimetoHoldVariables(["Start Step"])
E_SaveReleaseDateTimetoHoldVariables(["End Step"])
N_SaveReleaseDateTimetoHoldVariables_Node0{"The system saves the release date
and time"}:::decision N_SaveReleaseDateTimetoHoldVariables_Node0_action["Move GCCC-RELEASE-DATE to HOLD-DATE
and move GCCC-RELEASE-TIME to
HOLD-TIME"]:::main N_SaveReleaseDateTimetoHoldVariables_Node0 -- Yes --> N_SaveReleaseDateTimetoHoldVariables_Node0_action N_SaveReleaseDateTimetoHoldVariables_Node0_action --> E_SaveReleaseDateTimetoHoldVariables S_SaveReleaseDateTimetoHoldVariables --> N_SaveReleaseDateTimetoHoldVariables_Node0 N_SaveReleaseDateTimetoHoldVariables_Node0 -- No --> E_SaveReleaseDateTimetoHoldVariables
and time"}:::decision N_SaveReleaseDateTimetoHoldVariables_Node0_action["Move GCCC-RELEASE-DATE to HOLD-DATE
and move GCCC-RELEASE-TIME to
HOLD-TIME"]:::main N_SaveReleaseDateTimetoHoldVariables_Node0 -- Yes --> N_SaveReleaseDateTimetoHoldVariables_Node0_action N_SaveReleaseDateTimetoHoldVariables_Node0_action --> E_SaveReleaseDateTimetoHoldVariables S_SaveReleaseDateTimetoHoldVariables --> N_SaveReleaseDateTimetoHoldVariables_Node0 N_SaveReleaseDateTimetoHoldVariables_Node0 -- No --> E_SaveReleaseDateTimetoHoldVariables
File: GCX126R.cbl
GIVEN:
Cargo release date and time have been set in GCCC-RELEASE-DATE and GCCC-RELEASE-TIME
WHEN:
- The system saves the release date
- Time
THEN:
- Move gccc-release-date to hold-date
- Move gccc-release-time to hold-time
β Consolidated Acceptance Criteria
- The system prepares to process each follower manifest → the loop counter J is set to 1 to begin processing from the first follower manifest 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_InitializeLoopCounterJto1(["Start Step"])
E_InitializeLoopCounterJto1(["End Step"])
N_InitializeLoopCounterJto1_Node0{"The system prepares to process each
follower manifest"}:::decision N_InitializeLoopCounterJto1_Node0_action["The loop counter J is set to 1 to
begin processing from the first
follower manifest in the array"]:::main N_InitializeLoopCounterJto1_Node0 -- Yes --> N_InitializeLoopCounterJto1_Node0_action N_InitializeLoopCounterJto1_Node0_action --> E_InitializeLoopCounterJto1 S_InitializeLoopCounterJto1 --> N_InitializeLoopCounterJto1_Node0 N_InitializeLoopCounterJto1_Node0 -- No --> E_InitializeLoopCounterJto1
follower manifest"}:::decision N_InitializeLoopCounterJto1_Node0_action["The loop counter J is set to 1 to
begin processing from the first
follower manifest in the array"]:::main N_InitializeLoopCounterJto1_Node0 -- Yes --> N_InitializeLoopCounterJto1_Node0_action N_InitializeLoopCounterJto1_Node0_action --> E_InitializeLoopCounterJto1 S_InitializeLoopCounterJto1 --> N_InitializeLoopCounterJto1_Node0 N_InitializeLoopCounterJto1_Node0 -- No --> E_InitializeLoopCounterJto1
File: GCX126R.cbl
GIVEN:
At least one follower manifest CCN has been stored in the follower array
WHEN:
The system prepares to process each follower manifest
THEN:
The loop counter J is set to 1 to begin processing from the first follower manifest in the array
β Consolidated Acceptance Criteria
- The system builds the release message → the message is formatted as 'EDI 350: RELEASE VIA DECON AT PORT' followed by the port code from the P4 segment (first 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_BuildReleaseMessage(["Start Step"])
E_BuildReleaseMessage(["End Step"])
N_BuildReleaseMessage_Node0{"The system builds the release
message"}:::decision N_BuildReleaseMessage_Node0_action["The message is formatted as EDI
350: RELEASE VIA DECON AT PORT
followed by the port code from the
P4 segment first 4 characters"]:::main N_BuildReleaseMessage_Node0 -- Yes --> N_BuildReleaseMessage_Node0_action N_BuildReleaseMessage_Node0_action --> E_BuildReleaseMessage S_BuildReleaseMessage --> N_BuildReleaseMessage_Node0 N_BuildReleaseMessage_Node0 -- No --> E_BuildReleaseMessage
message"}:::decision N_BuildReleaseMessage_Node0_action["The message is formatted as EDI
350: RELEASE VIA DECON AT PORT
followed by the port code from the
P4 segment first 4 characters"]:::main N_BuildReleaseMessage_Node0 -- Yes --> N_BuildReleaseMessage_Node0_action N_BuildReleaseMessage_Node0_action --> E_BuildReleaseMessage S_BuildReleaseMessage --> N_BuildReleaseMessage_Node0 N_BuildReleaseMessage_Node0 -- No --> E_BuildReleaseMessage
File: GCX126R.cbl
GIVEN:
Release information has been applied to the follower cargo record
WHEN:
The system builds the release message
THEN:
The message is formatted as 'EDI 350: RELEASE VIA DECON AT PORT' followed by the port code from the P4 segment (first 4 characters)
β Consolidated Acceptance Criteria
- The system sets the release reason → the release reason field is populated with 'DECONSOLIDATION AT' followed by the port code from the P4 segment (first 4 characters)
- The system updates the cargo release reason field → the text 'DECONSOLIDATION AT ' is concatenated with P4-01-PORT-CDE (first 4 characters) into GCCC-RELEASE-REASON
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseReasonwithDeconsolidationPort(["Start Step"])
E_SetReleaseReasonwithDeconsolidationPort(["End Step"])
N_SetReleaseReasonwithDeconsolidationPort_Node0{"The system sets the release reason"}:::decision
N_SetReleaseReasonwithDeconsolidationPort_Node0_action["The release reason field is
populated with DECONSOLIDATION AT
followed by the port code from the
P4 segment first 4 characters"]:::main N_SetReleaseReasonwithDeconsolidationPort_Node0 -- Yes --> N_SetReleaseReasonwithDeconsolidationPort_Node0_action N_SetReleaseReasonwithDeconsolidationPort_Node0_action --> E_SetReleaseReasonwithDeconsolidationPort S_SetReleaseReasonwithDeconsolidationPort --> N_SetReleaseReasonwithDeconsolidationPort_Node0 N_SetReleaseReasonwithDeconsolidationPort_Node1{"The system updates the cargo
release reason field"}:::decision N_SetReleaseReasonwithDeconsolidationPort_Node1_action["The text DECONSOLIDATION AT is
concatenated with P4-01-PORT-CDE
first 4 characters into
GCCC-RELEASE-REASON"]:::main N_SetReleaseReasonwithDeconsolidationPort_Node1 -- Yes --> N_SetReleaseReasonwithDeconsolidationPort_Node1_action N_SetReleaseReasonwithDeconsolidationPort_Node1_action --> E_SetReleaseReasonwithDeconsolidationPort N_SetReleaseReasonwithDeconsolidationPort_Node0 -- No --> N_SetReleaseReasonwithDeconsolidationPort_Node1 N_SetReleaseReasonwithDeconsolidationPort_Node1 -- No --> E_SetReleaseReasonwithDeconsolidationPort
populated with DECONSOLIDATION AT
followed by the port code from the
P4 segment first 4 characters"]:::main N_SetReleaseReasonwithDeconsolidationPort_Node0 -- Yes --> N_SetReleaseReasonwithDeconsolidationPort_Node0_action N_SetReleaseReasonwithDeconsolidationPort_Node0_action --> E_SetReleaseReasonwithDeconsolidationPort S_SetReleaseReasonwithDeconsolidationPort --> N_SetReleaseReasonwithDeconsolidationPort_Node0 N_SetReleaseReasonwithDeconsolidationPort_Node1{"The system updates the cargo
release reason field"}:::decision N_SetReleaseReasonwithDeconsolidationPort_Node1_action["The text DECONSOLIDATION AT is
concatenated with P4-01-PORT-CDE
first 4 characters into
GCCC-RELEASE-REASON"]:::main N_SetReleaseReasonwithDeconsolidationPort_Node1 -- Yes --> N_SetReleaseReasonwithDeconsolidationPort_Node1_action N_SetReleaseReasonwithDeconsolidationPort_Node1_action --> E_SetReleaseReasonwithDeconsolidationPort N_SetReleaseReasonwithDeconsolidationPort_Node0 -- No --> N_SetReleaseReasonwithDeconsolidationPort_Node1 N_SetReleaseReasonwithDeconsolidationPort_Node1 -- No --> E_SetReleaseReasonwithDeconsolidationPort
File: GCX126R.cbl
GIVEN:
The release message has been built for the follower manifest
WHEN:
The system sets the release reason
THEN:
The release reason field is populated with 'DECONSOLIDATION AT' followed by the port code from the P4 segment (first 4 characters)
File: GCX126R.cbl
GIVEN:
The follower manifest has a deconsolidation notice reason code (V9-02-DECON) AND P4 segment contains port code
WHEN:
The system updates the cargo release reason field
THEN:
The text 'DECONSOLIDATION AT ' is concatenated with P4-01-PORT-CDE (first 4 characters) into GCCC-RELEASE-REASON
β Consolidated Acceptance Criteria
- The system logs the release message → the current follower CCN key is set as the current CCN key AND the release message is logged to the cargo information message log with current date, time, user ID, and action 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_LogReleaseMessagetoFollowerCCN(["Start Step"])
E_LogReleaseMessagetoFollowerCCN(["End Step"])
N_LogReleaseMessagetoFollowerCCN_Node0{"The system logs the release message"}:::decision
N_LogReleaseMessagetoFollowerCCN_Node0_action["The current follower CCN key is set
as the current CCN key AND the
release message is logged to the
cargo information message log with
current date, time, user ID, and
action code"]:::main N_LogReleaseMessagetoFollowerCCN_Node0 -- Yes --> N_LogReleaseMessagetoFollowerCCN_Node0_action N_LogReleaseMessagetoFollowerCCN_Node0_action --> E_LogReleaseMessagetoFollowerCCN S_LogReleaseMessagetoFollowerCCN --> N_LogReleaseMessagetoFollowerCCN_Node0 N_LogReleaseMessagetoFollowerCCN_Node0 -- No --> E_LogReleaseMessagetoFollowerCCN
as the current CCN key AND the
release message is logged to the
cargo information message log with
current date, time, user ID, and
action code"]:::main N_LogReleaseMessagetoFollowerCCN_Node0 -- Yes --> N_LogReleaseMessagetoFollowerCCN_Node0_action N_LogReleaseMessagetoFollowerCCN_Node0_action --> E_LogReleaseMessagetoFollowerCCN S_LogReleaseMessagetoFollowerCCN --> N_LogReleaseMessagetoFollowerCCN_Node0 N_LogReleaseMessagetoFollowerCCN_Node0 -- No --> E_LogReleaseMessagetoFollowerCCN
File: GCX126R.cbl
GIVEN:
The release reason has been set for the follower cargo record
WHEN:
The system logs the release message
THEN:
- The current follower ccn key is set as the current ccn key
- The release message is logged to the cargo information message log with current date, time, user id, and action code
β Consolidated Acceptance Criteria
- The system prepares to process the US manifest → the follower's waybill key for index is saved to the waybill index variable AND the follower's equipment car ID is saved to the current car ID key 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_SaveFollowerWaybillIndex(["Start Step"])
E_SaveFollowerWaybillIndex(["End Step"])
N_SaveFollowerWaybillIndex_Node0{"The system prepares to process the
US manifest"}:::decision N_SaveFollowerWaybillIndex_Node0_action["The follower s waybill key for
index is saved to the waybill index
variable AND the follower s
equipment car ID is saved to the
current car ID key variable"]:::main N_SaveFollowerWaybillIndex_Node0 -- Yes --> N_SaveFollowerWaybillIndex_Node0_action N_SaveFollowerWaybillIndex_Node0_action --> E_SaveFollowerWaybillIndex S_SaveFollowerWaybillIndex --> N_SaveFollowerWaybillIndex_Node0 N_SaveFollowerWaybillIndex_Node0 -- No --> E_SaveFollowerWaybillIndex
US manifest"}:::decision N_SaveFollowerWaybillIndex_Node0_action["The follower s waybill key for
index is saved to the waybill index
variable AND the follower s
equipment car ID is saved to the
current car ID key variable"]:::main N_SaveFollowerWaybillIndex_Node0 -- Yes --> N_SaveFollowerWaybillIndex_Node0_action N_SaveFollowerWaybillIndex_Node0_action --> E_SaveFollowerWaybillIndex S_SaveFollowerWaybillIndex --> N_SaveFollowerWaybillIndex_Node0 N_SaveFollowerWaybillIndex_Node0 -- No --> E_SaveFollowerWaybillIndex
File: GCX126R.cbl
GIVEN:
The release message has been logged for the follower cargo
WHEN:
The system prepares to process the US manifest
THEN:
- The follower's waybill key for index is saved to the waybill index variable
- The follower's equipment car id is saved to the current car id key variable
β Consolidated Acceptance Criteria
- The system processes the US manifest → the system searches for US cargo records matching the equipment car ID and waybill number, and if found (not deleted and no train created), logs a message indicating the Canadian CCN was released by EDI 350 with the US CCN 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_ProcessAssociatedUSManifestforFollower(["Start Step"])
E_ProcessAssociatedUSManifestforFollower(["End Step"])
N_ProcessAssociatedUSManifestforFollower_Node0{"The system processes the US
manifest"}:::decision N_ProcessAssociatedUSManifestforFollower_Node0_action["The system searches for US cargo
records matching the equipment car
ID and waybill number, and if found
not deleted and no train created,
logs a message indicating the
Canadian CCN was released by EDI 350
with the US CCN reference"]:::main N_ProcessAssociatedUSManifestforFollower_Node0 -- Yes --> N_ProcessAssociatedUSManifestforFollower_Node0_action N_ProcessAssociatedUSManifestforFollower_Node0_action --> E_ProcessAssociatedUSManifestforFollower S_ProcessAssociatedUSManifestforFollower --> N_ProcessAssociatedUSManifestforFollower_Node0 N_ProcessAssociatedUSManifestforFollower_Node0 -- No --> E_ProcessAssociatedUSManifestforFollower
manifest"}:::decision N_ProcessAssociatedUSManifestforFollower_Node0_action["The system searches for US cargo
records matching the equipment car
ID and waybill number, and if found
not deleted and no train created,
logs a message indicating the
Canadian CCN was released by EDI 350
with the US CCN reference"]:::main N_ProcessAssociatedUSManifestforFollower_Node0 -- Yes --> N_ProcessAssociatedUSManifestforFollower_Node0_action N_ProcessAssociatedUSManifestforFollower_Node0_action --> E_ProcessAssociatedUSManifestforFollower S_ProcessAssociatedUSManifestforFollower --> N_ProcessAssociatedUSManifestforFollower_Node0 N_ProcessAssociatedUSManifestforFollower_Node0 -- No --> E_ProcessAssociatedUSManifestforFollower
File: GCX126R.cbl
GIVEN:
The follower cargo waybill index and equipment car ID have been saved
WHEN:
The system processes the US manifest
THEN:
- The system searches for us cargo records matching the equipment car id
- Waybill number, and if found (not deleted
- No train created), logs a message indicating the canadian ccn was released by edi 350 with the us ccn reference
β Consolidated Acceptance Criteria
- The system requests the next US cargo record using the car ID and waybill index with greater than operator → the system retrieves the next sequential US cargo record from 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_CallGCCUSIOtoGetNextUSCargo(["Start Step"])
E_CallGCCUSIOtoGetNextUSCargo(["End Step"])
N_CallGCCUSIOtoGetNextUSCargo_Node0{"The system requests the next US
cargo record using the car ID and
waybill index with greater than
operator"}:::decision N_CallGCCUSIOtoGetNextUSCargo_Node0_action["The system retrieves the next
sequential US cargo record from the
database"]:::main N_CallGCCUSIOtoGetNextUSCargo_Node0 -- Yes --> N_CallGCCUSIOtoGetNextUSCargo_Node0_action N_CallGCCUSIOtoGetNextUSCargo_Node0_action --> E_CallGCCUSIOtoGetNextUSCargo S_CallGCCUSIOtoGetNextUSCargo --> N_CallGCCUSIOtoGetNextUSCargo_Node0 N_CallGCCUSIOtoGetNextUSCargo_Node0 -- No --> E_CallGCCUSIOtoGetNextUSCargo
cargo record using the car ID and
waybill index with greater than
operator"}:::decision N_CallGCCUSIOtoGetNextUSCargo_Node0_action["The system retrieves the next
sequential US cargo record from the
database"]:::main N_CallGCCUSIOtoGetNextUSCargo_Node0 -- Yes --> N_CallGCCUSIOtoGetNextUSCargo_Node0_action N_CallGCCUSIOtoGetNextUSCargo_Node0_action --> E_CallGCCUSIOtoGetNextUSCargo S_CallGCCUSIOtoGetNextUSCargo --> N_CallGCCUSIOtoGetNextUSCargo_Node0 N_CallGCCUSIOtoGetNextUSCargo_Node0 -- No --> E_CallGCCUSIOtoGetNextUSCargo
File: GCX126R.cbl
GIVEN:
A current equipment car ID and waybill number are available for search
WHEN:
- The system requests the next us cargo record using the car id
- Waybill index with greater than operator
THEN:
The system retrieves the next sequential US cargo record from the database
β Consolidated Acceptance Criteria
- The system compares the retrieved record's car ID (first 12 characters) and waybill number against current values → if both car ID and waybill match, the record is valid for processing; otherwise, it indicates end of matching 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_CarIDandWaybillMatchCurrent(["Start Step"])
E_CarIDandWaybillMatchCurrent(["End Step"])
N_CarIDandWaybillMatchCurrent_Node0{"The system compares the retrieved
record s car ID first 12 characters
and waybill number against current
values"}:::decision N_CarIDandWaybillMatchCurrent_Node0_action["If both car ID and waybill match,
the record is valid for processing
otherwise, it indicates end of
matching records"]:::main N_CarIDandWaybillMatchCurrent_Node0 -- Yes --> N_CarIDandWaybillMatchCurrent_Node0_action N_CarIDandWaybillMatchCurrent_Node0_action --> E_CarIDandWaybillMatchCurrent S_CarIDandWaybillMatchCurrent --> N_CarIDandWaybillMatchCurrent_Node0 N_CarIDandWaybillMatchCurrent_Node0 -- No --> E_CarIDandWaybillMatchCurrent
record s car ID first 12 characters
and waybill number against current
values"}:::decision N_CarIDandWaybillMatchCurrent_Node0_action["If both car ID and waybill match,
the record is valid for processing
otherwise, it indicates end of
matching records"]:::main N_CarIDandWaybillMatchCurrent_Node0 -- Yes --> N_CarIDandWaybillMatchCurrent_Node0_action N_CarIDandWaybillMatchCurrent_Node0_action --> E_CarIDandWaybillMatchCurrent S_CarIDandWaybillMatchCurrent --> N_CarIDandWaybillMatchCurrent_Node0 N_CarIDandWaybillMatchCurrent_Node0 -- No --> E_CarIDandWaybillMatchCurrent
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved and current equipment car ID (first 12 characters) and waybill number are known
WHEN:
The system compares the retrieved record's car ID (first 12 characters) and waybill number against current values
THEN:
- If both car id
- Waybill match, the record is valid for processing; otherwise, it indicates end of matching records
β Consolidated Acceptance Criteria
- The release information is being set → the destination station number index field is set to spaces AND the destination station number for index field 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_ClearDestinationStation(["Start Step"])
E_ClearDestinationStation(["End Step"])
N_ClearDestinationStation_Node0{"The release information is being
set"}:::decision N_ClearDestinationStation_Node0_action["The destination station number
index field is set to spaces AND the
destination station number for index
field is set to spaces"]:::main N_ClearDestinationStation_Node0 -- Yes --> N_ClearDestinationStation_Node0_action N_ClearDestinationStation_Node0_action --> E_ClearDestinationStation S_ClearDestinationStation --> N_ClearDestinationStation_Node0 N_ClearDestinationStation_Node0 -- No --> E_ClearDestinationStation
set"}:::decision N_ClearDestinationStation_Node0_action["The destination station number
index field is set to spaces AND the
destination station number for index
field is set to spaces"]:::main N_ClearDestinationStation_Node0 -- Yes --> N_ClearDestinationStation_Node0_action N_ClearDestinationStation_Node0_action --> E_ClearDestinationStation S_ClearDestinationStation --> N_ClearDestinationStation_Node0 N_ClearDestinationStation_Node0 -- No --> E_ClearDestinationStation
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
- The destination station number index field is set to spaces
- The destination station number for index field is set to spaces
β Consolidated Acceptance Criteria
- The release information is being set → the cargo release date field is set to the current machine date from the 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_SetReleaseDatetoCurrentDate(["Start Step"])
E_SetReleaseDatetoCurrentDate(["End Step"])
N_SetReleaseDatetoCurrentDate_Node0{"The release information is being
set"}:::decision N_SetReleaseDatetoCurrentDate_Node0_action["The cargo release date field is set
to the current machine date from the
system"]:::main N_SetReleaseDatetoCurrentDate_Node0 -- Yes --> N_SetReleaseDatetoCurrentDate_Node0_action N_SetReleaseDatetoCurrentDate_Node0_action --> E_SetReleaseDatetoCurrentDate S_SetReleaseDatetoCurrentDate --> N_SetReleaseDatetoCurrentDate_Node0 N_SetReleaseDatetoCurrentDate_Node0 -- No --> E_SetReleaseDatetoCurrentDate
set"}:::decision N_SetReleaseDatetoCurrentDate_Node0_action["The cargo release date field is set
to the current machine date from the
system"]:::main N_SetReleaseDatetoCurrentDate_Node0 -- Yes --> N_SetReleaseDatetoCurrentDate_Node0_action N_SetReleaseDatetoCurrentDate_Node0_action --> E_SetReleaseDatetoCurrentDate S_SetReleaseDatetoCurrentDate --> N_SetReleaseDatetoCurrentDate_Node0 N_SetReleaseDatetoCurrentDate_Node0 -- No --> E_SetReleaseDatetoCurrentDate
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo release date field is set to the current machine date from the system
β Consolidated Acceptance Criteria
- The release information is being set → the cargo release time field is set to the current machine time from the 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_SetReleaseTimetoCurrentTime(["Start Step"])
E_SetReleaseTimetoCurrentTime(["End Step"])
N_SetReleaseTimetoCurrentTime_Node0{"The release information is being
set"}:::decision N_SetReleaseTimetoCurrentTime_Node0_action["The cargo release time field is set
to the current machine time from the
system"]:::main N_SetReleaseTimetoCurrentTime_Node0 -- Yes --> N_SetReleaseTimetoCurrentTime_Node0_action N_SetReleaseTimetoCurrentTime_Node0_action --> E_SetReleaseTimetoCurrentTime S_SetReleaseTimetoCurrentTime --> N_SetReleaseTimetoCurrentTime_Node0 N_SetReleaseTimetoCurrentTime_Node0 -- No --> E_SetReleaseTimetoCurrentTime
set"}:::decision N_SetReleaseTimetoCurrentTime_Node0_action["The cargo release time field is set
to the current machine time from the
system"]:::main N_SetReleaseTimetoCurrentTime_Node0 -- Yes --> N_SetReleaseTimetoCurrentTime_Node0_action N_SetReleaseTimetoCurrentTime_Node0_action --> E_SetReleaseTimetoCurrentTime S_SetReleaseTimetoCurrentTime --> N_SetReleaseTimetoCurrentTime_Node0 N_SetReleaseTimetoCurrentTime_Node0 -- No --> E_SetReleaseTimetoCurrentTime
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo release time field is set to the current machine time from the system
β Consolidated Acceptance Criteria
- The release information is being set → the cargo release by field is set to the current ACF2 user ID from the 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_SetReleaseByUsertoCurrentUserID(["Start Step"])
E_SetReleaseByUsertoCurrentUserID(["End Step"])
N_SetReleaseByUsertoCurrentUserID_Node0{"The release information is being
set"}:::decision N_SetReleaseByUsertoCurrentUserID_Node0_action["The cargo release by field is set
to the current ACF2 user ID from the
system"]:::main N_SetReleaseByUsertoCurrentUserID_Node0 -- Yes --> N_SetReleaseByUsertoCurrentUserID_Node0_action N_SetReleaseByUsertoCurrentUserID_Node0_action --> E_SetReleaseByUsertoCurrentUserID S_SetReleaseByUsertoCurrentUserID --> N_SetReleaseByUsertoCurrentUserID_Node0 N_SetReleaseByUsertoCurrentUserID_Node0 -- No --> E_SetReleaseByUsertoCurrentUserID
set"}:::decision N_SetReleaseByUsertoCurrentUserID_Node0_action["The cargo release by field is set
to the current ACF2 user ID from the
system"]:::main N_SetReleaseByUsertoCurrentUserID_Node0 -- Yes --> N_SetReleaseByUsertoCurrentUserID_Node0_action N_SetReleaseByUsertoCurrentUserID_Node0_action --> E_SetReleaseByUsertoCurrentUserID S_SetReleaseByUsertoCurrentUserID --> N_SetReleaseByUsertoCurrentUserID_Node0 N_SetReleaseByUsertoCurrentUserID_Node0 -- No --> E_SetReleaseByUsertoCurrentUserID
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo release by field is set to the current ACF2 user ID from the system
β Consolidated Acceptance Criteria
- The release information is being set → the cargo release reason field 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_InitializeReleaseReason(["Start Step"])
E_InitializeReleaseReason(["End Step"])
N_InitializeReleaseReason_Node0{"The release information is being
set"}:::decision N_InitializeReleaseReason_Node0_action["The cargo release reason field is
set to spaces"]:::main N_InitializeReleaseReason_Node0 -- Yes --> N_InitializeReleaseReason_Node0_action N_InitializeReleaseReason_Node0_action --> E_InitializeReleaseReason S_InitializeReleaseReason --> N_InitializeReleaseReason_Node0 N_InitializeReleaseReason_Node0 -- No --> E_InitializeReleaseReason
set"}:::decision N_InitializeReleaseReason_Node0_action["The cargo release reason field is
set to spaces"]:::main N_InitializeReleaseReason_Node0 -- Yes --> N_InitializeReleaseReason_Node0_action N_InitializeReleaseReason_Node0_action --> E_InitializeReleaseReason S_InitializeReleaseReason --> N_InitializeReleaseReason_Node0 N_InitializeReleaseReason_Node0 -- No --> E_InitializeReleaseReason
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo release reason field is set to spaces
β Consolidated Acceptance Criteria
- The release information is being set → the cargo error or release status index field 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_ClearErrorStatusIndex(["Start Step"])
E_ClearErrorStatusIndex(["End Step"])
N_ClearErrorStatusIndex_Node0{"The release information is being
set"}:::decision N_ClearErrorStatusIndex_Node0_action["The cargo error or release status
index field is set to spaces"]:::main N_ClearErrorStatusIndex_Node0 -- Yes --> N_ClearErrorStatusIndex_Node0_action N_ClearErrorStatusIndex_Node0_action --> E_ClearErrorStatusIndex S_ClearErrorStatusIndex --> N_ClearErrorStatusIndex_Node0 N_ClearErrorStatusIndex_Node0 -- No --> E_ClearErrorStatusIndex
set"}:::decision N_ClearErrorStatusIndex_Node0_action["The cargo error or release status
index field is set to spaces"]:::main N_ClearErrorStatusIndex_Node0 -- Yes --> N_ClearErrorStatusIndex_Node0_action N_ClearErrorStatusIndex_Node0_action --> E_ClearErrorStatusIndex S_ClearErrorStatusIndex --> N_ClearErrorStatusIndex_Node0 N_ClearErrorStatusIndex_Node0 -- No --> E_ClearErrorStatusIndex
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo error or release status index field is set to spaces
β Consolidated Acceptance Criteria
- The release information is being set → the cargo error status field 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_ClearErrorStatusField(["Start Step"])
E_ClearErrorStatusField(["End Step"])
N_ClearErrorStatusField_Node0{"The release information is being
set"}:::decision N_ClearErrorStatusField_Node0_action["The cargo error status field is set
to spaces"]:::main N_ClearErrorStatusField_Node0 -- Yes --> N_ClearErrorStatusField_Node0_action N_ClearErrorStatusField_Node0_action --> E_ClearErrorStatusField S_ClearErrorStatusField --> N_ClearErrorStatusField_Node0 N_ClearErrorStatusField_Node0 -- No --> E_ClearErrorStatusField
set"}:::decision N_ClearErrorStatusField_Node0_action["The cargo error status field is set
to spaces"]:::main N_ClearErrorStatusField_Node0 -- Yes --> N_ClearErrorStatusField_Node0_action N_ClearErrorStatusField_Node0_action --> E_ClearErrorStatusField S_ClearErrorStatusField --> N_ClearErrorStatusField_Node0 N_ClearErrorStatusField_Node0 -- No --> E_ClearErrorStatusField
File: GCX126R.cbl
GIVEN:
A cargo record is being processed for release or deconsolidation
WHEN:
The release information is being set
THEN:
The cargo error status field is set to spaces
β Consolidated Acceptance Criteria
- The system prepares to search for associated US cargo records → the equipment car identifier is extracted from the current cargo record's equipment car field and the waybill number is extracted from the saved waybill index field for use in the US 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_SetCarIDandWaybillfromFollowerManifest(["Start Step"])
E_SetCarIDandWaybillfromFollowerManifest(["End Step"])
N_SetCarIDandWaybillfromFollowerManifest_Node0{"The system prepares to search for
associated US cargo records"}:::decision N_SetCarIDandWaybillfromFollowerManifest_Node0_action["The equipment car identifier is
extracted from the current cargo
record s equipment car field and the
waybill number is extracted from the
saved waybill index field for use in
the US cargo search"]:::main N_SetCarIDandWaybillfromFollowerManifest_Node0 -- Yes --> N_SetCarIDandWaybillfromFollowerManifest_Node0_action N_SetCarIDandWaybillfromFollowerManifest_Node0_action --> E_SetCarIDandWaybillfromFollowerManifest S_SetCarIDandWaybillfromFollowerManifest --> N_SetCarIDandWaybillfromFollowerManifest_Node0 N_SetCarIDandWaybillfromFollowerManifest_Node0 -- No --> E_SetCarIDandWaybillfromFollowerManifest
associated US cargo records"}:::decision N_SetCarIDandWaybillfromFollowerManifest_Node0_action["The equipment car identifier is
extracted from the current cargo
record s equipment car field and the
waybill number is extracted from the
saved waybill index field for use in
the US cargo search"]:::main N_SetCarIDandWaybillfromFollowerManifest_Node0 -- Yes --> N_SetCarIDandWaybillfromFollowerManifest_Node0_action N_SetCarIDandWaybillfromFollowerManifest_Node0_action --> E_SetCarIDandWaybillfromFollowerManifest S_SetCarIDandWaybillfromFollowerManifest --> N_SetCarIDandWaybillfromFollowerManifest_Node0 N_SetCarIDandWaybillfromFollowerManifest_Node0 -- No --> E_SetCarIDandWaybillfromFollowerManifest
File: GCX126R.cbl
GIVEN:
A follower manifest cargo record is being processed for release
WHEN:
The system prepares to search for associated US cargo records
THEN:
- The equipment car identifier is extracted from the current cargo record's equipment car field
- The waybill number is extracted from the saved waybill index field for use in the us cargo search
β Consolidated Acceptance Criteria
- The system searches for the associated US cargo manifest → the system retrieves the US cargo record where the car identifier index matches the equipment car identifier and the waybill number index matches the waybill number, using a greater-than-or-equal-to search operator, and sets an end-of-database indicator if no record is found or if the retrieved record does not match the search criteria
- The system initiates US cargo search → the system retrieves the first US cargo record from GCSUSRT table where car ID number index matches the current equipment car ID key and waybill number index matches the saved waybill index using GU (Get Unique) function with '>=' operator on the 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_RetrieveUSCargobyCarIDandWaybill(["Start Step"])
E_RetrieveUSCargobyCarIDandWaybill(["End Step"])
N_RetrieveUSCargobyCarIDandWaybill_Node0{"The system searches for the
associated US cargo manifest"}:::decision N_RetrieveUSCargobyCarIDandWaybill_Node0_action["The system retrieves the US cargo
record where the car identifier
index matches the equipment car
identifier and the waybill number
index matches the waybill number,
using a greater-than-or-equal-to
search operator, and sets an
end-of-database indicator if no
record is found or if the retrieved
record does not match the search
criteria"]:::main N_RetrieveUSCargobyCarIDandWaybill_Node0 -- Yes --> N_RetrieveUSCargobyCarIDandWaybill_Node0_action N_RetrieveUSCargobyCarIDandWaybill_Node0_action --> E_RetrieveUSCargobyCarIDandWaybill S_RetrieveUSCargobyCarIDandWaybill --> N_RetrieveUSCargobyCarIDandWaybill_Node0 N_RetrieveUSCargobyCarIDandWaybill_Node1{"The system initiates US cargo
search"}:::decision N_RetrieveUSCargobyCarIDandWaybill_Node1_action["The system retrieves the first US
cargo record from GCSUSRT table
where car ID number index matches
the current equipment car ID key and
waybill number index matches the
saved waybill index using GU Get
Unique function with operator on the
car-waybill index"]:::main N_RetrieveUSCargobyCarIDandWaybill_Node1 -- Yes --> N_RetrieveUSCargobyCarIDandWaybill_Node1_action N_RetrieveUSCargobyCarIDandWaybill_Node1_action --> E_RetrieveUSCargobyCarIDandWaybill N_RetrieveUSCargobyCarIDandWaybill_Node0 -- No --> N_RetrieveUSCargobyCarIDandWaybill_Node1 N_RetrieveUSCargobyCarIDandWaybill_Node1 -- No --> E_RetrieveUSCargobyCarIDandWaybill
associated US cargo manifest"}:::decision N_RetrieveUSCargobyCarIDandWaybill_Node0_action["The system retrieves the US cargo
record where the car identifier
index matches the equipment car
identifier and the waybill number
index matches the waybill number,
using a greater-than-or-equal-to
search operator, and sets an
end-of-database indicator if no
record is found or if the retrieved
record does not match the search
criteria"]:::main N_RetrieveUSCargobyCarIDandWaybill_Node0 -- Yes --> N_RetrieveUSCargobyCarIDandWaybill_Node0_action N_RetrieveUSCargobyCarIDandWaybill_Node0_action --> E_RetrieveUSCargobyCarIDandWaybill S_RetrieveUSCargobyCarIDandWaybill --> N_RetrieveUSCargobyCarIDandWaybill_Node0 N_RetrieveUSCargobyCarIDandWaybill_Node1{"The system initiates US cargo
search"}:::decision N_RetrieveUSCargobyCarIDandWaybill_Node1_action["The system retrieves the first US
cargo record from GCSUSRT table
where car ID number index matches
the current equipment car ID key and
waybill number index matches the
saved waybill index using GU Get
Unique function with operator on the
car-waybill index"]:::main N_RetrieveUSCargobyCarIDandWaybill_Node1 -- Yes --> N_RetrieveUSCargobyCarIDandWaybill_Node1_action N_RetrieveUSCargobyCarIDandWaybill_Node1_action --> E_RetrieveUSCargobyCarIDandWaybill N_RetrieveUSCargobyCarIDandWaybill_Node0 -- No --> N_RetrieveUSCargobyCarIDandWaybill_Node1 N_RetrieveUSCargobyCarIDandWaybill_Node1 -- No --> E_RetrieveUSCargobyCarIDandWaybill
File: GCX126R.cbl
GIVEN:
An equipment car identifier and waybill number have been extracted from the Canadian cargo record
WHEN:
The system searches for the associated US cargo manifest
THEN:
- The system retrieves the us cargo record where the car identifier index matches the equipment car identifier
- The waybill number index matches the waybill number, using a greater-than-or-equal-to search operator, and sets an end-of-database indicator if no record is found or if the retrieved record does not match the search criteria
File: GCX126R.cbl
GIVEN:
The current equipment car ID key and saved waybill index are available from the Canadian cargo record
WHEN:
The system initiates US cargo search
THEN:
- The system retrieves the first us cargo record from gcsusrt table where car id number index matches the current equipment car id key
- Waybill number index matches the saved waybill index using gu (get unique) function with '>=' operator on the car-waybill index
β Consolidated Acceptance Criteria
- If the search results → if the end-of-database indicator is set, the system concludes no US cargo was found and terminates processing; otherwise, the system proceeds to validate the retrieved 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_USCargoFound(["Start Step"])
E_USCargoFound(["End Step"])
N_USCargoFound_Node0{"The system evaluates the search
results"}:::decision N_USCargoFound_Node0_action["If the end-of-database indicator is
set, the system concludes no US
cargo was found and terminates
processing otherwise, the system
proceeds to validate the retrieved
cargo record"]:::main N_USCargoFound_Node0 -- Yes --> N_USCargoFound_Node0_action N_USCargoFound_Node0_action --> E_USCargoFound S_USCargoFound --> N_USCargoFound_Node0 N_USCargoFound_Node0 -- No --> E_USCargoFound
results"}:::decision N_USCargoFound_Node0_action["If the end-of-database indicator is
set, the system concludes no US
cargo was found and terminates
processing otherwise, the system
proceeds to validate the retrieved
cargo record"]:::main N_USCargoFound_Node0 -- Yes --> N_USCargoFound_Node0_action N_USCargoFound_Node0_action --> E_USCargoFound S_USCargoFound --> N_USCargoFound_Node0 N_USCargoFound_Node0 -- No --> E_USCargoFound
File: GCX126R.cbl
GIVEN:
A US cargo retrieval operation has been performed using equipment car identifier and waybill number
WHEN:
The system evaluates the search results
THEN:
- If the end-of-database indicator is set, the system concludes no us cargo was found
- Terminates processing; otherwise, the system proceeds to validate the retrieved cargo record
β Consolidated Acceptance Criteria
- The system prepares to create a log entry → the log input structure is cleared to spaces, the security byte is set to high-value, the sending transaction is set to 'GCT1261E', and the user identifier is set to the current session's user 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_PrepareLogMessage(["Start Step"])
E_PrepareLogMessage(["End Step"])
N_PrepareLogMessage_Node0{"The system prepares to create a log
entry"}:::decision N_PrepareLogMessage_Node0_action["The log input structure is cleared
to spaces, the security byte is set
to high-value, the sending
transaction is set to GCT1261E , and
the user identifier is set to the
current session s user identifier"]:::main N_PrepareLogMessage_Node0 -- Yes --> N_PrepareLogMessage_Node0_action N_PrepareLogMessage_Node0_action --> E_PrepareLogMessage S_PrepareLogMessage --> N_PrepareLogMessage_Node0 N_PrepareLogMessage_Node0 -- No --> E_PrepareLogMessage
entry"}:::decision N_PrepareLogMessage_Node0_action["The log input structure is cleared
to spaces, the security byte is set
to high-value, the sending
transaction is set to GCT1261E , and
the user identifier is set to the
current session s user identifier"]:::main N_PrepareLogMessage_Node0 -- Yes --> N_PrepareLogMessage_Node0_action N_PrepareLogMessage_Node0_action --> E_PrepareLogMessage S_PrepareLogMessage --> N_PrepareLogMessage_Node0 N_PrepareLogMessage_Node0 -- No --> E_PrepareLogMessage
File: GCX126R.cbl
GIVEN:
A valid US cargo record has been identified for release logging
WHEN:
The system prepares to create a log entry
THEN:
The log input structure is cleared to spaces, the security byte is set to high-value, the sending transaction is set to 'GCT1261E', and the user identifier is set to the current session's user identifier
β Consolidated Acceptance Criteria
- The system builds the log message content → the log message is constructed by concatenating the text 'CDN CCN RLSED BY EDI 350: ' with the Canadian cargo control number key from the current 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_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN(["Start Step"])
E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN(["End Step"])
N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0{"The system builds the log message
content"}:::decision N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["The log message is constructed by
concatenating the text CDN CCN RLSED
BY EDI 350: with the Canadian cargo
control number key from the current
cargo record"]:::main N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN S_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN
content"}:::decision N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["The log message is constructed by
concatenating the text CDN CCN RLSED
BY EDI 350: with the Canadian cargo
control number key from the current
cargo record"]:::main N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN S_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN
File: GCX126R.cbl
GIVEN:
The log information structure has been initialized and the Canadian cargo control number is available from the current cargo record
WHEN:
The system builds the log message content
THEN:
The log message is constructed by concatenating the text 'CDN CCN RLSED BY EDI 350: ' with the Canadian cargo control number key from the current cargo record
β Consolidated Acceptance Criteria
- The system completes the log entry details → the log date is set to the current machine century concatenated with the current machine date, the log time is set to the current machine time, the action code is set to LOG-USE-INPUT-MESSAGE, the train or US cargo control number field is set to the US cargo control number key from the retrieved record, and the cargo type indicator is set to US 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_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo(["Start Step"])
E_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo(["End Step"])
N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0{"The system completes the log entry
details"}:::decision N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0_action["The log date is set to the current
machine century concatenated with
the current machine date, the log
time is set to the current machine
time, the action code is set to
LOG-USE-INPUT-MESSAGE, the train or
US cargo control number field is set
to the US cargo control number key
from the retrieved record, and the
cargo type indicator is set to US
cargo"]:::main N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0 -- Yes --> N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0_action N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0_action --> E_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo S_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo --> N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0 N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0 -- No --> E_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo
details"}:::decision N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0_action["The log date is set to the current
machine century concatenated with
the current machine date, the log
time is set to the current machine
time, the action code is set to
LOG-USE-INPUT-MESSAGE, the train or
US cargo control number field is set
to the US cargo control number key
from the retrieved record, and the
cargo type indicator is set to US
cargo"]:::main N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0 -- Yes --> N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0_action N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0_action --> E_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo S_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo --> N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0 N_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo_Node0 -- No --> E_SetLogDetailsDateTimefromSystemActionCodeLOGUSEINPUTMESSAGEUSCCNasReferenceTypeUSCargo
File: GCX126R.cbl
GIVEN:
The log message has been constructed and the US cargo record contains the US cargo control number
WHEN:
The system completes the log entry details
THEN:
The log date is set to the current machine century concatenated with the current machine date, the log time is set to the current machine time, the action code is set to LOG-USE-INPUT-MESSAGE, the train or US cargo control number field is set to the US cargo control number key from the retrieved record, and the cargo type indicator is set to US cargo
β Consolidated Acceptance Criteria
- The system executes the log entry creation process → if the log message is not spaces or low-values, the system replaces all spaces in the date with zeroes, replaces all spaces in the time with '1', moves the log input to the GCT1051E message structure, changes the alternate program communication block, calls the write message log function with the message code, message content, message length and module name, and purges the alternate program communication block
- The system invokes GCT1051E logging transaction → log entry is created with date, time, US CCN, action code, cargo type, and release message
- The system submits the log entry → the GCT1051E transaction is spawned by calling the Z300-SPAWN-GCT1051E routine which validates the message is not blank, replaces spaces with appropriate values in date and time fields, moves the input to the message structure, changes the alternate PCB, calls WRITMSGL to write the message, and purges 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_SpawnGCT1051ETransactiontoLogMessage(["Start Step"])
E_SpawnGCT1051ETransactiontoLogMessage(["End Step"])
N_SpawnGCT1051ETransactiontoLogMessage_Node0{"The system executes the log entry
creation process"}:::decision N_SpawnGCT1051ETransactiontoLogMessage_Node0_action["If the log message is not spaces or
low-values, the system replaces all
spaces in the date with zeroes,
replaces all spaces in the time with
1 , moves the log input to the
GCT1051E message structure, changes
the alternate program communication
block, calls the write message log
function with the message code,
message content, message length and
module name, and purges the
alternate program communication
block"]:::main N_SpawnGCT1051ETransactiontoLogMessage_Node0 -- Yes --> N_SpawnGCT1051ETransactiontoLogMessage_Node0_action N_SpawnGCT1051ETransactiontoLogMessage_Node0_action --> E_SpawnGCT1051ETransactiontoLogMessage S_SpawnGCT1051ETransactiontoLogMessage --> N_SpawnGCT1051ETransactiontoLogMessage_Node0 N_SpawnGCT1051ETransactiontoLogMessage_Node1{"The system invokes GCT1051E logging
transaction"}:::decision N_SpawnGCT1051ETransactiontoLogMessage_Node1_action["Log entry is created with date,
time, US CCN, action code, cargo
type, and release message"]:::main N_SpawnGCT1051ETransactiontoLogMessage_Node1 -- Yes --> N_SpawnGCT1051ETransactiontoLogMessage_Node1_action N_SpawnGCT1051ETransactiontoLogMessage_Node1_action --> E_SpawnGCT1051ETransactiontoLogMessage N_SpawnGCT1051ETransactiontoLogMessage_Node0 -- No --> N_SpawnGCT1051ETransactiontoLogMessage_Node1 N_SpawnGCT1051ETransactiontoLogMessage_Node2{"The system submits the log entry"}:::decision N_SpawnGCT1051ETransactiontoLogMessage_Node2_action["The GCT1051E transaction is spawned
by calling the Z300-SPAWN-GCT1051E
routine which validates the message
is not blank, replaces spaces with
appropriate values in date and time
fields, moves the input to the
message structure, changes the
alternate PCB, calls WRITMSGL to
write the message, and purges the
alternate PCB"]:::main N_SpawnGCT1051ETransactiontoLogMessage_Node2 -- Yes --> N_SpawnGCT1051ETransactiontoLogMessage_Node2_action N_SpawnGCT1051ETransactiontoLogMessage_Node2_action --> E_SpawnGCT1051ETransactiontoLogMessage N_SpawnGCT1051ETransactiontoLogMessage_Node1 -- No --> N_SpawnGCT1051ETransactiontoLogMessage_Node2 N_SpawnGCT1051ETransactiontoLogMessage_Node2 -- No --> E_SpawnGCT1051ETransactiontoLogMessage
creation process"}:::decision N_SpawnGCT1051ETransactiontoLogMessage_Node0_action["If the log message is not spaces or
low-values, the system replaces all
spaces in the date with zeroes,
replaces all spaces in the time with
1 , moves the log input to the
GCT1051E message structure, changes
the alternate program communication
block, calls the write message log
function with the message code,
message content, message length and
module name, and purges the
alternate program communication
block"]:::main N_SpawnGCT1051ETransactiontoLogMessage_Node0 -- Yes --> N_SpawnGCT1051ETransactiontoLogMessage_Node0_action N_SpawnGCT1051ETransactiontoLogMessage_Node0_action --> E_SpawnGCT1051ETransactiontoLogMessage S_SpawnGCT1051ETransactiontoLogMessage --> N_SpawnGCT1051ETransactiontoLogMessage_Node0 N_SpawnGCT1051ETransactiontoLogMessage_Node1{"The system invokes GCT1051E logging
transaction"}:::decision N_SpawnGCT1051ETransactiontoLogMessage_Node1_action["Log entry is created with date,
time, US CCN, action code, cargo
type, and release message"]:::main N_SpawnGCT1051ETransactiontoLogMessage_Node1 -- Yes --> N_SpawnGCT1051ETransactiontoLogMessage_Node1_action N_SpawnGCT1051ETransactiontoLogMessage_Node1_action --> E_SpawnGCT1051ETransactiontoLogMessage N_SpawnGCT1051ETransactiontoLogMessage_Node0 -- No --> N_SpawnGCT1051ETransactiontoLogMessage_Node1 N_SpawnGCT1051ETransactiontoLogMessage_Node2{"The system submits the log entry"}:::decision N_SpawnGCT1051ETransactiontoLogMessage_Node2_action["The GCT1051E transaction is spawned
by calling the Z300-SPAWN-GCT1051E
routine which validates the message
is not blank, replaces spaces with
appropriate values in date and time
fields, moves the input to the
message structure, changes the
alternate PCB, calls WRITMSGL to
write the message, and purges the
alternate PCB"]:::main N_SpawnGCT1051ETransactiontoLogMessage_Node2 -- Yes --> N_SpawnGCT1051ETransactiontoLogMessage_Node2_action N_SpawnGCT1051ETransactiontoLogMessage_Node2_action --> E_SpawnGCT1051ETransactiontoLogMessage N_SpawnGCT1051ETransactiontoLogMessage_Node1 -- No --> N_SpawnGCT1051ETransactiontoLogMessage_Node2 N_SpawnGCT1051ETransactiontoLogMessage_Node2 -- No --> E_SpawnGCT1051ETransactiontoLogMessage
File: GCX126R.cbl
GIVEN:
All log entry fields have been populated with the US cargo release information
WHEN:
The system executes the log entry creation process
THEN:
- If the log message is not spaces or low-values, the system replaces all spaces in the date with zeroes, replaces all spaces in the time with '1', moves the log input to the gct1051e message structure, changes the alternate program communication block, calls the write message log function with the message code, message content, message length
- Module name, and purges the alternate program communication block
File: GCX126R.cbl
GIVEN:
Release message has been built with all required log information
WHEN:
The system invokes GCT1051E logging transaction
THEN:
Log entry is created with date, time, US CCN, action code, cargo type, and release message
File: GCX126R.cbl
GIVEN:
The complete log entry has been built with date, time, action code, US CCN, cargo type, and message text
WHEN:
The system submits the log entry
THEN:
- The gct1051e transaction is spawned by calling the z300-spawn-gct1051e routine which validates the message is not blank, replaces spaces with appropriate values in date
- Time fields, moves the input to the message structure, changes the alternate pcb, calls writmsgl to write the message, and purges the alternate pcb
β Consolidated Acceptance Criteria
- If whether to process the cargo → the system performs no logging or update operations and proceeds to the end of the US manifest 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_NoActionSkipThisUSCargo(["Start Step"])
E_NoActionSkipThisUSCargo(["End Step"])
N_NoActionSkipThisUSCargo_Node0{"The system evaluates whether to
process the cargo"}:::decision N_NoActionSkipThisUSCargo_Node0_action["The system performs no logging or
update operations and proceeds to
the end of the US manifest
processing routine"]:::main N_NoActionSkipThisUSCargo_Node0 -- Yes --> N_NoActionSkipThisUSCargo_Node0_action N_NoActionSkipThisUSCargo_Node0_action --> E_NoActionSkipThisUSCargo S_NoActionSkipThisUSCargo --> N_NoActionSkipThisUSCargo_Node0 N_NoActionSkipThisUSCargo_Node0 -- No --> E_NoActionSkipThisUSCargo
process the cargo"}:::decision N_NoActionSkipThisUSCargo_Node0_action["The system performs no logging or
update operations and proceeds to
the end of the US manifest
processing routine"]:::main N_NoActionSkipThisUSCargo_Node0 -- Yes --> N_NoActionSkipThisUSCargo_Node0_action N_NoActionSkipThisUSCargo_Node0_action --> E_NoActionSkipThisUSCargo S_NoActionSkipThisUSCargo --> N_NoActionSkipThisUSCargo_Node0 N_NoActionSkipThisUSCargo_Node0 -- No --> E_NoActionSkipThisUSCargo
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved that either has a deleted status or has the train-created-for-it indicator set to 'Y'
WHEN:
The system evaluates whether to process the cargo
THEN:
- The system performs no logging or update operations
- Proceeds to the end of the us manifest processing routine
β Consolidated Acceptance Criteria
- The system reaches the end of the US manifest processing routine → the system exits the US manifest processing section and returns control to the follower manifest 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_EndUSManifestProcessingComplete(["Start Step"])
E_EndUSManifestProcessingComplete(["End Step"])
N_EndUSManifestProcessingComplete_Node0{"The system reaches the end of the
US manifest processing routine"}:::decision N_EndUSManifestProcessingComplete_Node0_action["The system exits the US manifest
processing section and returns
control to the follower manifest
processing loop"]:::main N_EndUSManifestProcessingComplete_Node0 -- Yes --> N_EndUSManifestProcessingComplete_Node0_action N_EndUSManifestProcessingComplete_Node0_action --> E_EndUSManifestProcessingComplete S_EndUSManifestProcessingComplete --> N_EndUSManifestProcessingComplete_Node0 N_EndUSManifestProcessingComplete_Node0 -- No --> E_EndUSManifestProcessingComplete
US manifest processing routine"}:::decision N_EndUSManifestProcessingComplete_Node0_action["The system exits the US manifest
processing section and returns
control to the follower manifest
processing loop"]:::main N_EndUSManifestProcessingComplete_Node0 -- Yes --> N_EndUSManifestProcessingComplete_Node0_action N_EndUSManifestProcessingComplete_Node0_action --> E_EndUSManifestProcessingComplete S_EndUSManifestProcessingComplete --> N_EndUSManifestProcessingComplete_Node0 N_EndUSManifestProcessingComplete_Node0 -- No --> E_EndUSManifestProcessingComplete
File: GCX126R.cbl
GIVEN:
Either no US cargo was found, the US cargo was invalid and skipped, or the US cargo release has been successfully logged
WHEN:
The system reaches the end of the US manifest processing routine
THEN:
- The system exits the us manifest processing section
- Returns control to the follower manifest processing loop
β Consolidated Acceptance Criteria
- The log message preparation process begins → the GCX105 input structure is cleared to spaces to ensure no residual data remains
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeGCX105InputStructure(["Start Step"])
E_InitializeGCX105InputStructure(["End Step"])
N_InitializeGCX105InputStructure_Node0{"The log message preparation process
begins"}:::decision N_InitializeGCX105InputStructure_Node0_action["The GCX105 input structure is
cleared to spaces to ensure no
residual data remains"]:::main N_InitializeGCX105InputStructure_Node0 -- Yes --> N_InitializeGCX105InputStructure_Node0_action N_InitializeGCX105InputStructure_Node0_action --> E_InitializeGCX105InputStructure S_InitializeGCX105InputStructure --> N_InitializeGCX105InputStructure_Node0 N_InitializeGCX105InputStructure_Node0 -- No --> E_InitializeGCX105InputStructure
begins"}:::decision N_InitializeGCX105InputStructure_Node0_action["The GCX105 input structure is
cleared to spaces to ensure no
residual data remains"]:::main N_InitializeGCX105InputStructure_Node0 -- Yes --> N_InitializeGCX105InputStructure_Node0_action N_InitializeGCX105InputStructure_Node0_action --> E_InitializeGCX105InputStructure S_InitializeGCX105InputStructure --> N_InitializeGCX105InputStructure_Node0 N_InitializeGCX105InputStructure_Node0 -- No --> E_InitializeGCX105InputStructure
File: GCX126R.cbl
GIVEN:
A log message needs to be prepared for the GCT1051E transaction
WHEN:
The log message preparation process begins
THEN:
The GCX105 input structure is cleared to spaces to ensure no residual data remains
β Consolidated Acceptance Criteria
- Security attributes need to be set for the log entry → the security byte in GCX105 structure is set to HIGH-VALUE to indicate system-level security
- Security parameters are being set → the system shall set the GCX105-SECURITY-BYTE to HIGH-VALUE to indicate this is a secure, system-generated 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_SetSecurityBytetoHIGHVALUE(["Start Step"])
E_SetSecurityBytetoHIGHVALUE(["End Step"])
N_SetSecurityBytetoHIGHVALUE_Node0{"Security attributes need to be set
for the log entry"}:::decision N_SetSecurityBytetoHIGHVALUE_Node0_action["The security byte in GCX105
structure is set to HIGH-VALUE to
indicate system-level security"]:::main N_SetSecurityBytetoHIGHVALUE_Node0 -- Yes --> N_SetSecurityBytetoHIGHVALUE_Node0_action N_SetSecurityBytetoHIGHVALUE_Node0_action --> E_SetSecurityBytetoHIGHVALUE S_SetSecurityBytetoHIGHVALUE --> N_SetSecurityBytetoHIGHVALUE_Node0 N_SetSecurityBytetoHIGHVALUE_Node1{"Security parameters are being set"}:::decision N_SetSecurityBytetoHIGHVALUE_Node1_action["The system shall set the
GCX105-SECURITY-BYTE to HIGH-VALUE
to indicate this is a secure,
system-generated log entry"]:::main N_SetSecurityBytetoHIGHVALUE_Node1 -- Yes --> N_SetSecurityBytetoHIGHVALUE_Node1_action N_SetSecurityBytetoHIGHVALUE_Node1_action --> E_SetSecurityBytetoHIGHVALUE N_SetSecurityBytetoHIGHVALUE_Node0 -- No --> N_SetSecurityBytetoHIGHVALUE_Node1 N_SetSecurityBytetoHIGHVALUE_Node1 -- No --> E_SetSecurityBytetoHIGHVALUE
for the log entry"}:::decision N_SetSecurityBytetoHIGHVALUE_Node0_action["The security byte in GCX105
structure is set to HIGH-VALUE to
indicate system-level security"]:::main N_SetSecurityBytetoHIGHVALUE_Node0 -- Yes --> N_SetSecurityBytetoHIGHVALUE_Node0_action N_SetSecurityBytetoHIGHVALUE_Node0_action --> E_SetSecurityBytetoHIGHVALUE S_SetSecurityBytetoHIGHVALUE --> N_SetSecurityBytetoHIGHVALUE_Node0 N_SetSecurityBytetoHIGHVALUE_Node1{"Security parameters are being set"}:::decision N_SetSecurityBytetoHIGHVALUE_Node1_action["The system shall set the
GCX105-SECURITY-BYTE to HIGH-VALUE
to indicate this is a secure,
system-generated log entry"]:::main N_SetSecurityBytetoHIGHVALUE_Node1 -- Yes --> N_SetSecurityBytetoHIGHVALUE_Node1_action N_SetSecurityBytetoHIGHVALUE_Node1_action --> E_SetSecurityBytetoHIGHVALUE N_SetSecurityBytetoHIGHVALUE_Node0 -- No --> N_SetSecurityBytetoHIGHVALUE_Node1 N_SetSecurityBytetoHIGHVALUE_Node1 -- No --> E_SetSecurityBytetoHIGHVALUE
File: GCX126R.cbl
GIVEN:
The log message structure has been initialized
WHEN:
Security attributes need to be set for the log entry
THEN:
The security byte in GCX105 structure is set to HIGH-VALUE to indicate system-level security
File: GCX126R.cbl
GIVEN:
A log entry structure is being prepared
WHEN:
Security parameters are being set
THEN:
The system shall set the GCX105-SECURITY-BYTE to HIGH-VALUE to indicate this is a secure, system-generated log entry
β Consolidated Acceptance Criteria
- The sending transaction identifier needs to be recorded → the sending transaction field in GCX105 structure is set to 'GCT1261E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSendingTransactionGCT1261E(["Start Step"])
E_SetSendingTransactionGCT1261E(["End Step"])
N_SetSendingTransactionGCT1261E_Node0{"The sending transaction identifier
needs to be recorded"}:::decision N_SetSendingTransactionGCT1261E_Node0_action["The sending transaction field in
GCX105 structure is set to GCT1261E"]:::main N_SetSendingTransactionGCT1261E_Node0 -- Yes --> N_SetSendingTransactionGCT1261E_Node0_action N_SetSendingTransactionGCT1261E_Node0_action --> E_SetSendingTransactionGCT1261E S_SetSendingTransactionGCT1261E --> N_SetSendingTransactionGCT1261E_Node0 N_SetSendingTransactionGCT1261E_Node0 -- No --> E_SetSendingTransactionGCT1261E
needs to be recorded"}:::decision N_SetSendingTransactionGCT1261E_Node0_action["The sending transaction field in
GCX105 structure is set to GCT1261E"]:::main N_SetSendingTransactionGCT1261E_Node0 -- Yes --> N_SetSendingTransactionGCT1261E_Node0_action N_SetSendingTransactionGCT1261E_Node0_action --> E_SetSendingTransactionGCT1261E S_SetSendingTransactionGCT1261E --> N_SetSendingTransactionGCT1261E_Node0 N_SetSendingTransactionGCT1261E_Node0 -- No --> E_SetSendingTransactionGCT1261E
File: GCX126R.cbl
GIVEN:
The log message is being prepared by the GCT1261E program
WHEN:
The sending transaction identifier needs to be recorded
THEN:
The sending transaction field in GCX105 structure is set to 'GCT1261E'
β Consolidated Acceptance Criteria
- User identification needs to be captured for the log entry → the ACF2 user ID from CCCOM is copied to the GCX105 ACF2-ID field
- User identification needs to be recorded → the system shall populate the GCX105-ACF2-ID field with the CC-ACF2-USERID value from the CCCOM control block to record who initiated the logged 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_SetACF2UserIDfromCCCOM(["Start Step"])
E_SetACF2UserIDfromCCCOM(["End Step"])
N_SetACF2UserIDfromCCCOM_Node0{"User identification needs to be
captured for the log entry"}:::decision N_SetACF2UserIDfromCCCOM_Node0_action["The ACF2 user ID from CCCOM is
copied to the GCX105 ACF2-ID field"]:::main N_SetACF2UserIDfromCCCOM_Node0 -- Yes --> N_SetACF2UserIDfromCCCOM_Node0_action N_SetACF2UserIDfromCCCOM_Node0_action --> E_SetACF2UserIDfromCCCOM S_SetACF2UserIDfromCCCOM --> N_SetACF2UserIDfromCCCOM_Node0 N_SetACF2UserIDfromCCCOM_Node1{"User identification needs to be
recorded"}:::decision N_SetACF2UserIDfromCCCOM_Node1_action["The system shall populate the
GCX105-ACF2-ID field with the
CC-ACF2-USERID value from the CCCOM
control block to record who
initiated the logged action"]:::main N_SetACF2UserIDfromCCCOM_Node1 -- Yes --> N_SetACF2UserIDfromCCCOM_Node1_action N_SetACF2UserIDfromCCCOM_Node1_action --> E_SetACF2UserIDfromCCCOM N_SetACF2UserIDfromCCCOM_Node0 -- No --> N_SetACF2UserIDfromCCCOM_Node1 N_SetACF2UserIDfromCCCOM_Node1 -- No --> E_SetACF2UserIDfromCCCOM
captured for the log entry"}:::decision N_SetACF2UserIDfromCCCOM_Node0_action["The ACF2 user ID from CCCOM is
copied to the GCX105 ACF2-ID field"]:::main N_SetACF2UserIDfromCCCOM_Node0 -- Yes --> N_SetACF2UserIDfromCCCOM_Node0_action N_SetACF2UserIDfromCCCOM_Node0_action --> E_SetACF2UserIDfromCCCOM S_SetACF2UserIDfromCCCOM --> N_SetACF2UserIDfromCCCOM_Node0 N_SetACF2UserIDfromCCCOM_Node1{"User identification needs to be
recorded"}:::decision N_SetACF2UserIDfromCCCOM_Node1_action["The system shall populate the
GCX105-ACF2-ID field with the
CC-ACF2-USERID value from the CCCOM
control block to record who
initiated the logged action"]:::main N_SetACF2UserIDfromCCCOM_Node1 -- Yes --> N_SetACF2UserIDfromCCCOM_Node1_action N_SetACF2UserIDfromCCCOM_Node1_action --> E_SetACF2UserIDfromCCCOM N_SetACF2UserIDfromCCCOM_Node0 -- No --> N_SetACF2UserIDfromCCCOM_Node1 N_SetACF2UserIDfromCCCOM_Node1 -- No --> E_SetACF2UserIDfromCCCOM
File: GCX126R.cbl
GIVEN:
The current user ID is available in the CCCOM control block
WHEN:
User identification needs to be captured for the log entry
THEN:
The ACF2 user ID from CCCOM is copied to the GCX105 ACF2-ID field
File: GCX126R.cbl
GIVEN:
A log entry is being prepared and the current user session is active
WHEN:
User identification needs to be recorded
THEN:
The system shall populate the GCX105-ACF2-ID field with the CC-ACF2-USERID value from the CCCOM control block to record who initiated the logged action
β Consolidated Acceptance Criteria
- The date field is being prepared for logging → all space characters in the GCX105 date field are replaced with zeroes to ensure numeric consistency
- The date field contains any space characters → the system replaces all spaces in the date field with zeroes to ensure numeric consistency
- The date field contains any space characters → the system replaces all spaces in the date field with zeroes to ensure numeric 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_ReplaceSpaceswithZeroesinDate(["Start Step"])
E_ReplaceSpaceswithZeroesinDate(["End Step"])
N_ReplaceSpaceswithZeroesinDate_Node0{"The date field is being prepared
for logging"}:::decision N_ReplaceSpaceswithZeroesinDate_Node0_action["All space characters in the GCX105
date field are replaced with zeroes
to ensure numeric consistency"]:::main N_ReplaceSpaceswithZeroesinDate_Node0 -- Yes --> N_ReplaceSpaceswithZeroesinDate_Node0_action N_ReplaceSpaceswithZeroesinDate_Node0_action --> E_ReplaceSpaceswithZeroesinDate S_ReplaceSpaceswithZeroesinDate --> N_ReplaceSpaceswithZeroesinDate_Node0 N_ReplaceSpaceswithZeroesinDate_Node1{"The date field contains any space
characters"}:::decision N_ReplaceSpaceswithZeroesinDate_Node1_action["The system replaces all spaces in
the date field with zeroes to ensure
numeric consistency"]:::main N_ReplaceSpaceswithZeroesinDate_Node1 -- Yes --> N_ReplaceSpaceswithZeroesinDate_Node1_action N_ReplaceSpaceswithZeroesinDate_Node1_action --> E_ReplaceSpaceswithZeroesinDate N_ReplaceSpaceswithZeroesinDate_Node0 -- No --> N_ReplaceSpaceswithZeroesinDate_Node1 N_ReplaceSpaceswithZeroesinDate_Node2{"The date field contains any space
characters"}:::decision N_ReplaceSpaceswithZeroesinDate_Node2_action["The system replaces all spaces in
the date field with zeroes to ensure
numeric consistency"]:::main N_ReplaceSpaceswithZeroesinDate_Node2 -- Yes --> N_ReplaceSpaceswithZeroesinDate_Node2_action N_ReplaceSpaceswithZeroesinDate_Node2_action --> E_ReplaceSpaceswithZeroesinDate N_ReplaceSpaceswithZeroesinDate_Node1 -- No --> N_ReplaceSpaceswithZeroesinDate_Node2 N_ReplaceSpaceswithZeroesinDate_Node2 -- No --> E_ReplaceSpaceswithZeroesinDate
for logging"}:::decision N_ReplaceSpaceswithZeroesinDate_Node0_action["All space characters in the GCX105
date field are replaced with zeroes
to ensure numeric consistency"]:::main N_ReplaceSpaceswithZeroesinDate_Node0 -- Yes --> N_ReplaceSpaceswithZeroesinDate_Node0_action N_ReplaceSpaceswithZeroesinDate_Node0_action --> E_ReplaceSpaceswithZeroesinDate S_ReplaceSpaceswithZeroesinDate --> N_ReplaceSpaceswithZeroesinDate_Node0 N_ReplaceSpaceswithZeroesinDate_Node1{"The date field contains any space
characters"}:::decision N_ReplaceSpaceswithZeroesinDate_Node1_action["The system replaces all spaces in
the date field with zeroes to ensure
numeric consistency"]:::main N_ReplaceSpaceswithZeroesinDate_Node1 -- Yes --> N_ReplaceSpaceswithZeroesinDate_Node1_action N_ReplaceSpaceswithZeroesinDate_Node1_action --> E_ReplaceSpaceswithZeroesinDate N_ReplaceSpaceswithZeroesinDate_Node0 -- No --> N_ReplaceSpaceswithZeroesinDate_Node1 N_ReplaceSpaceswithZeroesinDate_Node2{"The date field contains any space
characters"}:::decision N_ReplaceSpaceswithZeroesinDate_Node2_action["The system replaces all spaces in
the date field with zeroes to ensure
numeric consistency"]:::main N_ReplaceSpaceswithZeroesinDate_Node2 -- Yes --> N_ReplaceSpaceswithZeroesinDate_Node2_action N_ReplaceSpaceswithZeroesinDate_Node2_action --> E_ReplaceSpaceswithZeroesinDate N_ReplaceSpaceswithZeroesinDate_Node1 -- No --> N_ReplaceSpaceswithZeroesinDate_Node2 N_ReplaceSpaceswithZeroesinDate_Node2 -- No --> E_ReplaceSpaceswithZeroesinDate
File: GCX126R.cbl
GIVEN:
The date field in GCX105 structure may contain spaces
WHEN:
The date field is being prepared for logging
THEN:
All space characters in the GCX105 date field are replaced with zeroes to ensure numeric consistency
File: GCX126R.cbl
GIVEN:
A log message with a date field (GCX105-DATE) is ready to be written
WHEN:
The date field contains any space characters
THEN:
The system replaces all spaces in the date field with zeroes to ensure numeric consistency
File: GCX126R.cbl
GIVEN:
A cargo information message with a date field (GCX105-DATE) is being prepared for logging
WHEN:
The date field contains any space characters
THEN:
The system replaces all spaces in the date field with zeroes to ensure numeric consistency
β Consolidated Acceptance Criteria
- The time field is being prepared for logging → all space characters in the GCX105 time field are replaced with '1' to ensure data consistency
- The time field contains any space characters → the system replaces all spaces in the time field with the character '1' to ensure data consistency
- The time field contains any space characters → the system replaces all spaces in the time field with the character '1' to ensure valid time 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_ReplaceSpaceswith1inTime(["Start Step"])
E_ReplaceSpaceswith1inTime(["End Step"])
N_ReplaceSpaceswith1inTime_Node0{"The time field is being prepared
for logging"}:::decision N_ReplaceSpaceswith1inTime_Node0_action["All space characters in the GCX105
time field are replaced with 1 to
ensure data consistency"]:::main N_ReplaceSpaceswith1inTime_Node0 -- Yes --> N_ReplaceSpaceswith1inTime_Node0_action N_ReplaceSpaceswith1inTime_Node0_action --> E_ReplaceSpaceswith1inTime S_ReplaceSpaceswith1inTime --> N_ReplaceSpaceswith1inTime_Node0 N_ReplaceSpaceswith1inTime_Node1{"The time field contains any space
characters"}:::decision N_ReplaceSpaceswith1inTime_Node1_action["The system replaces all spaces in
the time field with the character 1
to ensure data consistency"]:::main N_ReplaceSpaceswith1inTime_Node1 -- Yes --> N_ReplaceSpaceswith1inTime_Node1_action N_ReplaceSpaceswith1inTime_Node1_action --> E_ReplaceSpaceswith1inTime N_ReplaceSpaceswith1inTime_Node0 -- No --> N_ReplaceSpaceswith1inTime_Node1 N_ReplaceSpaceswith1inTime_Node2{"The time field contains any space
characters"}:::decision N_ReplaceSpaceswith1inTime_Node2_action["The system replaces all spaces in
the time field with the character 1
to ensure valid time format"]:::main N_ReplaceSpaceswith1inTime_Node2 -- Yes --> N_ReplaceSpaceswith1inTime_Node2_action N_ReplaceSpaceswith1inTime_Node2_action --> E_ReplaceSpaceswith1inTime N_ReplaceSpaceswith1inTime_Node1 -- No --> N_ReplaceSpaceswith1inTime_Node2 N_ReplaceSpaceswith1inTime_Node2 -- No --> E_ReplaceSpaceswith1inTime
for logging"}:::decision N_ReplaceSpaceswith1inTime_Node0_action["All space characters in the GCX105
time field are replaced with 1 to
ensure data consistency"]:::main N_ReplaceSpaceswith1inTime_Node0 -- Yes --> N_ReplaceSpaceswith1inTime_Node0_action N_ReplaceSpaceswith1inTime_Node0_action --> E_ReplaceSpaceswith1inTime S_ReplaceSpaceswith1inTime --> N_ReplaceSpaceswith1inTime_Node0 N_ReplaceSpaceswith1inTime_Node1{"The time field contains any space
characters"}:::decision N_ReplaceSpaceswith1inTime_Node1_action["The system replaces all spaces in
the time field with the character 1
to ensure data consistency"]:::main N_ReplaceSpaceswith1inTime_Node1 -- Yes --> N_ReplaceSpaceswith1inTime_Node1_action N_ReplaceSpaceswith1inTime_Node1_action --> E_ReplaceSpaceswith1inTime N_ReplaceSpaceswith1inTime_Node0 -- No --> N_ReplaceSpaceswith1inTime_Node1 N_ReplaceSpaceswith1inTime_Node2{"The time field contains any space
characters"}:::decision N_ReplaceSpaceswith1inTime_Node2_action["The system replaces all spaces in
the time field with the character 1
to ensure valid time format"]:::main N_ReplaceSpaceswith1inTime_Node2 -- Yes --> N_ReplaceSpaceswith1inTime_Node2_action N_ReplaceSpaceswith1inTime_Node2_action --> E_ReplaceSpaceswith1inTime N_ReplaceSpaceswith1inTime_Node1 -- No --> N_ReplaceSpaceswith1inTime_Node2 N_ReplaceSpaceswith1inTime_Node2 -- No --> E_ReplaceSpaceswith1inTime
File: GCX126R.cbl
GIVEN:
The time field in GCX105 structure may contain spaces
WHEN:
The time field is being prepared for logging
THEN:
All space characters in the GCX105 time field are replaced with '1' to ensure data consistency
File: GCX126R.cbl
GIVEN:
A log message with a time field (GCX105-TIME) is ready to be written
WHEN:
The time field contains any space characters
THEN:
The system replaces all spaces in the time field with the character '1' to ensure data consistency
File: GCX126R.cbl
GIVEN:
A cargo information message with a time field (GCX105-TIME) is being prepared for logging
WHEN:
The time field contains any space characters
THEN:
The system replaces all spaces in the time field with the character '1' to ensure valid time format
β Consolidated Acceptance Criteria
- The message needs to be formatted for the GCT1051E transaction → the GCX105 input data is moved to the GCT1051E message structure for subsequent logging operations
- The message content in GCX105-MESSAGE is spaces or low-values → the log message preparation process is terminated without 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_FormatMessageforGCT1051E(["Start Step"])
E_FormatMessageforGCT1051E(["End Step"])
N_FormatMessageforGCT1051E_Node0{"The message needs to be formatted
for the GCT1051E transaction"}:::decision N_FormatMessageforGCT1051E_Node0_action["The GCX105 input data is moved to
the GCT1051E message structure for
subsequent logging operations"]:::main N_FormatMessageforGCT1051E_Node0 -- Yes --> N_FormatMessageforGCT1051E_Node0_action N_FormatMessageforGCT1051E_Node0_action --> E_FormatMessageforGCT1051E S_FormatMessageforGCT1051E --> N_FormatMessageforGCT1051E_Node0 N_FormatMessageforGCT1051E_Node1{"The message content in
GCX105-MESSAGE is spaces or
low-values"}:::decision N_FormatMessageforGCT1051E_Node1_action["The log message preparation process
is terminated without further
processing"]:::main N_FormatMessageforGCT1051E_Node1 -- Yes --> N_FormatMessageforGCT1051E_Node1_action N_FormatMessageforGCT1051E_Node1_action --> E_FormatMessageforGCT1051E N_FormatMessageforGCT1051E_Node0 -- No --> N_FormatMessageforGCT1051E_Node1 N_FormatMessageforGCT1051E_Node1 -- No --> E_FormatMessageforGCT1051E
for the GCT1051E transaction"}:::decision N_FormatMessageforGCT1051E_Node0_action["The GCX105 input data is moved to
the GCT1051E message structure for
subsequent logging operations"]:::main N_FormatMessageforGCT1051E_Node0 -- Yes --> N_FormatMessageforGCT1051E_Node0_action N_FormatMessageforGCT1051E_Node0_action --> E_FormatMessageforGCT1051E S_FormatMessageforGCT1051E --> N_FormatMessageforGCT1051E_Node0 N_FormatMessageforGCT1051E_Node1{"The message content in
GCX105-MESSAGE is spaces or
low-values"}:::decision N_FormatMessageforGCT1051E_Node1_action["The log message preparation process
is terminated without further
processing"]:::main N_FormatMessageforGCT1051E_Node1 -- Yes --> N_FormatMessageforGCT1051E_Node1_action N_FormatMessageforGCT1051E_Node1_action --> E_FormatMessageforGCT1051E N_FormatMessageforGCT1051E_Node0 -- No --> N_FormatMessageforGCT1051E_Node1 N_FormatMessageforGCT1051E_Node1 -- No --> E_FormatMessageforGCT1051E
File: GCX126R.cbl
GIVEN:
The GCX105 input structure has been fully populated with log information
WHEN:
The message needs to be formatted for the GCT1051E transaction
THEN:
The GCX105 input data is moved to the GCT1051E message structure for subsequent logging operations
File: GCX126R.cbl
GIVEN:
A log message is being prepared for the GCT1051E transaction
WHEN:
The message content in GCX105-MESSAGE is spaces or low-values
THEN:
The log message preparation process is terminated without further processing
β Consolidated Acceptance Criteria
- The system is ready to persist the log entry → the system calls WRITMSGL utility with parameters: CCCOM control block, alternate PCB, message code (GCT1051E-MSG-CODE), message text (GCT1051E-MESSAGE), message length (GCT1051E-MSG-LGTH), and module name (GCT1051E-MOD-NAME) to write the log entry to the audit trail
- The message writing is invoked → the WRITMSGL program should be called with the common control area, alternate PCB, message code, message text, message length, and module name 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_CallWRITMSGLtoWriteMessage(["Start Step"])
E_CallWRITMSGLtoWriteMessage(["End Step"])
N_CallWRITMSGLtoWriteMessage_Node0{"The system is ready to persist the
log entry"}:::decision N_CallWRITMSGLtoWriteMessage_Node0_action["The system calls WRITMSGL utility
with parameters: CCCOM control
block, alternate PCB, message code
GCT1051E-MSG-CODE, message text
GCT1051E-MESSAGE, message length
GCT1051E-MSG-LGTH, and module name
GCT1051E-MOD-NAME to write the log
entry to the audit trail"]:::main N_CallWRITMSGLtoWriteMessage_Node0 -- Yes --> N_CallWRITMSGLtoWriteMessage_Node0_action N_CallWRITMSGLtoWriteMessage_Node0_action --> E_CallWRITMSGLtoWriteMessage S_CallWRITMSGLtoWriteMessage --> N_CallWRITMSGLtoWriteMessage_Node0 N_CallWRITMSGLtoWriteMessage_Node1{"The message writing is invoked"}:::decision N_CallWRITMSGLtoWriteMessage_Node1_action["The WRITMSGL program should be
called with the common control area,
alternate PCB, message code, message
text, message length, and module
name parameters"]:::main N_CallWRITMSGLtoWriteMessage_Node1 -- Yes --> N_CallWRITMSGLtoWriteMessage_Node1_action N_CallWRITMSGLtoWriteMessage_Node1_action --> E_CallWRITMSGLtoWriteMessage N_CallWRITMSGLtoWriteMessage_Node0 -- No --> N_CallWRITMSGLtoWriteMessage_Node1 N_CallWRITMSGLtoWriteMessage_Node1 -- No --> E_CallWRITMSGLtoWriteMessage
log entry"}:::decision N_CallWRITMSGLtoWriteMessage_Node0_action["The system calls WRITMSGL utility
with parameters: CCCOM control
block, alternate PCB, message code
GCT1051E-MSG-CODE, message text
GCT1051E-MESSAGE, message length
GCT1051E-MSG-LGTH, and module name
GCT1051E-MOD-NAME to write the log
entry to the audit trail"]:::main N_CallWRITMSGLtoWriteMessage_Node0 -- Yes --> N_CallWRITMSGLtoWriteMessage_Node0_action N_CallWRITMSGLtoWriteMessage_Node0_action --> E_CallWRITMSGLtoWriteMessage S_CallWRITMSGLtoWriteMessage --> N_CallWRITMSGLtoWriteMessage_Node0 N_CallWRITMSGLtoWriteMessage_Node1{"The message writing is invoked"}:::decision N_CallWRITMSGLtoWriteMessage_Node1_action["The WRITMSGL program should be
called with the common control area,
alternate PCB, message code, message
text, message length, and module
name parameters"]:::main N_CallWRITMSGLtoWriteMessage_Node1 -- Yes --> N_CallWRITMSGLtoWriteMessage_Node1_action N_CallWRITMSGLtoWriteMessage_Node1_action --> E_CallWRITMSGLtoWriteMessage N_CallWRITMSGLtoWriteMessage_Node0 -- No --> N_CallWRITMSGLtoWriteMessage_Node1 N_CallWRITMSGLtoWriteMessage_Node1 -- No --> E_CallWRITMSGLtoWriteMessage
File: GCX126R.cbl
GIVEN:
A log message with changed destination in the alternate PCB
WHEN:
The system is ready to persist the log entry
THEN:
The system calls WRITMSGL utility with parameters: CCCOM control block, alternate PCB, message code (GCT1051E-MSG-CODE), message text (GCT1051E-MESSAGE), message length (GCT1051E-MSG-LGTH), and module name (GCT1051E-MOD-NAME) to write the log entry to the audit trail
File: GCX126R.cbl
GIVEN:
The alternate PCB status has been changed successfully
WHEN:
The message writing is invoked
THEN:
The WRITMSGL program should be called with the common control area, alternate PCB, message code, message text, message length, and module name parameters
β Consolidated Acceptance Criteria
- The log writing operation is complete → the system calls CIMS with PURG function using the alternate PCB (ALT-PCB OF CCCOM) to purge the message from the queue
- The logging transaction needs to be completed → the system calls CIMS with PURG function using the alternate PCB to remove the message from the queue and 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_CallCIMSwithPURGFunction(["Start Step"])
E_CallCIMSwithPURGFunction(["End Step"])
N_CallCIMSwithPURGFunction_Node0{"The log writing operation is
complete"}:::decision N_CallCIMSwithPURGFunction_Node0_action["The system calls CIMS with PURG
function using the alternate PCB
ALT-PCB OF CCCOM to purge the
message from the queue"]:::main N_CallCIMSwithPURGFunction_Node0 -- Yes --> N_CallCIMSwithPURGFunction_Node0_action N_CallCIMSwithPURGFunction_Node0_action --> E_CallCIMSwithPURGFunction S_CallCIMSwithPURGFunction --> N_CallCIMSwithPURGFunction_Node0 N_CallCIMSwithPURGFunction_Node1{"The logging transaction needs to be
completed"}:::decision N_CallCIMSwithPURGFunction_Node1_action["The system calls CIMS with PURG
function using the alternate PCB to
remove the message from the queue
and finalize the transaction"]:::main N_CallCIMSwithPURGFunction_Node1 -- Yes --> N_CallCIMSwithPURGFunction_Node1_action N_CallCIMSwithPURGFunction_Node1_action --> E_CallCIMSwithPURGFunction N_CallCIMSwithPURGFunction_Node0 -- No --> N_CallCIMSwithPURGFunction_Node1 N_CallCIMSwithPURGFunction_Node1 -- No --> E_CallCIMSwithPURGFunction
complete"}:::decision N_CallCIMSwithPURGFunction_Node0_action["The system calls CIMS with PURG
function using the alternate PCB
ALT-PCB OF CCCOM to purge the
message from the queue"]:::main N_CallCIMSwithPURGFunction_Node0 -- Yes --> N_CallCIMSwithPURGFunction_Node0_action N_CallCIMSwithPURGFunction_Node0_action --> E_CallCIMSwithPURGFunction S_CallCIMSwithPURGFunction --> N_CallCIMSwithPURGFunction_Node0 N_CallCIMSwithPURGFunction_Node1{"The logging transaction needs to be
completed"}:::decision N_CallCIMSwithPURGFunction_Node1_action["The system calls CIMS with PURG
function using the alternate PCB to
remove the message from the queue
and finalize the transaction"]:::main N_CallCIMSwithPURGFunction_Node1 -- Yes --> N_CallCIMSwithPURGFunction_Node1_action N_CallCIMSwithPURGFunction_Node1_action --> E_CallCIMSwithPURGFunction N_CallCIMSwithPURGFunction_Node0 -- No --> N_CallCIMSwithPURGFunction_Node1 N_CallCIMSwithPURGFunction_Node1 -- No --> E_CallCIMSwithPURGFunction
File: GCX126R.cbl
GIVEN:
A log entry has been successfully written to the audit trail via the alternate PCB
WHEN:
The log writing operation is complete
THEN:
The system calls CIMS with PURG function using the alternate PCB (ALT-PCB OF CCCOM) to purge the message from the queue
File: GCX126R.cbl
GIVEN:
A cargo information message has been successfully written to the message log
WHEN:
The logging transaction needs to be completed
THEN:
- The system calls cims with purg function using the alternate pcb to remove the message from the queue
- Finalize the transaction
β Consolidated Acceptance Criteria
- The release information is being set → the cargo release by field is populated with the current ACF2 user ID from the 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_SetReleaseByUsertoACF2UserID(["Start Step"])
E_SetReleaseByUsertoACF2UserID(["End Step"])
N_SetReleaseByUsertoACF2UserID_Node0{"The release information is being
set"}:::decision N_SetReleaseByUsertoACF2UserID_Node0_action["The cargo release by field is
populated with the current ACF2 user
ID from the system"]:::main N_SetReleaseByUsertoACF2UserID_Node0 -- Yes --> N_SetReleaseByUsertoACF2UserID_Node0_action N_SetReleaseByUsertoACF2UserID_Node0_action --> E_SetReleaseByUsertoACF2UserID S_SetReleaseByUsertoACF2UserID --> N_SetReleaseByUsertoACF2UserID_Node0 N_SetReleaseByUsertoACF2UserID_Node0 -- No --> E_SetReleaseByUsertoACF2UserID
set"}:::decision N_SetReleaseByUsertoACF2UserID_Node0_action["The cargo release by field is
populated with the current ACF2 user
ID from the system"]:::main N_SetReleaseByUsertoACF2UserID_Node0 -- Yes --> N_SetReleaseByUsertoACF2UserID_Node0_action N_SetReleaseByUsertoACF2UserID_Node0_action --> E_SetReleaseByUsertoACF2UserID S_SetReleaseByUsertoACF2UserID --> N_SetReleaseByUsertoACF2UserID_Node0 N_SetReleaseByUsertoACF2UserID_Node0 -- No --> E_SetReleaseByUsertoACF2UserID
File: GCX126R.cbl
GIVEN:
A cargo record is being released
WHEN:
The release information is being set
THEN:
The cargo release by field is populated with the current ACF2 user ID from the system
β Consolidated Acceptance Criteria
- The system executes first US cargo retrieval using car-waybill index with '>=' operator → database returns first US cargo record matching or exceeding 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_RetrieveFirstUSCargoRecordbyCarIDandWaybill(["Start Step"])
E_RetrieveFirstUSCargoRecordbyCarIDandWaybill(["End Step"])
N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0{"The system executes first US cargo
retrieval using car-waybill index
with operator"}:::decision N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0_action["Database returns first US cargo
record matching or exceeding the
search criteria"]:::main N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveFirstUSCargoRecordbyCarIDandWaybill S_RetrieveFirstUSCargoRecordbyCarIDandWaybill --> N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0 N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0 -- No --> E_RetrieveFirstUSCargoRecordbyCarIDandWaybill
retrieval using car-waybill index
with operator"}:::decision N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0_action["Database returns first US cargo
record matching or exceeding the
search criteria"]:::main N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveFirstUSCargoRecordbyCarIDandWaybill S_RetrieveFirstUSCargoRecordbyCarIDandWaybill --> N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0 N_RetrieveFirstUSCargoRecordbyCarIDandWaybill_Node0 -- No --> E_RetrieveFirstUSCargoRecordbyCarIDandWaybill
File: GCX126R.cbl
GIVEN:
US cargo search keys are set with car ID and waybill index
WHEN:
The system executes first US cargo retrieval using car-waybill index with '>=' operator
THEN:
Database returns first US cargo record matching or exceeding the search criteria
β Consolidated Acceptance Criteria
- The system executes next US cargo retrieval using car-waybill index with '>' operator → database returns next US cargo record in 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_RetrieveNextUSCargoRecordbyCarIDandWaybill(["Start Step"])
E_RetrieveNextUSCargoRecordbyCarIDandWaybill(["End Step"])
N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0{"The system executes next US cargo
retrieval using car-waybill index
with operator"}:::decision N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0_action["Database returns next US cargo
record in sequence"]:::main N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveNextUSCargoRecordbyCarIDandWaybill S_RetrieveNextUSCargoRecordbyCarIDandWaybill --> N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0 N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0 -- No --> E_RetrieveNextUSCargoRecordbyCarIDandWaybill
retrieval using car-waybill index
with operator"}:::decision N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0_action["Database returns next US cargo
record in sequence"]:::main N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveNextUSCargoRecordbyCarIDandWaybill S_RetrieveNextUSCargoRecordbyCarIDandWaybill --> N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0 N_RetrieveNextUSCargoRecordbyCarIDandWaybill_Node0 -- No --> E_RetrieveNextUSCargoRecordbyCarIDandWaybill
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
First US cargo record did not meet criteria or was not found
WHEN:
The system executes next US cargo retrieval using car-waybill index with '>' operator
THEN:
Database returns next US cargo record in sequence
β Consolidated Acceptance Criteria
- The system checks end of file flag → if end of file flag is true, exit US manifest processing ELSE retrieve next US 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_EndofFile(["Start Step"])
E_EndofFile(["End Step"])
N_EndofFile_Node0{"The system checks end of file flag"}:::decision
N_EndofFile_Node0_action["If end of file flag is true, exit
US manifest processing ELSE retrieve
next US cargo record"]:::main N_EndofFile_Node0 -- Yes --> N_EndofFile_Node0_action N_EndofFile_Node0_action --> E_EndofFile S_EndofFile --> N_EndofFile_Node0 N_EndofFile_Node0 -- No --> E_EndofFile
US manifest processing ELSE retrieve
next US cargo record"]:::main N_EndofFile_Node0 -- Yes --> N_EndofFile_Node0_action N_EndofFile_Node0_action --> E_EndofFile S_EndofFile --> N_EndofFile_Node0 N_EndofFile_Node0 -- No --> E_EndofFile
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and validated
WHEN:
The system checks end of file flag
THEN:
If end of file flag is true, exit US manifest processing ELSE retrieve next US cargo record
β Consolidated Acceptance Criteria
- The system prepares to log the release message → log date is set to current machine century and date AND log time is set to current machine time AND log CCN is set to US cargo CCN AND action code is set to LOG-USE-INPUT-MESSAGE AND cargo type indicator is set to US 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_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo(["Start Step"])
E_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo(["End Step"])
N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0{"The system prepares to log the
release message"}:::decision N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0_action["Log date is set to current machine
century and date AND log time is set
to current machine time AND log CCN
is set to US cargo CCN AND action
code is set to LOG-USE-INPUT-MESSAGE
AND cargo type indicator is set to
US Cargo"]:::main N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0 -- Yes --> N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0_action N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0_action --> E_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo S_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo --> N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0 N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0 -- No --> E_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo
release message"}:::decision N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0_action["Log date is set to current machine
century and date AND log time is set
to current machine time AND log CCN
is set to US cargo CCN AND action
code is set to LOG-USE-INPUT-MESSAGE
AND cargo type indicator is set to
US Cargo"]:::main N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0 -- Yes --> N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0_action N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0_action --> E_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo S_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo --> N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0 N_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo_Node0 -- No --> E_PrepareLogInformationCurrentDateTimeUSCCNActionCodeLOGUSEINPUTMESSAGEMessageTypeUSCargo
File: GCX126R.cbl
GIVEN:
A valid US manifest record has been found
WHEN:
The system prepares to log the release message
THEN:
- Log date is set to current machine century
- Date
- Log time is set to current machine time
- Log ccn is set to us cargo ccn
- Action code is set to log-use-input-message
- Cargo type indicator is set to us cargo
β Consolidated Acceptance Criteria
- The system builds the release message → message text is set to 'CDN CCN RLSED BY EDI 350: ' concatenated with Canadian 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_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN(["Start Step"])
E_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN(["End Step"])
N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0{"The system builds the release
message"}:::decision N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["Message text is set to CDN CCN
RLSED BY EDI 350: concatenated with
Canadian cargo CCN key"]:::main N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN S_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN
message"}:::decision N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["Message text is set to CDN CCN
RLSED BY EDI 350: concatenated with
Canadian cargo CCN key"]:::main N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN S_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildReleaseMessageCDNCCNRLSEDBYEDI350CanadianCCN
File: GCX126R.cbl
GIVEN:
Log information has been prepared with US cargo details
WHEN:
The system builds the release message
THEN:
Message text is set to 'CDN CCN RLSED BY EDI 350: ' concatenated with Canadian cargo CCN key
β Consolidated Acceptance Criteria
- The system prepares to search for associated US cargo records → the system sets the US cargo search car ID to the current cargo's equipment car ID key, sets the US cargo search waybill index to the current cargo's waybill index, and initializes the US CCN key index to low values to start from the beginning of 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_SetCarIDfromCurrentCargoEquipment(["Start Step"])
E_SetCarIDfromCurrentCargoEquipment(["End Step"])
N_SetCarIDfromCurrentCargoEquipment_Node0{"The system prepares to search for
associated US cargo records"}:::decision N_SetCarIDfromCurrentCargoEquipment_Node0_action["The system sets the US cargo search
car ID to the current cargo s
equipment car ID key, sets the US
cargo search waybill index to the
current cargo s waybill index, and
initializes the US CCN key index to
low values to start from the
beginning of the index"]:::main N_SetCarIDfromCurrentCargoEquipment_Node0 -- Yes --> N_SetCarIDfromCurrentCargoEquipment_Node0_action N_SetCarIDfromCurrentCargoEquipment_Node0_action --> E_SetCarIDfromCurrentCargoEquipment S_SetCarIDfromCurrentCargoEquipment --> N_SetCarIDfromCurrentCargoEquipment_Node0 N_SetCarIDfromCurrentCargoEquipment_Node0 -- No --> E_SetCarIDfromCurrentCargoEquipment
associated US cargo records"}:::decision N_SetCarIDfromCurrentCargoEquipment_Node0_action["The system sets the US cargo search
car ID to the current cargo s
equipment car ID key, sets the US
cargo search waybill index to the
current cargo s waybill index, and
initializes the US CCN key index to
low values to start from the
beginning of the index"]:::main N_SetCarIDfromCurrentCargoEquipment_Node0 -- Yes --> N_SetCarIDfromCurrentCargoEquipment_Node0_action N_SetCarIDfromCurrentCargoEquipment_Node0_action --> E_SetCarIDfromCurrentCargoEquipment S_SetCarIDfromCurrentCargoEquipment --> N_SetCarIDfromCurrentCargoEquipment_Node0 N_SetCarIDfromCurrentCargoEquipment_Node0 -- No --> E_SetCarIDfromCurrentCargoEquipment
File: GCX126R.cbl
GIVEN:
A Canadian cargo record is being processed with a valid equipment car ID key and waybill index
WHEN:
The system prepares to search for associated US cargo records
THEN:
The system sets the US cargo search car ID to the current cargo's equipment car ID key, sets the US cargo search waybill index to the current cargo's waybill index, and initializes the US CCN key index to low values to start from the beginning of the index
β Consolidated Acceptance Criteria
- The system calls the database I/O module to retrieve US cargo using the car ID and waybill index → the system executes a GU (Get Unique) function against the US cargo segment with the specified search criteria and returns the first matching or next higher 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_CallDatabasetoGetFirstUSCargoRecord(["Start Step"])
E_CallDatabasetoGetFirstUSCargoRecord(["End Step"])
N_CallDatabasetoGetFirstUSCargoRecord_Node0{"The system calls the database IO
module to retrieve US cargo using
the car ID and waybill index"}:::decision N_CallDatabasetoGetFirstUSCargoRecord_Node0_action["The system executes a GU Get Unique
function against the US cargo
segment with the specified search
criteria and returns the first
matching or next higher record"]:::main N_CallDatabasetoGetFirstUSCargoRecord_Node0 -- Yes --> N_CallDatabasetoGetFirstUSCargoRecord_Node0_action N_CallDatabasetoGetFirstUSCargoRecord_Node0_action --> E_CallDatabasetoGetFirstUSCargoRecord S_CallDatabasetoGetFirstUSCargoRecord --> N_CallDatabasetoGetFirstUSCargoRecord_Node0 N_CallDatabasetoGetFirstUSCargoRecord_Node0 -- No --> E_CallDatabasetoGetFirstUSCargoRecord
module to retrieve US cargo using
the car ID and waybill index"}:::decision N_CallDatabasetoGetFirstUSCargoRecord_Node0_action["The system executes a GU Get Unique
function against the US cargo
segment with the specified search
criteria and returns the first
matching or next higher record"]:::main N_CallDatabasetoGetFirstUSCargoRecord_Node0 -- Yes --> N_CallDatabasetoGetFirstUSCargoRecord_Node0_action N_CallDatabasetoGetFirstUSCargoRecord_Node0_action --> E_CallDatabasetoGetFirstUSCargoRecord S_CallDatabasetoGetFirstUSCargoRecord --> N_CallDatabasetoGetFirstUSCargoRecord_Node0 N_CallDatabasetoGetFirstUSCargoRecord_Node0 -- No --> E_CallDatabasetoGetFirstUSCargoRecord
File: GCX126R.cbl
GIVEN:
The search parameters are initialized with car ID, waybill index, and US CCN key set to low values, and the search operator is set to '>='
WHEN:
- The system calls the database i/o module to retrieve us cargo using the car id
- Waybill index
THEN:
- The system executes a gu (get unique) function against the us cargo segment with the specified search criteria
- Returns the first matching or next higher record
β Consolidated Acceptance Criteria
- The system checks the database status code → if the status code is blank (spaces), the record is found and processing continues; if the status code is not blank, no record exists and the end-of-database flag 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_RecordFound(["Start Step"])
E_RecordFound(["End Step"])
N_RecordFound_Node0{"The system checks the database
status code"}:::decision N_RecordFound_Node0_action["If the status code is blank spaces,
the record is found and processing
continues if the status code is not
blank, no record exists and the
end-of-database flag is set"]:::main N_RecordFound_Node0 -- Yes --> N_RecordFound_Node0_action N_RecordFound_Node0_action --> E_RecordFound S_RecordFound --> N_RecordFound_Node0 N_RecordFound_Node0 -- No --> E_RecordFound
status code"}:::decision N_RecordFound_Node0_action["If the status code is blank spaces,
the record is found and processing
continues if the status code is not
blank, no record exists and the
end-of-database flag is set"]:::main N_RecordFound_Node0 -- Yes --> N_RecordFound_Node0_action N_RecordFound_Node0_action --> E_RecordFound S_RecordFound --> N_RecordFound_Node0 N_RecordFound_Node0 -- No --> E_RecordFound
File: GCX126R.cbl
GIVEN:
A database retrieval operation has been executed for US cargo
WHEN:
The system checks the database status code
THEN:
- If the status code is blank (spaces), the record is found
- Processing continues; if the status code is not blank, no record exists
- The end-of-database flag is set
β Consolidated Acceptance Criteria
- All validation checks pass successfully → the system sets the US manifest found indicator to true, allowing the US cargo to be processed for release updates
- All validation checks pass successfully → the US manifest found flag is set to true and the search process completes 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_MarkUSManifestFound(["Start Step"])
E_MarkUSManifestFound(["End Step"])
N_MarkUSManifestFound_Node0{"All validation checks pass
successfully"}:::decision N_MarkUSManifestFound_Node0_action["The system sets the US manifest
found indicator to true, allowing
the US cargo to be processed for
release updates"]:::main N_MarkUSManifestFound_Node0 -- Yes --> N_MarkUSManifestFound_Node0_action N_MarkUSManifestFound_Node0_action --> E_MarkUSManifestFound S_MarkUSManifestFound --> N_MarkUSManifestFound_Node0 N_MarkUSManifestFound_Node1{"All validation checks pass
successfully"}:::decision N_MarkUSManifestFound_Node1_action["The US manifest found flag is set
to true and the search process
completes successfully"]:::main N_MarkUSManifestFound_Node1 -- Yes --> N_MarkUSManifestFound_Node1_action N_MarkUSManifestFound_Node1_action --> E_MarkUSManifestFound N_MarkUSManifestFound_Node0 -- No --> N_MarkUSManifestFound_Node1 N_MarkUSManifestFound_Node1 -- No --> E_MarkUSManifestFound
successfully"}:::decision N_MarkUSManifestFound_Node0_action["The system sets the US manifest
found indicator to true, allowing
the US cargo to be processed for
release updates"]:::main N_MarkUSManifestFound_Node0 -- Yes --> N_MarkUSManifestFound_Node0_action N_MarkUSManifestFound_Node0_action --> E_MarkUSManifestFound S_MarkUSManifestFound --> N_MarkUSManifestFound_Node0 N_MarkUSManifestFound_Node1{"All validation checks pass
successfully"}:::decision N_MarkUSManifestFound_Node1_action["The US manifest found flag is set
to true and the search process
completes successfully"]:::main N_MarkUSManifestFound_Node1 -- Yes --> N_MarkUSManifestFound_Node1_action N_MarkUSManifestFound_Node1_action --> E_MarkUSManifestFound N_MarkUSManifestFound_Node0 -- No --> N_MarkUSManifestFound_Node1 N_MarkUSManifestFound_Node1 -- No --> E_MarkUSManifestFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record exists that matches the car ID and waybill, is not deleted, and does not have a train already created
WHEN:
All validation checks pass successfully
THEN:
The system sets the US manifest found indicator to true, allowing the US cargo to be processed for release updates
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved with matching car ID and waybill, and the cargo is not deleted and has no train record created
WHEN:
All validation checks pass successfully
THEN:
- The us manifest found flag is set to true
- The search process completes successfully
β Consolidated Acceptance Criteria
- Any of the following conditions occur: database status is not blank, car ID or waybill does not match, cargo is deleted, or train is already created → the system sets the end-of-database flag to true, indicating no valid US cargo record is available 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_MarkEndofDatabase(["Start Step"])
E_MarkEndofDatabase(["End Step"])
N_MarkEndofDatabase_Node0{"Any of the following conditions
occur: database status is not blank,
car ID or waybill does not match,
cargo is deleted, or train is
already created"}:::decision N_MarkEndofDatabase_Node0_action["The system sets the end-of-database
flag to true, indicating no valid US
cargo record is available for
processing"]:::main N_MarkEndofDatabase_Node0 -- Yes --> N_MarkEndofDatabase_Node0_action N_MarkEndofDatabase_Node0_action --> E_MarkEndofDatabase S_MarkEndofDatabase --> N_MarkEndofDatabase_Node0 N_MarkEndofDatabase_Node0 -- No --> E_MarkEndofDatabase
occur: database status is not blank,
car ID or waybill does not match,
cargo is deleted, or train is
already created"}:::decision N_MarkEndofDatabase_Node0_action["The system sets the end-of-database
flag to true, indicating no valid US
cargo record is available for
processing"]:::main N_MarkEndofDatabase_Node0 -- Yes --> N_MarkEndofDatabase_Node0_action N_MarkEndofDatabase_Node0_action --> E_MarkEndofDatabase S_MarkEndofDatabase --> N_MarkEndofDatabase_Node0 N_MarkEndofDatabase_Node0 -- No --> E_MarkEndofDatabase
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The database retrieval operation has completed
WHEN:
Any of the following conditions occur: database status is not blank, car ID or waybill does not match, cargo is deleted, or train is already created
THEN:
The system sets the end-of-database flag to true, indicating no valid US cargo record is available for processing
β Consolidated Acceptance Criteria
- The system prepares to search for associated US cargo records → the US cargo search waybill number index is populated with the saved waybill index 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_SetWaybillIndexfromSavedWaybill(["Start Step"])
E_SetWaybillIndexfromSavedWaybill(["End Step"])
N_SetWaybillIndexfromSavedWaybill_Node0{"The system prepares to search for
associated US cargo records"}:::decision N_SetWaybillIndexfromSavedWaybill_Node0_action["The US cargo search waybill number
index is populated with the saved
waybill index value"]:::main N_SetWaybillIndexfromSavedWaybill_Node0 -- Yes --> N_SetWaybillIndexfromSavedWaybill_Node0_action N_SetWaybillIndexfromSavedWaybill_Node0_action --> E_SetWaybillIndexfromSavedWaybill S_SetWaybillIndexfromSavedWaybill --> N_SetWaybillIndexfromSavedWaybill_Node0 N_SetWaybillIndexfromSavedWaybill_Node0 -- No --> E_SetWaybillIndexfromSavedWaybill
associated US cargo records"}:::decision N_SetWaybillIndexfromSavedWaybill_Node0_action["The US cargo search waybill number
index is populated with the saved
waybill index value"]:::main N_SetWaybillIndexfromSavedWaybill_Node0 -- Yes --> N_SetWaybillIndexfromSavedWaybill_Node0_action N_SetWaybillIndexfromSavedWaybill_Node0_action --> E_SetWaybillIndexfromSavedWaybill S_SetWaybillIndexfromSavedWaybill --> N_SetWaybillIndexfromSavedWaybill_Node0 N_SetWaybillIndexfromSavedWaybill_Node0 -- No --> E_SetWaybillIndexfromSavedWaybill
File: GCX126R.cbl
GIVEN:
A waybill index has been saved from the current cargo processing
WHEN:
The system prepares to search for associated US cargo records
THEN:
The US cargo search waybill number index is populated with the saved waybill index value
β Consolidated Acceptance Criteria
- Database access parameters are being configured → the database accept status is set to 'GEGB' to enable get and browse 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_SetDatabaseStatustoGEGB(["Start Step"])
E_SetDatabaseStatustoGEGB(["End Step"])
N_SetDatabaseStatustoGEGB_Node0{"Database access parameters are
being configured"}:::decision N_SetDatabaseStatustoGEGB_Node0_action["The database accept status is set
to GEGB to enable get and browse
operations"]:::main N_SetDatabaseStatustoGEGB_Node0 -- Yes --> N_SetDatabaseStatustoGEGB_Node0_action N_SetDatabaseStatustoGEGB_Node0_action --> E_SetDatabaseStatustoGEGB S_SetDatabaseStatustoGEGB --> N_SetDatabaseStatustoGEGB_Node0 N_SetDatabaseStatustoGEGB_Node0 -- No --> E_SetDatabaseStatustoGEGB
being configured"}:::decision N_SetDatabaseStatustoGEGB_Node0_action["The database accept status is set
to GEGB to enable get and browse
operations"]:::main N_SetDatabaseStatustoGEGB_Node0 -- Yes --> N_SetDatabaseStatustoGEGB_Node0_action N_SetDatabaseStatustoGEGB_Node0_action --> E_SetDatabaseStatustoGEGB S_SetDatabaseStatustoGEGB --> N_SetDatabaseStatustoGEGB_Node0 N_SetDatabaseStatustoGEGB_Node0 -- No --> E_SetDatabaseStatustoGEGB
File: GCX126R.cbl
GIVEN:
The system needs to retrieve US cargo records from the database
WHEN:
Database access parameters are being configured
THEN:
- The database accept status is set to 'gegb' to enable get
- Browse operations
β Consolidated Acceptance Criteria
- The database index type is being specified → the index type is set to Car-Waybill to use the composite index for the 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_SetIndexTypetoCarWaybill(["Start Step"])
E_SetIndexTypetoCarWaybill(["End Step"])
N_SetIndexTypetoCarWaybill_Node0{"The database index type is being
specified"}:::decision N_SetIndexTypetoCarWaybill_Node0_action["The index type is set to
Car-Waybill to use the composite
index for the search"]:::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
specified"}:::decision N_SetIndexTypetoCarWaybill_Node0_action["The index type is set to
Car-Waybill to use the composite
index for the search"]:::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: GCX126R.cbl
GIVEN:
The system needs to search US cargo records by equipment and waybill
WHEN:
The database index type is being specified
THEN:
The index type is set to Car-Waybill to use the composite index for the search
β Consolidated Acceptance Criteria
- The system executes the database retrieval operation → the GCCUSIO module is called with the configured parameters to retrieve the US cargo record into the GCSUSRT 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_CallGCCUSIOtoRetrieveUSCargo(["Start Step"])
E_CallGCCUSIOtoRetrieveUSCargo(["End Step"])
N_CallGCCUSIOtoRetrieveUSCargo_Node0{"The system executes the database
retrieval operation"}:::decision N_CallGCCUSIOtoRetrieveUSCargo_Node0_action["The GCCUSIO module is called with
the configured parameters to
retrieve the US cargo record into
the GCSUSRT segment"]:::main N_CallGCCUSIOtoRetrieveUSCargo_Node0 -- Yes --> N_CallGCCUSIOtoRetrieveUSCargo_Node0_action N_CallGCCUSIOtoRetrieveUSCargo_Node0_action --> E_CallGCCUSIOtoRetrieveUSCargo S_CallGCCUSIOtoRetrieveUSCargo --> N_CallGCCUSIOtoRetrieveUSCargo_Node0 N_CallGCCUSIOtoRetrieveUSCargo_Node0 -- No --> E_CallGCCUSIOtoRetrieveUSCargo
retrieval operation"}:::decision N_CallGCCUSIOtoRetrieveUSCargo_Node0_action["The GCCUSIO module is called with
the configured parameters to
retrieve the US cargo record into
the GCSUSRT segment"]:::main N_CallGCCUSIOtoRetrieveUSCargo_Node0 -- Yes --> N_CallGCCUSIOtoRetrieveUSCargo_Node0_action N_CallGCCUSIOtoRetrieveUSCargo_Node0_action --> E_CallGCCUSIOtoRetrieveUSCargo S_CallGCCUSIOtoRetrieveUSCargo --> N_CallGCCUSIOtoRetrieveUSCargo_Node0 N_CallGCCUSIOtoRetrieveUSCargo_Node0 -- No --> E_CallGCCUSIOtoRetrieveUSCargo
File: GCX126R.cbl
GIVEN:
All search parameters are configured with car identifier, waybill index, function code GU, index type Car-Waybill, and operator '>='
WHEN:
The system executes the database retrieval operation
THEN:
The GCCUSIO module is called with the configured parameters to retrieve the US cargo record into the GCSUSRT segment
β Consolidated Acceptance Criteria
- The system prepares to retrieve the next US cargo record by car and waybill → the search parameters are set with car ID from current cargo's car identification key, waybill index from saved waybill index, function code set to Get Next, segment type set to US cargo, index type set to car-waybill, and operator set to greater than ('>') for sequential 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_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan(["Start Step"])
E_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan(["End Step"])
N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0{"The system prepares to retrieve the
next US cargo record by car and
waybill"}:::decision N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0_action["The search parameters are set with
car ID from current cargo s car
identification key, waybill index
from saved waybill index, function
code set to Get Next, segment type
set to US cargo, index type set to
car-waybill, and operator set to
greater than for sequential
retrieval"]:::main N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0 -- Yes --> N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0_action N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0_action --> E_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan S_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan --> N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0 N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0 -- No --> E_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan
next US cargo record by car and
waybill"}:::decision N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0_action["The search parameters are set with
car ID from current cargo s car
identification key, waybill index
from saved waybill index, function
code set to Get Next, segment type
set to US cargo, index type set to
car-waybill, and operator set to
greater than for sequential
retrieval"]:::main N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0 -- Yes --> N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0_action N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0_action --> E_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan S_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan --> N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0 N_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan_Node0 -- No --> E_SetSearchParametersCarIDfromCurrentCargoWaybillIndexfromCurrentCargoOperatorGreaterThan
File: GCX126R.cbl
GIVEN:
A current cargo record exists with a car identification key and waybill index
WHEN:
- The system prepares to retrieve the next us cargo record by car
- Waybill
THEN:
The search parameters are set with car ID from current cargo's car identification key, waybill index from saved waybill index, function code set to Get Next, segment type set to US cargo, index type set to car-waybill, and operator set to greater than ('>') for sequential retrieval
β Consolidated Acceptance Criteria
- The database retrieval operation is invoked → the system calls the cargo input/output module to retrieve the next US cargo record based on the 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_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex(["Start Step"])
E_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex(["End Step"])
N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0{"The database retrieval operation is
invoked"}:::decision N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0_action["The system calls the cargo
inputoutput module to retrieve the
next US cargo record based on the
car-waybill index"]:::main N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0 -- Yes --> N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0_action N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0_action --> E_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex S_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex --> N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0 N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0 -- No --> E_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex
invoked"}:::decision N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0_action["The system calls the cargo
inputoutput module to retrieve the
next US cargo record based on the
car-waybill index"]:::main N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0 -- Yes --> N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0_action N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0_action --> E_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex S_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex --> N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0 N_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex_Node0 -- No --> E_CallDatabasetoGetNextUSCargoRecordbyCarWaybillIndex
File: GCX126R.cbl
GIVEN:
Search parameters are configured with car ID, waybill index, Get Next function, US cargo segment type, car-waybill index type, and greater-than operator
WHEN:
The database retrieval operation is invoked
THEN:
The system calls the cargo input/output module to retrieve the next US cargo record based on the car-waybill index
β Consolidated Acceptance Criteria
- The database status code is not blank (indicating no record found or error condition) → the end-of-database flag is set to true to indicate no more records are 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_DatabaseStatusOKNoNotFound(["Start Step"])
E_DatabaseStatusOKNoNotFound(["End Step"])
N_DatabaseStatusOKNoNotFound_Node0{"The database status code is not
blank indicating no record found or
error condition"}:::decision N_DatabaseStatusOKNoNotFound_Node0_action["The end-of-database flag is set to
true to indicate no more records are
available"]:::exclusion N_DatabaseStatusOKNoNotFound_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKNoNotFound_Node0_action N_DatabaseStatusOKNoNotFound_Node0_action --> E_DatabaseStatusOKNoNotFound S_DatabaseStatusOKNoNotFound --> N_DatabaseStatusOKNoNotFound_Node0 N_DatabaseStatusOKNoNotFound_Node0 -- No --> E_DatabaseStatusOKNoNotFound
blank indicating no record found or
error condition"}:::decision N_DatabaseStatusOKNoNotFound_Node0_action["The end-of-database flag is set to
true to indicate no more records are
available"]:::exclusion N_DatabaseStatusOKNoNotFound_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKNoNotFound_Node0_action N_DatabaseStatusOKNoNotFound_Node0_action --> E_DatabaseStatusOKNoNotFound S_DatabaseStatusOKNoNotFound --> N_DatabaseStatusOKNoNotFound_Node0 N_DatabaseStatusOKNoNotFound_Node0 -- No --> E_DatabaseStatusOKNoNotFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database retrieval operation has been executed for the next US cargo record
WHEN:
The database status code is not blank (indicating no record found or error condition)
THEN:
The end-of-database flag is set to true to indicate no more records are available
β Consolidated Acceptance Criteria
- The system validates the retrieved record against the current cargo → if the first 12 characters of the retrieved car identification index match the current cargo's car identification key AND the waybill number index matches the saved waybill index, the validation passes; otherwise, the end-of-database flag is set to true
- Comparing the retrieved record's car ID (first 12 characters) and waybill index against the current cargo's car ID key and saved waybill index → if both car ID and waybill index match, proceed to check cargo status; otherwise, set end of database flag to indicate no match 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_CarIDandWaybillMatchCurrentCargo(["Start Step"])
E_CarIDandWaybillMatchCurrentCargo(["End Step"])
N_CarIDandWaybillMatchCurrentCargo_Node0{"The system validates the retrieved
record against the current cargo"}:::decision N_CarIDandWaybillMatchCurrentCargo_Node0_action["If the first 12 characters of the
retrieved car identification index
match the current cargo s car
identification key AND the waybill
number index matches the saved
waybill index, the validation passes
otherwise, the end-of-database flag
is set to true"]:::main N_CarIDandWaybillMatchCurrentCargo_Node0 -- Yes --> N_CarIDandWaybillMatchCurrentCargo_Node0_action N_CarIDandWaybillMatchCurrentCargo_Node0_action --> E_CarIDandWaybillMatchCurrentCargo S_CarIDandWaybillMatchCurrentCargo --> N_CarIDandWaybillMatchCurrentCargo_Node0 N_CarIDandWaybillMatchCurrentCargo_Node1{"Comparing the retrieved record s
car ID first 12 characters and
waybill index against the current
cargo s car ID key and saved waybill
index"}:::decision N_CarIDandWaybillMatchCurrentCargo_Node1_action["If both car ID and waybill index
match, proceed to check cargo status
otherwise, set end of database flag
to indicate no match found"]:::main N_CarIDandWaybillMatchCurrentCargo_Node1 -- Yes --> N_CarIDandWaybillMatchCurrentCargo_Node1_action N_CarIDandWaybillMatchCurrentCargo_Node1_action --> E_CarIDandWaybillMatchCurrentCargo N_CarIDandWaybillMatchCurrentCargo_Node0 -- No --> N_CarIDandWaybillMatchCurrentCargo_Node1 N_CarIDandWaybillMatchCurrentCargo_Node1 -- No --> E_CarIDandWaybillMatchCurrentCargo
record against the current cargo"}:::decision N_CarIDandWaybillMatchCurrentCargo_Node0_action["If the first 12 characters of the
retrieved car identification index
match the current cargo s car
identification key AND the waybill
number index matches the saved
waybill index, the validation passes
otherwise, the end-of-database flag
is set to true"]:::main N_CarIDandWaybillMatchCurrentCargo_Node0 -- Yes --> N_CarIDandWaybillMatchCurrentCargo_Node0_action N_CarIDandWaybillMatchCurrentCargo_Node0_action --> E_CarIDandWaybillMatchCurrentCargo S_CarIDandWaybillMatchCurrentCargo --> N_CarIDandWaybillMatchCurrentCargo_Node0 N_CarIDandWaybillMatchCurrentCargo_Node1{"Comparing the retrieved record s
car ID first 12 characters and
waybill index against the current
cargo s car ID key and saved waybill
index"}:::decision N_CarIDandWaybillMatchCurrentCargo_Node1_action["If both car ID and waybill index
match, proceed to check cargo status
otherwise, set end of database flag
to indicate no match found"]:::main N_CarIDandWaybillMatchCurrentCargo_Node1 -- Yes --> N_CarIDandWaybillMatchCurrentCargo_Node1_action N_CarIDandWaybillMatchCurrentCargo_Node1_action --> E_CarIDandWaybillMatchCurrentCargo N_CarIDandWaybillMatchCurrentCargo_Node0 -- No --> N_CarIDandWaybillMatchCurrentCargo_Node1 N_CarIDandWaybillMatchCurrentCargo_Node1 -- No --> E_CarIDandWaybillMatchCurrentCargo
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database with car identification index and waybill number index
WHEN:
The system validates the retrieved record against the current cargo
THEN:
- If the first 12 characters of the retrieved car identification index match the current cargo's car identification key
- The waybill number index matches the saved waybill index, the validation passes; otherwise, the end-of-database flag is set to true
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
- Comparing the retrieved record's car id (first 12 characters) and waybill index against the current cargo's car id key
- Saved waybill index
THEN:
- If both car id
- Waybill index match, proceed to check cargo status; otherwise, set end of database flag to indicate no match found
β Consolidated Acceptance Criteria
- The system checks if a transfer receipt exists for this cargo → if the transfer receipt created indicator equals 'Y', the record is skipped and processing continues to the next iteration; otherwise, the US manifest 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_TransferReceiptCreated(["Start Step"])
E_TransferReceiptCreated(["End Step"])
N_TransferReceiptCreated_Node0{"The system checks if a transfer
receipt exists for this cargo"}:::decision N_TransferReceiptCreated_Node0_action["If the transfer receipt created
indicator equals Y , the record is
skipped and processing continues to
the next iteration otherwise, the US
manifest found flag is set to true"]:::main N_TransferReceiptCreated_Node0 -- Yes --> N_TransferReceiptCreated_Node0_action N_TransferReceiptCreated_Node0_action --> E_TransferReceiptCreated S_TransferReceiptCreated --> N_TransferReceiptCreated_Node0 N_TransferReceiptCreated_Node0 -- No --> E_TransferReceiptCreated
receipt exists for this cargo"}:::decision N_TransferReceiptCreated_Node0_action["If the transfer receipt created
indicator equals Y , the record is
skipped and processing continues to
the next iteration otherwise, the US
manifest found flag is set to true"]:::main N_TransferReceiptCreated_Node0 -- Yes --> N_TransferReceiptCreated_Node0_action N_TransferReceiptCreated_Node0_action --> E_TransferReceiptCreated S_TransferReceiptCreated --> N_TransferReceiptCreated_Node0 N_TransferReceiptCreated_Node0 -- No --> E_TransferReceiptCreated
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved, validated for match, and confirmed as not deleted
WHEN:
The system checks if a transfer receipt exists for this cargo
THEN:
- If the transfer receipt created indicator equals 'y', the record is skipped
- Processing continues to the next iteration; otherwise, the us manifest found flag is set to true
β Consolidated Acceptance Criteria
- The first 12 characters of the car identification index do not match the current cargo's car identification key OR the waybill number index does not match the saved waybill index → the end-of-database flag is set to true to terminate the search 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_CarIDandWaybillMatchCurrentCargoNoDifferentCargo(["Start Step"])
E_CarIDandWaybillMatchCurrentCargoNoDifferentCargo(["End Step"])
N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0{"The first 12 characters of the car
identification index do not match
the current cargo s car
identification key OR the waybill
number index does not match the
saved waybill index"}:::decision N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0_action["The end-of-database flag is set to
true to terminate the search loop"]:::exclusion N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0 -- Yes -->|Alternative| N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0_action N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0_action --> E_CarIDandWaybillMatchCurrentCargoNoDifferentCargo S_CarIDandWaybillMatchCurrentCargoNoDifferentCargo --> N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0 N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0 -- No --> E_CarIDandWaybillMatchCurrentCargoNoDifferentCargo
identification index do not match
the current cargo s car
identification key OR the waybill
number index does not match the
saved waybill index"}:::decision N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0_action["The end-of-database flag is set to
true to terminate the search loop"]:::exclusion N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0 -- Yes -->|Alternative| N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0_action N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0_action --> E_CarIDandWaybillMatchCurrentCargoNoDifferentCargo S_CarIDandWaybillMatchCurrentCargoNoDifferentCargo --> N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0 N_CarIDandWaybillMatchCurrentCargoNoDifferentCargo_Node0 -- No --> E_CarIDandWaybillMatchCurrentCargoNoDifferentCargo
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved from the database
WHEN:
The first 12 characters of the car identification index do not match the current cargo's car identification key OR the waybill number index does not match the saved waybill index
THEN:
The end-of-database flag is set to true to terminate the search loop
β Consolidated Acceptance Criteria
- The GCCUSIO routine is called with the parameter block and US cargo segment → the system retrieves the next US cargo record from the GCSUSRT table based on the car/waybill 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_CallGCCUSIOtoReadNextRecord(["Start Step"])
E_CallGCCUSIOtoReadNextRecord(["End Step"])
N_CallGCCUSIOtoReadNextRecord_Node0{"The GCCUSIO routine is called with
the parameter block and US cargo
segment"}:::decision N_CallGCCUSIOtoReadNextRecord_Node0_action["The system retrieves the next US
cargo record from the GCSUSRT table
based on the carwaybill index
position"]:::main N_CallGCCUSIOtoReadNextRecord_Node0 -- Yes --> N_CallGCCUSIOtoReadNextRecord_Node0_action N_CallGCCUSIOtoReadNextRecord_Node0_action --> E_CallGCCUSIOtoReadNextRecord S_CallGCCUSIOtoReadNextRecord --> N_CallGCCUSIOtoReadNextRecord_Node0 N_CallGCCUSIOtoReadNextRecord_Node0 -- No --> E_CallGCCUSIOtoReadNextRecord
the parameter block and US cargo
segment"}:::decision N_CallGCCUSIOtoReadNextRecord_Node0_action["The system retrieves the next US
cargo record from the GCSUSRT table
based on the carwaybill index
position"]:::main N_CallGCCUSIOtoReadNextRecord_Node0 -- Yes --> N_CallGCCUSIOtoReadNextRecord_Node0_action N_CallGCCUSIOtoReadNextRecord_Node0_action --> E_CallGCCUSIOtoReadNextRecord S_CallGCCUSIOtoReadNextRecord --> N_CallGCCUSIOtoReadNextRecord_Node0 N_CallGCCUSIOtoReadNextRecord_Node0 -- No --> E_CallGCCUSIOtoReadNextRecord
File: GCX126R.cbl
GIVEN:
Database call parameters are configured with accept status 'GEGB', segment GCSUSRT, function GN, car/waybill index, and operator '>'
WHEN:
- The gccusio routine is called with the parameter block
- Us cargo segment
THEN:
The system retrieves the next US cargo record from the GCSUSRT table based on the car/waybill index position
β Consolidated Acceptance Criteria
- The car ID (first 12 characters) does not match the current equipment car ID key OR the waybill number index does not match the saved waybill index → the end-of-database flag is set to true to terminate the search 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_SetEndofDatabaseFlag(["Start Step"])
E_SetEndofDatabaseFlag(["End Step"])
N_SetEndofDatabaseFlag_Node0{"The car ID first 12 characters does
not match the current equipment car
ID key OR the waybill number index
does not match the saved waybill
index"}:::decision N_SetEndofDatabaseFlag_Node0_action["The end-of-database flag is set to
true to terminate the search loop"]:::exclusion N_SetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node0_action N_SetEndofDatabaseFlag_Node0_action --> E_SetEndofDatabaseFlag S_SetEndofDatabaseFlag --> N_SetEndofDatabaseFlag_Node0 N_SetEndofDatabaseFlag_Node0 -- No --> E_SetEndofDatabaseFlag
not match the current equipment car
ID key OR the waybill number index
does not match the saved waybill
index"}:::decision N_SetEndofDatabaseFlag_Node0_action["The end-of-database flag is set to
true to terminate the search loop"]:::exclusion N_SetEndofDatabaseFlag_Node0 -- Yes -->|Alternative| N_SetEndofDatabaseFlag_Node0_action N_SetEndofDatabaseFlag_Node0_action --> E_SetEndofDatabaseFlag S_SetEndofDatabaseFlag --> N_SetEndofDatabaseFlag_Node0 N_SetEndofDatabaseFlag_Node0 -- No --> E_SetEndofDatabaseFlag
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved from the database
WHEN:
The car ID (first 12 characters) does not match the current equipment car ID key OR the waybill number index does not match the saved waybill index
THEN:
The end-of-database flag is set to true to terminate the search loop
β Consolidated Acceptance Criteria
- The system logs the CSA acceptance → the system creates a log message 'EDI 350: ACCEPTED - CSA' AND includes the current machine date in format CCYYMMDD AND includes the current machine time in format HHMMSS AND includes the current CCN key (WS-CURRENT-CCN-KEY) AND sets the cargo type indicator to CA-CARGO AND sets the action code to 'LOG-USE-INPUT-MESSAGE' AND spawns a GCT1051E 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_LogMessageEDI350ACCEPTEDCSA(["Start Step"])
E_LogMessageEDI350ACCEPTEDCSA(["End Step"])
N_LogMessageEDI350ACCEPTEDCSA_Node0{"The system logs the CSA acceptance"}:::decision
N_LogMessageEDI350ACCEPTEDCSA_Node0_action["The system creates a log message
EDI 350: ACCEPTED - CSA AND includes
the current machine date in format
CCYYMMDD AND includes the current
machine time in format HHMMSS AND
includes the current CCN key
WS-CURRENT-CCN-KEY AND sets the
cargo type indicator to CA-CARGO AND
sets the action code to
LOG-USE-INPUT-MESSAGE AND spawns a
GCT1051E log entry"]:::main N_LogMessageEDI350ACCEPTEDCSA_Node0 -- Yes --> N_LogMessageEDI350ACCEPTEDCSA_Node0_action N_LogMessageEDI350ACCEPTEDCSA_Node0_action --> E_LogMessageEDI350ACCEPTEDCSA S_LogMessageEDI350ACCEPTEDCSA --> N_LogMessageEDI350ACCEPTEDCSA_Node0 N_LogMessageEDI350ACCEPTEDCSA_Node0 -- No --> E_LogMessageEDI350ACCEPTEDCSA
EDI 350: ACCEPTED - CSA AND includes
the current machine date in format
CCYYMMDD AND includes the current
machine time in format HHMMSS AND
includes the current CCN key
WS-CURRENT-CCN-KEY AND sets the
cargo type indicator to CA-CARGO AND
sets the action code to
LOG-USE-INPUT-MESSAGE AND spawns a
GCT1051E log entry"]:::main N_LogMessageEDI350ACCEPTEDCSA_Node0 -- Yes --> N_LogMessageEDI350ACCEPTEDCSA_Node0_action N_LogMessageEDI350ACCEPTEDCSA_Node0_action --> E_LogMessageEDI350ACCEPTEDCSA S_LogMessageEDI350ACCEPTEDCSA --> N_LogMessageEDI350ACCEPTEDCSA_Node0 N_LogMessageEDI350ACCEPTEDCSA_Node0 -- No --> E_LogMessageEDI350ACCEPTEDCSA
File: GCX126R.cbl
GIVEN:
The cargo is a CSA manifest (GCCC-CSA-IND-ON is true) AND an authorization to deliver message is being processed
WHEN:
The system logs the CSA acceptance
THEN:
- The system creates a log message 'edi 350: accepted - csa' and includes the current machine date in format ccyymmdd
- Includes the current machine time in format hhmmss
- Includes the current ccn key (ws-current-ccn-key) and sets the cargo type indicator to ca-cargo
- Sets the action code to 'log-use-input-message' and spawns a gct1051e log entry
β Consolidated Acceptance Criteria
- The system updates the cargo status → the system sets the cargo status indicator to GCCC-STATUS-CSA-DLV (CSA delivery authorized 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_SetCargoStatustoCSADLV(["Start Step"])
E_SetCargoStatustoCSADLV(["End Step"])
N_SetCargoStatustoCSADLV_Node0{"The system updates the cargo status"}:::decision
N_SetCargoStatustoCSADLV_Node0_action["The system sets the cargo status
indicator to GCCC-STATUS-CSA-DLV CSA
delivery authorized status"]:::main N_SetCargoStatustoCSADLV_Node0 -- Yes --> N_SetCargoStatustoCSADLV_Node0_action N_SetCargoStatustoCSADLV_Node0_action --> E_SetCargoStatustoCSADLV S_SetCargoStatustoCSADLV --> N_SetCargoStatustoCSADLV_Node0 N_SetCargoStatustoCSADLV_Node0 -- No --> E_SetCargoStatustoCSADLV
indicator to GCCC-STATUS-CSA-DLV CSA
delivery authorized status"]:::main N_SetCargoStatustoCSADLV_Node0 -- Yes --> N_SetCargoStatustoCSADLV_Node0_action N_SetCargoStatustoCSADLV_Node0_action --> E_SetCargoStatustoCSADLV S_SetCargoStatustoCSADLV --> N_SetCargoStatustoCSADLV_Node0 N_SetCargoStatustoCSADLV_Node0 -- No --> E_SetCargoStatustoCSADLV
File: GCX126R.cbl
GIVEN:
The cargo is a CSA manifest AND the authorization to deliver message has been accepted
WHEN:
The system updates the cargo status
THEN:
The system sets the cargo status indicator to GCCC-STATUS-CSA-DLV (CSA delivery authorized status)
β Consolidated Acceptance Criteria
- The system sets the authorization flag → the system sets the CSA authorization to deliver received flag (GCCC-CSA-AUTH-DELIVER-RECD) 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_SetCSAAuthorizationDeliverFlagtoTRUE(["Start Step"])
E_SetCSAAuthorizationDeliverFlagtoTRUE(["End Step"])
N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0{"The system sets the authorization
flag"}:::decision N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0_action["The system sets the CSA
authorization to deliver received
flag GCCC-CSA-AUTH-DELIVER-RECD to
TRUE"]:::main N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0 -- Yes --> N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0_action N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0_action --> E_SetCSAAuthorizationDeliverFlagtoTRUE S_SetCSAAuthorizationDeliverFlagtoTRUE --> N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0 N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0 -- No --> E_SetCSAAuthorizationDeliverFlagtoTRUE
flag"}:::decision N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0_action["The system sets the CSA
authorization to deliver received
flag GCCC-CSA-AUTH-DELIVER-RECD to
TRUE"]:::main N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0 -- Yes --> N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0_action N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0_action --> E_SetCSAAuthorizationDeliverFlagtoTRUE S_SetCSAAuthorizationDeliverFlagtoTRUE --> N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0 N_SetCSAAuthorizationDeliverFlagtoTRUE_Node0 -- No --> E_SetCSAAuthorizationDeliverFlagtoTRUE
File: GCX126R.cbl
GIVEN:
The cargo is a CSA manifest AND the authorization to deliver message has been accepted AND the cargo status has been set to CSA-DLV
WHEN:
The system sets the authorization flag
THEN:
The system sets the CSA authorization to deliver received flag (GCCC-CSA-AUTH-DELIVER-RECD) to TRUE
β Consolidated Acceptance Criteria
- The system completes the authorization processing → the system performs US manifest processing (D120-PROCESS-US-MFST) to update any associated US cargo records with the Canadian CCN release 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_EndProcess(["Start Step"])
E_EndProcess(["End Step"])
N_EndProcess_Node0{"The system completes the
authorization processing"}:::decision N_EndProcess_Node0_action["The system performs US manifest
processing D120-PROCESS-US-MFST to
update any associated US cargo
records with the Canadian CCN
release information"]:::main N_EndProcess_Node0 -- Yes --> N_EndProcess_Node0_action N_EndProcess_Node0_action --> E_EndProcess S_EndProcess --> N_EndProcess_Node0 N_EndProcess_Node0 -- No --> E_EndProcess
authorization processing"}:::decision N_EndProcess_Node0_action["The system performs US manifest
processing D120-PROCESS-US-MFST to
update any associated US cargo
records with the Canadian CCN
release information"]:::main N_EndProcess_Node0 -- Yes --> N_EndProcess_Node0_action N_EndProcess_Node0_action --> E_EndProcess S_EndProcess --> N_EndProcess_Node0 N_EndProcess_Node0 -- No --> E_EndProcess
File: GCX126R.cbl
GIVEN:
An authorization to deliver message has been processed (either accepted for CSA or rejected for non-CSA)
WHEN:
The system completes the authorization processing
THEN:
The system performs US manifest processing (D120-PROCESS-US-MFST) to update any associated US cargo records with the Canadian CCN release information
β Consolidated Acceptance Criteria
- The follower manifest processing begins → the follower manifest array is cleared to spaces and the processing index I 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_InitializeFollowerArraySetIndexI1(["Start Step"])
E_InitializeFollowerArraySetIndexI1(["End Step"])
N_InitializeFollowerArraySetIndexI1_Node0{"The follower manifest processing
begins"}:::decision N_InitializeFollowerArraySetIndexI1_Node0_action["The follower manifest array is
cleared to spaces and the processing
index I is set to 1"]:::main N_InitializeFollowerArraySetIndexI1_Node0 -- Yes --> N_InitializeFollowerArraySetIndexI1_Node0_action N_InitializeFollowerArraySetIndexI1_Node0_action --> E_InitializeFollowerArraySetIndexI1 S_InitializeFollowerArraySetIndexI1 --> N_InitializeFollowerArraySetIndexI1_Node0 N_InitializeFollowerArraySetIndexI1_Node0 -- No --> E_InitializeFollowerArraySetIndexI1
begins"}:::decision N_InitializeFollowerArraySetIndexI1_Node0_action["The follower manifest array is
cleared to spaces and the processing
index I is set to 1"]:::main N_InitializeFollowerArraySetIndexI1_Node0 -- Yes --> N_InitializeFollowerArraySetIndexI1_Node0_action N_InitializeFollowerArraySetIndexI1_Node0_action --> E_InitializeFollowerArraySetIndexI1 S_InitializeFollowerArraySetIndexI1 --> N_InitializeFollowerArraySetIndexI1_Node0 N_InitializeFollowerArraySetIndexI1_Node0 -- No --> E_InitializeFollowerArraySetIndexI1
File: GCX126R.cbl
GIVEN:
A master manifest needs to be processed for follower manifests
WHEN:
The follower manifest processing begins
THEN:
- The follower manifest array is cleared to spaces
- The processing index i is set to 1
β Consolidated Acceptance Criteria
- Checking if the record is associated with the current master manifest → if the master manifest CCN in the retrieved record equals the saved master CCN, continue processing; otherwise, set the end-of-database 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_SameMasterCCN(["Start Step"])
E_SameMasterCCN(["End Step"])
N_SameMasterCCN_Node0{"Checking if the record is
associated with the current master
manifest"}:::decision N_SameMasterCCN_Node0_action["If the master manifest CCN in the
retrieved record equals the saved
master CCN, continue processing
otherwise, set the end-of-database
flag to true"]:::main N_SameMasterCCN_Node0 -- Yes --> N_SameMasterCCN_Node0_action N_SameMasterCCN_Node0_action --> E_SameMasterCCN S_SameMasterCCN --> N_SameMasterCCN_Node0 N_SameMasterCCN_Node0 -- No --> E_SameMasterCCN
associated with the current master
manifest"}:::decision N_SameMasterCCN_Node0_action["If the master manifest CCN in the
retrieved record equals the saved
master CCN, continue processing
otherwise, set the end-of-database
flag to true"]:::main N_SameMasterCCN_Node0 -- Yes --> N_SameMasterCCN_Node0_action N_SameMasterCCN_Node0_action --> E_SameMasterCCN S_SameMasterCCN --> N_SameMasterCCN_Node0 N_SameMasterCCN_Node0 -- No --> E_SameMasterCCN
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
Checking if the record is associated with the current master manifest
THEN:
If the master manifest CCN in the retrieved record equals the saved master CCN, continue processing; otherwise, set the end-of-database flag to true
β Consolidated Acceptance Criteria
- Determining how many followers were found → the total follower count is calculated as I minus 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_CalculateTotalFollowerCountI1(["Start Step"])
E_CalculateTotalFollowerCountI1(["End Step"])
N_CalculateTotalFollowerCountI1_Node0{"Determining how many followers were
found"}:::decision N_CalculateTotalFollowerCountI1_Node0_action["The total follower count is
calculated as I minus 1"]:::main N_CalculateTotalFollowerCountI1_Node0 -- Yes --> N_CalculateTotalFollowerCountI1_Node0_action N_CalculateTotalFollowerCountI1_Node0_action --> E_CalculateTotalFollowerCountI1 S_CalculateTotalFollowerCountI1 --> N_CalculateTotalFollowerCountI1_Node0 N_CalculateTotalFollowerCountI1_Node0 -- No --> E_CalculateTotalFollowerCountI1
found"}:::decision N_CalculateTotalFollowerCountI1_Node0_action["The total follower count is
calculated as I minus 1"]:::main N_CalculateTotalFollowerCountI1_Node0 -- Yes --> N_CalculateTotalFollowerCountI1_Node0_action N_CalculateTotalFollowerCountI1_Node0_action --> E_CalculateTotalFollowerCountI1 S_CalculateTotalFollowerCountI1 --> N_CalculateTotalFollowerCountI1_Node0 N_CalculateTotalFollowerCountI1_Node0 -- No --> E_CalculateTotalFollowerCountI1
File: GCX126R.cbl
GIVEN:
The follower retrieval loop has completed
WHEN:
Determining how many followers were found
THEN:
The total follower count is calculated as I minus 1
β Consolidated Acceptance Criteria
- Starting to process individual followers → the loop index J 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_InitializeLoopIndexJ1(["Start Step"])
E_InitializeLoopIndexJ1(["End Step"])
N_InitializeLoopIndexJ1_Node0{"Starting to process individual
followers"}:::decision N_InitializeLoopIndexJ1_Node0_action["The loop index J is initialized to
1"]:::main N_InitializeLoopIndexJ1_Node0 -- Yes --> N_InitializeLoopIndexJ1_Node0_action N_InitializeLoopIndexJ1_Node0_action --> E_InitializeLoopIndexJ1 S_InitializeLoopIndexJ1 --> N_InitializeLoopIndexJ1_Node0 N_InitializeLoopIndexJ1_Node0 -- No --> E_InitializeLoopIndexJ1
followers"}:::decision N_InitializeLoopIndexJ1_Node0_action["The loop index J is initialized to
1"]:::main N_InitializeLoopIndexJ1_Node0 -- Yes --> N_InitializeLoopIndexJ1_Node0_action N_InitializeLoopIndexJ1_Node0_action --> E_InitializeLoopIndexJ1 S_InitializeLoopIndexJ1 --> N_InitializeLoopIndexJ1_Node0 N_InitializeLoopIndexJ1_Node0 -- No --> E_InitializeLoopIndexJ1
File: GCX126R.cbl
GIVEN:
At least one follower manifest exists in the array
WHEN:
Starting to process individual followers
THEN:
The loop index J is initialized to 1
β Consolidated Acceptance Criteria
- Processing a specific follower manifest → the follower CCN at array position J is retrieved and set 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_GetFollowerCCNfromArrayPositionJ(["Start Step"])
E_GetFollowerCCNfromArrayPositionJ(["End Step"])
N_GetFollowerCCNfromArrayPositionJ_Node0{"Processing a specific follower
manifest"}:::decision N_GetFollowerCCNfromArrayPositionJ_Node0_action["The follower CCN at array position
J is retrieved and set as the search
key"]:::main N_GetFollowerCCNfromArrayPositionJ_Node0 -- Yes --> N_GetFollowerCCNfromArrayPositionJ_Node0_action N_GetFollowerCCNfromArrayPositionJ_Node0_action --> E_GetFollowerCCNfromArrayPositionJ S_GetFollowerCCNfromArrayPositionJ --> N_GetFollowerCCNfromArrayPositionJ_Node0 N_GetFollowerCCNfromArrayPositionJ_Node0 -- No --> E_GetFollowerCCNfromArrayPositionJ
manifest"}:::decision N_GetFollowerCCNfromArrayPositionJ_Node0_action["The follower CCN at array position
J is retrieved and set as the search
key"]:::main N_GetFollowerCCNfromArrayPositionJ_Node0 -- Yes --> N_GetFollowerCCNfromArrayPositionJ_Node0_action N_GetFollowerCCNfromArrayPositionJ_Node0_action --> E_GetFollowerCCNfromArrayPositionJ S_GetFollowerCCNfromArrayPositionJ --> N_GetFollowerCCNfromArrayPositionJ_Node0 N_GetFollowerCCNfromArrayPositionJ_Node0 -- No --> E_GetFollowerCCNfromArrayPositionJ
File: GCX126R.cbl
GIVEN:
The loop index J points to a valid array position
WHEN:
Processing a specific follower manifest
THEN:
- The follower ccn at array position j is retrieved
- Set as the search key
β Consolidated Acceptance Criteria
- Accessing the follower cargo details → the system performs a Get Hold Unique call to retrieve the follower cargo record using the CCN as the 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_LookupFollowerCargobyCCN(["Start Step"])
E_LookupFollowerCargobyCCN(["End Step"])
N_LookupFollowerCargobyCCN_Node0{"Accessing the follower cargo
details"}:::decision N_LookupFollowerCargobyCCN_Node0_action["The system performs a Get Hold
Unique call to retrieve the follower
cargo record using the CCN as the
key"]:::main N_LookupFollowerCargobyCCN_Node0 -- Yes --> N_LookupFollowerCargobyCCN_Node0_action N_LookupFollowerCargobyCCN_Node0_action --> E_LookupFollowerCargobyCCN S_LookupFollowerCargobyCCN --> N_LookupFollowerCargobyCCN_Node0 N_LookupFollowerCargobyCCN_Node0 -- No --> E_LookupFollowerCargobyCCN
details"}:::decision N_LookupFollowerCargobyCCN_Node0_action["The system performs a Get Hold
Unique call to retrieve the follower
cargo record using the CCN as the
key"]:::main N_LookupFollowerCargobyCCN_Node0 -- Yes --> N_LookupFollowerCargobyCCN_Node0_action N_LookupFollowerCargobyCCN_Node0_action --> E_LookupFollowerCargobyCCN S_LookupFollowerCargobyCCN --> N_LookupFollowerCargobyCCN_Node0 N_LookupFollowerCargobyCCN_Node0 -- No --> E_LookupFollowerCargobyCCN
File: GCX126R.cbl
GIVEN:
A follower CCN has been retrieved from the array
WHEN:
Accessing the follower cargo details
THEN:
The system performs a Get Hold Unique call to retrieve the follower cargo record using the CCN as the key
β Consolidated Acceptance Criteria
- Determining the type of release → if the notice reason code indicates 'Released', log a standard release message; if it indicates 'Decon', log a deconsolidation release 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_NoticeReason(["Start Step"])
E_NoticeReason(["End Step"])
N_NoticeReason_Node0{"Determining the type of release"}:::decision
N_NoticeReason_Node0_action["If the notice reason code indicates
Released , log a standard release
message if it indicates Decon , log
a deconsolidation release message"]:::main N_NoticeReason_Node0 -- Yes --> N_NoticeReason_Node0_action N_NoticeReason_Node0_action --> E_NoticeReason S_NoticeReason --> N_NoticeReason_Node0 N_NoticeReason_Node0 -- No --> E_NoticeReason
Released , log a standard release
message if it indicates Decon , log
a deconsolidation release message"]:::main N_NoticeReason_Node0 -- Yes --> N_NoticeReason_Node0_action N_NoticeReason_Node0_action --> E_NoticeReason S_NoticeReason --> N_NoticeReason_Node0 N_NoticeReason_Node0 -- No --> E_NoticeReason
File: GCX126R.cbl
GIVEN:
Release information has been set for the follower
WHEN:
Determining the type of release
THEN:
If the notice reason code indicates 'Released', log a standard release message; if it indicates 'Decon', log a deconsolidation release message
β Consolidated Acceptance Criteria
- Logging the release action → a message is logged with the text 'EDI 350: RELEASE : ' concatenated with the release reference ID (first 15 characters) and ' AT PORT ' concatenated with the port code (first 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_LogMessageEDI350RELEASEwithReleaseRefandPort(["Start Step"])
E_LogMessageEDI350RELEASEwithReleaseRefandPort(["End Step"])
N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0{"Logging the release action"}:::decision
N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0_action["A message is logged with the text
EDI 350: RELEASE : concatenated with
the release reference ID first 15
characters and AT PORT concatenated
with the port code first 4
characters"]:::main N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0 -- Yes --> N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0_action N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0_action --> E_LogMessageEDI350RELEASEwithReleaseRefandPort S_LogMessageEDI350RELEASEwithReleaseRefandPort --> N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0 N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0 -- No --> E_LogMessageEDI350RELEASEwithReleaseRefandPort
EDI 350: RELEASE : concatenated with
the release reference ID first 15
characters and AT PORT concatenated
with the port code first 4
characters"]:::main N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0 -- Yes --> N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0_action N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0_action --> E_LogMessageEDI350RELEASEwithReleaseRefandPort S_LogMessageEDI350RELEASEwithReleaseRefandPort --> N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0 N_LogMessageEDI350RELEASEwithReleaseRefandPort_Node0 -- No --> E_LogMessageEDI350RELEASEwithReleaseRefandPort
File: GCX126R.cbl
GIVEN:
The notice reason code indicates a standard release
WHEN:
Logging the release action
THEN:
A message is logged with the text 'EDI 350: RELEASE : ' concatenated with the release reference ID (first 15 characters) and ' AT PORT ' concatenated with the port code (first 4 characters)
β Consolidated Acceptance Criteria
- Recording the release reason → the release reason field is set to the release reference ID (first 15 characters) concatenated with '/' and the port code (first 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_SetReleaseReasonReleaseRefPortCode(["Start Step"])
E_SetReleaseReasonReleaseRefPortCode(["End Step"])
N_SetReleaseReasonReleaseRefPortCode_Node0{"Recording the release reason"}:::decision
N_SetReleaseReasonReleaseRefPortCode_Node0_action["The release reason field is set to
the release reference ID first 15
characters concatenated with and the
port code first 4 characters"]:::main N_SetReleaseReasonReleaseRefPortCode_Node0 -- Yes --> N_SetReleaseReasonReleaseRefPortCode_Node0_action N_SetReleaseReasonReleaseRefPortCode_Node0_action --> E_SetReleaseReasonReleaseRefPortCode S_SetReleaseReasonReleaseRefPortCode --> N_SetReleaseReasonReleaseRefPortCode_Node0 N_SetReleaseReasonReleaseRefPortCode_Node0 -- No --> E_SetReleaseReasonReleaseRefPortCode
the release reference ID first 15
characters concatenated with and the
port code first 4 characters"]:::main N_SetReleaseReasonReleaseRefPortCode_Node0 -- Yes --> N_SetReleaseReasonReleaseRefPortCode_Node0_action N_SetReleaseReasonReleaseRefPortCode_Node0_action --> E_SetReleaseReasonReleaseRefPortCode S_SetReleaseReasonReleaseRefPortCode --> N_SetReleaseReasonReleaseRefPortCode_Node0 N_SetReleaseReasonReleaseRefPortCode_Node0 -- No --> E_SetReleaseReasonReleaseRefPortCode
File: GCX126R.cbl
GIVEN:
A standard release message has been logged
WHEN:
Recording the release reason
THEN:
The release reason field is set to the release reference ID (first 15 characters) concatenated with '/' and the port code (first 4 characters)
β Consolidated Acceptance Criteria
- Logging the deconsolidation action → a message is logged with the text 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with the port code (first 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_LogMessageEDI350RELEASEVIADECONATPORTwithPort(["Start Step"])
E_LogMessageEDI350RELEASEVIADECONATPORTwithPort(["End Step"])
N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0{"Logging the deconsolidation action"}:::decision
N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0_action["A message is logged with the text
EDI 350: RELEASE VIA DECON AT PORT
concatenated with the port code
first 4 characters"]:::main N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0 -- Yes --> N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0_action N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0_action --> E_LogMessageEDI350RELEASEVIADECONATPORTwithPort S_LogMessageEDI350RELEASEVIADECONATPORTwithPort --> N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0 N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0 -- No --> E_LogMessageEDI350RELEASEVIADECONATPORTwithPort
EDI 350: RELEASE VIA DECON AT PORT
concatenated with the port code
first 4 characters"]:::main N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0 -- Yes --> N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0_action N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0_action --> E_LogMessageEDI350RELEASEVIADECONATPORTwithPort S_LogMessageEDI350RELEASEVIADECONATPORTwithPort --> N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0 N_LogMessageEDI350RELEASEVIADECONATPORTwithPort_Node0 -- No --> E_LogMessageEDI350RELEASEVIADECONATPORTwithPort
File: GCX126R.cbl
GIVEN:
The notice reason code indicates a deconsolidation release
WHEN:
Logging the deconsolidation action
THEN:
A message is logged with the text 'EDI 350: RELEASE VIA DECON AT PORT ' concatenated with the port code (first 4 characters)
β Consolidated Acceptance Criteria
- Recording the deconsolidation reason → the release reason field is set to 'DECONSOLIDATION AT ' concatenated with the port code (first 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_SetReleaseReasonDECONSOLIDATIONATPort(["Start Step"])
E_SetReleaseReasonDECONSOLIDATIONATPort(["End Step"])
N_SetReleaseReasonDECONSOLIDATIONATPort_Node0{"Recording the deconsolidation
reason"}:::decision N_SetReleaseReasonDECONSOLIDATIONATPort_Node0_action["The release reason field is set to
DECONSOLIDATION AT concatenated with
the port code first 4 characters"]:::main N_SetReleaseReasonDECONSOLIDATIONATPort_Node0 -- Yes --> N_SetReleaseReasonDECONSOLIDATIONATPort_Node0_action N_SetReleaseReasonDECONSOLIDATIONATPort_Node0_action --> E_SetReleaseReasonDECONSOLIDATIONATPort S_SetReleaseReasonDECONSOLIDATIONATPort --> N_SetReleaseReasonDECONSOLIDATIONATPort_Node0 N_SetReleaseReasonDECONSOLIDATIONATPort_Node0 -- No --> E_SetReleaseReasonDECONSOLIDATIONATPort
reason"}:::decision N_SetReleaseReasonDECONSOLIDATIONATPort_Node0_action["The release reason field is set to
DECONSOLIDATION AT concatenated with
the port code first 4 characters"]:::main N_SetReleaseReasonDECONSOLIDATIONATPort_Node0 -- Yes --> N_SetReleaseReasonDECONSOLIDATIONATPort_Node0_action N_SetReleaseReasonDECONSOLIDATIONATPort_Node0_action --> E_SetReleaseReasonDECONSOLIDATIONATPort S_SetReleaseReasonDECONSOLIDATIONATPort --> N_SetReleaseReasonDECONSOLIDATIONATPort_Node0 N_SetReleaseReasonDECONSOLIDATIONATPort_Node0 -- No --> E_SetReleaseReasonDECONSOLIDATIONATPort
File: GCX126R.cbl
GIVEN:
A deconsolidation release message has been logged
WHEN:
Recording the deconsolidation reason
THEN:
The release reason field is set to 'DECONSOLIDATION AT ' concatenated with the port code (first 4 characters)
β Consolidated Acceptance Criteria
- Processing related US cargo → the US manifest processing routine is performed to search for and update US cargo records using the equipment car ID 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_ProcessAssociatedUSManifest(["Start Step"])
E_ProcessAssociatedUSManifest(["End Step"])
N_ProcessAssociatedUSManifest_Node0{"Processing related US cargo"}:::decision
N_ProcessAssociatedUSManifest_Node0_action["The US manifest processing routine
is performed to search for and
update US cargo records using the
equipment car ID and waybill number"]:::main N_ProcessAssociatedUSManifest_Node0 -- Yes --> N_ProcessAssociatedUSManifest_Node0_action N_ProcessAssociatedUSManifest_Node0_action --> E_ProcessAssociatedUSManifest S_ProcessAssociatedUSManifest --> N_ProcessAssociatedUSManifest_Node0 N_ProcessAssociatedUSManifest_Node0 -- No --> E_ProcessAssociatedUSManifest
is performed to search for and
update US cargo records using the
equipment car ID and waybill number"]:::main N_ProcessAssociatedUSManifest_Node0 -- Yes --> N_ProcessAssociatedUSManifest_Node0_action N_ProcessAssociatedUSManifest_Node0_action --> E_ProcessAssociatedUSManifest S_ProcessAssociatedUSManifest --> N_ProcessAssociatedUSManifest_Node0 N_ProcessAssociatedUSManifest_Node0 -- No --> E_ProcessAssociatedUSManifest
File: GCX126R.cbl
GIVEN:
The release reason has been set for the follower
WHEN:
Processing related US cargo
THEN:
- The us manifest processing routine is performed to search for
- Update us cargo records using the equipment car id
- Waybill number
β Consolidated Acceptance Criteria
- Moving to the next follower → the loop index 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_IncrementIndexJ(["Start Step"])
E_IncrementIndexJ(["End Step"])
N_IncrementIndexJ_Node0{"Moving to the next follower"}:::decision
N_IncrementIndexJ_Node0_action["The loop index J is incremented by
1"]:::main N_IncrementIndexJ_Node0 -- Yes --> N_IncrementIndexJ_Node0_action N_IncrementIndexJ_Node0_action --> E_IncrementIndexJ S_IncrementIndexJ --> N_IncrementIndexJ_Node0 N_IncrementIndexJ_Node0 -- No --> E_IncrementIndexJ
1"]:::main N_IncrementIndexJ_Node0 -- Yes --> N_IncrementIndexJ_Node0_action N_IncrementIndexJ_Node0_action --> E_IncrementIndexJ S_IncrementIndexJ --> N_IncrementIndexJ_Node0 N_IncrementIndexJ_Node0 -- No --> E_IncrementIndexJ
File: GCX126R.cbl
GIVEN:
The current follower has been processed
WHEN:
Moving to the next follower
THEN:
The loop index J is incremented by 1
β Consolidated Acceptance Criteria
- Checking if processing should continue → if J is less than or equal to the total follower count, continue processing the next follower; otherwise, exit the follower 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_JTotalFollowerCount(["Start Step"])
E_JTotalFollowerCount(["End Step"])
N_JTotalFollowerCount_Node0{"Checking if processing should
continue"}:::decision N_JTotalFollowerCount_Node0_action["If J is less than or equal to the
total follower count, continue
processing the next follower
otherwise, exit the follower
processing loop"]:::main N_JTotalFollowerCount_Node0 -- Yes --> N_JTotalFollowerCount_Node0_action N_JTotalFollowerCount_Node0_action --> E_JTotalFollowerCount S_JTotalFollowerCount --> N_JTotalFollowerCount_Node0 N_JTotalFollowerCount_Node0 -- No --> E_JTotalFollowerCount
continue"}:::decision N_JTotalFollowerCount_Node0_action["If J is less than or equal to the
total follower count, continue
processing the next follower
otherwise, exit the follower
processing loop"]:::main N_JTotalFollowerCount_Node0 -- Yes --> N_JTotalFollowerCount_Node0_action N_JTotalFollowerCount_Node0_action --> E_JTotalFollowerCount S_JTotalFollowerCount --> N_JTotalFollowerCount_Node0 N_JTotalFollowerCount_Node0 -- No --> E_JTotalFollowerCount
File: GCX126R.cbl
GIVEN:
The loop index J has been incremented
WHEN:
Checking if processing should continue
THEN:
If J is less than or equal to the total follower count, continue processing the next follower; otherwise, exit the follower processing loop
β Consolidated Acceptance Criteria
- The counter I exceeds 100 OR the end of database flag is set to true → the retrieval loop terminates and proceeds to finalize the 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_EndofDatabaseORCounter100(["Start Step"])
E_EndofDatabaseORCounter100(["End Step"])
N_EndofDatabaseORCounter100_Node0{"The counter I exceeds 100 OR the
end of database flag is set to true"}:::decision N_EndofDatabaseORCounter100_Node0_action["The retrieval loop terminates and
proceeds to finalize the count"]:::main N_EndofDatabaseORCounter100_Node0 -- Yes --> N_EndofDatabaseORCounter100_Node0_action N_EndofDatabaseORCounter100_Node0_action --> E_EndofDatabaseORCounter100 S_EndofDatabaseORCounter100 --> N_EndofDatabaseORCounter100_Node0 N_EndofDatabaseORCounter100_Node0 -- No --> E_EndofDatabaseORCounter100
end of database flag is set to true"}:::decision N_EndofDatabaseORCounter100_Node0_action["The retrieval loop terminates and
proceeds to finalize the count"]:::main N_EndofDatabaseORCounter100_Node0 -- Yes --> N_EndofDatabaseORCounter100_Node0_action N_EndofDatabaseORCounter100_Node0_action --> E_EndofDatabaseORCounter100 S_EndofDatabaseORCounter100 --> N_EndofDatabaseORCounter100_Node0 N_EndofDatabaseORCounter100_Node0 -- No --> E_EndofDatabaseORCounter100
File: GCX126R.cbl
GIVEN:
Follower manifests are being retrieved for a master manifest
WHEN:
The counter I exceeds 100 OR the end of database flag is set to true
THEN:
- The retrieval loop terminates
- Proceeds to finalize the count
β Consolidated Acceptance Criteria
- The system needs to find the next cargo record in the hierarchy → a database call is made using function code GN (Get Next) with the cargo report segment and the master CCN qualifier to retrieve the 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_GetNextCargoRecordUsingMasterCCN(["Start Step"])
E_GetNextCargoRecordUsingMasterCCN(["End Step"])
N_GetNextCargoRecordUsingMasterCCN_Node0{"The system needs to find the next
cargo record in the hierarchy"}:::decision N_GetNextCargoRecordUsingMasterCCN_Node0_action["A database call is made using
function code GN Get Next with the
cargo report segment and the master
CCN qualifier to retrieve the next
record"]:::main N_GetNextCargoRecordUsingMasterCCN_Node0 -- Yes --> N_GetNextCargoRecordUsingMasterCCN_Node0_action N_GetNextCargoRecordUsingMasterCCN_Node0_action --> E_GetNextCargoRecordUsingMasterCCN S_GetNextCargoRecordUsingMasterCCN --> N_GetNextCargoRecordUsingMasterCCN_Node0 N_GetNextCargoRecordUsingMasterCCN_Node0 -- No --> E_GetNextCargoRecordUsingMasterCCN
cargo record in the hierarchy"}:::decision N_GetNextCargoRecordUsingMasterCCN_Node0_action["A database call is made using
function code GN Get Next with the
cargo report segment and the master
CCN qualifier to retrieve the next
record"]:::main N_GetNextCargoRecordUsingMasterCCN_Node0 -- Yes --> N_GetNextCargoRecordUsingMasterCCN_Node0_action N_GetNextCargoRecordUsingMasterCCN_Node0_action --> E_GetNextCargoRecordUsingMasterCCN S_GetNextCargoRecordUsingMasterCCN --> N_GetNextCargoRecordUsingMasterCCN_Node0 N_GetNextCargoRecordUsingMasterCCN_Node0 -- No --> E_GetNextCargoRecordUsingMasterCCN
File: GCX126R.cbl
GIVEN:
The master manifest CCN is stored in GCB0RT-CCN-KEY
WHEN:
The system needs to find the next cargo record in the hierarchy
THEN:
- A database call is made using function code gn (get next) with the cargo report segment
- The master ccn qualifier to retrieve the next record
β Consolidated Acceptance Criteria
- The master manifest CCN field (GCCC-MASTER-MFST-CCN) in the cargo record is compared with the current master CCN (WS-SAVE-CCN) → if they match, the cargo is part of the master manifest hierarchy and processing continues; otherwise, the end of database flag is set to true indicating no more related 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_MasterManifestCCNMatchesCurrentCCN(["Start Step"])
E_MasterManifestCCNMatchesCurrentCCN(["End Step"])
N_MasterManifestCCNMatchesCurrentCCN_Node0{"The master manifest CCN field
GCCC-MASTER-MFST-CCN in the cargo
record is compared with the current
master CCN WS-SAVE-CCN"}:::decision N_MasterManifestCCNMatchesCurrentCCN_Node0_action["If they match, the cargo is part of
the master manifest hierarchy and
processing continues otherwise, the
end of database flag is set to true
indicating no more related records"]:::main N_MasterManifestCCNMatchesCurrentCCN_Node0 -- Yes --> N_MasterManifestCCNMatchesCurrentCCN_Node0_action N_MasterManifestCCNMatchesCurrentCCN_Node0_action --> E_MasterManifestCCNMatchesCurrentCCN S_MasterManifestCCNMatchesCurrentCCN --> N_MasterManifestCCNMatchesCurrentCCN_Node0 N_MasterManifestCCNMatchesCurrentCCN_Node0 -- No --> E_MasterManifestCCNMatchesCurrentCCN
GCCC-MASTER-MFST-CCN in the cargo
record is compared with the current
master CCN WS-SAVE-CCN"}:::decision N_MasterManifestCCNMatchesCurrentCCN_Node0_action["If they match, the cargo is part of
the master manifest hierarchy and
processing continues otherwise, the
end of database flag is set to true
indicating no more related records"]:::main N_MasterManifestCCNMatchesCurrentCCN_Node0 -- Yes --> N_MasterManifestCCNMatchesCurrentCCN_Node0_action N_MasterManifestCCNMatchesCurrentCCN_Node0_action --> E_MasterManifestCCNMatchesCurrentCCN S_MasterManifestCCNMatchesCurrentCCN --> N_MasterManifestCCNMatchesCurrentCCN_Node0 N_MasterManifestCCNMatchesCurrentCCN_Node0 -- No --> E_MasterManifestCCNMatchesCurrentCCN
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The master manifest CCN field (GCCC-MASTER-MFST-CCN) in the cargo record is compared with the current master CCN (WS-SAVE-CCN)
THEN:
- If they match, the cargo is part of the master manifest hierarchy
- Processing continues; otherwise, the end of database flag is set to true indicating no more related records
β Consolidated Acceptance Criteria
- The final count needs to be determined → the counter I is decremented by 1 to represent the actual number of follower manifests stored 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_Subtract1fromCounterI(["Start Step"])
E_Subtract1fromCounterI(["End Step"])
N_Subtract1fromCounterI_Node0{"The final count needs to be
determined"}:::decision N_Subtract1fromCounterI_Node0_action["The counter I is decremented by 1
to represent the actual number of
follower manifests stored in the
array"]:::main N_Subtract1fromCounterI_Node0 -- Yes --> N_Subtract1fromCounterI_Node0_action N_Subtract1fromCounterI_Node0_action --> E_Subtract1fromCounterI S_Subtract1fromCounterI --> N_Subtract1fromCounterI_Node0 N_Subtract1fromCounterI_Node0 -- No --> E_Subtract1fromCounterI
determined"}:::decision N_Subtract1fromCounterI_Node0_action["The counter I is decremented by 1
to represent the actual number of
follower manifests stored in the
array"]:::main N_Subtract1fromCounterI_Node0 -- Yes --> N_Subtract1fromCounterI_Node0_action N_Subtract1fromCounterI_Node0_action --> E_Subtract1fromCounterI S_Subtract1fromCounterI --> N_Subtract1fromCounterI_Node0 N_Subtract1fromCounterI_Node0 -- No --> E_Subtract1fromCounterI
File: GCX126R.cbl
GIVEN:
The follower manifest retrieval loop has completed (either by reaching end of database or maximum count)
WHEN:
The final count needs to be determined
THEN:
The counter I is decremented by 1 to represent the actual number of follower manifests stored in the array
β Consolidated Acceptance Criteria
- The final count (I) is evaluated → if I is less than or equal to 0, no follower manifests were found and processing exits; if I is greater than 0, the follower manifest array contains valid entries 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_CounterI0(["Start Step"])
E_CounterI0(["End Step"])
N_CounterI0_Node0{"The final count I is evaluated"}:::decision
N_CounterI0_Node0_action["If I is less than or equal to 0, no
follower manifests were found and
processing exits if I is greater
than 0, the follower manifest array
contains valid entries for
processing"]:::main N_CounterI0_Node0 -- Yes --> N_CounterI0_Node0_action N_CounterI0_Node0_action --> E_CounterI0 S_CounterI0 --> N_CounterI0_Node0 N_CounterI0_Node0 -- No --> E_CounterI0
follower manifests were found and
processing exits if I is greater
than 0, the follower manifest array
contains valid entries for
processing"]:::main N_CounterI0_Node0 -- Yes --> N_CounterI0_Node0_action N_CounterI0_Node0_action --> E_CounterI0 S_CounterI0 --> N_CounterI0_Node0 N_CounterI0_Node0 -- No --> E_CounterI0
File: GCX126R.cbl
GIVEN:
The follower manifest retrieval process has completed and the counter has been adjusted
WHEN:
The final count (I) is evaluated
THEN:
- If i is less than or equal to 0, no follower manifests were found
- Processing exits; if i is greater than 0, the follower manifest array contains valid entries for processing
β Consolidated Acceptance Criteria
- The system needs to complete the retrieval process → control returns to the calling process with an empty follower manifest array, and no further follower processing 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_ReturnNoFollowerManifestsFound(["Start Step"])
E_ReturnNoFollowerManifestsFound(["End Step"])
N_ReturnNoFollowerManifestsFound_Node0{"The system needs to complete the
retrieval process"}:::decision N_ReturnNoFollowerManifestsFound_Node0_action["Control returns to the calling
process with an empty follower
manifest array, and no further
follower processing occurs"]:::main N_ReturnNoFollowerManifestsFound_Node0 -- Yes --> N_ReturnNoFollowerManifestsFound_Node0_action N_ReturnNoFollowerManifestsFound_Node0_action --> E_ReturnNoFollowerManifestsFound S_ReturnNoFollowerManifestsFound --> N_ReturnNoFollowerManifestsFound_Node0 N_ReturnNoFollowerManifestsFound_Node0 -- No --> E_ReturnNoFollowerManifestsFound
retrieval process"}:::decision N_ReturnNoFollowerManifestsFound_Node0_action["Control returns to the calling
process with an empty follower
manifest array, and no further
follower processing occurs"]:::main N_ReturnNoFollowerManifestsFound_Node0 -- Yes --> N_ReturnNoFollowerManifestsFound_Node0_action N_ReturnNoFollowerManifestsFound_Node0_action --> E_ReturnNoFollowerManifestsFound S_ReturnNoFollowerManifestsFound --> N_ReturnNoFollowerManifestsFound_Node0 N_ReturnNoFollowerManifestsFound_Node0 -- No --> E_ReturnNoFollowerManifestsFound
File: GCX126R.cbl
GIVEN:
The follower manifest count is zero or negative
WHEN:
The system needs to complete the retrieval process
THEN:
Control returns to the calling process with an empty follower manifest array, and no further follower processing occurs
β Consolidated Acceptance Criteria
- The system needs to apply release information to follower manifests → control proceeds to iterate through the follower manifest array and apply the same release information to each follower that was applied to the master 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_ReturnFollowerManifestsArrayPopulated(["Start Step"])
E_ReturnFollowerManifestsArrayPopulated(["End Step"])
N_ReturnFollowerManifestsArrayPopulated_Node0{"The system needs to apply release
information to follower manifests"}:::decision N_ReturnFollowerManifestsArrayPopulated_Node0_action["Control proceeds to iterate through
the follower manifest array and
apply the same release information
to each follower that was applied to
the master manifest"]:::main N_ReturnFollowerManifestsArrayPopulated_Node0 -- Yes --> N_ReturnFollowerManifestsArrayPopulated_Node0_action N_ReturnFollowerManifestsArrayPopulated_Node0_action --> E_ReturnFollowerManifestsArrayPopulated S_ReturnFollowerManifestsArrayPopulated --> N_ReturnFollowerManifestsArrayPopulated_Node0 N_ReturnFollowerManifestsArrayPopulated_Node0 -- No --> E_ReturnFollowerManifestsArrayPopulated
information to follower manifests"}:::decision N_ReturnFollowerManifestsArrayPopulated_Node0_action["Control proceeds to iterate through
the follower manifest array and
apply the same release information
to each follower that was applied to
the master manifest"]:::main N_ReturnFollowerManifestsArrayPopulated_Node0 -- Yes --> N_ReturnFollowerManifestsArrayPopulated_Node0_action N_ReturnFollowerManifestsArrayPopulated_Node0_action --> E_ReturnFollowerManifestsArrayPopulated S_ReturnFollowerManifestsArrayPopulated --> N_ReturnFollowerManifestsArrayPopulated_Node0 N_ReturnFollowerManifestsArrayPopulated_Node0 -- No --> E_ReturnFollowerManifestsArrayPopulated
File: GCX126R.cbl
GIVEN:
The follower manifest count is greater than zero and the array contains valid follower CCNs
WHEN:
The system needs to apply release information to follower manifests
THEN:
- Control proceeds to iterate through the follower manifest array
- Apply the same release information to each follower that was applied to the master manifest
β Consolidated Acceptance Criteria
- Preparing to call the database with Get Next function → the status code is set to 'GEGB' to indicate Get Next operation with proper positioning
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusCodetoGEGB(["Start Step"])
E_SetStatusCodetoGEGB(["End Step"])
N_SetStatusCodetoGEGB_Node0{"Preparing to call the database with
Get Next function"}:::decision N_SetStatusCodetoGEGB_Node0_action["The status code is set to GEGB to
indicate Get Next operation with
proper positioning"]:::main N_SetStatusCodetoGEGB_Node0 -- Yes --> N_SetStatusCodetoGEGB_Node0_action N_SetStatusCodetoGEGB_Node0_action --> E_SetStatusCodetoGEGB S_SetStatusCodetoGEGB --> N_SetStatusCodetoGEGB_Node0 N_SetStatusCodetoGEGB_Node0 -- No --> E_SetStatusCodetoGEGB
Get Next function"}:::decision N_SetStatusCodetoGEGB_Node0_action["The status code is set to GEGB to
indicate Get Next operation with
proper positioning"]:::main N_SetStatusCodetoGEGB_Node0 -- Yes --> N_SetStatusCodetoGEGB_Node0_action N_SetStatusCodetoGEGB_Node0_action --> E_SetStatusCodetoGEGB S_SetStatusCodetoGEGB --> N_SetStatusCodetoGEGB_Node0 N_SetStatusCodetoGEGB_Node0 -- No --> E_SetStatusCodetoGEGB
File: GCX126R.cbl
GIVEN:
The system needs to retrieve the next cargo record from the database
WHEN:
Preparing to call the database with Get Next function
THEN:
The status code is set to 'GEGB' to indicate Get Next operation with proper positioning
β Consolidated Acceptance Criteria
- The system executes the database call with GN function for PCB7 and cargo report segment using qualified SSA for B0RT → the next cargo record is retrieved into the cargo report segment and the database status code is updated to reflect the result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallIMSDatabasewithGNFunction(["Start Step"])
E_CallIMSDatabasewithGNFunction(["End Step"])
N_CallIMSDatabasewithGNFunction_Node0{"The system executes the database
call with GN function for PCB7 and
cargo report segment using qualified
SSA for B0RT"}:::decision N_CallIMSDatabasewithGNFunction_Node0_action["The next cargo record is retrieved
into the cargo report segment and
the database status code is updated
to reflect the result"]:::main N_CallIMSDatabasewithGNFunction_Node0 -- Yes --> N_CallIMSDatabasewithGNFunction_Node0_action N_CallIMSDatabasewithGNFunction_Node0_action --> E_CallIMSDatabasewithGNFunction S_CallIMSDatabasewithGNFunction --> N_CallIMSDatabasewithGNFunction_Node0 N_CallIMSDatabasewithGNFunction_Node0 -- No --> E_CallIMSDatabasewithGNFunction
call with GN function for PCB7 and
cargo report segment using qualified
SSA for B0RT"}:::decision N_CallIMSDatabasewithGNFunction_Node0_action["The next cargo record is retrieved
into the cargo report segment and
the database status code is updated
to reflect the result"]:::main N_CallIMSDatabasewithGNFunction_Node0 -- Yes --> N_CallIMSDatabasewithGNFunction_Node0_action N_CallIMSDatabasewithGNFunction_Node0_action --> E_CallIMSDatabasewithGNFunction S_CallIMSDatabasewithGNFunction --> N_CallIMSDatabasewithGNFunction_Node0 N_CallIMSDatabasewithGNFunction_Node0 -- No --> E_CallIMSDatabasewithGNFunction
File: GCX126R.cbl
GIVEN:
The database status code is set to 'GEGB' and the master CCN key is positioned in the qualified SSA
WHEN:
- The system executes the database call with gn function for pcb7
- Cargo report segment using qualified ssa for b0rt
THEN:
- The next cargo record is retrieved into the cargo report segment
- The database status code is updated to reflect the result
β Consolidated Acceptance Criteria
- The system compares the master manifest CCN from the cargo record against the saved input CCN → the system determines if the retrieved record belongs to the same master manifest hierarchy 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_CheckMasterManifestCCNMatch(["Start Step"])
E_CheckMasterManifestCCNMatch(["End Step"])
N_CheckMasterManifestCCNMatch_Node0{"The system compares the master
manifest CCN from the cargo record
against the saved input CCN"}:::decision N_CheckMasterManifestCCNMatch_Node0_action["The system determines if the
retrieved record belongs to the same
master manifest hierarchy for
further processing"]:::main N_CheckMasterManifestCCNMatch_Node0 -- Yes --> N_CheckMasterManifestCCNMatch_Node0_action N_CheckMasterManifestCCNMatch_Node0_action --> E_CheckMasterManifestCCNMatch S_CheckMasterManifestCCNMatch --> N_CheckMasterManifestCCNMatch_Node0 N_CheckMasterManifestCCNMatch_Node0 -- No --> E_CheckMasterManifestCCNMatch
manifest CCN from the cargo record
against the saved input CCN"}:::decision N_CheckMasterManifestCCNMatch_Node0_action["The system determines if the
retrieved record belongs to the same
master manifest hierarchy for
further processing"]:::main N_CheckMasterManifestCCNMatch_Node0 -- Yes --> N_CheckMasterManifestCCNMatch_Node0_action N_CheckMasterManifestCCNMatch_Node0_action --> E_CheckMasterManifestCCNMatch S_CheckMasterManifestCCNMatch --> N_CheckMasterManifestCCNMatch_Node0 N_CheckMasterManifestCCNMatch_Node0 -- No --> E_CheckMasterManifestCCNMatch
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system compares the master manifest CCN from the cargo record against the saved input CCN
THEN:
The system determines if the retrieved record belongs to the same master manifest hierarchy for further processing
β Consolidated Acceptance Criteria
- If if the master manifest CCN equals the saved input CCN → if they match, continue checking the manifest type; if they do not match, set the end of database flag to 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_MasterCCNMatchesInputCCN(["Start Step"])
E_MasterCCNMatchesInputCCN(["End Step"])
N_MasterCCNMatchesInputCCN_Node0{"The system evaluates if the master
manifest CCN equals the saved input
CCN"}:::decision N_MasterCCNMatchesInputCCN_Node0_action["If they match, continue checking
the manifest type if they do not
match, set the end of database flag
to stop processing"]:::main N_MasterCCNMatchesInputCCN_Node0 -- Yes --> N_MasterCCNMatchesInputCCN_Node0_action N_MasterCCNMatchesInputCCN_Node0_action --> E_MasterCCNMatchesInputCCN S_MasterCCNMatchesInputCCN --> N_MasterCCNMatchesInputCCN_Node0 N_MasterCCNMatchesInputCCN_Node0 -- No --> E_MasterCCNMatchesInputCCN
manifest CCN equals the saved input
CCN"}:::decision N_MasterCCNMatchesInputCCN_Node0_action["If they match, continue checking
the manifest type if they do not
match, set the end of database flag
to stop processing"]:::main N_MasterCCNMatchesInputCCN_Node0 -- Yes --> N_MasterCCNMatchesInputCCN_Node0_action N_MasterCCNMatchesInputCCN_Node0_action --> E_MasterCCNMatchesInputCCN S_MasterCCNMatchesInputCCN --> N_MasterCCNMatchesInputCCN_Node0 N_MasterCCNMatchesInputCCN_Node0 -- No --> E_MasterCCNMatchesInputCCN
File: GCX126R.cbl
GIVEN:
The master manifest CCN from the cargo record and the saved input CCN are available for comparison
WHEN:
The system evaluates if the master manifest CCN equals the saved input CCN
THEN:
If they match, continue checking the manifest type; if they do not match, set the end of database flag to stop processing
β Consolidated Acceptance Criteria
- The system increments the array index counter → the array index is increased by 1 to point to the next available position in the follower manifest 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_IncrementArrayIndex(["Start Step"])
E_IncrementArrayIndex(["End Step"])
N_IncrementArrayIndex_Node0{"The system increments the array
index counter"}:::decision N_IncrementArrayIndex_Node0_action["The array index is increased by 1
to point to the next available
position in the follower manifest
array"]:::main N_IncrementArrayIndex_Node0 -- Yes --> N_IncrementArrayIndex_Node0_action N_IncrementArrayIndex_Node0_action --> E_IncrementArrayIndex S_IncrementArrayIndex --> N_IncrementArrayIndex_Node0 N_IncrementArrayIndex_Node0 -- No --> E_IncrementArrayIndex
index counter"}:::decision N_IncrementArrayIndex_Node0_action["The array index is increased by 1
to point to the next available
position in the follower manifest
array"]:::main N_IncrementArrayIndex_Node0 -- Yes --> N_IncrementArrayIndex_Node0_action N_IncrementArrayIndex_Node0_action --> E_IncrementArrayIndex S_IncrementArrayIndex --> N_IncrementArrayIndex_Node0 N_IncrementArrayIndex_Node0 -- No --> E_IncrementArrayIndex
File: GCX126R.cbl
GIVEN:
A follower manifest CCN has been stored in the follower manifest array
WHEN:
The system increments the array index counter
THEN:
The array index is increased by 1 to point to the next available position in the follower manifest array
β Consolidated Acceptance Criteria
- The procedure completes its execution → control returns to the calling procedure with the follower manifest array populated with all valid follower CCNs found, or with the end of database flag set if no more records 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_EndReturntoCaller(["Start Step"])
E_EndReturntoCaller(["End Step"])
N_EndReturntoCaller_Node0{"The procedure completes its
execution"}:::decision N_EndReturntoCaller_Node0_action["Control returns to the calling
procedure with the follower manifest
array populated with all valid
follower CCNs found, or with the end
of database flag set if no more
records exist"]:::main N_EndReturntoCaller_Node0 -- Yes --> N_EndReturntoCaller_Node0_action N_EndReturntoCaller_Node0_action --> E_EndReturntoCaller S_EndReturntoCaller --> N_EndReturntoCaller_Node0 N_EndReturntoCaller_Node0 -- No --> E_EndReturntoCaller
execution"}:::decision N_EndReturntoCaller_Node0_action["Control returns to the calling
procedure with the follower manifest
array populated with all valid
follower CCNs found, or with the end
of database flag set if no more
records exist"]:::main N_EndReturntoCaller_Node0 -- Yes --> N_EndReturntoCaller_Node0_action N_EndReturntoCaller_Node0_action --> E_EndReturntoCaller S_EndReturntoCaller --> N_EndReturntoCaller_Node0 N_EndReturntoCaller_Node0 -- No --> E_EndReturntoCaller
File: GCX126R.cbl
GIVEN:
Either the end of database flag has been set or a record has been processed
WHEN:
The procedure completes its execution
THEN:
Control returns to the calling procedure with the follower manifest array populated with all valid follower CCNs found, or with the end of database flag set if no more records exist
β Consolidated Acceptance Criteria
- The system begins processing follower manifests for a master manifest release → the array index J is initialized to 1 to start processing from the first follower 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_InitializeFollowerArrayIndexJ1(["Start Step"])
E_InitializeFollowerArrayIndexJ1(["End Step"])
N_InitializeFollowerArrayIndexJ1_Node0{"The system begins processing
follower manifests for a master
manifest release"}:::decision N_InitializeFollowerArrayIndexJ1_Node0_action["The array index J is initialized to
1 to start processing from the first
follower manifest"]:::main N_InitializeFollowerArrayIndexJ1_Node0 -- Yes --> N_InitializeFollowerArrayIndexJ1_Node0_action N_InitializeFollowerArrayIndexJ1_Node0_action --> E_InitializeFollowerArrayIndexJ1 S_InitializeFollowerArrayIndexJ1 --> N_InitializeFollowerArrayIndexJ1_Node0 N_InitializeFollowerArrayIndexJ1_Node0 -- No --> E_InitializeFollowerArrayIndexJ1
follower manifests for a master
manifest release"}:::decision N_InitializeFollowerArrayIndexJ1_Node0_action["The array index J is initialized to
1 to start processing from the first
follower manifest"]:::main N_InitializeFollowerArrayIndexJ1_Node0 -- Yes --> N_InitializeFollowerArrayIndexJ1_Node0_action N_InitializeFollowerArrayIndexJ1_Node0_action --> E_InitializeFollowerArrayIndexJ1 S_InitializeFollowerArrayIndexJ1 --> N_InitializeFollowerArrayIndexJ1_Node0 N_InitializeFollowerArrayIndexJ1_Node0 -- No --> E_InitializeFollowerArrayIndexJ1
File: GCX126R.cbl
GIVEN:
A follower manifest array exists with potential follower CCNs
WHEN:
The system begins processing follower manifests for a master manifest release
THEN:
The array index J is initialized to 1 to start processing from the first follower manifest
β Consolidated Acceptance Criteria
- The system checks if more follower manifests need to be processed → processing continues if the follower manifest at index J is not spaces or low-values AND J is less than or equal to the total number of followers AND J does not exceed 100
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FollowerManifestAvailable(["Start Step"])
E_FollowerManifestAvailable(["End Step"])
N_FollowerManifestAvailable_Node0{"The system checks if more follower
manifests need to be processed"}:::decision N_FollowerManifestAvailable_Node0_action["Processing continues if the
follower manifest at index J is not
spaces or low-values AND J is less
than or equal to the total number of
followers AND J does not exceed 100"]:::main N_FollowerManifestAvailable_Node0 -- Yes --> N_FollowerManifestAvailable_Node0_action N_FollowerManifestAvailable_Node0_action --> E_FollowerManifestAvailable S_FollowerManifestAvailable --> N_FollowerManifestAvailable_Node0 N_FollowerManifestAvailable_Node0 -- No --> E_FollowerManifestAvailable
manifests need to be processed"}:::decision N_FollowerManifestAvailable_Node0_action["Processing continues if the
follower manifest at index J is not
spaces or low-values AND J is less
than or equal to the total number of
followers AND J does not exceed 100"]:::main N_FollowerManifestAvailable_Node0 -- Yes --> N_FollowerManifestAvailable_Node0_action N_FollowerManifestAvailable_Node0_action --> E_FollowerManifestAvailable S_FollowerManifestAvailable --> N_FollowerManifestAvailable_Node0 N_FollowerManifestAvailable_Node0 -- No --> E_FollowerManifestAvailable
File: GCX126R.cbl
GIVEN:
The follower manifest array with index J and a maximum limit of 100 follower manifests
WHEN:
The system checks if more follower manifests need to be processed
THEN:
- Processing continues if the follower manifest at index j is not spaces or low-values
- J is less than or equal to the total number of followers
- J does not exceed 100
β Consolidated Acceptance Criteria
- The system builds the release message for logging → the message 'EDI 350: RELEASE : ' is concatenated with X4-01-CBSA-REL-REF-ID (first 15 characters) and ' AT PORT ' and P4-01-PORT-CDE (first 4 characters) into WS-GCX105-INFO-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_BuildReleaseMessagewithReleaseReferenceandPort(["Start Step"])
E_BuildReleaseMessagewithReleaseReferenceandPort(["End Step"])
N_BuildReleaseMessagewithReleaseReferenceandPort_Node0{"The system builds the release
message for logging"}:::decision N_BuildReleaseMessagewithReleaseReferenceandPort_Node0_action["The message EDI 350: RELEASE : is
concatenated with
X4-01-CBSA-REL-REF-ID first 15
characters and AT PORT and
P4-01-PORT-CDE first 4 characters
into WS-GCX105-INFO-MSG"]:::main N_BuildReleaseMessagewithReleaseReferenceandPort_Node0 -- Yes --> N_BuildReleaseMessagewithReleaseReferenceandPort_Node0_action N_BuildReleaseMessagewithReleaseReferenceandPort_Node0_action --> E_BuildReleaseMessagewithReleaseReferenceandPort S_BuildReleaseMessagewithReleaseReferenceandPort --> N_BuildReleaseMessagewithReleaseReferenceandPort_Node0 N_BuildReleaseMessagewithReleaseReferenceandPort_Node0 -- No --> E_BuildReleaseMessagewithReleaseReferenceandPort
message for logging"}:::decision N_BuildReleaseMessagewithReleaseReferenceandPort_Node0_action["The message EDI 350: RELEASE : is
concatenated with
X4-01-CBSA-REL-REF-ID first 15
characters and AT PORT and
P4-01-PORT-CDE first 4 characters
into WS-GCX105-INFO-MSG"]:::main N_BuildReleaseMessagewithReleaseReferenceandPort_Node0 -- Yes --> N_BuildReleaseMessagewithReleaseReferenceandPort_Node0_action N_BuildReleaseMessagewithReleaseReferenceandPort_Node0_action --> E_BuildReleaseMessagewithReleaseReferenceandPort S_BuildReleaseMessagewithReleaseReferenceandPort --> N_BuildReleaseMessagewithReleaseReferenceandPort_Node0 N_BuildReleaseMessagewithReleaseReferenceandPort_Node0 -- No --> E_BuildReleaseMessagewithReleaseReferenceandPort
File: GCX126R.cbl
GIVEN:
The follower manifest has a standard release notice reason code (V9-02-RELEASED) AND X4 segment contains release reference ID AND P4 segment contains port code
WHEN:
The system builds the release message for logging
THEN:
The message 'EDI 350: RELEASE : ' is concatenated with X4-01-CBSA-REL-REF-ID (first 15 characters) and ' AT PORT ' and P4-01-PORT-CDE (first 4 characters) into WS-GCX105-INFO-MSG
β Consolidated Acceptance Criteria
- The system builds the deconsolidation release message for logging → the message 'EDI 350: RELEASE VIA DECON AT PORT ' is concatenated with P4-01-PORT-CDE (first 4 characters) into WS-GCX105-INFO-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_BuildDeconReleaseMessagewithPort(["Start Step"])
E_BuildDeconReleaseMessagewithPort(["End Step"])
N_BuildDeconReleaseMessagewithPort_Node0{"The system builds the
deconsolidation release message for
logging"}:::decision N_BuildDeconReleaseMessagewithPort_Node0_action["The message EDI 350: RELEASE VIA
DECON AT PORT is concatenated with
P4-01-PORT-CDE first 4 characters
into WS-GCX105-INFO-MSG"]:::main N_BuildDeconReleaseMessagewithPort_Node0 -- Yes --> N_BuildDeconReleaseMessagewithPort_Node0_action N_BuildDeconReleaseMessagewithPort_Node0_action --> E_BuildDeconReleaseMessagewithPort S_BuildDeconReleaseMessagewithPort --> N_BuildDeconReleaseMessagewithPort_Node0 N_BuildDeconReleaseMessagewithPort_Node0 -- No --> E_BuildDeconReleaseMessagewithPort
deconsolidation release message for
logging"}:::decision N_BuildDeconReleaseMessagewithPort_Node0_action["The message EDI 350: RELEASE VIA
DECON AT PORT is concatenated with
P4-01-PORT-CDE first 4 characters
into WS-GCX105-INFO-MSG"]:::main N_BuildDeconReleaseMessagewithPort_Node0 -- Yes --> N_BuildDeconReleaseMessagewithPort_Node0_action N_BuildDeconReleaseMessagewithPort_Node0_action --> E_BuildDeconReleaseMessagewithPort S_BuildDeconReleaseMessagewithPort --> N_BuildDeconReleaseMessagewithPort_Node0 N_BuildDeconReleaseMessagewithPort_Node0 -- No --> E_BuildDeconReleaseMessagewithPort
File: GCX126R.cbl
GIVEN:
The follower manifest has a deconsolidation notice reason code (V9-02-DECON) AND P4 segment contains port code
WHEN:
The system builds the deconsolidation release message for logging
THEN:
The message 'EDI 350: RELEASE VIA DECON AT PORT ' is concatenated with P4-01-PORT-CDE (first 4 characters) into WS-GCX105-INFO-MSG
β Consolidated Acceptance Criteria
- The system updates the cargo release reason field → x4-01-CBSA-REL-REF-ID (first 15 characters) and '/' and P4-01-PORT-CDE (first 4 characters) are concatenated into GCCC-RELEASE-REASON
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseReasonwithReleaseReferenceandPort(["Start Step"])
E_SetReleaseReasonwithReleaseReferenceandPort(["End Step"])
N_SetReleaseReasonwithReleaseReferenceandPort_Node0{"The system updates the cargo
release reason field"}:::decision N_SetReleaseReasonwithReleaseReferenceandPort_Node0_action["X4-01-CBSA-REL-REF-ID first 15
characters and and P4-01-PORT-CDE
first 4 characters are concatenated
into GCCC-RELEASE-REASON"]:::main N_SetReleaseReasonwithReleaseReferenceandPort_Node0 -- Yes --> N_SetReleaseReasonwithReleaseReferenceandPort_Node0_action N_SetReleaseReasonwithReleaseReferenceandPort_Node0_action --> E_SetReleaseReasonwithReleaseReferenceandPort S_SetReleaseReasonwithReleaseReferenceandPort --> N_SetReleaseReasonwithReleaseReferenceandPort_Node0 N_SetReleaseReasonwithReleaseReferenceandPort_Node0 -- No --> E_SetReleaseReasonwithReleaseReferenceandPort
release reason field"}:::decision N_SetReleaseReasonwithReleaseReferenceandPort_Node0_action["X4-01-CBSA-REL-REF-ID first 15
characters and and P4-01-PORT-CDE
first 4 characters are concatenated
into GCCC-RELEASE-REASON"]:::main N_SetReleaseReasonwithReleaseReferenceandPort_Node0 -- Yes --> N_SetReleaseReasonwithReleaseReferenceandPort_Node0_action N_SetReleaseReasonwithReleaseReferenceandPort_Node0_action --> E_SetReleaseReasonwithReleaseReferenceandPort S_SetReleaseReasonwithReleaseReferenceandPort --> N_SetReleaseReasonwithReleaseReferenceandPort_Node0 N_SetReleaseReasonwithReleaseReferenceandPort_Node0 -- No --> E_SetReleaseReasonwithReleaseReferenceandPort
File: GCX126R.cbl
GIVEN:
The follower manifest has a standard release notice reason code (V9-02-RELEASED) AND X4 segment contains release reference ID AND P4 segment contains port code
WHEN:
The system updates the cargo release reason field
THEN:
X4-01-CBSA-REL-REF-ID (first 15 characters) and '/' and P4-01-PORT-CDE (first 4 characters) are concatenated into GCCC-RELEASE-REASON
β Consolidated Acceptance Criteria
- The system prepares to process the next follower manifest → the array index 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_IncrementArrayIndexJ(["Start Step"])
E_IncrementArrayIndexJ(["End Step"])
N_IncrementArrayIndexJ_Node0{"The system prepares to process the
next follower manifest"}:::decision N_IncrementArrayIndexJ_Node0_action["The array index J is incremented by
1"]:::main N_IncrementArrayIndexJ_Node0 -- Yes --> N_IncrementArrayIndexJ_Node0_action N_IncrementArrayIndexJ_Node0_action --> E_IncrementArrayIndexJ S_IncrementArrayIndexJ --> N_IncrementArrayIndexJ_Node0 N_IncrementArrayIndexJ_Node0 -- No --> E_IncrementArrayIndexJ
next follower manifest"}:::decision N_IncrementArrayIndexJ_Node0_action["The array index J is incremented by
1"]:::main N_IncrementArrayIndexJ_Node0 -- Yes --> N_IncrementArrayIndexJ_Node0_action N_IncrementArrayIndexJ_Node0_action --> E_IncrementArrayIndexJ S_IncrementArrayIndexJ --> N_IncrementArrayIndexJ_Node0 N_IncrementArrayIndexJ_Node0 -- No --> E_IncrementArrayIndexJ
File: GCX126R.cbl
GIVEN:
The current follower manifest has been processed (whether successfully or skipped)
WHEN:
The system prepares to process the next follower manifest
THEN:
The array index J is incremented by 1
β Consolidated Acceptance Criteria
- If whether to continue the processing loop → the loop continues if the follower manifest at index J is not spaces or low-values AND J is less than or equal to the total number of followers AND J does not exceed 100, otherwise the 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_MoreFollowersorMax100Reached(["Start Step"])
E_MoreFollowersorMax100Reached(["End Step"])
N_MoreFollowersorMax100Reached_Node0{"The system evaluates whether to
continue the processing loop"}:::decision N_MoreFollowersorMax100Reached_Node0_action["The loop continues if the follower
manifest at index J is not spaces or
low-values AND J is less than or
equal to the total number of
followers AND J does not exceed 100,
otherwise the loop terminates"]:::main N_MoreFollowersorMax100Reached_Node0 -- Yes --> N_MoreFollowersorMax100Reached_Node0_action N_MoreFollowersorMax100Reached_Node0_action --> E_MoreFollowersorMax100Reached S_MoreFollowersorMax100Reached --> N_MoreFollowersorMax100Reached_Node0 N_MoreFollowersorMax100Reached_Node0 -- No --> E_MoreFollowersorMax100Reached
continue the processing loop"}:::decision N_MoreFollowersorMax100Reached_Node0_action["The loop continues if the follower
manifest at index J is not spaces or
low-values AND J is less than or
equal to the total number of
followers AND J does not exceed 100,
otherwise the loop terminates"]:::main N_MoreFollowersorMax100Reached_Node0 -- Yes --> N_MoreFollowersorMax100Reached_Node0_action N_MoreFollowersorMax100Reached_Node0_action --> E_MoreFollowersorMax100Reached S_MoreFollowersorMax100Reached --> N_MoreFollowersorMax100Reached_Node0 N_MoreFollowersorMax100Reached_Node0 -- No --> E_MoreFollowersorMax100Reached
File: GCX126R.cbl
GIVEN:
The array index J has been incremented AND there is a follower manifest array with potential entries
WHEN:
The system evaluates whether to continue the processing loop
THEN:
- The loop continues if the follower manifest at index j is not spaces or low-values
- J is less than or equal to the total number of followers
- J does not exceed 100, otherwise the loop terminates
β Consolidated Acceptance Criteria
- The system completes the follower manifest processing loop → control returns to the calling procedure and the follower manifest processing section 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_EndProcessFollowerManifests(["Start Step"])
E_EndProcessFollowerManifests(["End Step"])
N_EndProcessFollowerManifests_Node0{"The system completes the follower
manifest processing loop"}:::decision N_EndProcessFollowerManifests_Node0_action["Control returns to the calling
procedure and the follower manifest
processing section exits"]:::main N_EndProcessFollowerManifests_Node0 -- Yes --> N_EndProcessFollowerManifests_Node0_action N_EndProcessFollowerManifests_Node0_action --> E_EndProcessFollowerManifests S_EndProcessFollowerManifests --> N_EndProcessFollowerManifests_Node0 N_EndProcessFollowerManifests_Node0 -- No --> E_EndProcessFollowerManifests
manifest processing loop"}:::decision N_EndProcessFollowerManifests_Node0_action["Control returns to the calling
procedure and the follower manifest
processing section exits"]:::main N_EndProcessFollowerManifests_Node0 -- Yes --> N_EndProcessFollowerManifests_Node0_action N_EndProcessFollowerManifests_Node0_action --> E_EndProcessFollowerManifests S_EndProcessFollowerManifests --> N_EndProcessFollowerManifests_Node0 N_EndProcessFollowerManifests_Node0 -- No --> E_EndProcessFollowerManifests
File: GCX126R.cbl
GIVEN:
All follower manifests in the array have been processed OR the maximum limit of 100 has been reached OR no more valid follower CCNs exist in the array
WHEN:
The system completes the follower manifest processing loop
THEN:
- Control returns to the calling procedure
- The follower manifest processing section exits
β Consolidated Acceptance Criteria
- The system attempts to retrieve the cargo record using the follower CCN as the search key → the system retrieves the cargo report segment and secondary segment if the cargo exists, or indicates cargo not found if the CCN does not match any existing cargo record
- If the cargo deletion status field → if the deletion status equals 'D', the cargo deleted indicator (WS-CARGO-DELETED) is set to true; otherwise, the cargo is considered active
- The system compares the cargo's waybill key with the saved waybill index → if the waybill keys do not match, the cargo not waybill indicator (WS-CARGO-NOT-WB) is set to true; otherwise, the waybill matches and processing continues
- If the cargo return status indicator → if the cargo status indicates return (GCCC-STATUS-RETURN is true), the cargo returned indicator (WS-CARGO-RETURNED) is set to true
- The system checks the cargo release status field → if the release status equals 'R', the cargo released indicator (WS-CARGO-RELEASED) is set to true
- The system examines the cargo train identification field → if the CP train ID is not spaces (blank), the cargo on train indicator (WS-CARGO-ON-A-TRAIN) 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_LookupCargobyFollowerCCN(["Start Step"])
E_LookupCargobyFollowerCCN(["End Step"])
N_LookupCargobyFollowerCCN_Node0{"The system attempts to retrieve the
cargo record using the follower CCN
as the search key"}:::decision N_LookupCargobyFollowerCCN_Node0_action["The system retrieves the cargo
report segment and secondary segment
if the cargo exists, or indicates
cargo not found if the CCN does not
match any existing cargo record"]:::main N_LookupCargobyFollowerCCN_Node0 -- Yes --> N_LookupCargobyFollowerCCN_Node0_action N_LookupCargobyFollowerCCN_Node0_action --> E_LookupCargobyFollowerCCN S_LookupCargobyFollowerCCN --> N_LookupCargobyFollowerCCN_Node0 N_LookupCargobyFollowerCCN_Node1{"The system evaluates the cargo
deletion status field"}:::decision N_LookupCargobyFollowerCCN_Node1_action["If the deletion status equals D ,
the cargo deleted indicator
WS-CARGO-DELETED is set to true
otherwise, the cargo is considered
active"]:::main N_LookupCargobyFollowerCCN_Node1 -- Yes --> N_LookupCargobyFollowerCCN_Node1_action N_LookupCargobyFollowerCCN_Node1_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node0 -- No --> N_LookupCargobyFollowerCCN_Node1 N_LookupCargobyFollowerCCN_Node2{"The system compares the cargo s
waybill key with the saved waybill
index"}:::decision N_LookupCargobyFollowerCCN_Node2_action["If the waybill keys do not match,
the cargo not waybill indicator
WS-CARGO-NOT-WB is set to true
otherwise, the waybill matches and
processing continues"]:::main N_LookupCargobyFollowerCCN_Node2 -- Yes --> N_LookupCargobyFollowerCCN_Node2_action N_LookupCargobyFollowerCCN_Node2_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node1 -- No --> N_LookupCargobyFollowerCCN_Node2 N_LookupCargobyFollowerCCN_Node3{"The system evaluates the cargo
return status indicator"}:::decision N_LookupCargobyFollowerCCN_Node3_action["If the cargo status indicates
return GCCC-STATUS-RETURN is true,
the cargo returned indicator
WS-CARGO-RETURNED is set to true"]:::main N_LookupCargobyFollowerCCN_Node3 -- Yes --> N_LookupCargobyFollowerCCN_Node3_action N_LookupCargobyFollowerCCN_Node3_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node2 -- No --> N_LookupCargobyFollowerCCN_Node3 N_LookupCargobyFollowerCCN_Node4{"The system checks the cargo release
status field"}:::decision N_LookupCargobyFollowerCCN_Node4_action["If the release status equals R ,
the cargo released indicator
WS-CARGO-RELEASED is set to true"]:::main N_LookupCargobyFollowerCCN_Node4 -- Yes --> N_LookupCargobyFollowerCCN_Node4_action N_LookupCargobyFollowerCCN_Node4_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node3 -- No --> N_LookupCargobyFollowerCCN_Node4 N_LookupCargobyFollowerCCN_Node5{"The system examines the cargo train
identification field"}:::decision N_LookupCargobyFollowerCCN_Node5_action["If the CP train ID is not spaces
blank, the cargo on train indicator
WS-CARGO-ON-A-TRAIN is set to true"]:::main N_LookupCargobyFollowerCCN_Node5 -- Yes --> N_LookupCargobyFollowerCCN_Node5_action N_LookupCargobyFollowerCCN_Node5_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node4 -- No --> N_LookupCargobyFollowerCCN_Node5 N_LookupCargobyFollowerCCN_Node5 -- No --> E_LookupCargobyFollowerCCN
cargo record using the follower CCN
as the search key"}:::decision N_LookupCargobyFollowerCCN_Node0_action["The system retrieves the cargo
report segment and secondary segment
if the cargo exists, or indicates
cargo not found if the CCN does not
match any existing cargo record"]:::main N_LookupCargobyFollowerCCN_Node0 -- Yes --> N_LookupCargobyFollowerCCN_Node0_action N_LookupCargobyFollowerCCN_Node0_action --> E_LookupCargobyFollowerCCN S_LookupCargobyFollowerCCN --> N_LookupCargobyFollowerCCN_Node0 N_LookupCargobyFollowerCCN_Node1{"The system evaluates the cargo
deletion status field"}:::decision N_LookupCargobyFollowerCCN_Node1_action["If the deletion status equals D ,
the cargo deleted indicator
WS-CARGO-DELETED is set to true
otherwise, the cargo is considered
active"]:::main N_LookupCargobyFollowerCCN_Node1 -- Yes --> N_LookupCargobyFollowerCCN_Node1_action N_LookupCargobyFollowerCCN_Node1_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node0 -- No --> N_LookupCargobyFollowerCCN_Node1 N_LookupCargobyFollowerCCN_Node2{"The system compares the cargo s
waybill key with the saved waybill
index"}:::decision N_LookupCargobyFollowerCCN_Node2_action["If the waybill keys do not match,
the cargo not waybill indicator
WS-CARGO-NOT-WB is set to true
otherwise, the waybill matches and
processing continues"]:::main N_LookupCargobyFollowerCCN_Node2 -- Yes --> N_LookupCargobyFollowerCCN_Node2_action N_LookupCargobyFollowerCCN_Node2_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node1 -- No --> N_LookupCargobyFollowerCCN_Node2 N_LookupCargobyFollowerCCN_Node3{"The system evaluates the cargo
return status indicator"}:::decision N_LookupCargobyFollowerCCN_Node3_action["If the cargo status indicates
return GCCC-STATUS-RETURN is true,
the cargo returned indicator
WS-CARGO-RETURNED is set to true"]:::main N_LookupCargobyFollowerCCN_Node3 -- Yes --> N_LookupCargobyFollowerCCN_Node3_action N_LookupCargobyFollowerCCN_Node3_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node2 -- No --> N_LookupCargobyFollowerCCN_Node3 N_LookupCargobyFollowerCCN_Node4{"The system checks the cargo release
status field"}:::decision N_LookupCargobyFollowerCCN_Node4_action["If the release status equals R ,
the cargo released indicator
WS-CARGO-RELEASED is set to true"]:::main N_LookupCargobyFollowerCCN_Node4 -- Yes --> N_LookupCargobyFollowerCCN_Node4_action N_LookupCargobyFollowerCCN_Node4_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node3 -- No --> N_LookupCargobyFollowerCCN_Node4 N_LookupCargobyFollowerCCN_Node5{"The system examines the cargo train
identification field"}:::decision N_LookupCargobyFollowerCCN_Node5_action["If the CP train ID is not spaces
blank, the cargo on train indicator
WS-CARGO-ON-A-TRAIN is set to true"]:::main N_LookupCargobyFollowerCCN_Node5 -- Yes --> N_LookupCargobyFollowerCCN_Node5_action N_LookupCargobyFollowerCCN_Node5_action --> E_LookupCargobyFollowerCCN N_LookupCargobyFollowerCCN_Node4 -- No --> N_LookupCargobyFollowerCCN_Node5 N_LookupCargobyFollowerCCN_Node5 -- No --> E_LookupCargobyFollowerCCN
File: GCX126R.cbl
GIVEN:
A follower manifest CCN is available for cargo lookup
WHEN:
The system attempts to retrieve the cargo record using the follower CCN as the search key
THEN:
- The system retrieves the cargo report segment
- Secondary segment if the cargo exists, or indicates cargo not found if the ccn does not match any existing cargo record
File: GCX126R.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system evaluates the cargo deletion status field
THEN:
If the deletion status equals 'D', the cargo deleted indicator (WS-CARGO-DELETED) is set to true; otherwise, the cargo is considered active
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and a waybill index filter is provided (not blank)
WHEN:
The system compares the cargo's waybill key with the saved waybill index
THEN:
- If the waybill keys do not match, the cargo not waybill indicator (ws-cargo-not-wb) is set to true; otherwise, the waybill matches
- Processing continues
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has been successfully retrieved and is not deleted
WHEN:
The system evaluates the cargo return status indicator
THEN:
If the cargo status indicates return (GCCC-STATUS-RETURN is true), the cargo returned indicator (WS-CARGO-RETURNED) is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has been successfully retrieved and is not deleted
WHEN:
The system checks the cargo release status field
THEN:
If the release status equals 'R', the cargo released indicator (WS-CARGO-RELEASED) is set to true
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has been successfully retrieved and is not deleted
WHEN:
The system examines the cargo train identification field
THEN:
If the CP train ID is not spaces (blank), the cargo on train indicator (WS-CARGO-ON-A-TRAIN) is set to true
β Consolidated Acceptance Criteria
- The system prepares to search for the cargo record → the follower CCN is moved to both the primary cargo search key (CCRT-SSAQ) and secondary cargo search key (A2RT-SSAQ)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveFollowerCCNtoSearchKey(["Start Step"])
E_MoveFollowerCCNtoSearchKey(["End Step"])
N_MoveFollowerCCNtoSearchKey_Node0{"The system prepares to search for
the cargo record"}:::decision N_MoveFollowerCCNtoSearchKey_Node0_action["The follower CCN is moved to both
the primary cargo search key
CCRT-SSAQ and secondary cargo search
key A2RT-SSAQ"]:::main N_MoveFollowerCCNtoSearchKey_Node0 -- Yes --> N_MoveFollowerCCNtoSearchKey_Node0_action N_MoveFollowerCCNtoSearchKey_Node0_action --> E_MoveFollowerCCNtoSearchKey S_MoveFollowerCCNtoSearchKey --> N_MoveFollowerCCNtoSearchKey_Node0 N_MoveFollowerCCNtoSearchKey_Node0 -- No --> E_MoveFollowerCCNtoSearchKey
the cargo record"}:::decision N_MoveFollowerCCNtoSearchKey_Node0_action["The follower CCN is moved to both
the primary cargo search key
CCRT-SSAQ and secondary cargo search
key A2RT-SSAQ"]:::main N_MoveFollowerCCNtoSearchKey_Node0 -- Yes --> N_MoveFollowerCCNtoSearchKey_Node0_action N_MoveFollowerCCNtoSearchKey_Node0_action --> E_MoveFollowerCCNtoSearchKey S_MoveFollowerCCNtoSearchKey --> N_MoveFollowerCCNtoSearchKey_Node0 N_MoveFollowerCCNtoSearchKey_Node0 -- No --> E_MoveFollowerCCNtoSearchKey
File: GCX126R.cbl
GIVEN:
A follower manifest CCN exists in the follower manifest array
WHEN:
The system prepares to search for the cargo record
THEN:
The follower CCN is moved to both the primary cargo search key (CCRT-SSAQ) and secondary cargo search key (A2RT-SSAQ)
β Consolidated Acceptance Criteria
- The system invokes the database access function with GHU operation → the system attempts to retrieve the cargo report segment (GCCC-CARGO-REPORT-SEGMENT) from the cargo database (GCCC-PCB) using the qualified search argument
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSwithGHUFunction(["Start Step"])
E_CallCIMSwithGHUFunction(["End Step"])
N_CallCIMSwithGHUFunction_Node0{"The system invokes the database
access function with GHU operation"}:::decision N_CallCIMSwithGHUFunction_Node0_action["The system attempts to retrieve the
cargo report segment
GCCC-CARGO-REPORT-SEGMENT from the
cargo database GCCC-PCB using the
qualified search argument"]:::main N_CallCIMSwithGHUFunction_Node0 -- Yes --> N_CallCIMSwithGHUFunction_Node0_action N_CallCIMSwithGHUFunction_Node0_action --> E_CallCIMSwithGHUFunction S_CallCIMSwithGHUFunction --> N_CallCIMSwithGHUFunction_Node0 N_CallCIMSwithGHUFunction_Node0 -- No --> E_CallCIMSwithGHUFunction
access function with GHU operation"}:::decision N_CallCIMSwithGHUFunction_Node0_action["The system attempts to retrieve the
cargo report segment
GCCC-CARGO-REPORT-SEGMENT from the
cargo database GCCC-PCB using the
qualified search argument"]:::main N_CallCIMSwithGHUFunction_Node0 -- Yes --> N_CallCIMSwithGHUFunction_Node0_action N_CallCIMSwithGHUFunction_Node0_action --> E_CallCIMSwithGHUFunction S_CallCIMSwithGHUFunction --> N_CallCIMSwithGHUFunction_Node0 N_CallCIMSwithGHUFunction_Node0 -- No --> E_CallCIMSwithGHUFunction
File: GCX126R.cbl
GIVEN:
The cargo search key contains a valid follower CCN
WHEN:
The system invokes the database access function with GHU operation
THEN:
The system attempts to retrieve the cargo report segment (GCCC-CARGO-REPORT-SEGMENT) from the cargo database (GCCC-PCB) using the qualified search argument
β Consolidated Acceptance Criteria
- The system attempts to read the cargo secondary segment using GHU function → the system retrieves the cargo secondary segment (GCSCCS52) from the secondary cargo database (GCA2-PCB) using the secondary 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_ReadCargoSecondarySegment(["Start Step"])
E_ReadCargoSecondarySegment(["End Step"])
N_ReadCargoSecondarySegment_Node0{"The system attempts to read the
cargo secondary segment using GHU
function"}:::decision N_ReadCargoSecondarySegment_Node0_action["The system retrieves the cargo
secondary segment GCSCCS52 from the
secondary cargo database GCA2-PCB
using the secondary search key"]:::main N_ReadCargoSecondarySegment_Node0 -- Yes --> N_ReadCargoSecondarySegment_Node0_action N_ReadCargoSecondarySegment_Node0_action --> E_ReadCargoSecondarySegment S_ReadCargoSecondarySegment --> N_ReadCargoSecondarySegment_Node0 N_ReadCargoSecondarySegment_Node0 -- No --> E_ReadCargoSecondarySegment
cargo secondary segment using GHU
function"}:::decision N_ReadCargoSecondarySegment_Node0_action["The system retrieves the cargo
secondary segment GCSCCS52 from the
secondary cargo database GCA2-PCB
using the secondary search key"]:::main N_ReadCargoSecondarySegment_Node0 -- Yes --> N_ReadCargoSecondarySegment_Node0_action N_ReadCargoSecondarySegment_Node0_action --> E_ReadCargoSecondarySegment S_ReadCargoSecondarySegment --> N_ReadCargoSecondarySegment_Node0 N_ReadCargoSecondarySegment_Node0 -- No --> E_ReadCargoSecondarySegment
File: GCX126R.cbl
GIVEN:
The primary cargo report segment has been successfully retrieved
WHEN:
The system attempts to read the cargo secondary segment using GHU function
THEN:
The system retrieves the cargo secondary segment (GCSCCS52) from the secondary cargo database (GCA2-PCB) using the secondary search key
β Consolidated Acceptance Criteria
- If the secondary segment database status code → if the status code equals 'GE' (segment not found), the secondary segment does not exist; otherwise, the secondary segment 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_SecondaryStatusGE(["Start Step"])
E_SecondaryStatusGE(["End Step"])
N_SecondaryStatusGE_Node0{"The system evaluates the secondary
segment database status code"}:::decision N_SecondaryStatusGE_Node0_action["If the status code equals GE
segment not found, the secondary
segment does not exist otherwise,
the secondary segment is available"]:::main N_SecondaryStatusGE_Node0 -- Yes --> N_SecondaryStatusGE_Node0_action N_SecondaryStatusGE_Node0_action --> E_SecondaryStatusGE S_SecondaryStatusGE --> N_SecondaryStatusGE_Node0 N_SecondaryStatusGE_Node0 -- No --> E_SecondaryStatusGE
segment database status code"}:::decision N_SecondaryStatusGE_Node0_action["If the status code equals GE
segment not found, the secondary
segment does not exist otherwise,
the secondary segment is available"]:::main N_SecondaryStatusGE_Node0 -- Yes --> N_SecondaryStatusGE_Node0_action N_SecondaryStatusGE_Node0_action --> E_SecondaryStatusGE S_SecondaryStatusGE --> N_SecondaryStatusGE_Node0 N_SecondaryStatusGE_Node0 -- No --> E_SecondaryStatusGE
File: GCX126R.cbl
GIVEN:
The secondary segment retrieval operation has completed
WHEN:
The system evaluates the secondary segment database status code
THEN:
If the status code equals 'GE' (segment not found), the secondary segment does not exist; otherwise, the secondary segment is available
β Consolidated Acceptance Criteria
- The system processes the missing secondary segment condition → the secondary segment data structure (GCSCCS52) is cleared to spaces to prevent processing of invalid 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_ClearSecondarySegment(["Start Step"])
E_ClearSecondarySegment(["End Step"])
N_ClearSecondarySegment_Node0{"The system processes the missing
secondary segment condition"}:::decision N_ClearSecondarySegment_Node0_action["The secondary segment data
structure GCSCCS52 is cleared to
spaces to prevent processing of
invalid data"]:::main N_ClearSecondarySegment_Node0 -- Yes --> N_ClearSecondarySegment_Node0_action N_ClearSecondarySegment_Node0_action --> E_ClearSecondarySegment S_ClearSecondarySegment --> N_ClearSecondarySegment_Node0 N_ClearSecondarySegment_Node0 -- No --> E_ClearSecondarySegment
secondary segment condition"}:::decision N_ClearSecondarySegment_Node0_action["The secondary segment data
structure GCSCCS52 is cleared to
spaces to prevent processing of
invalid data"]:::main N_ClearSecondarySegment_Node0 -- Yes --> N_ClearSecondarySegment_Node0_action N_ClearSecondarySegment_Node0_action --> E_ClearSecondarySegment S_ClearSecondarySegment --> N_ClearSecondarySegment_Node0 N_ClearSecondarySegment_Node0 -- No --> E_ClearSecondarySegment
File: GCX126R.cbl
GIVEN:
The secondary segment retrieval returned status code 'GE' indicating no secondary segment exists
WHEN:
The system processes the missing secondary segment condition
THEN:
The secondary segment data structure (GCSCCS52) is cleared to spaces to prevent processing of invalid data
β Consolidated Acceptance Criteria
- The database status code is not SPACES (indicating record not found or error) → the end-of-database flag is set to TRUE and processing exits the US manifest search without creating any log 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_CargoStatusCheck(["Start Step"])
E_CargoStatusCheck(["End Step"])
N_CargoStatusCheck_Node0{"The database status code is not
SPACES indicating record not found
or error"}:::decision N_CargoStatusCheck_Node0_action["The end-of-database flag is set to
TRUE and processing exits the US
manifest search without creating any
log entries"]:::exclusion N_CargoStatusCheck_Node0 -- Yes -->|Alternative| N_CargoStatusCheck_Node0_action N_CargoStatusCheck_Node0_action --> E_CargoStatusCheck S_CargoStatusCheck --> N_CargoStatusCheck_Node0 N_CargoStatusCheck_Node0 -- No --> E_CargoStatusCheck
SPACES indicating record not found
or error"}:::decision N_CargoStatusCheck_Node0_action["The end-of-database flag is set to
TRUE and processing exits the US
manifest search without creating any
log entries"]:::exclusion N_CargoStatusCheck_Node0 -- Yes -->|Alternative| N_CargoStatusCheck_Node0_action N_CargoStatusCheck_Node0_action --> E_CargoStatusCheck S_CargoStatusCheck --> N_CargoStatusCheck_Node0 N_CargoStatusCheck_Node0 -- No --> E_CargoStatusCheck
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database retrieval operation has been performed for US cargo
WHEN:
The database status code is not SPACES (indicating record not found or error)
THEN:
- The end-of-database flag is set to true
- Processing exits the us manifest search without creating any log entries
β Consolidated Acceptance Criteria
- The system prepares to create a log entry → the log input structure is cleared to SPACES, the security byte is set to HIGH-VALUE, the sending transaction is set to 'GCT1261E', and the ACF2 user ID is set from 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_PrepareLogInformation(["Start Step"])
E_PrepareLogInformation(["End Step"])
N_PrepareLogInformation_Node0{"The system prepares to create a log
entry"}:::decision N_PrepareLogInformation_Node0_action["The log input structure is cleared
to SPACES, the security byte is set
to HIGH-VALUE, the sending
transaction is set to GCT1261E , and
the ACF2 user ID is set from the
common control area"]:::main N_PrepareLogInformation_Node0 -- Yes --> N_PrepareLogInformation_Node0_action N_PrepareLogInformation_Node0_action --> E_PrepareLogInformation S_PrepareLogInformation --> N_PrepareLogInformation_Node0 N_PrepareLogInformation_Node0 -- No --> E_PrepareLogInformation
entry"}:::decision N_PrepareLogInformation_Node0_action["The log input structure is cleared
to SPACES, the security byte is set
to HIGH-VALUE, the sending
transaction is set to GCT1261E , and
the ACF2 user ID is set from the
common control area"]:::main N_PrepareLogInformation_Node0 -- Yes --> N_PrepareLogInformation_Node0_action N_PrepareLogInformation_Node0_action --> E_PrepareLogInformation S_PrepareLogInformation --> N_PrepareLogInformation_Node0 N_PrepareLogInformation_Node0 -- No --> E_PrepareLogInformation
File: GCX126R.cbl
GIVEN:
A valid US manifest has been found
WHEN:
The system prepares to create a log entry
THEN:
The log input structure is cleared to SPACES, the security byte is set to HIGH-VALUE, the sending transaction is set to 'GCT1261E', and the ACF2 user ID is set from the common control area
β Consolidated Acceptance Criteria
- The system builds the log date field → the log date is constructed by concatenating the machine century (CC) and machine date (YYMMDD) from the common control area into the GCX105 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_BuildLogDatefromMachineDate(["Start Step"])
E_BuildLogDatefromMachineDate(["End Step"])
N_BuildLogDatefromMachineDate_Node0{"The system builds the log date
field"}:::decision N_BuildLogDatefromMachineDate_Node0_action["The log date is constructed by
concatenating the machine century CC
and machine date YYMMDD from the
common control area into the GCX105
date field"]:::main N_BuildLogDatefromMachineDate_Node0 -- Yes --> N_BuildLogDatefromMachineDate_Node0_action N_BuildLogDatefromMachineDate_Node0_action --> E_BuildLogDatefromMachineDate S_BuildLogDatefromMachineDate --> N_BuildLogDatefromMachineDate_Node0 N_BuildLogDatefromMachineDate_Node0 -- No --> E_BuildLogDatefromMachineDate
field"}:::decision N_BuildLogDatefromMachineDate_Node0_action["The log date is constructed by
concatenating the machine century CC
and machine date YYMMDD from the
common control area into the GCX105
date field"]:::main N_BuildLogDatefromMachineDate_Node0 -- Yes --> N_BuildLogDatefromMachineDate_Node0_action N_BuildLogDatefromMachineDate_Node0_action --> E_BuildLogDatefromMachineDate S_BuildLogDatefromMachineDate --> N_BuildLogDatefromMachineDate_Node0 N_BuildLogDatefromMachineDate_Node0 -- No --> E_BuildLogDatefromMachineDate
File: GCX126R.cbl
GIVEN:
The log header information has been prepared
WHEN:
The system builds the log date field
THEN:
The log date is constructed by concatenating the machine century (CC) and machine date (YYMMDD) from the common control area into the GCX105 date field
β Consolidated Acceptance Criteria
- The system sets the log time field → the log time is set to the machine time (HHMMSS) from 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_SetLogTimefromMachineTime(["Start Step"])
E_SetLogTimefromMachineTime(["End Step"])
N_SetLogTimefromMachineTime_Node0{"The system sets the log time field"}:::decision
N_SetLogTimefromMachineTime_Node0_action["The log time is set to the machine
time HHMMSS from the common control
area"]:::main N_SetLogTimefromMachineTime_Node0 -- Yes --> N_SetLogTimefromMachineTime_Node0_action N_SetLogTimefromMachineTime_Node0_action --> E_SetLogTimefromMachineTime S_SetLogTimefromMachineTime --> N_SetLogTimefromMachineTime_Node0 N_SetLogTimefromMachineTime_Node0 -- No --> E_SetLogTimefromMachineTime
time HHMMSS from the common control
area"]:::main N_SetLogTimefromMachineTime_Node0 -- Yes --> N_SetLogTimefromMachineTime_Node0_action N_SetLogTimefromMachineTime_Node0_action --> E_SetLogTimefromMachineTime S_SetLogTimefromMachineTime --> N_SetLogTimefromMachineTime_Node0 N_SetLogTimefromMachineTime_Node0 -- No --> E_SetLogTimefromMachineTime
File: GCX126R.cbl
GIVEN:
The log date has been built
WHEN:
The system sets the log time field
THEN:
The log time is set to the machine time (HHMMSS) from the common control area
β Consolidated Acceptance Criteria
- The system assigns the action code → the action code is set to the value of LOG-USE-INPUT-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_SetActionCodetoInputMessage(["Start Step"])
E_SetActionCodetoInputMessage(["End Step"])
N_SetActionCodetoInputMessage_Node0{"The system assigns the action code"}:::decision
N_SetActionCodetoInputMessage_Node0_action["The action code is set to the value
of LOG-USE-INPUT-MESSAGE constant"]:::main N_SetActionCodetoInputMessage_Node0 -- Yes --> N_SetActionCodetoInputMessage_Node0_action N_SetActionCodetoInputMessage_Node0_action --> E_SetActionCodetoInputMessage S_SetActionCodetoInputMessage --> N_SetActionCodetoInputMessage_Node0 N_SetActionCodetoInputMessage_Node0 -- No --> E_SetActionCodetoInputMessage
of LOG-USE-INPUT-MESSAGE constant"]:::main N_SetActionCodetoInputMessage_Node0 -- Yes --> N_SetActionCodetoInputMessage_Node0_action N_SetActionCodetoInputMessage_Node0_action --> E_SetActionCodetoInputMessage S_SetActionCodetoInputMessage --> N_SetActionCodetoInputMessage_Node0 N_SetActionCodetoInputMessage_Node0 -- No --> E_SetActionCodetoInputMessage
File: GCX126R.cbl
GIVEN:
The log date and time have been set
WHEN:
The system assigns the action code
THEN:
The action code is set to the value of LOG-USE-INPUT-MESSAGE constant
β Consolidated Acceptance Criteria
- The system designates the cargo type → the cargo type indicator is set to US-CARGO (as opposed to Canadian cargo or 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_SetCargoTypetoUSCargo(["Start Step"])
E_SetCargoTypetoUSCargo(["End Step"])
N_SetCargoTypetoUSCargo_Node0{"The system designates the cargo
type"}:::decision N_SetCargoTypetoUSCargo_Node0_action["The cargo type indicator is set to
US-CARGO as opposed to Canadian
cargo or train"]:::main N_SetCargoTypetoUSCargo_Node0 -- Yes --> N_SetCargoTypetoUSCargo_Node0_action N_SetCargoTypetoUSCargo_Node0_action --> E_SetCargoTypetoUSCargo S_SetCargoTypetoUSCargo --> N_SetCargoTypetoUSCargo_Node0 N_SetCargoTypetoUSCargo_Node0 -- No --> E_SetCargoTypetoUSCargo
type"}:::decision N_SetCargoTypetoUSCargo_Node0_action["The cargo type indicator is set to
US-CARGO as opposed to Canadian
cargo or train"]:::main N_SetCargoTypetoUSCargo_Node0 -- Yes --> N_SetCargoTypetoUSCargo_Node0_action N_SetCargoTypetoUSCargo_Node0_action --> E_SetCargoTypetoUSCargo S_SetCargoTypetoUSCargo --> N_SetCargoTypetoUSCargo_Node0 N_SetCargoTypetoUSCargo_Node0 -- No --> E_SetCargoTypetoUSCargo
File: GCX126R.cbl
GIVEN:
The US CCN has been set as the target identifier
WHEN:
The system designates the cargo type
THEN:
The cargo type indicator is set to US-CARGO (as opposed to Canadian cargo or train)
β Consolidated Acceptance Criteria
- The system builds the log message text → the message field is populated by concatenating the literal text 'CDN CCN RLSED BY EDI 350: ' with the Canadian cargo CCN key from the saved cargo report 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_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN(["Start Step"])
E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN(["End Step"])
N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0{"The system builds the log message
text"}:::decision N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["The message field is populated by
concatenating the literal text CDN
CCN RLSED BY EDI 350: with the
Canadian cargo CCN key from the
saved cargo report segment"]:::main N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN S_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN
text"}:::decision N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action["The message field is populated by
concatenating the literal text CDN
CCN RLSED BY EDI 350: with the
Canadian cargo CCN key from the
saved cargo report segment"]:::main N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- Yes --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0_action --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN S_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN --> N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 N_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN_Node0 -- No --> E_BuildMessageCDNCCNRLSEDBYEDI350CanadianCCN
File: GCX126R.cbl
GIVEN:
The cargo type has been designated as US cargo
WHEN:
The system builds the log message text
THEN:
The message field is populated by concatenating the literal text 'CDN CCN RLSED BY EDI 350: ' with the Canadian cargo CCN key from the saved cargo report segment
β Consolidated Acceptance Criteria
- The log information preparation process is initiated → the system shall clear the GCX105 input area to remove any previous data, set the security byte to HIGH-VALUE to indicate secure logging, set the sending transaction identifier to 'GCT1261E' to identify the source program, and populate the ACF2 user ID from the current session context (CCCOM) to track who initiated the action
- The log preparation process begins → the system shall initialize the GCX105-INPUT area to spaces, removing all previous 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_ClearGCX105InputArea(["Start Step"])
E_ClearGCX105InputArea(["End Step"])
N_ClearGCX105InputArea_Node0{"The log information preparation
process is initiated"}:::decision N_ClearGCX105InputArea_Node0_action["The system shall clear the GCX105
input area to remove any previous
data, set the security byte to
HIGH-VALUE to indicate secure
logging, set the sending transaction
identifier to GCT1261E to identify
the source program, and populate the
ACF2 user ID from the current
session context CCCOM to track who
initiated the action"]:::main N_ClearGCX105InputArea_Node0 -- Yes --> N_ClearGCX105InputArea_Node0_action N_ClearGCX105InputArea_Node0_action --> E_ClearGCX105InputArea S_ClearGCX105InputArea --> N_ClearGCX105InputArea_Node0 N_ClearGCX105InputArea_Node1{"The log preparation process begins"}:::decision N_ClearGCX105InputArea_Node1_action["The system shall initialize the
GCX105-INPUT area to spaces,
removing all previous content"]:::main N_ClearGCX105InputArea_Node1 -- Yes --> N_ClearGCX105InputArea_Node1_action N_ClearGCX105InputArea_Node1_action --> E_ClearGCX105InputArea N_ClearGCX105InputArea_Node0 -- No --> N_ClearGCX105InputArea_Node1 N_ClearGCX105InputArea_Node1 -- No --> E_ClearGCX105InputArea
process is initiated"}:::decision N_ClearGCX105InputArea_Node0_action["The system shall clear the GCX105
input area to remove any previous
data, set the security byte to
HIGH-VALUE to indicate secure
logging, set the sending transaction
identifier to GCT1261E to identify
the source program, and populate the
ACF2 user ID from the current
session context CCCOM to track who
initiated the action"]:::main N_ClearGCX105InputArea_Node0 -- Yes --> N_ClearGCX105InputArea_Node0_action N_ClearGCX105InputArea_Node0_action --> E_ClearGCX105InputArea S_ClearGCX105InputArea --> N_ClearGCX105InputArea_Node0 N_ClearGCX105InputArea_Node1{"The log preparation process begins"}:::decision N_ClearGCX105InputArea_Node1_action["The system shall initialize the
GCX105-INPUT area to spaces,
removing all previous content"]:::main N_ClearGCX105InputArea_Node1 -- Yes --> N_ClearGCX105InputArea_Node1_action N_ClearGCX105InputArea_Node1_action --> E_ClearGCX105InputArea N_ClearGCX105InputArea_Node0 -- No --> N_ClearGCX105InputArea_Node1 N_ClearGCX105InputArea_Node1 -- No --> E_ClearGCX105InputArea
File: GCX126R.cbl
GIVEN:
A cargo event or status change needs to be logged to the audit trail
WHEN:
The log information preparation process is initiated
THEN:
The system shall clear the GCX105 input area to remove any previous data, set the security byte to HIGH-VALUE to indicate secure logging, set the sending transaction identifier to 'GCT1261E' to identify the source program, and populate the ACF2 user ID from the current session context (CCCOM) to track who initiated the action
File: GCX126R.cbl
GIVEN:
A new log entry needs to be created for a cargo event
WHEN:
The log preparation process begins
THEN:
The system shall initialize the GCX105-INPUT area to spaces, removing all previous content
β Consolidated Acceptance Criteria
- The source transaction identifier needs to be recorded → the system shall set the GCX105-SENDING-TRANSACTION field to 'GCT1261E' to identify this program as the source of 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_SetSendingTransactiontoGCT1261E(["Start Step"])
E_SetSendingTransactiontoGCT1261E(["End Step"])
N_SetSendingTransactiontoGCT1261E_Node0{"The source transaction identifier
needs to be recorded"}:::decision N_SetSendingTransactiontoGCT1261E_Node0_action["The system shall set the
GCX105-SENDING-TRANSACTION field to
GCT1261E to identify this program as
the source of the log entry"]:::main N_SetSendingTransactiontoGCT1261E_Node0 -- Yes --> N_SetSendingTransactiontoGCT1261E_Node0_action N_SetSendingTransactiontoGCT1261E_Node0_action --> E_SetSendingTransactiontoGCT1261E S_SetSendingTransactiontoGCT1261E --> N_SetSendingTransactiontoGCT1261E_Node0 N_SetSendingTransactiontoGCT1261E_Node0 -- No --> E_SetSendingTransactiontoGCT1261E
needs to be recorded"}:::decision N_SetSendingTransactiontoGCT1261E_Node0_action["The system shall set the
GCX105-SENDING-TRANSACTION field to
GCT1261E to identify this program as
the source of the log entry"]:::main N_SetSendingTransactiontoGCT1261E_Node0 -- Yes --> N_SetSendingTransactiontoGCT1261E_Node0_action N_SetSendingTransactiontoGCT1261E_Node0_action --> E_SetSendingTransactiontoGCT1261E S_SetSendingTransactiontoGCT1261E --> N_SetSendingTransactiontoGCT1261E_Node0 N_SetSendingTransactiontoGCT1261E_Node0 -- No --> E_SetSendingTransactiontoGCT1261E
File: GCX126R.cbl
GIVEN:
A log entry is being created from the EDI 350 processing program
WHEN:
The source transaction identifier needs to be recorded
THEN:
The system shall set the GCX105-SENDING-TRANSACTION field to 'GCT1261E' to identify this program as the source of the log entry
β Consolidated Acceptance Criteria
- The message content (GCX105-MESSAGE) is either spaces or low-values → the system skips the logging process and exits without creating any 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_MessageEmpty(["Start Step"])
E_MessageEmpty(["End Step"])
N_MessageEmpty_Node0{"The message content GCX105-MESSAGE
is either spaces or low-values"}:::decision N_MessageEmpty_Node0_action["The system skips the logging
process and exits without creating
any log entry"]:::main N_MessageEmpty_Node0 -- Yes --> N_MessageEmpty_Node0_action N_MessageEmpty_Node0_action --> E_MessageEmpty S_MessageEmpty --> N_MessageEmpty_Node0 N_MessageEmpty_Node0 -- No --> E_MessageEmpty
is either spaces or low-values"}:::decision N_MessageEmpty_Node0_action["The system skips the logging
process and exits without creating
any log entry"]:::main N_MessageEmpty_Node0 -- Yes --> N_MessageEmpty_Node0_action N_MessageEmpty_Node0_action --> E_MessageEmpty S_MessageEmpty --> N_MessageEmpty_Node0 N_MessageEmpty_Node0 -- No --> E_MessageEmpty
File: GCX126R.cbl
GIVEN:
A cargo information message is ready to be logged
WHEN:
The message content (GCX105-MESSAGE) is either spaces or low-values
THEN:
- The system skips the logging process
- Exits without creating any log entry
β Consolidated Acceptance Criteria
- The message needs to be written to the IMS message queue → the system moves the input message to the GCT1051E message structure (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_MoveInputtoGCT1051EMessage(["Start Step"])
E_MoveInputtoGCT1051EMessage(["End Step"])
N_MoveInputtoGCT1051EMessage_Node0{"The message needs to be written to
the IMS message queue"}:::decision N_MoveInputtoGCT1051EMessage_Node0_action["The system moves the input message
to the GCT1051E message structure
GCT1051E-MSG"]:::main N_MoveInputtoGCT1051EMessage_Node0 -- Yes --> N_MoveInputtoGCT1051EMessage_Node0_action N_MoveInputtoGCT1051EMessage_Node0_action --> E_MoveInputtoGCT1051EMessage S_MoveInputtoGCT1051EMessage --> N_MoveInputtoGCT1051EMessage_Node0 N_MoveInputtoGCT1051EMessage_Node0 -- No --> E_MoveInputtoGCT1051EMessage
the IMS message queue"}:::decision N_MoveInputtoGCT1051EMessage_Node0_action["The system moves the input message
to the GCT1051E message structure
GCT1051E-MSG"]:::main N_MoveInputtoGCT1051EMessage_Node0 -- Yes --> N_MoveInputtoGCT1051EMessage_Node0_action N_MoveInputtoGCT1051EMessage_Node0_action --> E_MoveInputtoGCT1051EMessage S_MoveInputtoGCT1051EMessage --> N_MoveInputtoGCT1051EMessage_Node0 N_MoveInputtoGCT1051EMessage_Node0 -- No --> E_MoveInputtoGCT1051EMessage
File: GCX126R.cbl
GIVEN:
A validated cargo information message (GCX105-INPUT) is ready for logging
WHEN:
The message needs to be written to the IMS message queue
THEN:
The system moves the input message to the GCT1051E message structure (GCT1051E-MSG)
β Consolidated Acceptance Criteria
- The system prepares to call IMS message services → the system sets the accept status (CC-ACCEPT-STATUS) to blank (two spaces) to enable standard message processing
- The system prepares to call the IMS replace function → the system sets the accept status field to two blank 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_SetAcceptStatustoBlank(["Start Step"])
E_SetAcceptStatustoBlank(["End Step"])
N_SetAcceptStatustoBlank_Node0{"The system prepares to call IMS
message services"}:::decision N_SetAcceptStatustoBlank_Node0_action["The system sets the accept status
CC-ACCEPT-STATUS to blank two spaces
to enable standard message
processing"]:::main N_SetAcceptStatustoBlank_Node0 -- Yes --> N_SetAcceptStatustoBlank_Node0_action N_SetAcceptStatustoBlank_Node0_action --> E_SetAcceptStatustoBlank S_SetAcceptStatustoBlank --> N_SetAcceptStatustoBlank_Node0 N_SetAcceptStatustoBlank_Node1{"The system prepares to call the IMS
replace function"}:::decision N_SetAcceptStatustoBlank_Node1_action["The system sets the accept status
field to two blank spaces"]:::main N_SetAcceptStatustoBlank_Node1 -- Yes --> N_SetAcceptStatustoBlank_Node1_action N_SetAcceptStatustoBlank_Node1_action --> E_SetAcceptStatustoBlank N_SetAcceptStatustoBlank_Node0 -- No --> N_SetAcceptStatustoBlank_Node1 N_SetAcceptStatustoBlank_Node1 -- No --> E_SetAcceptStatustoBlank
message services"}:::decision N_SetAcceptStatustoBlank_Node0_action["The system sets the accept status
CC-ACCEPT-STATUS to blank two spaces
to enable standard message
processing"]:::main N_SetAcceptStatustoBlank_Node0 -- Yes --> N_SetAcceptStatustoBlank_Node0_action N_SetAcceptStatustoBlank_Node0_action --> E_SetAcceptStatustoBlank S_SetAcceptStatustoBlank --> N_SetAcceptStatustoBlank_Node0 N_SetAcceptStatustoBlank_Node1{"The system prepares to call the IMS
replace function"}:::decision N_SetAcceptStatustoBlank_Node1_action["The system sets the accept status
field to two blank spaces"]:::main N_SetAcceptStatustoBlank_Node1 -- Yes --> N_SetAcceptStatustoBlank_Node1_action N_SetAcceptStatustoBlank_Node1_action --> E_SetAcceptStatustoBlank N_SetAcceptStatustoBlank_Node0 -- No --> N_SetAcceptStatustoBlank_Node1 N_SetAcceptStatustoBlank_Node1 -- No --> E_SetAcceptStatustoBlank
File: GCX126R.cbl
GIVEN:
A cargo information message is ready to be written to IMS
WHEN:
The system prepares to call IMS message services
THEN:
The system sets the accept status (CC-ACCEPT-STATUS) to blank (two spaces) to enable standard message processing
File: GCX126R.cbl
GIVEN:
The status code has been cleared and the cargo record is ready for update
WHEN:
The system prepares to call the IMS replace function
THEN:
The system sets the accept status field to two blank spaces
β Consolidated Acceptance Criteria
- If whether to prepare a hold notification → if the CCN starts with '6105', proceed to prepare the hold notification email; otherwise, skip the notification preparation
- The cargo status is set to HELD and the CCN starts with '6105' → the system prepares a hold notification email with subject 'CBSA CARGO HOLD - [CCN]', body containing cargo on hold message, equipment details, waybill information, CCN, destination station, and manifest upon station, and routes it to recipient OM01247 with destination filename CAHOLD
- The cargo status is set to HELD → the system skips the hold notification email preparation and continues processing without sending a hold 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_CCNstartswith6105(["Start Step"])
E_CCNstartswith6105(["End Step"])
N_CCNstartswith6105_Node0{"The system evaluates whether to
prepare a hold notification"}:::decision N_CCNstartswith6105_Node0_action["If the CCN starts with 6105 ,
proceed to prepare the hold
notification email otherwise, skip
the notification preparation"]:::main N_CCNstartswith6105_Node0 -- Yes --> N_CCNstartswith6105_Node0_action N_CCNstartswith6105_Node0_action --> E_CCNstartswith6105 S_CCNstartswith6105 --> N_CCNstartswith6105_Node0 N_CCNstartswith6105_Node1{"The cargo status is set to HELD and
the CCN starts with 6105"}:::decision N_CCNstartswith6105_Node1_action["The system prepares a hold
notification email with subject CBSA
CARGO HOLD - CCN , body containing
cargo on hold message, equipment
details, waybill information, CCN,
destination station, and manifest
upon station, and routes it to
recipient OM01247 with destination
filename CAHOLD"]:::main N_CCNstartswith6105_Node1 -- Yes --> N_CCNstartswith6105_Node1_action N_CCNstartswith6105_Node1_action --> E_CCNstartswith6105 N_CCNstartswith6105_Node0 -- No --> N_CCNstartswith6105_Node1 N_CCNstartswith6105_Node2{"The cargo status is set to HELD"}:::decision N_CCNstartswith6105_Node2_action["The system skips the hold
notification email preparation and
continues processing without sending
a hold notification"]:::main N_CCNstartswith6105_Node2 -- Yes --> N_CCNstartswith6105_Node2_action N_CCNstartswith6105_Node2_action --> E_CCNstartswith6105 N_CCNstartswith6105_Node1 -- No --> N_CCNstartswith6105_Node2 N_CCNstartswith6105_Node2 -- No --> E_CCNstartswith6105
prepare a hold notification"}:::decision N_CCNstartswith6105_Node0_action["If the CCN starts with 6105 ,
proceed to prepare the hold
notification email otherwise, skip
the notification preparation"]:::main N_CCNstartswith6105_Node0 -- Yes --> N_CCNstartswith6105_Node0_action N_CCNstartswith6105_Node0_action --> E_CCNstartswith6105 S_CCNstartswith6105 --> N_CCNstartswith6105_Node0 N_CCNstartswith6105_Node1{"The cargo status is set to HELD and
the CCN starts with 6105"}:::decision N_CCNstartswith6105_Node1_action["The system prepares a hold
notification email with subject CBSA
CARGO HOLD - CCN , body containing
cargo on hold message, equipment
details, waybill information, CCN,
destination station, and manifest
upon station, and routes it to
recipient OM01247 with destination
filename CAHOLD"]:::main N_CCNstartswith6105_Node1 -- Yes --> N_CCNstartswith6105_Node1_action N_CCNstartswith6105_Node1_action --> E_CCNstartswith6105 N_CCNstartswith6105_Node0 -- No --> N_CCNstartswith6105_Node1 N_CCNstartswith6105_Node2{"The cargo status is set to HELD"}:::decision N_CCNstartswith6105_Node2_action["The system skips the hold
notification email preparation and
continues processing without sending
a hold notification"]:::main N_CCNstartswith6105_Node2 -- Yes --> N_CCNstartswith6105_Node2_action N_CCNstartswith6105_Node2_action --> E_CCNstartswith6105 N_CCNstartswith6105_Node1 -- No --> N_CCNstartswith6105_Node2 N_CCNstartswith6105_Node2 -- No --> E_CCNstartswith6105
File: GCX126R.cbl
GIVEN:
A cargo record with a CCN (Cargo Control Number)
WHEN:
The system evaluates whether to prepare a hold notification
THEN:
If the CCN starts with '6105', proceed to prepare the hold notification email; otherwise, skip the notification preparation
File: GCX126R.cbl
GIVEN:
A cargo record exists with a CCN (Cargo Control Number), equipment ID, waybill information (carrier, origin station, waybill number), destination station details (name and state code), and manifest station name
WHEN:
- The cargo status is set to held
- The ccn starts with '6105'
THEN:
The system prepares a hold notification email with subject 'CBSA CARGO HOLD - [CCN]', body containing cargo on hold message, equipment details, waybill information, CCN, destination station, and manifest upon station, and routes it to recipient OM01247 with destination filename CAHOLD
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with a CCN that does not start with '6105'
WHEN:
The cargo status is set to HELD
THEN:
- The system skips the hold notification email preparation
- Continues processing without sending a hold notification
β Consolidated Acceptance Criteria
- The system constructs the notification message → set the first detail line to 'Cargo on HOLD for inspection by CBSA - EDI350'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLine1CargoonHOLDforinspectionbyCBSAEDI350(["Start Step"])
E_SetLine1CargoonHOLDforinspectionbyCBSAEDI350(["End Step"])
N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0{"The system constructs the
notification message"}:::decision N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action["Set the first detail line to Cargo
on HOLD for inspection by CBSA -
EDI350"]:::main N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- Yes --> N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action --> E_SetLine1CargoonHOLDforinspectionbyCBSAEDI350 S_SetLine1CargoonHOLDforinspectionbyCBSAEDI350 --> N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- No --> E_SetLine1CargoonHOLDforinspectionbyCBSAEDI350
notification message"}:::decision N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action["Set the first detail line to Cargo
on HOLD for inspection by CBSA -
EDI350"]:::main N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- Yes --> N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action --> E_SetLine1CargoonHOLDforinspectionbyCBSAEDI350 S_SetLine1CargoonHOLDforinspectionbyCBSAEDI350 --> N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 N_SetLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- No --> E_SetLine1CargoonHOLDforinspectionbyCBSAEDI350
File: GCX126R.cbl
GIVEN:
A cargo hold notification is being prepared for CCN starting with '6105'
WHEN:
The system constructs the notification message
THEN:
Set the first detail line to 'Cargo on HOLD for inspection by CBSA - EDI350'
β Consolidated Acceptance Criteria
- The system formats the notification content → set the second detail line to blank space
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLine2Blank(["Start Step"])
E_SetLine2Blank(["End Step"])
N_SetLine2Blank_Node0{"The system formats the notification
content"}:::decision N_SetLine2Blank_Node0_action["Set the second detail line to blank
space"]:::main N_SetLine2Blank_Node0 -- Yes --> N_SetLine2Blank_Node0_action N_SetLine2Blank_Node0_action --> E_SetLine2Blank S_SetLine2Blank --> N_SetLine2Blank_Node0 N_SetLine2Blank_Node0 -- No --> E_SetLine2Blank
content"}:::decision N_SetLine2Blank_Node0_action["Set the second detail line to blank
space"]:::main N_SetLine2Blank_Node0 -- Yes --> N_SetLine2Blank_Node0_action N_SetLine2Blank_Node0_action --> E_SetLine2Blank S_SetLine2Blank --> N_SetLine2Blank_Node0 N_SetLine2Blank_Node0 -- No --> E_SetLine2Blank
File: GCX126R.cbl
GIVEN:
A cargo hold notification message is being constructed
WHEN:
The system formats the notification content
THEN:
Set the second detail line to blank space
β Consolidated Acceptance Criteria
- The system constructs the notification details → set the third detail line to 'Equipment : ' followed by the equipment ID from 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_SetLine3EquipmentID(["Start Step"])
E_SetLine3EquipmentID(["End Step"])
N_SetLine3EquipmentID_Node0{"The system constructs the
notification details"}:::decision N_SetLine3EquipmentID_Node0_action["Set the third detail line to
Equipment : followed by the
equipment ID from the cargo record"]:::main N_SetLine3EquipmentID_Node0 -- Yes --> N_SetLine3EquipmentID_Node0_action N_SetLine3EquipmentID_Node0_action --> E_SetLine3EquipmentID S_SetLine3EquipmentID --> N_SetLine3EquipmentID_Node0 N_SetLine3EquipmentID_Node0 -- No --> E_SetLine3EquipmentID
notification details"}:::decision N_SetLine3EquipmentID_Node0_action["Set the third detail line to
Equipment : followed by the
equipment ID from the cargo record"]:::main N_SetLine3EquipmentID_Node0 -- Yes --> N_SetLine3EquipmentID_Node0_action N_SetLine3EquipmentID_Node0_action --> E_SetLine3EquipmentID S_SetLine3EquipmentID --> N_SetLine3EquipmentID_Node0 N_SetLine3EquipmentID_Node0 -- No --> E_SetLine3EquipmentID
File: GCX126R.cbl
GIVEN:
A cargo hold notification is being prepared with cargo equipment information available
WHEN:
The system constructs the notification details
THEN:
Set the third detail line to 'Equipment : ' followed by the equipment ID from the cargo record
β Consolidated Acceptance Criteria
- The system constructs the notification details → set the fourth detail line to 'Waybill : ' followed by the concatenated carrier code, origin station number, and waybill number from 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_SetLine4WaybillNumberCarrierOriginStationWaybill(["Start Step"])
E_SetLine4WaybillNumberCarrierOriginStationWaybill(["End Step"])
N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0{"The system constructs the
notification details"}:::decision N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0_action["Set the fourth detail line to
Waybill : followed by the
concatenated carrier code, origin
station number, and waybill number
from the cargo record"]:::main N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0 -- Yes --> N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0_action N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0_action --> E_SetLine4WaybillNumberCarrierOriginStationWaybill S_SetLine4WaybillNumberCarrierOriginStationWaybill --> N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0 N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0 -- No --> E_SetLine4WaybillNumberCarrierOriginStationWaybill
notification details"}:::decision N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0_action["Set the fourth detail line to
Waybill : followed by the
concatenated carrier code, origin
station number, and waybill number
from the cargo record"]:::main N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0 -- Yes --> N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0_action N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0_action --> E_SetLine4WaybillNumberCarrierOriginStationWaybill S_SetLine4WaybillNumberCarrierOriginStationWaybill --> N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0 N_SetLine4WaybillNumberCarrierOriginStationWaybill_Node0 -- No --> E_SetLine4WaybillNumberCarrierOriginStationWaybill
File: GCX126R.cbl
GIVEN:
A cargo hold notification is being prepared with waybill information available
WHEN:
The system constructs the notification details
THEN:
Set the fourth detail line to 'Waybill : ' followed by the concatenated carrier code, origin station number, and waybill number from the cargo record
β Consolidated Acceptance Criteria
- The system constructs the notification details → set the fifth detail line to 'CCN : ' followed by the CCN key from 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_SetLine5CCNNumber(["Start Step"])
E_SetLine5CCNNumber(["End Step"])
N_SetLine5CCNNumber_Node0{"The system constructs the
notification details"}:::decision N_SetLine5CCNNumber_Node0_action["Set the fifth detail line to CCN :
followed by the CCN key from the
cargo record"]:::main N_SetLine5CCNNumber_Node0 -- Yes --> N_SetLine5CCNNumber_Node0_action N_SetLine5CCNNumber_Node0_action --> E_SetLine5CCNNumber S_SetLine5CCNNumber --> N_SetLine5CCNNumber_Node0 N_SetLine5CCNNumber_Node0 -- No --> E_SetLine5CCNNumber
notification details"}:::decision N_SetLine5CCNNumber_Node0_action["Set the fifth detail line to CCN :
followed by the CCN key from the
cargo record"]:::main N_SetLine5CCNNumber_Node0 -- Yes --> N_SetLine5CCNNumber_Node0_action N_SetLine5CCNNumber_Node0_action --> E_SetLine5CCNNumber S_SetLine5CCNNumber --> N_SetLine5CCNNumber_Node0 N_SetLine5CCNNumber_Node0 -- No --> E_SetLine5CCNNumber
File: GCX126R.cbl
GIVEN:
A cargo hold notification is being prepared with CCN information available
WHEN:
The system constructs the notification details
THEN:
Set the fifth detail line to 'CCN : ' followed by the CCN key from the cargo record
β Consolidated Acceptance Criteria
- The system constructs the notification details → set the sixth detail line to 'DESTINATION : ' followed by the destination station name, comma, space, and destination station state code from 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_SetLine6DestinationStationNameandState(["Start Step"])
E_SetLine6DestinationStationNameandState(["End Step"])
N_SetLine6DestinationStationNameandState_Node0{"The system constructs the
notification details"}:::decision N_SetLine6DestinationStationNameandState_Node0_action["Set the sixth detail line to
DESTINATION : followed by the
destination station name, comma,
space, and destination station state
code from the cargo record"]:::main N_SetLine6DestinationStationNameandState_Node0 -- Yes --> N_SetLine6DestinationStationNameandState_Node0_action N_SetLine6DestinationStationNameandState_Node0_action --> E_SetLine6DestinationStationNameandState S_SetLine6DestinationStationNameandState --> N_SetLine6DestinationStationNameandState_Node0 N_SetLine6DestinationStationNameandState_Node0 -- No --> E_SetLine6DestinationStationNameandState
notification details"}:::decision N_SetLine6DestinationStationNameandState_Node0_action["Set the sixth detail line to
DESTINATION : followed by the
destination station name, comma,
space, and destination station state
code from the cargo record"]:::main N_SetLine6DestinationStationNameandState_Node0 -- Yes --> N_SetLine6DestinationStationNameandState_Node0_action N_SetLine6DestinationStationNameandState_Node0_action --> E_SetLine6DestinationStationNameandState S_SetLine6DestinationStationNameandState --> N_SetLine6DestinationStationNameandState_Node0 N_SetLine6DestinationStationNameandState_Node0 -- No --> E_SetLine6DestinationStationNameandState
File: GCX126R.cbl
GIVEN:
A cargo hold notification is being prepared with destination information available
WHEN:
The system constructs the notification details
THEN:
Set the sixth detail line to 'DESTINATION : ' followed by the destination station name, comma, space, and destination station state code from the cargo record
β Consolidated Acceptance Criteria
- The system constructs the notification details → set the seventh detail line to 'MANIFEST UPON : ' followed by the manifest to station name from 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_SetLine7ManifestUponStationName(["Start Step"])
E_SetLine7ManifestUponStationName(["End Step"])
N_SetLine7ManifestUponStationName_Node0{"The system constructs the
notification details"}:::decision N_SetLine7ManifestUponStationName_Node0_action["Set the seventh detail line to
MANIFEST UPON : followed by the
manifest to station name from the
cargo record"]:::main N_SetLine7ManifestUponStationName_Node0 -- Yes --> N_SetLine7ManifestUponStationName_Node0_action N_SetLine7ManifestUponStationName_Node0_action --> E_SetLine7ManifestUponStationName S_SetLine7ManifestUponStationName --> N_SetLine7ManifestUponStationName_Node0 N_SetLine7ManifestUponStationName_Node0 -- No --> E_SetLine7ManifestUponStationName
notification details"}:::decision N_SetLine7ManifestUponStationName_Node0_action["Set the seventh detail line to
MANIFEST UPON : followed by the
manifest to station name from the
cargo record"]:::main N_SetLine7ManifestUponStationName_Node0 -- Yes --> N_SetLine7ManifestUponStationName_Node0_action N_SetLine7ManifestUponStationName_Node0_action --> E_SetLine7ManifestUponStationName S_SetLine7ManifestUponStationName --> N_SetLine7ManifestUponStationName_Node0 N_SetLine7ManifestUponStationName_Node0 -- No --> E_SetLine7ManifestUponStationName
File: GCX126R.cbl
GIVEN:
A cargo hold notification is being prepared with manifest station information available
WHEN:
The system constructs the notification details
THEN:
Set the seventh detail line to 'MANIFEST UPON : ' followed by the manifest to station name from the cargo record
β Consolidated Acceptance Criteria
- The system finalizes the notification structure → set the line counter to 7 to indicate seven detail lines are included in the 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_SetTotalLinesto7(["Start Step"])
E_SetTotalLinesto7(["End Step"])
N_SetTotalLinesto7_Node0{"The system finalizes the
notification structure"}:::decision N_SetTotalLinesto7_Node0_action["Set the line counter to 7 to
indicate seven detail lines are
included in the notification"]:::main N_SetTotalLinesto7_Node0 -- Yes --> N_SetTotalLinesto7_Node0_action N_SetTotalLinesto7_Node0_action --> E_SetTotalLinesto7 S_SetTotalLinesto7 --> N_SetTotalLinesto7_Node0 N_SetTotalLinesto7_Node0 -- No --> E_SetTotalLinesto7
notification structure"}:::decision N_SetTotalLinesto7_Node0_action["Set the line counter to 7 to
indicate seven detail lines are
included in the notification"]:::main N_SetTotalLinesto7_Node0 -- Yes --> N_SetTotalLinesto7_Node0_action N_SetTotalLinesto7_Node0_action --> E_SetTotalLinesto7 S_SetTotalLinesto7 --> N_SetTotalLinesto7_Node0 N_SetTotalLinesto7_Node0 -- No --> E_SetTotalLinesto7
File: GCX126R.cbl
GIVEN:
A cargo hold notification message has been fully constructed with all detail lines
WHEN:
The system finalizes the notification structure
THEN:
Set the line counter to 7 to indicate seven detail lines are included in the notification
β Consolidated Acceptance Criteria
- The system categorizes the notification for routing → set the notification type indicator to HOLD 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_SetEmailTypetoHOLD(["Start Step"])
E_SetEmailTypetoHOLD(["End Step"])
N_SetEmailTypetoHOLD_Node0{"The system categorizes the
notification for routing"}:::decision N_SetEmailTypetoHOLD_Node0_action["Set the notification type indicator
to HOLD type"]:::main N_SetEmailTypetoHOLD_Node0 -- Yes --> N_SetEmailTypetoHOLD_Node0_action N_SetEmailTypetoHOLD_Node0_action --> E_SetEmailTypetoHOLD S_SetEmailTypetoHOLD --> N_SetEmailTypetoHOLD_Node0 N_SetEmailTypetoHOLD_Node0 -- No --> E_SetEmailTypetoHOLD
notification for routing"}:::decision N_SetEmailTypetoHOLD_Node0_action["Set the notification type indicator
to HOLD type"]:::main N_SetEmailTypetoHOLD_Node0 -- Yes --> N_SetEmailTypetoHOLD_Node0_action N_SetEmailTypetoHOLD_Node0_action --> E_SetEmailTypetoHOLD S_SetEmailTypetoHOLD --> N_SetEmailTypetoHOLD_Node0 N_SetEmailTypetoHOLD_Node0 -- No --> E_SetEmailTypetoHOLD
File: GCX126R.cbl
GIVEN:
A cargo hold notification has been prepared with all required details
WHEN:
The system categorizes the notification for routing
THEN:
Set the notification type indicator to HOLD type
β Consolidated Acceptance Criteria
- The system is ready to send the notification → call the email preparation routine (Z110-PREP-EMCSEND) to process and send the 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_CallEmailPreparationRoutine(["Start Step"])
E_CallEmailPreparationRoutine(["End Step"])
N_CallEmailPreparationRoutine_Node0{"The system is ready to send the
notification"}:::decision N_CallEmailPreparationRoutine_Node0_action["Call the email preparation routine
Z110-PREP-EMCSEND to process and
send the notification"]:::main N_CallEmailPreparationRoutine_Node0 -- Yes --> N_CallEmailPreparationRoutine_Node0_action N_CallEmailPreparationRoutine_Node0_action --> E_CallEmailPreparationRoutine S_CallEmailPreparationRoutine --> N_CallEmailPreparationRoutine_Node0 N_CallEmailPreparationRoutine_Node0 -- No --> E_CallEmailPreparationRoutine
notification"}:::decision N_CallEmailPreparationRoutine_Node0_action["Call the email preparation routine
Z110-PREP-EMCSEND to process and
send the notification"]:::main N_CallEmailPreparationRoutine_Node0 -- Yes --> N_CallEmailPreparationRoutine_Node0_action N_CallEmailPreparationRoutine_Node0_action --> E_CallEmailPreparationRoutine S_CallEmailPreparationRoutine --> N_CallEmailPreparationRoutine_Node0 N_CallEmailPreparationRoutine_Node0 -- No --> E_CallEmailPreparationRoutine
File: GCX126R.cbl
GIVEN:
A cargo hold notification has been fully prepared with type set to HOLD and all detail lines populated
WHEN:
The system is ready to send the notification
THEN:
- Call the email preparation routine (z110-prep-emcsend) to process
- Send the notification
β Consolidated Acceptance Criteria
- The error email preparation process is initiated → the email subject is set to 'CUSTOMS RECEIVED ERR MSG' concatenated with the 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_SetEmailSubjectAppendCCNtoSubject(["Start Step"])
E_SetEmailSubjectAppendCCNtoSubject(["End Step"])
N_SetEmailSubjectAppendCCNtoSubject_Node0{"The error email preparation process
is initiated"}:::decision N_SetEmailSubjectAppendCCNtoSubject_Node0_action["The email subject is set to CUSTOMS
RECEIVED ERR MSG concatenated with
the cargo CCN key"]:::exclusion N_SetEmailSubjectAppendCCNtoSubject_Node0 -- Yes -->|Alternative| N_SetEmailSubjectAppendCCNtoSubject_Node0_action N_SetEmailSubjectAppendCCNtoSubject_Node0_action --> E_SetEmailSubjectAppendCCNtoSubject S_SetEmailSubjectAppendCCNtoSubject --> N_SetEmailSubjectAppendCCNtoSubject_Node0 N_SetEmailSubjectAppendCCNtoSubject_Node0 -- No --> E_SetEmailSubjectAppendCCNtoSubject
is initiated"}:::decision N_SetEmailSubjectAppendCCNtoSubject_Node0_action["The email subject is set to CUSTOMS
RECEIVED ERR MSG concatenated with
the cargo CCN key"]:::exclusion N_SetEmailSubjectAppendCCNtoSubject_Node0 -- Yes -->|Alternative| N_SetEmailSubjectAppendCCNtoSubject_Node0_action N_SetEmailSubjectAppendCCNtoSubject_Node0_action --> E_SetEmailSubjectAppendCCNtoSubject S_SetEmailSubjectAppendCCNtoSubject --> N_SetEmailSubjectAppendCCNtoSubject_Node0 N_SetEmailSubjectAppendCCNtoSubject_Node0 -- No --> E_SetEmailSubjectAppendCCNtoSubject
File: GCX126R.cbl
GIVEN:
A customs error message needs to be sent for a cargo
WHEN:
The error email preparation process is initiated
THEN:
The email subject is set to 'CUSTOMS RECEIVED ERR MSG' concatenated with the cargo CCN key
β Consolidated Acceptance Criteria
- Error email preparation begins → the current email recipient usercode and destination filename are saved to temporary storage and the email recipient usercode 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_SaveCurrentEmailRecipientsClearEmailRecipients(["Start Step"])
E_SaveCurrentEmailRecipientsClearEmailRecipients(["End Step"])
N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0{"Error email preparation begins"}:::decision
N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0_action["The current email recipient
usercode and destination filename
are saved to temporary storage and
the email recipient usercode field
is cleared to spaces"]:::exclusion N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0 -- Yes -->|Alternative| N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0_action N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0_action --> E_SaveCurrentEmailRecipientsClearEmailRecipients S_SaveCurrentEmailRecipientsClearEmailRecipients --> N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0 N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0 -- No --> E_SaveCurrentEmailRecipientsClearEmailRecipients
usercode and destination filename
are saved to temporary storage and
the email recipient usercode field
is cleared to spaces"]:::exclusion N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0 -- Yes -->|Alternative| N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0_action N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0_action --> E_SaveCurrentEmailRecipientsClearEmailRecipients S_SaveCurrentEmailRecipientsClearEmailRecipients --> N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0 N_SaveCurrentEmailRecipientsClearEmailRecipients_Node0 -- No --> E_SaveCurrentEmailRecipientsClearEmailRecipients
File: GCX126R.cbl
GIVEN:
Email recipient configuration exists in the system
WHEN:
Error email preparation begins
THEN:
- The current email recipient usercode
- Destination filename are saved to temporary storage
- The email recipient usercode field is cleared to spaces
β Consolidated Acceptance Criteria
- Email recipients need to be configured for error notification → the first email recipient usercode is set to the primary Merlin user ID from admin table field AD-DC-P-MERLIN-1 and the second email recipient usercode is set to the secondary Merlin user ID from admin table field AD-DC-P-MERLIN-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_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig(["Start Step"])
E_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig(["End Step"])
N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0{"Email recipients need to be
configured for error notification"}:::decision N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0_action["The first email recipient usercode
is set to the primary Merlin user ID
from admin table field
AD-DC-P-MERLIN-1 and the second
email recipient usercode is set to
the secondary Merlin user ID from
admin table field AD-DC-P-MERLIN-5"]:::exclusion N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0 -- Yes -->|Alternative| N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0_action N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0_action --> E_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig S_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig --> N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0 N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0 -- No --> E_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig
configured for error notification"}:::decision N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0_action["The first email recipient usercode
is set to the primary Merlin user ID
from admin table field
AD-DC-P-MERLIN-1 and the second
email recipient usercode is set to
the secondary Merlin user ID from
admin table field AD-DC-P-MERLIN-5"]:::exclusion N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0 -- Yes -->|Alternative| N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0_action N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0_action --> E_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig S_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig --> N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0 N_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig_Node0 -- No --> E_AdminConfigAvailableSetPrimaryRecipientfromAdminConfigSetSecondaryRecipientfromAdminConfig
File: GCX126R.cbl
GIVEN:
The admin segment has been successfully retrieved and the admin segment found indicator is true
WHEN:
Email recipients need to be configured for error notification
THEN:
- The first email recipient usercode is set to the primary merlin user id from admin table field ad-dc-p-merlin-1
- The second email recipient usercode is set to the secondary merlin user id from admin table field ad-dc-p-merlin-5
β Consolidated Acceptance Criteria
- Email recipients need to be configured for error notification → the first email recipient usercode is set to the default value 'OM01247' and the second email recipient usercode 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_AdminConfigAvailableSetDefaultRecipientOM01247(["Start Step"])
E_AdminConfigAvailableSetDefaultRecipientOM01247(["End Step"])
N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0{"Email recipients need to be
configured for error notification"}:::decision N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0_action["The first email recipient usercode
is set to the default value OM01247
and the second email recipient
usercode is set to spaces"]:::exclusion N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0 -- Yes -->|Alternative| N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0_action N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0_action --> E_AdminConfigAvailableSetDefaultRecipientOM01247 S_AdminConfigAvailableSetDefaultRecipientOM01247 --> N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0 N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0 -- No --> E_AdminConfigAvailableSetDefaultRecipientOM01247
configured for error notification"}:::decision N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0_action["The first email recipient usercode
is set to the default value OM01247
and the second email recipient
usercode is set to spaces"]:::exclusion N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0 -- Yes -->|Alternative| N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0_action N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0_action --> E_AdminConfigAvailableSetDefaultRecipientOM01247 S_AdminConfigAvailableSetDefaultRecipientOM01247 --> N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0 N_AdminConfigAvailableSetDefaultRecipientOM01247_Node0 -- No --> E_AdminConfigAvailableSetDefaultRecipientOM01247
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The admin segment was not successfully retrieved or the admin segment found indicator is false
WHEN:
Email recipients need to be configured for error notification
THEN:
The first email recipient usercode is set to the default value 'OM01247' and the second email recipient usercode is set to spaces
β Consolidated Acceptance Criteria
- Email keywords need to be assigned → the email keywords field is set to the cargo CCN key from the cargo report 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_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords(["Start Step"])
E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords(["End Step"])
N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0{"Email keywords need to be assigned"}:::decision
N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0_action["The email keywords field is set to
the cargo CCN key from the cargo
report segment"]:::main N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0 -- Yes --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0_action N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0_action --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords S_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0 N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0 -- No --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords
the cargo CCN key from the cargo
report segment"]:::main N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0 -- Yes --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0_action N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0_action --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords S_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0 N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords_Node0 -- No --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCargoCCNasKeywords
File: GCX126R.cbl
GIVEN:
Email keywords field is empty or contains low-values and cargo was found in the database with a non-empty CCN key
WHEN:
Email keywords need to be assigned
THEN:
The email keywords field is set to the cargo CCN key from the cargo report segment
β Consolidated Acceptance Criteria
- Email keywords need to be assigned → the email keywords field is set to the current CCN key from working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords(["Start Step"])
E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords(["End Step"])
N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0{"Email keywords need to be assigned"}:::decision
N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0_action["The email keywords field is set to
the current CCN key from working
storage"]:::main N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0 -- Yes --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0_action N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0_action --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords S_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0 N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0 -- No --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords
the current CCN key from working
storage"]:::main N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0 -- Yes --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0_action N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0_action --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords S_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords --> N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0 N_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords_Node0 -- No --> E_SetEmailKeywordsKeywordsEmptyCargoFoundUseCurrentCCNasKeywords
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Email keywords field is empty or contains low-values and cargo was not found in the database
WHEN:
Email keywords need to be assigned
THEN:
The email keywords field is set to the current CCN key from working storage
β Consolidated Acceptance Criteria
- The error email needs to be sent to the error monitoring destination → the email destination filename is set to 'CAERROR', the email recipient usercode is cleared to spaces, the first email recipient usercode is set to 'OM01247', and the email send service is invoked with the configured 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_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService(["Start Step"])
E_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService(["End Step"])
N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0{"The error email needs to be sent to
the error monitoring destination"}:::decision N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action["The email destination filename is
set to CAERROR , the email recipient
usercode is cleared to spaces, the
first email recipient usercode is
set to OM01247 , and the email send
service is invoked with the
configured parameters"]:::exclusion N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- Yes -->|Alternative| N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action --> E_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService S_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService --> N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- No --> E_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService
the error monitoring destination"}:::decision N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action["The email destination filename is
set to CAERROR , the email recipient
usercode is cleared to spaces, the
first email recipient usercode is
set to OM01247 , and the email send
service is invoked with the
configured parameters"]:::exclusion N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- Yes -->|Alternative| N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action --> E_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService S_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService --> N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 N_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- No --> E_SetDestinationFilenametoCAERRORClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService
File: GCX126R.cbl
GIVEN:
An error email has been prepared with subject and keywords
WHEN:
The error email needs to be sent to the error monitoring destination
THEN:
The email destination filename is set to 'CAERROR', the email recipient usercode is cleared to spaces, the first email recipient usercode is set to 'OM01247', and the email send service is invoked with the configured parameters
β Consolidated Acceptance Criteria
- A copy of the error email needs to be sent to the general inbox → the email destination filename is set to 'IN', the email recipient usercode is cleared to spaces, the first email recipient usercode is set to 'OM01247', and the email send service is invoked again with the configured 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_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService(["Start Step"])
E_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService(["End Step"])
N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0{"A copy of the error email needs to
be sent to the general inbox"}:::decision N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action["The email destination filename is
set to IN , the email recipient
usercode is cleared to spaces, the
first email recipient usercode is
set to OM01247 , and the email send
service is invoked again with the
configured parameters"]:::exclusion N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- Yes -->|Alternative| N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action --> E_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService S_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService --> N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- No --> E_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService
be sent to the general inbox"}:::decision N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action["The email destination filename is
set to IN , the email recipient
usercode is cleared to spaces, the
first email recipient usercode is
set to OM01247 , and the email send
service is invoked again with the
configured parameters"]:::exclusion N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- Yes -->|Alternative| N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0_action --> E_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService S_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService --> N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 N_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService_Node0 -- No --> E_SetDestinationFilenametoINClearEmailRecipientsSetRecipienttoOM01247CallEmailSendService
File: GCX126R.cbl
GIVEN:
The error email has been successfully sent to CAERROR destination
WHEN:
A copy of the error email needs to be sent to the general inbox
THEN:
The email destination filename is set to 'IN', the email recipient usercode is cleared to spaces, the first email recipient usercode is set to 'OM01247', and the email send service is invoked again with the configured parameters
β Consolidated Acceptance Criteria
- The system is setting up the email subject for a broker/manifest mismatch scenario → the email subject is set to 'BROKER/MANIFEST MISMATCH ' concatenated with the 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_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN(["Start Step"])
E_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN(["End Step"])
N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0{"The system is setting up the email
subject for a brokermanifest
mismatch scenario"}:::decision N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0_action["The email subject is set to
BROKERMANIFEST MISMATCH concatenated
with the cargo CCN key"]:::main N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0 -- Yes --> N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0_action N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0_action --> E_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN S_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN --> N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0 N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0 -- No --> E_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN
subject for a brokermanifest
mismatch scenario"}:::decision N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0_action["The email subject is set to
BROKERMANIFEST MISMATCH concatenated
with the cargo CCN key"]:::main N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0 -- Yes --> N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0_action N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0_action --> E_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN S_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN --> N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0 N_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN_Node0 -- No --> E_SetEmailSubjecttoBROKERMANIFESTMISMATCHwithCCN
File: GCX126R.cbl
GIVEN:
An info email type notification needs to be prepared
WHEN:
The system is setting up the email subject for a broker/manifest mismatch scenario
THEN:
The email subject is set to 'BROKER/MANIFEST MISMATCH ' concatenated with the cargo CCN key
β Consolidated Acceptance Criteria
- The email recipient needs to be set → the email recipient user code is set to 'OM01247' in the first position of the recipient array and the email TO usercode field 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_SetEmailRecipienttoOM01247(["Start Step"])
E_SetEmailRecipienttoOM01247(["End Step"])
N_SetEmailRecipienttoOM01247_Node0{"The email recipient needs to be set"}:::decision
N_SetEmailRecipienttoOM01247_Node0_action["The email recipient user code is
set to OM01247 in the first position
of the recipient array and the email
TO usercode field is cleared"]:::main N_SetEmailRecipienttoOM01247_Node0 -- Yes --> N_SetEmailRecipienttoOM01247_Node0_action N_SetEmailRecipienttoOM01247_Node0_action --> E_SetEmailRecipienttoOM01247 S_SetEmailRecipienttoOM01247 --> N_SetEmailRecipienttoOM01247_Node0 N_SetEmailRecipienttoOM01247_Node0 -- No --> E_SetEmailRecipienttoOM01247
set to OM01247 in the first position
of the recipient array and the email
TO usercode field is cleared"]:::main N_SetEmailRecipienttoOM01247_Node0 -- Yes --> N_SetEmailRecipienttoOM01247_Node0_action N_SetEmailRecipienttoOM01247_Node0_action --> E_SetEmailRecipienttoOM01247 S_SetEmailRecipienttoOM01247 --> N_SetEmailRecipienttoOM01247_Node0 N_SetEmailRecipienttoOM01247_Node0 -- No --> E_SetEmailRecipienttoOM01247
File: GCX126R.cbl
GIVEN:
An info email notification is being prepared
WHEN:
The email recipient needs to be set
THEN:
- The email recipient user code is set to 'om01247' in the first position of the recipient array
- The email to usercode field is cleared
β Consolidated Acceptance Criteria
- The destination filename needs to be set for routing → the email destination filename is set to 'IN'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationFilenametoIN(["Start Step"])
E_SetDestinationFilenametoIN(["End Step"])
N_SetDestinationFilenametoIN_Node0{"The destination filename needs to
be set for routing"}:::decision N_SetDestinationFilenametoIN_Node0_action["The email destination filename is
set to IN"]:::main N_SetDestinationFilenametoIN_Node0 -- Yes --> N_SetDestinationFilenametoIN_Node0_action N_SetDestinationFilenametoIN_Node0_action --> E_SetDestinationFilenametoIN S_SetDestinationFilenametoIN --> N_SetDestinationFilenametoIN_Node0 N_SetDestinationFilenametoIN_Node0 -- No --> E_SetDestinationFilenametoIN
be set for routing"}:::decision N_SetDestinationFilenametoIN_Node0_action["The email destination filename is
set to IN"]:::main N_SetDestinationFilenametoIN_Node0 -- Yes --> N_SetDestinationFilenametoIN_Node0_action N_SetDestinationFilenametoIN_Node0_action --> E_SetDestinationFilenametoIN S_SetDestinationFilenametoIN --> N_SetDestinationFilenametoIN_Node0 N_SetDestinationFilenametoIN_Node0 -- No --> E_SetDestinationFilenametoIN
File: GCX126R.cbl
GIVEN:
An info email notification is being prepared
WHEN:
The destination filename needs to be set for routing
THEN:
The email destination filename is set to 'IN'
β Consolidated Acceptance Criteria
- The system needs to set email keywords → the email keywords field is populated with the cargo CCN key from 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_UseCargoCCNasKeywords(["Start Step"])
E_UseCargoCCNasKeywords(["End Step"])
N_UseCargoCCNasKeywords_Node0{"The system needs to set email
keywords"}:::decision N_UseCargoCCNasKeywords_Node0_action["The email keywords field is
populated with the cargo CCN key
from the cargo record"]:::main N_UseCargoCCNasKeywords_Node0 -- Yes --> N_UseCargoCCNasKeywords_Node0_action N_UseCargoCCNasKeywords_Node0_action --> E_UseCargoCCNasKeywords S_UseCargoCCNasKeywords --> N_UseCargoCCNasKeywords_Node0 N_UseCargoCCNasKeywords_Node0 -- No --> E_UseCargoCCNasKeywords
keywords"}:::decision N_UseCargoCCNasKeywords_Node0_action["The email keywords field is
populated with the cargo CCN key
from the cargo record"]:::main N_UseCargoCCNasKeywords_Node0 -- Yes --> N_UseCargoCCNasKeywords_Node0_action N_UseCargoCCNasKeywords_Node0_action --> E_UseCargoCCNasKeywords S_UseCargoCCNasKeywords --> N_UseCargoCCNasKeywords_Node0 N_UseCargoCCNasKeywords_Node0 -- No --> E_UseCargoCCNasKeywords
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Email keywords field is empty or contains low-values AND cargo record was found in the database AND cargo CCN key is not empty
WHEN:
The system needs to set email keywords
THEN:
The email keywords field is populated with the cargo CCN key from the cargo record
β Consolidated Acceptance Criteria
- The system needs to set email keywords → the email keywords field is populated with the current CCN key from working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseCurrentCCNKeyasKeywords(["Start Step"])
E_UseCurrentCCNKeyasKeywords(["End Step"])
N_UseCurrentCCNKeyasKeywords_Node0{"The system needs to set email
keywords"}:::decision N_UseCurrentCCNKeyasKeywords_Node0_action["The email keywords field is
populated with the current CCN key
from working storage"]:::main N_UseCurrentCCNKeyasKeywords_Node0 -- Yes --> N_UseCurrentCCNKeyasKeywords_Node0_action N_UseCurrentCCNKeyasKeywords_Node0_action --> E_UseCurrentCCNKeyasKeywords S_UseCurrentCCNKeyasKeywords --> N_UseCurrentCCNKeyasKeywords_Node0 N_UseCurrentCCNKeyasKeywords_Node0 -- No --> E_UseCurrentCCNKeyasKeywords
keywords"}:::decision N_UseCurrentCCNKeyasKeywords_Node0_action["The email keywords field is
populated with the current CCN key
from working storage"]:::main N_UseCurrentCCNKeyasKeywords_Node0 -- Yes --> N_UseCurrentCCNKeyasKeywords_Node0_action N_UseCurrentCCNKeyasKeywords_Node0_action --> E_UseCurrentCCNKeyasKeywords S_UseCurrentCCNKeyasKeywords --> N_UseCurrentCCNKeyasKeywords_Node0 N_UseCurrentCCNKeyasKeywords_Node0 -- No --> E_UseCurrentCCNKeyasKeywords
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Email keywords field is empty or contains low-values AND (cargo record was not found OR cargo CCN key is empty)
WHEN:
The system needs to set email keywords
THEN:
The email keywords field is populated with the current CCN key from working storage
β Consolidated Acceptance Criteria
- The system calls the email sending service EMCSEND2 → the email is sent with from-usercode 'OM01247', destination filename 'IN', recipient usercode 'OM01247', the prepared subject line, keywords, and the 350 report message content
- EMCSEND2 is called with these parameters → the email is transmitted through the messaging system
- The email processing finishes regardless of success or reroute → the system adds 1 to the formatted machine sequence number
- EMCSEND2 program is called with these parameters → the email is sent through the EMCSEND2 interface and return status flag 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_CallEMCSEND2toSendEmail(["Start Step"])
E_CallEMCSEND2toSendEmail(["End Step"])
N_CallEMCSEND2toSendEmail_Node0{"The system calls the email sending
service EMCSEND2"}:::decision N_CallEMCSEND2toSendEmail_Node0_action["The email is sent with
from-usercode OM01247 , destination
filename IN , recipient usercode
OM01247 , the prepared subject line,
keywords, and the 350 report message
content"]:::main N_CallEMCSEND2toSendEmail_Node0 -- Yes --> N_CallEMCSEND2toSendEmail_Node0_action N_CallEMCSEND2toSendEmail_Node0_action --> E_CallEMCSEND2toSendEmail S_CallEMCSEND2toSendEmail --> N_CallEMCSEND2toSendEmail_Node0 N_CallEMCSEND2toSendEmail_Node1{"EMCSEND2 is called with these
parameters"}:::decision N_CallEMCSEND2toSendEmail_Node1_action["The email is transmitted through
the messaging system"]:::main N_CallEMCSEND2toSendEmail_Node1 -- Yes --> N_CallEMCSEND2toSendEmail_Node1_action N_CallEMCSEND2toSendEmail_Node1_action --> E_CallEMCSEND2toSendEmail N_CallEMCSEND2toSendEmail_Node0 -- No --> N_CallEMCSEND2toSendEmail_Node1 N_CallEMCSEND2toSendEmail_Node2{"The email processing finishes
regardless of success or reroute"}:::decision N_CallEMCSEND2toSendEmail_Node2_action["The system adds 1 to the formatted
machine sequence number"]:::main N_CallEMCSEND2toSendEmail_Node2 -- Yes --> N_CallEMCSEND2toSendEmail_Node2_action N_CallEMCSEND2toSendEmail_Node2_action --> E_CallEMCSEND2toSendEmail N_CallEMCSEND2toSendEmail_Node1 -- No --> N_CallEMCSEND2toSendEmail_Node2 N_CallEMCSEND2toSendEmail_Node3{"EMCSEND2 program is called with
these parameters"}:::decision N_CallEMCSEND2toSendEmail_Node3_action["The email is sent through the
EMCSEND2 interface and return status
flag is populated"]:::main N_CallEMCSEND2toSendEmail_Node3 -- Yes --> N_CallEMCSEND2toSendEmail_Node3_action N_CallEMCSEND2toSendEmail_Node3_action --> E_CallEMCSEND2toSendEmail N_CallEMCSEND2toSendEmail_Node2 -- No --> N_CallEMCSEND2toSendEmail_Node3 N_CallEMCSEND2toSendEmail_Node3 -- No --> E_CallEMCSEND2toSendEmail
service EMCSEND2"}:::decision N_CallEMCSEND2toSendEmail_Node0_action["The email is sent with
from-usercode OM01247 , destination
filename IN , recipient usercode
OM01247 , the prepared subject line,
keywords, and the 350 report message
content"]:::main N_CallEMCSEND2toSendEmail_Node0 -- Yes --> N_CallEMCSEND2toSendEmail_Node0_action N_CallEMCSEND2toSendEmail_Node0_action --> E_CallEMCSEND2toSendEmail S_CallEMCSEND2toSendEmail --> N_CallEMCSEND2toSendEmail_Node0 N_CallEMCSEND2toSendEmail_Node1{"EMCSEND2 is called with these
parameters"}:::decision N_CallEMCSEND2toSendEmail_Node1_action["The email is transmitted through
the messaging system"]:::main N_CallEMCSEND2toSendEmail_Node1 -- Yes --> N_CallEMCSEND2toSendEmail_Node1_action N_CallEMCSEND2toSendEmail_Node1_action --> E_CallEMCSEND2toSendEmail N_CallEMCSEND2toSendEmail_Node0 -- No --> N_CallEMCSEND2toSendEmail_Node1 N_CallEMCSEND2toSendEmail_Node2{"The email processing finishes
regardless of success or reroute"}:::decision N_CallEMCSEND2toSendEmail_Node2_action["The system adds 1 to the formatted
machine sequence number"]:::main N_CallEMCSEND2toSendEmail_Node2 -- Yes --> N_CallEMCSEND2toSendEmail_Node2_action N_CallEMCSEND2toSendEmail_Node2_action --> E_CallEMCSEND2toSendEmail N_CallEMCSEND2toSendEmail_Node1 -- No --> N_CallEMCSEND2toSendEmail_Node2 N_CallEMCSEND2toSendEmail_Node3{"EMCSEND2 program is called with
these parameters"}:::decision N_CallEMCSEND2toSendEmail_Node3_action["The email is sent through the
EMCSEND2 interface and return status
flag is populated"]:::main N_CallEMCSEND2toSendEmail_Node3 -- Yes --> N_CallEMCSEND2toSendEmail_Node3_action N_CallEMCSEND2toSendEmail_Node3_action --> E_CallEMCSEND2toSendEmail N_CallEMCSEND2toSendEmail_Node2 -- No --> N_CallEMCSEND2toSendEmail_Node3 N_CallEMCSEND2toSendEmail_Node3 -- No --> E_CallEMCSEND2toSendEmail
File: GCX126R.cbl
GIVEN:
Email subject is set to 'BROKER/MANIFEST MISMATCH' with CCN AND email recipient is set to 'OM01247' AND destination filename is set to 'IN' AND email keywords are populated
WHEN:
The system calls the email sending service EMCSEND2
THEN:
The email is sent with from-usercode 'OM01247', destination filename 'IN', recipient usercode 'OM01247', the prepared subject line, keywords, and the 350 report message content
File: GCX126R.cbl
GIVEN:
Email parameters are prepared with FROM usercode, destination filename, TO usercode, COPY usercode, subject, keywords, and report content
WHEN:
EMCSEND2 is called with these parameters
THEN:
The email is transmitted through the messaging system
File: GCX126R.cbl
GIVEN:
An email send operation has completed through EMCSEND2
WHEN:
The email processing finishes regardless of success or reroute
THEN:
The system adds 1 to the formatted machine sequence number
File: GCX126R.cbl
GIVEN:
Email parameters are prepared with FROM usercode, destination filename, TO usercode, COPY usercode, subject, keywords, and message report content
WHEN:
EMCSEND2 program is called with these parameters
THEN:
- The email is sent through the emcsend2 interface
- Return status flag is populated
β Consolidated Acceptance Criteria
- The system performs post-send cleanup → the 350 report area is cleared, line counter is reset to zero, email subject is cleared, destination filename is reset to 'IN', email keywords are cleared, machine sequence number is incremented by 1, copy usercode is cleared, TO usercode is cleared, and recipient usercodes are reset to configured values from admin table or default '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_ResetEmailReportFields(["Start Step"])
E_ResetEmailReportFields(["End Step"])
N_ResetEmailReportFields_Node0{"The system performs post-send
cleanup"}:::decision N_ResetEmailReportFields_Node0_action["The 350 report area is cleared,
line counter is reset to zero, email
subject is cleared, destination
filename is reset to IN , email
keywords are cleared, machine
sequence number is incremented by 1,
copy usercode is cleared, TO
usercode is cleared, and recipient
usercodes are reset to configured
values from admin table or default
OM01247"]:::main N_ResetEmailReportFields_Node0 -- Yes --> N_ResetEmailReportFields_Node0_action N_ResetEmailReportFields_Node0_action --> E_ResetEmailReportFields S_ResetEmailReportFields --> N_ResetEmailReportFields_Node0 N_ResetEmailReportFields_Node0 -- No --> E_ResetEmailReportFields
cleanup"}:::decision N_ResetEmailReportFields_Node0_action["The 350 report area is cleared,
line counter is reset to zero, email
subject is cleared, destination
filename is reset to IN , email
keywords are cleared, machine
sequence number is incremented by 1,
copy usercode is cleared, TO
usercode is cleared, and recipient
usercodes are reset to configured
values from admin table or default
OM01247"]:::main N_ResetEmailReportFields_Node0 -- Yes --> N_ResetEmailReportFields_Node0_action N_ResetEmailReportFields_Node0_action --> E_ResetEmailReportFields S_ResetEmailReportFields --> N_ResetEmailReportFields_Node0 N_ResetEmailReportFields_Node0 -- No --> E_ResetEmailReportFields
File: GCX126R.cbl
GIVEN:
An email notification has been successfully sent via EMCSEND2
WHEN:
The system performs post-send cleanup
THEN:
The 350 report area is cleared, line counter is reset to zero, email subject is cleared, destination filename is reset to 'IN', email keywords are cleared, machine sequence number is incremented by 1, copy usercode is cleared, TO usercode is cleared, and recipient usercodes are reset to configured values from admin table or default 'OM01247'
β Consolidated Acceptance Criteria
- The system attempts to process the release notification → prepare email notification with subject 'UNKNOWN EDI 350 RELEASE FROM CBSA' AND message line 1 contains 'UNKNOWN EDI 350 RELEASE FROM CBSA' followed by the CCN AND message line 3 contains 'THIS CCN WAS NOT FOUND.' AND message line 4 contains 'RELEASE NUMBER: ' followed by the CBSA release reference ID and ' DONE BY PORT ' followed by the port code AND set message line count to 5 AND set destination filename to 'UNKNOWN' AND set recipient to 'OM01247' AND route the 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_PrepareReleaseErrorEmail(["Start Step"])
E_PrepareReleaseErrorEmail(["End Step"])
N_PrepareReleaseErrorEmail_Node0{"The system attempts to process the
release notification"}:::decision N_PrepareReleaseErrorEmail_Node0_action["Prepare email notification with
subject UNKNOWN EDI 350 RELEASE FROM
CBSA AND message line 1 contains
UNKNOWN EDI 350 RELEASE FROM CBSA
followed by the CCN AND message line
3 contains THIS CCN WAS NOT FOUND.
AND message line 4 contains RELEASE
NUMBER: followed by the CBSA release
reference ID and DONE BY PORT
followed by the port code AND set
message line count to 5 AND set
destination filename to UNKNOWN AND
set recipient to OM01247 AND route
the notification"]:::main N_PrepareReleaseErrorEmail_Node0 -- Yes --> N_PrepareReleaseErrorEmail_Node0_action N_PrepareReleaseErrorEmail_Node0_action --> E_PrepareReleaseErrorEmail S_PrepareReleaseErrorEmail --> N_PrepareReleaseErrorEmail_Node0 N_PrepareReleaseErrorEmail_Node0 -- No --> E_PrepareReleaseErrorEmail
release notification"}:::decision N_PrepareReleaseErrorEmail_Node0_action["Prepare email notification with
subject UNKNOWN EDI 350 RELEASE FROM
CBSA AND message line 1 contains
UNKNOWN EDI 350 RELEASE FROM CBSA
followed by the CCN AND message line
3 contains THIS CCN WAS NOT FOUND.
AND message line 4 contains RELEASE
NUMBER: followed by the CBSA release
reference ID and DONE BY PORT
followed by the port code AND set
message line count to 5 AND set
destination filename to UNKNOWN AND
set recipient to OM01247 AND route
the notification"]:::main N_PrepareReleaseErrorEmail_Node0 -- Yes --> N_PrepareReleaseErrorEmail_Node0_action N_PrepareReleaseErrorEmail_Node0_action --> E_PrepareReleaseErrorEmail S_PrepareReleaseErrorEmail --> N_PrepareReleaseErrorEmail_Node0 N_PrepareReleaseErrorEmail_Node0 -- No --> E_PrepareReleaseErrorEmail
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 release message is received with notice reason code indicating RELEASED status AND the CCN from M10 segment does not exist in the cargo database
WHEN:
The system attempts to process the release notification
THEN:
- Prepare email notification with subject 'unknown edi 350 release from cbsa' and message line 1 contains 'unknown edi 350 release from cbsa' followed by the ccn
- Message line 3 contains 'this ccn was not found.' and message line 4 contains 'release number: ' followed by the cbsa release reference id and ' done by port ' followed by the port code
- Set message line count to 5
- Set destination filename to 'unknown' and set recipient to 'om01247' and route the notification
β Consolidated Acceptance Criteria
- The system attempts to process the deconsolidation notification → prepare email notification with subject 'UNKNOWN EDI 350 DCON NOTICE' AND message line 1 contains 'UNKNOWN EDI 350 DCON NOTICE' followed by the CCN AND message line 3 contains 'THIS CCN WAS NOT FOUND.' AND message line 4 contains 'HOUSE BILL CLOSE NUMBER' followed by the CBSA release reference ID and ' DONE BY PORT ' followed by the port code AND set message line count to 5 AND set destination filename to 'UNKNOWN' AND set recipient to 'OM01247' AND route the 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_PrepareDeconsolidationErrorEmail(["Start Step"])
E_PrepareDeconsolidationErrorEmail(["End Step"])
N_PrepareDeconsolidationErrorEmail_Node0{"The system attempts to process the
deconsolidation notification"}:::decision N_PrepareDeconsolidationErrorEmail_Node0_action["Prepare email notification with
subject UNKNOWN EDI 350 DCON NOTICE
AND message line 1 contains UNKNOWN
EDI 350 DCON NOTICE followed by the
CCN AND message line 3 contains THIS
CCN WAS NOT FOUND. AND message line
4 contains HOUSE BILL CLOSE NUMBER
followed by the CBSA release
reference ID and DONE BY PORT
followed by the port code AND set
message line count to 5 AND set
destination filename to UNKNOWN AND
set recipient to OM01247 AND route
the notification"]:::main N_PrepareDeconsolidationErrorEmail_Node0 -- Yes --> N_PrepareDeconsolidationErrorEmail_Node0_action N_PrepareDeconsolidationErrorEmail_Node0_action --> E_PrepareDeconsolidationErrorEmail S_PrepareDeconsolidationErrorEmail --> N_PrepareDeconsolidationErrorEmail_Node0 N_PrepareDeconsolidationErrorEmail_Node0 -- No --> E_PrepareDeconsolidationErrorEmail
deconsolidation notification"}:::decision N_PrepareDeconsolidationErrorEmail_Node0_action["Prepare email notification with
subject UNKNOWN EDI 350 DCON NOTICE
AND message line 1 contains UNKNOWN
EDI 350 DCON NOTICE followed by the
CCN AND message line 3 contains THIS
CCN WAS NOT FOUND. AND message line
4 contains HOUSE BILL CLOSE NUMBER
followed by the CBSA release
reference ID and DONE BY PORT
followed by the port code AND set
message line count to 5 AND set
destination filename to UNKNOWN AND
set recipient to OM01247 AND route
the notification"]:::main N_PrepareDeconsolidationErrorEmail_Node0 -- Yes --> N_PrepareDeconsolidationErrorEmail_Node0_action N_PrepareDeconsolidationErrorEmail_Node0_action --> E_PrepareDeconsolidationErrorEmail S_PrepareDeconsolidationErrorEmail --> N_PrepareDeconsolidationErrorEmail_Node0 N_PrepareDeconsolidationErrorEmail_Node0 -- No --> E_PrepareDeconsolidationErrorEmail
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is received with notice reason code indicating DECON status AND the CCN from M10 segment does not exist in the cargo database
WHEN:
The system attempts to process the deconsolidation notification
THEN:
- Prepare email notification with subject 'unknown edi 350 dcon notice' and message line 1 contains 'unknown edi 350 dcon notice' followed by the ccn
- Message line 3 contains 'this ccn was not found.' and message line 4 contains 'house bill close number' followed by the cbsa release reference id and ' done by port ' followed by the port code
- Set message line count to 5
- Set destination filename to 'unknown' and set recipient to 'om01247' and route the notification
β Consolidated Acceptance Criteria
- The system attempts to process the notification → prepare email notification with subject from message line 1 AND message line 1 contains 'UNKNOWN EDI 350 ENTRY FROM CBSA' followed by the CCN AND message line 3 contains 'THIS CCN WAS NOT FOUND.' AND message line 4 contains 'NOTICE DOC TYPE: ' followed by the notice document type code and ' WITH REASON CODE ' followed by the notice reason code AND set message line count to 5 AND set destination filename to 'UNKNOWN' AND set recipient to 'OM01247' AND route the 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_PrepareGeneralEntryErrorEmail(["Start Step"])
E_PrepareGeneralEntryErrorEmail(["End Step"])
N_PrepareGeneralEntryErrorEmail_Node0{"The system attempts to process the
notification"}:::decision N_PrepareGeneralEntryErrorEmail_Node0_action["Prepare email notification with
subject from message line 1 AND
message line 1 contains UNKNOWN EDI
350 ENTRY FROM CBSA followed by the
CCN AND message line 3 contains THIS
CCN WAS NOT FOUND. AND message line
4 contains NOTICE DOC TYPE: followed
by the notice document type code and
WITH REASON CODE followed by the
notice reason code AND set message
line count to 5 AND set destination
filename to UNKNOWN AND set
recipient to OM01247 AND route the
notification"]:::main N_PrepareGeneralEntryErrorEmail_Node0 -- Yes --> N_PrepareGeneralEntryErrorEmail_Node0_action N_PrepareGeneralEntryErrorEmail_Node0_action --> E_PrepareGeneralEntryErrorEmail S_PrepareGeneralEntryErrorEmail --> N_PrepareGeneralEntryErrorEmail_Node0 N_PrepareGeneralEntryErrorEmail_Node0 -- No --> E_PrepareGeneralEntryErrorEmail
notification"}:::decision N_PrepareGeneralEntryErrorEmail_Node0_action["Prepare email notification with
subject from message line 1 AND
message line 1 contains UNKNOWN EDI
350 ENTRY FROM CBSA followed by the
CCN AND message line 3 contains THIS
CCN WAS NOT FOUND. AND message line
4 contains NOTICE DOC TYPE: followed
by the notice document type code and
WITH REASON CODE followed by the
notice reason code AND set message
line count to 5 AND set destination
filename to UNKNOWN AND set
recipient to OM01247 AND route the
notification"]:::main N_PrepareGeneralEntryErrorEmail_Node0 -- Yes --> N_PrepareGeneralEntryErrorEmail_Node0_action N_PrepareGeneralEntryErrorEmail_Node0_action --> E_PrepareGeneralEntryErrorEmail S_PrepareGeneralEntryErrorEmail --> N_PrepareGeneralEntryErrorEmail_Node0 N_PrepareGeneralEntryErrorEmail_Node0 -- No --> E_PrepareGeneralEntryErrorEmail
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message is received with a notice reason code that is not RELEASED or DECON AND the CCN from M10 segment does not exist in the cargo database
WHEN:
The system attempts to process the notification
THEN:
- Prepare email notification with subject from message line 1
- Message line 1 contains 'unknown edi 350 entry from cbsa' followed by the ccn
- Message line 3 contains 'this ccn was not found.' and message line 4 contains 'notice doc type: ' followed by the notice document type code and ' with reason code ' followed by the notice reason code
- Set message line count to 5
- Set destination filename to 'unknown' and set recipient to 'om01247' and route the notification
β Consolidated Acceptance Criteria
- The system configures routing parameters → set the destination filename to 'UNKNOWN' to route the message to the unknown message 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_SetDestinationFilenameUNKNOWN(["Start Step"])
E_SetDestinationFilenameUNKNOWN(["End Step"])
N_SetDestinationFilenameUNKNOWN_Node0{"The system configures routing
parameters"}:::decision N_SetDestinationFilenameUNKNOWN_Node0_action["Set the destination filename to
UNKNOWN to route the message to the
unknown message queue"]:::main N_SetDestinationFilenameUNKNOWN_Node0 -- Yes --> N_SetDestinationFilenameUNKNOWN_Node0_action N_SetDestinationFilenameUNKNOWN_Node0_action --> E_SetDestinationFilenameUNKNOWN S_SetDestinationFilenameUNKNOWN --> N_SetDestinationFilenameUNKNOWN_Node0 N_SetDestinationFilenameUNKNOWN_Node0 -- No --> E_SetDestinationFilenameUNKNOWN
parameters"}:::decision N_SetDestinationFilenameUNKNOWN_Node0_action["Set the destination filename to
UNKNOWN to route the message to the
unknown message queue"]:::main N_SetDestinationFilenameUNKNOWN_Node0 -- Yes --> N_SetDestinationFilenameUNKNOWN_Node0_action N_SetDestinationFilenameUNKNOWN_Node0_action --> E_SetDestinationFilenameUNKNOWN S_SetDestinationFilenameUNKNOWN --> N_SetDestinationFilenameUNKNOWN_Node0 N_SetDestinationFilenameUNKNOWN_Node0 -- No --> E_SetDestinationFilenameUNKNOWN
File: GCX126R.cbl
GIVEN:
An unknown cargo notification has been prepared with all message details
WHEN:
The system configures routing parameters
THEN:
Set the destination filename to 'UNKNOWN' to route the message to the unknown message queue
β Consolidated Acceptance Criteria
- The system invokes the email send process → call the email notification service with all prepared notification parameters to deliver the message to the recipient
- All email preparation is complete → the system calls the email send preparation process (Z110-PREP-EMCSEND) to deliver the 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_CallEmailSendProcess(["Start Step"])
E_CallEmailSendProcess(["End Step"])
N_CallEmailSendProcess_Node0{"The system invokes the email send
process"}:::decision N_CallEmailSendProcess_Node0_action["Call the email notification service
with all prepared notification
parameters to deliver the message to
the recipient"]:::main N_CallEmailSendProcess_Node0 -- Yes --> N_CallEmailSendProcess_Node0_action N_CallEmailSendProcess_Node0_action --> E_CallEmailSendProcess S_CallEmailSendProcess --> N_CallEmailSendProcess_Node0 N_CallEmailSendProcess_Node1{"All email preparation is complete"}:::decision N_CallEmailSendProcess_Node1_action["The system calls the email send
preparation process
Z110-PREP-EMCSEND to deliver the
notification"]:::main N_CallEmailSendProcess_Node1 -- Yes --> N_CallEmailSendProcess_Node1_action N_CallEmailSendProcess_Node1_action --> E_CallEmailSendProcess N_CallEmailSendProcess_Node0 -- No --> N_CallEmailSendProcess_Node1 N_CallEmailSendProcess_Node1 -- No --> E_CallEmailSendProcess
process"}:::decision N_CallEmailSendProcess_Node0_action["Call the email notification service
with all prepared notification
parameters to deliver the message to
the recipient"]:::main N_CallEmailSendProcess_Node0 -- Yes --> N_CallEmailSendProcess_Node0_action N_CallEmailSendProcess_Node0_action --> E_CallEmailSendProcess S_CallEmailSendProcess --> N_CallEmailSendProcess_Node0 N_CallEmailSendProcess_Node1{"All email preparation is complete"}:::decision N_CallEmailSendProcess_Node1_action["The system calls the email send
preparation process
Z110-PREP-EMCSEND to deliver the
notification"]:::main N_CallEmailSendProcess_Node1 -- Yes --> N_CallEmailSendProcess_Node1_action N_CallEmailSendProcess_Node1_action --> E_CallEmailSendProcess N_CallEmailSendProcess_Node0 -- No --> N_CallEmailSendProcess_Node1 N_CallEmailSendProcess_Node1 -- No --> E_CallEmailSendProcess
File: GCX126R.cbl
GIVEN:
An unknown cargo notification has been fully prepared with subject, message lines, destination filename set to 'UNKNOWN', and recipient set to 'OM01247'
WHEN:
The system invokes the email send process
THEN:
Call the email notification service with all prepared notification parameters to deliver the message to the recipient
File: GCX126R.cbl
GIVEN:
A hold notification email has been fully prepared with subject, body content, recipient OM01247, destination filename CAHOLD, and line count 7
WHEN:
All email preparation is complete
THEN:
The system calls the email send preparation process (Z110-PREP-EMCSEND) to deliver the notification
β Consolidated Acceptance Criteria
- The hold notification email is being prepared → the system creates the email subject by combining 'CBSA CARGO HOLD - ' with the CCN 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_BuildEmailSubjectCBSACARGOHOLDCCN(["Start Step"])
E_BuildEmailSubjectCBSACARGOHOLDCCN(["End Step"])
N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0{"The hold notification email is
being prepared"}:::decision N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0_action["The system creates the email
subject by combining CBSA CARGO HOLD
- with the CCN value"]:::main N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0 -- Yes --> N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0_action N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0_action --> E_BuildEmailSubjectCBSACARGOHOLDCCN S_BuildEmailSubjectCBSACARGOHOLDCCN --> N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0 N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0 -- No --> E_BuildEmailSubjectCBSACARGOHOLDCCN
being prepared"}:::decision N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0_action["The system creates the email
subject by combining CBSA CARGO HOLD
- with the CCN value"]:::main N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0 -- Yes --> N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0_action N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0_action --> E_BuildEmailSubjectCBSACARGOHOLDCCN S_BuildEmailSubjectCBSACARGOHOLDCCN --> N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0 N_BuildEmailSubjectCBSACARGOHOLDCCN_Node0 -- No --> E_BuildEmailSubjectCBSACARGOHOLDCCN
File: GCX126R.cbl
GIVEN:
A cargo record with a valid CCN that starts with '6105'
WHEN:
The hold notification email is being prepared
THEN:
The system creates the email subject by combining 'CBSA CARGO HOLD - ' with the CCN value
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds 'Cargo on HOLD for inspection by CBSA - EDI350' as the first detail line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine1CargoonHOLDforinspectionbyCBSAEDI350(["Start Step"])
E_AddLine1CargoonHOLDforinspectionbyCBSAEDI350(["End Step"])
N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0{"The email body content is being
constructed"}:::decision N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action["The system adds Cargo on HOLD for
inspection by CBSA - EDI350 as the
first detail line in the email body"]:::main N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- Yes --> N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action --> E_AddLine1CargoonHOLDforinspectionbyCBSAEDI350 S_AddLine1CargoonHOLDforinspectionbyCBSAEDI350 --> N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- No --> E_AddLine1CargoonHOLDforinspectionbyCBSAEDI350
constructed"}:::decision N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action["The system adds Cargo on HOLD for
inspection by CBSA - EDI350 as the
first detail line in the email body"]:::main N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- Yes --> N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0_action --> E_AddLine1CargoonHOLDforinspectionbyCBSAEDI350 S_AddLine1CargoonHOLDforinspectionbyCBSAEDI350 --> N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 N_AddLine1CargoonHOLDforinspectionbyCBSAEDI350_Node0 -- No --> E_AddLine1CargoonHOLDforinspectionbyCBSAEDI350
File: GCX126R.cbl
GIVEN:
A hold notification email is being prepared
WHEN:
The email body content is being constructed
THEN:
The system adds 'Cargo on HOLD for inspection by CBSA - EDI350' as the first detail line in the email body
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds a blank line as the second line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine2Blank(["Start Step"])
E_AddLine2Blank(["End Step"])
N_AddLine2Blank_Node0{"The email body content is being
constructed"}:::decision N_AddLine2Blank_Node0_action["The system adds a blank line as the
second line in the email body"]:::main N_AddLine2Blank_Node0 -- Yes --> N_AddLine2Blank_Node0_action N_AddLine2Blank_Node0_action --> E_AddLine2Blank S_AddLine2Blank --> N_AddLine2Blank_Node0 N_AddLine2Blank_Node0 -- No --> E_AddLine2Blank
constructed"}:::decision N_AddLine2Blank_Node0_action["The system adds a blank line as the
second line in the email body"]:::main N_AddLine2Blank_Node0 -- Yes --> N_AddLine2Blank_Node0_action N_AddLine2Blank_Node0_action --> E_AddLine2Blank S_AddLine2Blank --> N_AddLine2Blank_Node0 N_AddLine2Blank_Node0 -- No --> E_AddLine2Blank
File: GCX126R.cbl
GIVEN:
The primary hold message has been added to the email body
WHEN:
The email body content is being constructed
THEN:
The system adds a blank line as the second line in the email body
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds a line containing 'Equipment : ' followed by the equipment ID value as the third line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine3EquipmentEquipmentID(["Start Step"])
E_AddLine3EquipmentEquipmentID(["End Step"])
N_AddLine3EquipmentEquipmentID_Node0{"The email body content is being
constructed"}:::decision N_AddLine3EquipmentEquipmentID_Node0_action["The system adds a line containing
Equipment : followed by the
equipment ID value as the third line
in the email body"]:::main N_AddLine3EquipmentEquipmentID_Node0 -- Yes --> N_AddLine3EquipmentEquipmentID_Node0_action N_AddLine3EquipmentEquipmentID_Node0_action --> E_AddLine3EquipmentEquipmentID S_AddLine3EquipmentEquipmentID --> N_AddLine3EquipmentEquipmentID_Node0 N_AddLine3EquipmentEquipmentID_Node0 -- No --> E_AddLine3EquipmentEquipmentID
constructed"}:::decision N_AddLine3EquipmentEquipmentID_Node0_action["The system adds a line containing
Equipment : followed by the
equipment ID value as the third line
in the email body"]:::main N_AddLine3EquipmentEquipmentID_Node0 -- Yes --> N_AddLine3EquipmentEquipmentID_Node0_action N_AddLine3EquipmentEquipmentID_Node0_action --> E_AddLine3EquipmentEquipmentID S_AddLine3EquipmentEquipmentID --> N_AddLine3EquipmentEquipmentID_Node0 N_AddLine3EquipmentEquipmentID_Node0 -- No --> E_AddLine3EquipmentEquipmentID
File: GCX126R.cbl
GIVEN:
A cargo record with equipment ID information
WHEN:
The email body content is being constructed
THEN:
The system adds a line containing 'Equipment : ' followed by the equipment ID value as the third line in the email body
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds a line containing 'Waybill : ' followed by the concatenated carrier code, origin station number, and waybill number as the fourth line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine4WaybillCarrierOriginStationWaybillNumber(["Start Step"])
E_AddLine4WaybillCarrierOriginStationWaybillNumber(["End Step"])
N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0{"The email body content is being
constructed"}:::decision N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0_action["The system adds a line containing
Waybill : followed by the
concatenated carrier code, origin
station number, and waybill number
as the fourth line in the email body"]:::main N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0 -- Yes --> N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0_action N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0_action --> E_AddLine4WaybillCarrierOriginStationWaybillNumber S_AddLine4WaybillCarrierOriginStationWaybillNumber --> N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0 N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0 -- No --> E_AddLine4WaybillCarrierOriginStationWaybillNumber
constructed"}:::decision N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0_action["The system adds a line containing
Waybill : followed by the
concatenated carrier code, origin
station number, and waybill number
as the fourth line in the email body"]:::main N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0 -- Yes --> N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0_action N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0_action --> E_AddLine4WaybillCarrierOriginStationWaybillNumber S_AddLine4WaybillCarrierOriginStationWaybillNumber --> N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0 N_AddLine4WaybillCarrierOriginStationWaybillNumber_Node0 -- No --> E_AddLine4WaybillCarrierOriginStationWaybillNumber
File: GCX126R.cbl
GIVEN:
A cargo record with waybill information including carrier code, origin station number, and waybill number
WHEN:
The email body content is being constructed
THEN:
The system adds a line containing 'Waybill : ' followed by the concatenated carrier code, origin station number, and waybill number as the fourth line in the email body
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds a line containing 'CCN : ' followed by the CCN key value as the fifth line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine5CCNCCNKey(["Start Step"])
E_AddLine5CCNCCNKey(["End Step"])
N_AddLine5CCNCCNKey_Node0{"The email body content is being
constructed"}:::decision N_AddLine5CCNCCNKey_Node0_action["The system adds a line containing
CCN : followed by the CCN key value
as the fifth line in the email body"]:::main N_AddLine5CCNCCNKey_Node0 -- Yes --> N_AddLine5CCNCCNKey_Node0_action N_AddLine5CCNCCNKey_Node0_action --> E_AddLine5CCNCCNKey S_AddLine5CCNCCNKey --> N_AddLine5CCNCCNKey_Node0 N_AddLine5CCNCCNKey_Node0 -- No --> E_AddLine5CCNCCNKey
constructed"}:::decision N_AddLine5CCNCCNKey_Node0_action["The system adds a line containing
CCN : followed by the CCN key value
as the fifth line in the email body"]:::main N_AddLine5CCNCCNKey_Node0 -- Yes --> N_AddLine5CCNCCNKey_Node0_action N_AddLine5CCNCCNKey_Node0_action --> E_AddLine5CCNCCNKey S_AddLine5CCNCCNKey --> N_AddLine5CCNCCNKey_Node0 N_AddLine5CCNCCNKey_Node0 -- No --> E_AddLine5CCNCCNKey
File: GCX126R.cbl
GIVEN:
A cargo record with a CCN key
WHEN:
The email body content is being constructed
THEN:
The system adds a line containing 'CCN : ' followed by the CCN key value as the fifth line in the email body
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds a line containing 'DESTINATION : ' followed by the destination station name, ', ', and state code as the sixth line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine6DESTINATIONDestinationStationNameStateCode(["Start Step"])
E_AddLine6DESTINATIONDestinationStationNameStateCode(["End Step"])
N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0{"The email body content is being
constructed"}:::decision N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0_action["The system adds a line containing
DESTINATION : followed by the
destination station name, , , and
state code as the sixth line in the
email body"]:::main N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0 -- Yes --> N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0_action N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0_action --> E_AddLine6DESTINATIONDestinationStationNameStateCode S_AddLine6DESTINATIONDestinationStationNameStateCode --> N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0 N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0 -- No --> E_AddLine6DESTINATIONDestinationStationNameStateCode
constructed"}:::decision N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0_action["The system adds a line containing
DESTINATION : followed by the
destination station name, , , and
state code as the sixth line in the
email body"]:::main N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0 -- Yes --> N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0_action N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0_action --> E_AddLine6DESTINATIONDestinationStationNameStateCode S_AddLine6DESTINATIONDestinationStationNameStateCode --> N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0 N_AddLine6DESTINATIONDestinationStationNameStateCode_Node0 -- No --> E_AddLine6DESTINATIONDestinationStationNameStateCode
File: GCX126R.cbl
GIVEN:
A cargo record with destination station name and state code
WHEN:
The email body content is being constructed
THEN:
The system adds a line containing 'DESTINATION : ' followed by the destination station name, ', ', and state code as the sixth line in the email body
β Consolidated Acceptance Criteria
- The email body content is being constructed → the system adds a line containing 'MANIFEST UPON : ' followed by the manifest to station name as the seventh line in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLine7MANIFESTUPONManifestToStationName(["Start Step"])
E_AddLine7MANIFESTUPONManifestToStationName(["End Step"])
N_AddLine7MANIFESTUPONManifestToStationName_Node0{"The email body content is being
constructed"}:::decision N_AddLine7MANIFESTUPONManifestToStationName_Node0_action["The system adds a line containing
MANIFEST UPON : followed by the
manifest to station name as the
seventh line in the email body"]:::main N_AddLine7MANIFESTUPONManifestToStationName_Node0 -- Yes --> N_AddLine7MANIFESTUPONManifestToStationName_Node0_action N_AddLine7MANIFESTUPONManifestToStationName_Node0_action --> E_AddLine7MANIFESTUPONManifestToStationName S_AddLine7MANIFESTUPONManifestToStationName --> N_AddLine7MANIFESTUPONManifestToStationName_Node0 N_AddLine7MANIFESTUPONManifestToStationName_Node0 -- No --> E_AddLine7MANIFESTUPONManifestToStationName
constructed"}:::decision N_AddLine7MANIFESTUPONManifestToStationName_Node0_action["The system adds a line containing
MANIFEST UPON : followed by the
manifest to station name as the
seventh line in the email body"]:::main N_AddLine7MANIFESTUPONManifestToStationName_Node0 -- Yes --> N_AddLine7MANIFESTUPONManifestToStationName_Node0_action N_AddLine7MANIFESTUPONManifestToStationName_Node0_action --> E_AddLine7MANIFESTUPONManifestToStationName S_AddLine7MANIFESTUPONManifestToStationName --> N_AddLine7MANIFESTUPONManifestToStationName_Node0 N_AddLine7MANIFESTUPONManifestToStationName_Node0 -- No --> E_AddLine7MANIFESTUPONManifestToStationName
File: GCX126R.cbl
GIVEN:
A cargo record with manifest to station name
WHEN:
The email body content is being constructed
THEN:
The system adds a line containing 'MANIFEST UPON : ' followed by the manifest to station name as the seventh line in the email body
β Consolidated Acceptance Criteria
- The email routing information is being configured → the system sets the email recipient 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_SetEmailRecipientOM01247(["Start Step"])
E_SetEmailRecipientOM01247(["End Step"])
N_SetEmailRecipientOM01247_Node0{"The email routing information is
being configured"}:::decision N_SetEmailRecipientOM01247_Node0_action["The system sets the email recipient
to OM01247"]:::main N_SetEmailRecipientOM01247_Node0 -- Yes --> N_SetEmailRecipientOM01247_Node0_action N_SetEmailRecipientOM01247_Node0_action --> E_SetEmailRecipientOM01247 S_SetEmailRecipientOM01247 --> N_SetEmailRecipientOM01247_Node0 N_SetEmailRecipientOM01247_Node0 -- No --> E_SetEmailRecipientOM01247
being configured"}:::decision N_SetEmailRecipientOM01247_Node0_action["The system sets the email recipient
to OM01247"]:::main N_SetEmailRecipientOM01247_Node0 -- Yes --> N_SetEmailRecipientOM01247_Node0_action N_SetEmailRecipientOM01247_Node0_action --> E_SetEmailRecipientOM01247 S_SetEmailRecipientOM01247 --> N_SetEmailRecipientOM01247_Node0 N_SetEmailRecipientOM01247_Node0 -- No --> E_SetEmailRecipientOM01247
File: GCX126R.cbl
GIVEN:
A hold notification email has been prepared with all cargo details
WHEN:
The email routing information is being configured
THEN:
The system sets the email recipient to 'OM01247'
β Consolidated Acceptance Criteria
- The email routing information is being configured → the system sets the destination filename to 'CAHOLD'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationFilenameCAHOLD(["Start Step"])
E_SetDestinationFilenameCAHOLD(["End Step"])
N_SetDestinationFilenameCAHOLD_Node0{"The email routing information is
being configured"}:::decision N_SetDestinationFilenameCAHOLD_Node0_action["The system sets the destination
filename to CAHOLD"]:::main N_SetDestinationFilenameCAHOLD_Node0 -- Yes --> N_SetDestinationFilenameCAHOLD_Node0_action N_SetDestinationFilenameCAHOLD_Node0_action --> E_SetDestinationFilenameCAHOLD S_SetDestinationFilenameCAHOLD --> N_SetDestinationFilenameCAHOLD_Node0 N_SetDestinationFilenameCAHOLD_Node0 -- No --> E_SetDestinationFilenameCAHOLD
being configured"}:::decision N_SetDestinationFilenameCAHOLD_Node0_action["The system sets the destination
filename to CAHOLD"]:::main N_SetDestinationFilenameCAHOLD_Node0 -- Yes --> N_SetDestinationFilenameCAHOLD_Node0_action N_SetDestinationFilenameCAHOLD_Node0_action --> E_SetDestinationFilenameCAHOLD S_SetDestinationFilenameCAHOLD --> N_SetDestinationFilenameCAHOLD_Node0 N_SetDestinationFilenameCAHOLD_Node0 -- No --> E_SetDestinationFilenameCAHOLD
File: GCX126R.cbl
GIVEN:
A hold notification email has been prepared with recipient information
WHEN:
The email routing information is being configured
THEN:
The system sets the destination filename to 'CAHOLD'
β Consolidated Acceptance Criteria
- The email is ready to be sent → the system sets the line count to 7 indicating the number of detail lines in the email body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTotalLines7(["Start Step"])
E_SetTotalLines7(["End Step"])
N_SetTotalLines7_Node0{"The email is ready to be sent"}:::decision
N_SetTotalLines7_Node0_action["The system sets the line count to 7
indicating the number of detail
lines in the email body"]:::main N_SetTotalLines7_Node0 -- Yes --> N_SetTotalLines7_Node0_action N_SetTotalLines7_Node0_action --> E_SetTotalLines7 S_SetTotalLines7 --> N_SetTotalLines7_Node0 N_SetTotalLines7_Node0 -- No --> E_SetTotalLines7
indicating the number of detail
lines in the email body"]:::main N_SetTotalLines7_Node0 -- Yes --> N_SetTotalLines7_Node0_action N_SetTotalLines7_Node0_action --> E_SetTotalLines7 S_SetTotalLines7 --> N_SetTotalLines7_Node0 N_SetTotalLines7_Node0 -- No --> E_SetTotalLines7
File: GCX126R.cbl
GIVEN:
A hold notification email has been prepared with all cargo details and routing information
WHEN:
The email is ready to be sent
THEN:
The system sets the line count to 7 indicating the number of detail lines in the email body
β Consolidated Acceptance Criteria
- The email send operation completes without errors → the system calls CIMS with PURG function to purge the alternate PCB message queue
- Email send operation completes successfully → iMS message queue is purged using PURG function against alternate PCB
- The email send operation completes with EMI-NO-ERRORS status → the system calls CIMS with PURG function to purge the alternate PCB message queue
- If the email send result → the system calls CIMS with CCCOM, PURG function, and ALT-PCB to purge the message from the IMS 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_PurgeIMSMessageQueue(["Start Step"])
E_PurgeIMSMessageQueue(["End Step"])
N_PurgeIMSMessageQueue_Node0{"The email send operation completes
without errors"}:::decision N_PurgeIMSMessageQueue_Node0_action["The system calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_PurgeIMSMessageQueue_Node0 -- Yes --> N_PurgeIMSMessageQueue_Node0_action N_PurgeIMSMessageQueue_Node0_action --> E_PurgeIMSMessageQueue S_PurgeIMSMessageQueue --> N_PurgeIMSMessageQueue_Node0 N_PurgeIMSMessageQueue_Node1{"Email send operation completes
successfully"}:::decision N_PurgeIMSMessageQueue_Node1_action["IMS message queue is purged using
PURG function against alternate PCB"]:::main N_PurgeIMSMessageQueue_Node1 -- Yes --> N_PurgeIMSMessageQueue_Node1_action N_PurgeIMSMessageQueue_Node1_action --> E_PurgeIMSMessageQueue N_PurgeIMSMessageQueue_Node0 -- No --> N_PurgeIMSMessageQueue_Node1 N_PurgeIMSMessageQueue_Node2{"The email send operation completes
with EMI-NO-ERRORS status"}:::decision N_PurgeIMSMessageQueue_Node2_action["The system calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_PurgeIMSMessageQueue_Node2 -- Yes --> N_PurgeIMSMessageQueue_Node2_action N_PurgeIMSMessageQueue_Node2_action --> E_PurgeIMSMessageQueue N_PurgeIMSMessageQueue_Node1 -- No --> N_PurgeIMSMessageQueue_Node2 N_PurgeIMSMessageQueue_Node3{"The system evaluates the email send
result"}:::decision N_PurgeIMSMessageQueue_Node3_action["The system calls CIMS with CCCOM,
PURG function, and ALT-PCB to purge
the message from the IMS queue"]:::main N_PurgeIMSMessageQueue_Node3 -- Yes --> N_PurgeIMSMessageQueue_Node3_action N_PurgeIMSMessageQueue_Node3_action --> E_PurgeIMSMessageQueue N_PurgeIMSMessageQueue_Node2 -- No --> N_PurgeIMSMessageQueue_Node3 N_PurgeIMSMessageQueue_Node3 -- No --> E_PurgeIMSMessageQueue
without errors"}:::decision N_PurgeIMSMessageQueue_Node0_action["The system calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_PurgeIMSMessageQueue_Node0 -- Yes --> N_PurgeIMSMessageQueue_Node0_action N_PurgeIMSMessageQueue_Node0_action --> E_PurgeIMSMessageQueue S_PurgeIMSMessageQueue --> N_PurgeIMSMessageQueue_Node0 N_PurgeIMSMessageQueue_Node1{"Email send operation completes
successfully"}:::decision N_PurgeIMSMessageQueue_Node1_action["IMS message queue is purged using
PURG function against alternate PCB"]:::main N_PurgeIMSMessageQueue_Node1 -- Yes --> N_PurgeIMSMessageQueue_Node1_action N_PurgeIMSMessageQueue_Node1_action --> E_PurgeIMSMessageQueue N_PurgeIMSMessageQueue_Node0 -- No --> N_PurgeIMSMessageQueue_Node1 N_PurgeIMSMessageQueue_Node2{"The email send operation completes
with EMI-NO-ERRORS status"}:::decision N_PurgeIMSMessageQueue_Node2_action["The system calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_PurgeIMSMessageQueue_Node2 -- Yes --> N_PurgeIMSMessageQueue_Node2_action N_PurgeIMSMessageQueue_Node2_action --> E_PurgeIMSMessageQueue N_PurgeIMSMessageQueue_Node1 -- No --> N_PurgeIMSMessageQueue_Node2 N_PurgeIMSMessageQueue_Node3{"The system evaluates the email send
result"}:::decision N_PurgeIMSMessageQueue_Node3_action["The system calls CIMS with CCCOM,
PURG function, and ALT-PCB to purge
the message from the IMS queue"]:::main N_PurgeIMSMessageQueue_Node3 -- Yes --> N_PurgeIMSMessageQueue_Node3_action N_PurgeIMSMessageQueue_Node3_action --> E_PurgeIMSMessageQueue N_PurgeIMSMessageQueue_Node2 -- No --> N_PurgeIMSMessageQueue_Node3 N_PurgeIMSMessageQueue_Node3 -- No --> E_PurgeIMSMessageQueue
File: GCX126R.cbl
GIVEN:
An email has been sent successfully through EMCSEND2 and the return status flag indicates no errors
WHEN:
The email send operation completes without errors
THEN:
The system calls CIMS with PURG function to purge the alternate PCB message queue
File: GCX126R.cbl
GIVEN:
EMCSEND2 return status indicates no errors (EMI-NO-ERRORS)
WHEN:
Email send operation completes successfully
THEN:
IMS message queue is purged using PURG function against alternate PCB
File: GCX126R.cbl
GIVEN:
An email has been successfully resent via EMCSEND2 with no errors
WHEN:
The email send operation completes with EMI-NO-ERRORS status
THEN:
The system calls CIMS with PURG function to purge the alternate PCB message queue
File: GCX126R.cbl
GIVEN:
The email notification was sent through EMCSEND2 and the return status flag indicates no errors (EMI-NO-ERRORS)
WHEN:
The system evaluates the email send result
THEN:
The system calls CIMS with CCCOM, PURG function, and ALT-PCB to purge the message from the IMS queue
β Consolidated Acceptance Criteria
- The return status flag indicates FROM user not found → the system sets error message 'EMI - INVALID MERLIN FROM' and calls CERR to abort the 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_AbortInvalidFROMUser(["Start Step"])
E_AbortInvalidFROMUser(["End Step"])
N_AbortInvalidFROMUser_Node0{"The return status flag indicates
FROM user not found"}:::decision N_AbortInvalidFROMUser_Node0_action["The system sets error message EMI -
INVALID MERLIN FROM and calls CERR
to abort the program"]:::exclusion N_AbortInvalidFROMUser_Node0 -- Yes -->|Alternative| N_AbortInvalidFROMUser_Node0_action N_AbortInvalidFROMUser_Node0_action --> E_AbortInvalidFROMUser S_AbortInvalidFROMUser --> N_AbortInvalidFROMUser_Node0 N_AbortInvalidFROMUser_Node0 -- No --> E_AbortInvalidFROMUser
FROM user not found"}:::decision N_AbortInvalidFROMUser_Node0_action["The system sets error message EMI -
INVALID MERLIN FROM and calls CERR
to abort the program"]:::exclusion N_AbortInvalidFROMUser_Node0 -- Yes -->|Alternative| N_AbortInvalidFROMUser_Node0_action N_AbortInvalidFROMUser_Node0_action --> E_AbortInvalidFROMUser S_AbortInvalidFROMUser --> N_AbortInvalidFROMUser_Node0 N_AbortInvalidFROMUser_Node0 -- No --> E_AbortInvalidFROMUser
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email send attempt has been made through EMCSEND2
WHEN:
The return status flag indicates FROM user not found
THEN:
The system sets error message 'EMI - INVALID MERLIN FROM' and calls CERR to abort the program
β Consolidated Acceptance Criteria
- The return status flag indicates filename is invalid → the system sets error message 'EMI - INVALID MERLIN FILENAME' and calls CERR to abort the 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_AbortInvalidFilename(["Start Step"])
E_AbortInvalidFilename(["End Step"])
N_AbortInvalidFilename_Node0{"The return status flag indicates
filename is invalid"}:::decision N_AbortInvalidFilename_Node0_action["The system sets error message EMI -
INVALID MERLIN FILENAME and calls
CERR to abort the program"]:::exclusion N_AbortInvalidFilename_Node0 -- Yes -->|Alternative| N_AbortInvalidFilename_Node0_action N_AbortInvalidFilename_Node0_action --> E_AbortInvalidFilename S_AbortInvalidFilename --> N_AbortInvalidFilename_Node0 N_AbortInvalidFilename_Node0 -- No --> E_AbortInvalidFilename
filename is invalid"}:::decision N_AbortInvalidFilename_Node0_action["The system sets error message EMI -
INVALID MERLIN FILENAME and calls
CERR to abort the program"]:::exclusion N_AbortInvalidFilename_Node0 -- Yes -->|Alternative| N_AbortInvalidFilename_Node0_action N_AbortInvalidFilename_Node0_action --> E_AbortInvalidFilename S_AbortInvalidFilename --> N_AbortInvalidFilename_Node0 N_AbortInvalidFilename_Node0 -- No --> E_AbortInvalidFilename
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email send attempt has been made through EMCSEND2
WHEN:
The return status flag indicates filename is invalid
THEN:
The system sets error message 'EMI - INVALID MERLIN FILENAME' and calls CERR to abort the program
β Consolidated Acceptance Criteria
- The return status flag indicates TO or COPY user not found → the system clears TO usercode, sets TO usercode to OM01247, sets destination filename to IN, and calls the resend email procedure
- The rerouted email send completes successfully → the system clears the subject, constructs a new subject containing the invalid Merlin ID and text 'INVALID MERLIN TO - REPORT REROUTE', and calls the resend email procedure again
- The resend operation return status flag indicates TO or COPY user not found → the system sets error message 'EMI - INVALID MERLIN TO OR COPY' and calls CERR to abort the program
- The resend operation return status flag indicates FROM user not found → the system sets error message 'EMI - INVALID MERLIN FROM' and calls CERR to abort the program
- The resend operation return status flag indicates filename is invalid → the system sets error message 'EMI - INVALID MERLIN FILENAME' and calls CERR to abort the program
- The resend operation completes without errors → the system calls CIMS with PURG function to purge the alternate PCB message queue
- The system determines which recipient was invalid based on message type → if message type is UNRLSE, store the second TO usercode as the bad Merlin ID, otherwise store the first TO usercode as the bad Merlin ID
- The email type is UNRLSE and TO usercode at position 2 is invalid, or for other email types TO usercode at position 1 is invalid → the system saves the invalid Merlin ID, clears the TO usercode, sets TO usercode to 'OM01247', sets destination filename to 'IN', and resends the email notification
- The email type is 88-Z110-MRLN-TYPE-IS-UNRLSE → the system saves the TO usercode at position 2 as the invalid Merlin ID, otherwise saves the TO usercode at position 1 as the invalid Merlin ID
- The system attempts to resend the notification → the system clears the TO usercode field, sets the TO usercode to 'OM01247', sets the destination filename to 'IN', calls the email sending service (EMCSEND2) with the original subject, keywords, and message content, and increments the machine sequence 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_ResendFailedEmailtoOM01247(["Start Step"])
E_ResendFailedEmailtoOM01247(["End Step"])
N_ResendFailedEmailtoOM01247_Node0{"The return status flag indicates TO
or COPY user not found"}:::decision N_ResendFailedEmailtoOM01247_Node0_action["The system clears TO usercode, sets
TO usercode to OM01247, sets
destination filename to IN, and
calls the resend email procedure"]:::main N_ResendFailedEmailtoOM01247_Node0 -- Yes --> N_ResendFailedEmailtoOM01247_Node0_action N_ResendFailedEmailtoOM01247_Node0_action --> E_ResendFailedEmailtoOM01247 S_ResendFailedEmailtoOM01247 --> N_ResendFailedEmailtoOM01247_Node0 N_ResendFailedEmailtoOM01247_Node1{"The rerouted email send completes
successfully"}:::decision N_ResendFailedEmailtoOM01247_Node1_action["The system clears the subject,
constructs a new subject containing
the invalid Merlin ID and text
INVALID MERLIN TO - REPORT REROUTE ,
and calls the resend email procedure
again"]:::main N_ResendFailedEmailtoOM01247_Node1 -- Yes --> N_ResendFailedEmailtoOM01247_Node1_action N_ResendFailedEmailtoOM01247_Node1_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node0 -- No --> N_ResendFailedEmailtoOM01247_Node1 N_ResendFailedEmailtoOM01247_Node2{"The resend operation return status
flag indicates TO or COPY user not
found"}:::decision N_ResendFailedEmailtoOM01247_Node2_action["The system sets error message EMI -
INVALID MERLIN TO OR COPY and calls
CERR to abort the program"]:::exclusion N_ResendFailedEmailtoOM01247_Node2 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node2_action N_ResendFailedEmailtoOM01247_Node2_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node1 -- No --> N_ResendFailedEmailtoOM01247_Node2 N_ResendFailedEmailtoOM01247_Node3{"The resend operation return status
flag indicates FROM user not found"}:::decision N_ResendFailedEmailtoOM01247_Node3_action["The system sets error message EMI -
INVALID MERLIN FROM and calls CERR
to abort the program"]:::exclusion N_ResendFailedEmailtoOM01247_Node3 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node3_action N_ResendFailedEmailtoOM01247_Node3_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node2 -- No --> N_ResendFailedEmailtoOM01247_Node3 N_ResendFailedEmailtoOM01247_Node4{"The resend operation return status
flag indicates filename is invalid"}:::decision N_ResendFailedEmailtoOM01247_Node4_action["The system sets error message EMI -
INVALID MERLIN FILENAME and calls
CERR to abort the program"]:::exclusion N_ResendFailedEmailtoOM01247_Node4 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node4_action N_ResendFailedEmailtoOM01247_Node4_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node3 -- No --> N_ResendFailedEmailtoOM01247_Node4 N_ResendFailedEmailtoOM01247_Node5{"The resend operation completes
without errors"}:::decision N_ResendFailedEmailtoOM01247_Node5_action["The system calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_ResendFailedEmailtoOM01247_Node5 -- Yes --> N_ResendFailedEmailtoOM01247_Node5_action N_ResendFailedEmailtoOM01247_Node5_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node4 -- No --> N_ResendFailedEmailtoOM01247_Node5 N_ResendFailedEmailtoOM01247_Node6{"The system determines which
recipient was invalid based on
message type"}:::decision N_ResendFailedEmailtoOM01247_Node6_action["If message type is UNRLSE, store
the second TO usercode as the bad
Merlin ID, otherwise store the first
TO usercode as the bad Merlin ID"]:::exclusion N_ResendFailedEmailtoOM01247_Node6 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node6_action N_ResendFailedEmailtoOM01247_Node6_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node5 -- No --> N_ResendFailedEmailtoOM01247_Node6 N_ResendFailedEmailtoOM01247_Node7{"The email type is UNRLSE and TO
usercode at position 2 is invalid,
or for other email types TO usercode
at position 1 is invalid"}:::decision N_ResendFailedEmailtoOM01247_Node7_action["The system saves the invalid Merlin
ID, clears the TO usercode, sets TO
usercode to OM01247 , sets
destination filename to IN , and
resends the email notification"]:::exclusion N_ResendFailedEmailtoOM01247_Node7 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node7_action N_ResendFailedEmailtoOM01247_Node7_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node6 -- No --> N_ResendFailedEmailtoOM01247_Node7 N_ResendFailedEmailtoOM01247_Node8{"The email type is
88-Z110-MRLN-TYPE-IS-UNRLSE"}:::decision N_ResendFailedEmailtoOM01247_Node8_action["The system saves the TO usercode at
position 2 as the invalid Merlin ID,
otherwise saves the TO usercode at
position 1 as the invalid Merlin ID"]:::main N_ResendFailedEmailtoOM01247_Node8 -- Yes --> N_ResendFailedEmailtoOM01247_Node8_action N_ResendFailedEmailtoOM01247_Node8_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node7 -- No --> N_ResendFailedEmailtoOM01247_Node8 N_ResendFailedEmailtoOM01247_Node9{"The system attempts to resend the
notification"}:::decision N_ResendFailedEmailtoOM01247_Node9_action["The system clears the TO usercode
field, sets the TO usercode to
OM01247 , sets the destination
filename to IN , calls the email
sending service EMCSEND2 with the
original subject, keywords, and
message content, and increments the
machine sequence number by 1"]:::main N_ResendFailedEmailtoOM01247_Node9 -- Yes --> N_ResendFailedEmailtoOM01247_Node9_action N_ResendFailedEmailtoOM01247_Node9_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node8 -- No --> N_ResendFailedEmailtoOM01247_Node9 N_ResendFailedEmailtoOM01247_Node9 -- No --> E_ResendFailedEmailtoOM01247
or COPY user not found"}:::decision N_ResendFailedEmailtoOM01247_Node0_action["The system clears TO usercode, sets
TO usercode to OM01247, sets
destination filename to IN, and
calls the resend email procedure"]:::main N_ResendFailedEmailtoOM01247_Node0 -- Yes --> N_ResendFailedEmailtoOM01247_Node0_action N_ResendFailedEmailtoOM01247_Node0_action --> E_ResendFailedEmailtoOM01247 S_ResendFailedEmailtoOM01247 --> N_ResendFailedEmailtoOM01247_Node0 N_ResendFailedEmailtoOM01247_Node1{"The rerouted email send completes
successfully"}:::decision N_ResendFailedEmailtoOM01247_Node1_action["The system clears the subject,
constructs a new subject containing
the invalid Merlin ID and text
INVALID MERLIN TO - REPORT REROUTE ,
and calls the resend email procedure
again"]:::main N_ResendFailedEmailtoOM01247_Node1 -- Yes --> N_ResendFailedEmailtoOM01247_Node1_action N_ResendFailedEmailtoOM01247_Node1_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node0 -- No --> N_ResendFailedEmailtoOM01247_Node1 N_ResendFailedEmailtoOM01247_Node2{"The resend operation return status
flag indicates TO or COPY user not
found"}:::decision N_ResendFailedEmailtoOM01247_Node2_action["The system sets error message EMI -
INVALID MERLIN TO OR COPY and calls
CERR to abort the program"]:::exclusion N_ResendFailedEmailtoOM01247_Node2 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node2_action N_ResendFailedEmailtoOM01247_Node2_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node1 -- No --> N_ResendFailedEmailtoOM01247_Node2 N_ResendFailedEmailtoOM01247_Node3{"The resend operation return status
flag indicates FROM user not found"}:::decision N_ResendFailedEmailtoOM01247_Node3_action["The system sets error message EMI -
INVALID MERLIN FROM and calls CERR
to abort the program"]:::exclusion N_ResendFailedEmailtoOM01247_Node3 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node3_action N_ResendFailedEmailtoOM01247_Node3_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node2 -- No --> N_ResendFailedEmailtoOM01247_Node3 N_ResendFailedEmailtoOM01247_Node4{"The resend operation return status
flag indicates filename is invalid"}:::decision N_ResendFailedEmailtoOM01247_Node4_action["The system sets error message EMI -
INVALID MERLIN FILENAME and calls
CERR to abort the program"]:::exclusion N_ResendFailedEmailtoOM01247_Node4 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node4_action N_ResendFailedEmailtoOM01247_Node4_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node3 -- No --> N_ResendFailedEmailtoOM01247_Node4 N_ResendFailedEmailtoOM01247_Node5{"The resend operation completes
without errors"}:::decision N_ResendFailedEmailtoOM01247_Node5_action["The system calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_ResendFailedEmailtoOM01247_Node5 -- Yes --> N_ResendFailedEmailtoOM01247_Node5_action N_ResendFailedEmailtoOM01247_Node5_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node4 -- No --> N_ResendFailedEmailtoOM01247_Node5 N_ResendFailedEmailtoOM01247_Node6{"The system determines which
recipient was invalid based on
message type"}:::decision N_ResendFailedEmailtoOM01247_Node6_action["If message type is UNRLSE, store
the second TO usercode as the bad
Merlin ID, otherwise store the first
TO usercode as the bad Merlin ID"]:::exclusion N_ResendFailedEmailtoOM01247_Node6 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node6_action N_ResendFailedEmailtoOM01247_Node6_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node5 -- No --> N_ResendFailedEmailtoOM01247_Node6 N_ResendFailedEmailtoOM01247_Node7{"The email type is UNRLSE and TO
usercode at position 2 is invalid,
or for other email types TO usercode
at position 1 is invalid"}:::decision N_ResendFailedEmailtoOM01247_Node7_action["The system saves the invalid Merlin
ID, clears the TO usercode, sets TO
usercode to OM01247 , sets
destination filename to IN , and
resends the email notification"]:::exclusion N_ResendFailedEmailtoOM01247_Node7 -- Yes -->|Alternative| N_ResendFailedEmailtoOM01247_Node7_action N_ResendFailedEmailtoOM01247_Node7_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node6 -- No --> N_ResendFailedEmailtoOM01247_Node7 N_ResendFailedEmailtoOM01247_Node8{"The email type is
88-Z110-MRLN-TYPE-IS-UNRLSE"}:::decision N_ResendFailedEmailtoOM01247_Node8_action["The system saves the TO usercode at
position 2 as the invalid Merlin ID,
otherwise saves the TO usercode at
position 1 as the invalid Merlin ID"]:::main N_ResendFailedEmailtoOM01247_Node8 -- Yes --> N_ResendFailedEmailtoOM01247_Node8_action N_ResendFailedEmailtoOM01247_Node8_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node7 -- No --> N_ResendFailedEmailtoOM01247_Node8 N_ResendFailedEmailtoOM01247_Node9{"The system attempts to resend the
notification"}:::decision N_ResendFailedEmailtoOM01247_Node9_action["The system clears the TO usercode
field, sets the TO usercode to
OM01247 , sets the destination
filename to IN , calls the email
sending service EMCSEND2 with the
original subject, keywords, and
message content, and increments the
machine sequence number by 1"]:::main N_ResendFailedEmailtoOM01247_Node9 -- Yes --> N_ResendFailedEmailtoOM01247_Node9_action N_ResendFailedEmailtoOM01247_Node9_action --> E_ResendFailedEmailtoOM01247 N_ResendFailedEmailtoOM01247_Node8 -- No --> N_ResendFailedEmailtoOM01247_Node9 N_ResendFailedEmailtoOM01247_Node9 -- No --> E_ResendFailedEmailtoOM01247
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email send attempt has failed because TO or COPY usercode was not found
WHEN:
The return status flag indicates TO or COPY user not found
THEN:
The system clears TO usercode, sets TO usercode to OM01247, sets destination filename to IN, and calls the resend email procedure
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email has been successfully rerouted to OM01247 after the original recipient was not found and the resend operation returned no errors
WHEN:
The rerouted email send completes successfully
THEN:
- The system clears the subject, constructs a new subject containing the invalid merlin id
- Text 'invalid merlin to - report reroute', and calls the resend email procedure again
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email is being resent to the default user OM01247 after initial recipient failure
WHEN:
The resend operation return status flag indicates TO or COPY user not found
THEN:
The system sets error message 'EMI - INVALID MERLIN TO OR COPY' and calls CERR to abort the program
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email is being resent after initial failure
WHEN:
The resend operation return status flag indicates FROM user not found
THEN:
The system sets error message 'EMI - INVALID MERLIN FROM' and calls CERR to abort the program
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email is being resent after initial failure
WHEN:
The resend operation return status flag indicates filename is invalid
THEN:
The system sets error message 'EMI - INVALID MERLIN FILENAME' and calls CERR to abort the program
File: GCX126R.cbl
GIVEN:
An email has been resent successfully and the return status flag indicates no errors
WHEN:
The resend operation completes without errors
THEN:
The system calls CIMS with PURG function to purge the alternate PCB message queue
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email send attempt has failed because TO or COPY usercode was not found
WHEN:
The system determines which recipient was invalid based on message type
THEN:
If message type is UNRLSE, store the second TO usercode as the bad Merlin ID, otherwise store the first TO usercode as the bad Merlin ID
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification fails with EMI-TO-OR-COPY-NOT-FOUND status and the invalid recipient usercode is identified
WHEN:
- The email type is unrlse
- To usercode at position 2 is invalid, or for other email types to usercode at position 1 is invalid
THEN:
The system saves the invalid Merlin ID, clears the TO usercode, sets TO usercode to 'OM01247', sets destination filename to 'IN', and resends the email notification
File: GCX126R.cbl
GIVEN:
An email notification fails with EMI-TO-OR-COPY-NOT-FOUND status
WHEN:
The email type is 88-Z110-MRLN-TYPE-IS-UNRLSE
THEN:
The system saves the TO usercode at position 2 as the invalid Merlin ID, otherwise saves the TO usercode at position 1 as the invalid Merlin ID
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification has failed to send because the intended recipient usercode was not found in the system
WHEN:
The system attempts to resend the notification
THEN:
The system clears the TO usercode field, sets the TO usercode to 'OM01247', sets the destination filename to 'IN', calls the email sending service (EMCSEND2) with the original subject, keywords, and message content, and increments the machine sequence number by 1
β Consolidated Acceptance Criteria
- The EMCSEND2 service returns EMI-NO-ERRORS status indicating successful email delivery → the system purges the IMS alternate PCB message queue and completes the email send process 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_EmailSentSuccessfully(["Start Step"])
E_EmailSentSuccessfully(["End Step"])
N_EmailSentSuccessfully_Node0{"The EMCSEND2 service returns
EMI-NO-ERRORS status indicating
successful email delivery"}:::decision N_EmailSentSuccessfully_Node0_action["The system purges the IMS alternate
PCB message queue and completes the
email send process successfully"]:::main N_EmailSentSuccessfully_Node0 -- Yes --> N_EmailSentSuccessfully_Node0_action N_EmailSentSuccessfully_Node0_action --> E_EmailSentSuccessfully S_EmailSentSuccessfully --> N_EmailSentSuccessfully_Node0 N_EmailSentSuccessfully_Node0 -- No --> E_EmailSentSuccessfully
EMI-NO-ERRORS status indicating
successful email delivery"}:::decision N_EmailSentSuccessfully_Node0_action["The system purges the IMS alternate
PCB message queue and completes the
email send process successfully"]:::main N_EmailSentSuccessfully_Node0 -- Yes --> N_EmailSentSuccessfully_Node0_action N_EmailSentSuccessfully_Node0_action --> E_EmailSentSuccessfully S_EmailSentSuccessfully --> N_EmailSentSuccessfully_Node0 N_EmailSentSuccessfully_Node0 -- No --> E_EmailSentSuccessfully
File: GCX126R.cbl
GIVEN:
An email notification has been prepared with FROM usercode, destination filename, TO usercode, COPY usercode, subject, keywords, and report content
WHEN:
The EMCSEND2 service returns EMI-NO-ERRORS status indicating successful email delivery
THEN:
- The system purges the ims alternate pcb message queue
- Completes the email send process successfully
β Consolidated Acceptance Criteria
- The EMCSEND2 service returns EMI-FROM-NOT-FOUND status indicating the FROM usercode does not exist in the system → the system sets error message 'EMI - INVALID MERLIN FROM' and aborts the program execution
- The resend attempt returns EMI-FROM-NOT-FOUND status indicating the FROM usercode does not exist → the system sets error message 'EMI - INVALID MERLIN FROM' and aborts the program 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_FROMUserNotFoundError(["Start Step"])
E_FROMUserNotFoundError(["End Step"])
N_FROMUserNotFoundError_Node0{"The EMCSEND2 service returns
EMI-FROM-NOT-FOUND status indicating
the FROM usercode does not exist in
the system"}:::decision N_FROMUserNotFoundError_Node0_action["The system sets error message EMI -
INVALID MERLIN FROM and aborts the
program execution"]:::main N_FROMUserNotFoundError_Node0 -- Yes --> N_FROMUserNotFoundError_Node0_action N_FROMUserNotFoundError_Node0_action --> E_FROMUserNotFoundError S_FROMUserNotFoundError --> N_FROMUserNotFoundError_Node0 N_FROMUserNotFoundError_Node1{"The resend attempt returns
EMI-FROM-NOT-FOUND status indicating
the FROM usercode does not exist"}:::decision N_FROMUserNotFoundError_Node1_action["The system sets error message EMI -
INVALID MERLIN FROM and aborts the
program execution"]:::main N_FROMUserNotFoundError_Node1 -- Yes --> N_FROMUserNotFoundError_Node1_action N_FROMUserNotFoundError_Node1_action --> E_FROMUserNotFoundError N_FROMUserNotFoundError_Node0 -- No --> N_FROMUserNotFoundError_Node1 N_FROMUserNotFoundError_Node1 -- No --> E_FROMUserNotFoundError
EMI-FROM-NOT-FOUND status indicating
the FROM usercode does not exist in
the system"}:::decision N_FROMUserNotFoundError_Node0_action["The system sets error message EMI -
INVALID MERLIN FROM and aborts the
program execution"]:::main N_FROMUserNotFoundError_Node0 -- Yes --> N_FROMUserNotFoundError_Node0_action N_FROMUserNotFoundError_Node0_action --> E_FROMUserNotFoundError S_FROMUserNotFoundError --> N_FROMUserNotFoundError_Node0 N_FROMUserNotFoundError_Node1{"The resend attempt returns
EMI-FROM-NOT-FOUND status indicating
the FROM usercode does not exist"}:::decision N_FROMUserNotFoundError_Node1_action["The system sets error message EMI -
INVALID MERLIN FROM and aborts the
program execution"]:::main N_FROMUserNotFoundError_Node1 -- Yes --> N_FROMUserNotFoundError_Node1_action N_FROMUserNotFoundError_Node1_action --> E_FROMUserNotFoundError N_FROMUserNotFoundError_Node0 -- No --> N_FROMUserNotFoundError_Node1 N_FROMUserNotFoundError_Node1 -- No --> E_FROMUserNotFoundError
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification is being sent with a FROM usercode
WHEN:
The EMCSEND2 service returns EMI-FROM-NOT-FOUND status indicating the FROM usercode does not exist in the system
THEN:
The system sets error message 'EMI - INVALID MERLIN FROM' and aborts the program execution
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email is being rerouted to default user OM01247 after initial recipient was not found
WHEN:
The resend attempt returns EMI-FROM-NOT-FOUND status indicating the FROM usercode does not exist
THEN:
The system sets error message 'EMI - INVALID MERLIN FROM' and aborts the program execution
β Consolidated Acceptance Criteria
- The EMCSEND2 service returns EMI-FILENAME-INVALID status indicating the destination filename is not valid → the system sets error message 'EMI - INVALID MERLIN FILENAME' and aborts the program execution
- The resend attempt returns EMI-FILENAME-INVALID status indicating the destination filename is not valid → the system sets error message 'EMI - INVALID MERLIN FILENAME' and aborts the program 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_InvalidFilenameError(["Start Step"])
E_InvalidFilenameError(["End Step"])
N_InvalidFilenameError_Node0{"The EMCSEND2 service returns
EMI-FILENAME-INVALID status
indicating the destination filename
is not valid"}:::decision N_InvalidFilenameError_Node0_action["The system sets error message EMI -
INVALID MERLIN FILENAME and aborts
the program execution"]:::exclusion N_InvalidFilenameError_Node0 -- Yes -->|Alternative| N_InvalidFilenameError_Node0_action N_InvalidFilenameError_Node0_action --> E_InvalidFilenameError S_InvalidFilenameError --> N_InvalidFilenameError_Node0 N_InvalidFilenameError_Node1{"The resend attempt returns
EMI-FILENAME-INVALID status
indicating the destination filename
is not valid"}:::decision N_InvalidFilenameError_Node1_action["The system sets error message EMI -
INVALID MERLIN FILENAME and aborts
the program execution"]:::exclusion N_InvalidFilenameError_Node1 -- Yes -->|Alternative| N_InvalidFilenameError_Node1_action N_InvalidFilenameError_Node1_action --> E_InvalidFilenameError N_InvalidFilenameError_Node0 -- No --> N_InvalidFilenameError_Node1 N_InvalidFilenameError_Node1 -- No --> E_InvalidFilenameError
EMI-FILENAME-INVALID status
indicating the destination filename
is not valid"}:::decision N_InvalidFilenameError_Node0_action["The system sets error message EMI -
INVALID MERLIN FILENAME and aborts
the program execution"]:::exclusion N_InvalidFilenameError_Node0 -- Yes -->|Alternative| N_InvalidFilenameError_Node0_action N_InvalidFilenameError_Node0_action --> E_InvalidFilenameError S_InvalidFilenameError --> N_InvalidFilenameError_Node0 N_InvalidFilenameError_Node1{"The resend attempt returns
EMI-FILENAME-INVALID status
indicating the destination filename
is not valid"}:::decision N_InvalidFilenameError_Node1_action["The system sets error message EMI -
INVALID MERLIN FILENAME and aborts
the program execution"]:::exclusion N_InvalidFilenameError_Node1 -- Yes -->|Alternative| N_InvalidFilenameError_Node1_action N_InvalidFilenameError_Node1_action --> E_InvalidFilenameError N_InvalidFilenameError_Node0 -- No --> N_InvalidFilenameError_Node1 N_InvalidFilenameError_Node1 -- No --> E_InvalidFilenameError
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification is being sent with a destination filename
WHEN:
The EMCSEND2 service returns EMI-FILENAME-INVALID status indicating the destination filename is not valid
THEN:
The system sets error message 'EMI - INVALID MERLIN FILENAME' and aborts the program execution
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email is being rerouted to default user OM01247 after initial recipient was not found
WHEN:
The resend attempt returns EMI-FILENAME-INVALID status indicating the destination filename is not valid
THEN:
The system sets error message 'EMI - INVALID MERLIN FILENAME' and aborts the program execution
β Consolidated Acceptance Criteria
- The system prepares a new email with subject containing the invalid Merlin ID and message 'INVALID MERLIN TO - REPORT REROUTE' → the system sends the reroute notification email to OM01247 with destination filename 'IN' and purges the IMS message queue upon successful 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_ResendEmailwithRerouteNotice(["Start Step"])
E_ResendEmailwithRerouteNotice(["End Step"])
N_ResendEmailwithRerouteNotice_Node0{"The system prepares a new email
with subject containing the invalid
Merlin ID and message INVALID MERLIN
TO - REPORT REROUTE"}:::decision N_ResendEmailwithRerouteNotice_Node0_action["The system sends the reroute
notification email to OM01247 with
destination filename IN and purges
the IMS message queue upon
successful delivery"]:::exclusion N_ResendEmailwithRerouteNotice_Node0 -- Yes -->|Alternative| N_ResendEmailwithRerouteNotice_Node0_action N_ResendEmailwithRerouteNotice_Node0_action --> E_ResendEmailwithRerouteNotice S_ResendEmailwithRerouteNotice --> N_ResendEmailwithRerouteNotice_Node0 N_ResendEmailwithRerouteNotice_Node0 -- No --> E_ResendEmailwithRerouteNotice
with subject containing the invalid
Merlin ID and message INVALID MERLIN
TO - REPORT REROUTE"}:::decision N_ResendEmailwithRerouteNotice_Node0_action["The system sends the reroute
notification email to OM01247 with
destination filename IN and purges
the IMS message queue upon
successful delivery"]:::exclusion N_ResendEmailwithRerouteNotice_Node0 -- Yes -->|Alternative| N_ResendEmailwithRerouteNotice_Node0_action N_ResendEmailwithRerouteNotice_Node0_action --> E_ResendEmailwithRerouteNotice S_ResendEmailwithRerouteNotice --> N_ResendEmailwithRerouteNotice_Node0 N_ResendEmailwithRerouteNotice_Node0 -- No --> E_ResendEmailwithRerouteNotice
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email was successfully rerouted to default user OM01247 after initial recipient was not found and the resend returned EMI-NO-ERRORS status
WHEN:
- The system prepares a new email with subject containing the invalid merlin id
- Message 'invalid merlin to - report reroute'
THEN:
The system sends the reroute notification email to OM01247 with destination filename 'IN' and purges the IMS message queue upon successful delivery
β Consolidated Acceptance Criteria
- The resend attempt returns EMI-TO-OR-COPY-NOT-FOUND status indicating even the default recipient OM01247 is invalid → the system sets error message 'EMI - INVALID MERLIN TO OR COPY' and aborts the program 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_AbortwithInvalidTOCOPYError(["Start Step"])
E_AbortwithInvalidTOCOPYError(["End Step"])
N_AbortwithInvalidTOCOPYError_Node0{"The resend attempt returns
EMI-TO-OR-COPY-NOT-FOUND status
indicating even the default
recipient OM01247 is invalid"}:::decision N_AbortwithInvalidTOCOPYError_Node0_action["The system sets error message EMI -
INVALID MERLIN TO OR COPY and aborts
the program execution"]:::exclusion N_AbortwithInvalidTOCOPYError_Node0 -- Yes -->|Alternative| N_AbortwithInvalidTOCOPYError_Node0_action N_AbortwithInvalidTOCOPYError_Node0_action --> E_AbortwithInvalidTOCOPYError S_AbortwithInvalidTOCOPYError --> N_AbortwithInvalidTOCOPYError_Node0 N_AbortwithInvalidTOCOPYError_Node0 -- No --> E_AbortwithInvalidTOCOPYError
EMI-TO-OR-COPY-NOT-FOUND status
indicating even the default
recipient OM01247 is invalid"}:::decision N_AbortwithInvalidTOCOPYError_Node0_action["The system sets error message EMI -
INVALID MERLIN TO OR COPY and aborts
the program execution"]:::exclusion N_AbortwithInvalidTOCOPYError_Node0 -- Yes -->|Alternative| N_AbortwithInvalidTOCOPYError_Node0_action N_AbortwithInvalidTOCOPYError_Node0_action --> E_AbortwithInvalidTOCOPYError S_AbortwithInvalidTOCOPYError --> N_AbortwithInvalidTOCOPYError_Node0 N_AbortwithInvalidTOCOPYError_Node0 -- No --> E_AbortwithInvalidTOCOPYError
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email was rerouted to default user OM01247 after initial recipient was not found
WHEN:
The resend attempt returns EMI-TO-OR-COPY-NOT-FOUND status indicating even the default recipient OM01247 is invalid
THEN:
The system sets error message 'EMI - INVALID MERLIN TO OR COPY' and aborts the program execution
β Consolidated Acceptance Criteria
- The email send process completes (either successfully or after successful reroute) → the system increments the machine format sequence number by 1 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_EndEmailSendProcess(["Start Step"])
E_EndEmailSendProcess(["End Step"])
N_EndEmailSendProcess_Node0{"The email send process completes
either successfully or after
successful reroute"}:::decision N_EndEmailSendProcess_Node0_action["The system increments the machine
format sequence number by 1 for
tracking purposes"]:::main N_EndEmailSendProcess_Node0 -- Yes --> N_EndEmailSendProcess_Node0_action N_EndEmailSendProcess_Node0_action --> E_EndEmailSendProcess S_EndEmailSendProcess --> N_EndEmailSendProcess_Node0 N_EndEmailSendProcess_Node0 -- No --> E_EndEmailSendProcess
either successfully or after
successful reroute"}:::decision N_EndEmailSendProcess_Node0_action["The system increments the machine
format sequence number by 1 for
tracking purposes"]:::main N_EndEmailSendProcess_Node0 -- Yes --> N_EndEmailSendProcess_Node0_action N_EndEmailSendProcess_Node0_action --> E_EndEmailSendProcess S_EndEmailSendProcess --> N_EndEmailSendProcess_Node0 N_EndEmailSendProcess_Node0 -- No --> E_EndEmailSendProcess
File: GCX126R.cbl
GIVEN:
An email notification has been processed through EMCSEND2 service
WHEN:
The email send process completes (either successfully or after successful reroute)
THEN:
The system increments the machine format sequence number by 1 for tracking purposes
β Consolidated Acceptance Criteria
- Email send operation fails due to invalid sender usercode → system abends with error message 'EMI - INVALID MERLIN FROM'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FromUserNotFound(["Start Step"])
E_FromUserNotFound(["End Step"])
N_FromUserNotFound_Node0{"Email send operation fails due to
invalid sender usercode"}:::decision N_FromUserNotFound_Node0_action["System abends with error message
EMI - INVALID MERLIN FROM"]:::exclusion N_FromUserNotFound_Node0 -- Yes -->|Alternative| N_FromUserNotFound_Node0_action N_FromUserNotFound_Node0_action --> E_FromUserNotFound S_FromUserNotFound --> N_FromUserNotFound_Node0 N_FromUserNotFound_Node0 -- No --> E_FromUserNotFound
invalid sender usercode"}:::decision N_FromUserNotFound_Node0_action["System abends with error message
EMI - INVALID MERLIN FROM"]:::exclusion N_FromUserNotFound_Node0 -- Yes -->|Alternative| N_FromUserNotFound_Node0_action N_FromUserNotFound_Node0_action --> E_FromUserNotFound S_FromUserNotFound --> N_FromUserNotFound_Node0 N_FromUserNotFound_Node0 -- No --> E_FromUserNotFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
EMCSEND2 return status is EMI-FROM-NOT-FOUND
WHEN:
Email send operation fails due to invalid sender usercode
THEN:
System abends with error message 'EMI - INVALID MERLIN FROM'
β Consolidated Acceptance Criteria
- Email send operation fails due to invalid recipient usercode → save the bad Merlin ID, reset TO usercode to spaces, set TO usercodes(01) to 'OM01247', and set destination filename to 'IN'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ToCopyUserNotFound(["Start Step"])
E_ToCopyUserNotFound(["End Step"])
N_ToCopyUserNotFound_Node0{"Email send operation fails due to
invalid recipient usercode"}:::decision N_ToCopyUserNotFound_Node0_action["Save the bad Merlin ID, reset TO
usercode to spaces, set TO
usercodes01 to OM01247 , and set
destination filename to IN"]:::exclusion N_ToCopyUserNotFound_Node0 -- Yes -->|Alternative| N_ToCopyUserNotFound_Node0_action N_ToCopyUserNotFound_Node0_action --> E_ToCopyUserNotFound S_ToCopyUserNotFound --> N_ToCopyUserNotFound_Node0 N_ToCopyUserNotFound_Node0 -- No --> E_ToCopyUserNotFound
invalid recipient usercode"}:::decision N_ToCopyUserNotFound_Node0_action["Save the bad Merlin ID, reset TO
usercode to spaces, set TO
usercodes01 to OM01247 , and set
destination filename to IN"]:::exclusion N_ToCopyUserNotFound_Node0 -- Yes -->|Alternative| N_ToCopyUserNotFound_Node0_action N_ToCopyUserNotFound_Node0_action --> E_ToCopyUserNotFound S_ToCopyUserNotFound --> N_ToCopyUserNotFound_Node0 N_ToCopyUserNotFound_Node0 -- No --> E_ToCopyUserNotFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
EMCSEND2 return status is EMI-TO-OR-COPY-NOT-FOUND
WHEN:
Email send operation fails due to invalid recipient usercode
THEN:
Save the bad Merlin ID, reset TO usercode to spaces, set TO usercodes(01) to 'OM01247', and set destination filename to 'IN'
β Consolidated Acceptance Criteria
- Resend operation is performed → eMCSEND2 is called again with updated parameters and return status is evaluated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResendFailedEmail(["Start Step"])
E_ResendFailedEmail(["End Step"])
N_ResendFailedEmail_Node0{"Resend operation is performed"}:::decision
N_ResendFailedEmail_Node0_action["EMCSEND2 is called again with
updated parameters and return status
is evaluated"]:::main N_ResendFailedEmail_Node0 -- Yes --> N_ResendFailedEmail_Node0_action N_ResendFailedEmail_Node0_action --> E_ResendFailedEmail S_ResendFailedEmail --> N_ResendFailedEmail_Node0 N_ResendFailedEmail_Node0 -- No --> E_ResendFailedEmail
updated parameters and return status
is evaluated"]:::main N_ResendFailedEmail_Node0 -- Yes --> N_ResendFailedEmail_Node0_action N_ResendFailedEmail_Node0_action --> E_ResendFailedEmail S_ResendFailedEmail --> N_ResendFailedEmail_Node0 N_ResendFailedEmail_Node0 -- No --> E_ResendFailedEmail
File: GCX126R.cbl
GIVEN:
Email parameters have been reset with TO usercode as 'OM01247' and destination as 'IN'
WHEN:
Resend operation is performed
THEN:
- Emcsend2 is called again with updated parameters
- Return status is evaluated
β Consolidated Acceptance Criteria
- Email was successfully rerouted to default recipient → clear subject, build new subject with bad Merlin ID and message 'INVALID MERLIN TO - REPORT REROUTE', and resend notification
- If the EMI-RETURN-STATUS-FLAG → if EMI-NO-ERRORS is true, proceed to prepare reroute notification; otherwise if EMI-FROM-NOT-FOUND, abend with error 'EMI - INVALID MERLIN FROM'; if EMI-TO-OR-COPY-NOT-FOUND, abend with error 'EMI - INVALID MERLIN TO OR COPY'; if EMI-FILENAME-INVALID, abend with error 'EMI - INVALID MERLIN FILENAME'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResendSuccessful(["Start Step"])
E_ResendSuccessful(["End Step"])
N_ResendSuccessful_Node0{"Email was successfully rerouted to
default recipient"}:::decision N_ResendSuccessful_Node0_action["Clear subject, build new subject
with bad Merlin ID and message
INVALID MERLIN TO - REPORT REROUTE ,
and resend notification"]:::main N_ResendSuccessful_Node0 -- Yes --> N_ResendSuccessful_Node0_action N_ResendSuccessful_Node0_action --> E_ResendSuccessful S_ResendSuccessful --> N_ResendSuccessful_Node0 N_ResendSuccessful_Node1{"The system evaluates the
EMI-RETURN-STATUS-FLAG"}:::decision N_ResendSuccessful_Node1_action["If EMI-NO-ERRORS is true, proceed
to prepare reroute notification
otherwise if EMI-FROM-NOT-FOUND,
abend with error EMI - INVALID
MERLIN FROM if
EMI-TO-OR-COPY-NOT-FOUND, abend with
error EMI - INVALID MERLIN TO OR
COPY if EMI-FILENAME-INVALID, abend
with error EMI - INVALID MERLIN
FILENAME"]:::exclusion N_ResendSuccessful_Node1 -- Yes -->|Alternative| N_ResendSuccessful_Node1_action N_ResendSuccessful_Node1_action --> E_ResendSuccessful N_ResendSuccessful_Node0 -- No --> N_ResendSuccessful_Node1 N_ResendSuccessful_Node1 -- No --> E_ResendSuccessful
default recipient"}:::decision N_ResendSuccessful_Node0_action["Clear subject, build new subject
with bad Merlin ID and message
INVALID MERLIN TO - REPORT REROUTE ,
and resend notification"]:::main N_ResendSuccessful_Node0 -- Yes --> N_ResendSuccessful_Node0_action N_ResendSuccessful_Node0_action --> E_ResendSuccessful S_ResendSuccessful --> N_ResendSuccessful_Node0 N_ResendSuccessful_Node1{"The system evaluates the
EMI-RETURN-STATUS-FLAG"}:::decision N_ResendSuccessful_Node1_action["If EMI-NO-ERRORS is true, proceed
to prepare reroute notification
otherwise if EMI-FROM-NOT-FOUND,
abend with error EMI - INVALID
MERLIN FROM if
EMI-TO-OR-COPY-NOT-FOUND, abend with
error EMI - INVALID MERLIN TO OR
COPY if EMI-FILENAME-INVALID, abend
with error EMI - INVALID MERLIN
FILENAME"]:::exclusion N_ResendSuccessful_Node1 -- Yes -->|Alternative| N_ResendSuccessful_Node1_action N_ResendSuccessful_Node1_action --> E_ResendSuccessful N_ResendSuccessful_Node0 -- No --> N_ResendSuccessful_Node1 N_ResendSuccessful_Node1 -- No --> E_ResendSuccessful
File: GCX126R.cbl
GIVEN:
Resend operation completed with EMI-NO-ERRORS status
WHEN:
Email was successfully rerouted to default recipient
THEN:
- Clear subject, build new subject with bad merlin id
- Message 'invalid merlin to - report reroute', and resend notification
File: GCX126R.cbl
GIVEN:
The EMCSEND2 program has been called to resend the email
WHEN:
The system evaluates the EMI-RETURN-STATUS-FLAG
THEN:
If EMI-NO-ERRORS is true, proceed to prepare reroute notification; otherwise if EMI-FROM-NOT-FOUND, abend with error 'EMI - INVALID MERLIN FROM'; if EMI-TO-OR-COPY-NOT-FOUND, abend with error 'EMI - INVALID MERLIN TO OR COPY'; if EMI-FILENAME-INVALID, abend with error 'EMI - INVALID MERLIN FILENAME'
β Consolidated Acceptance Criteria
- Email send operation fails due to invalid destination filename → system abends with error message 'EMI - INVALID MERLIN FILENAME'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FilenameInvalid(["Start Step"])
E_FilenameInvalid(["End Step"])
N_FilenameInvalid_Node0{"Email send operation fails due to
invalid destination filename"}:::decision N_FilenameInvalid_Node0_action["System abends with error message
EMI - INVALID MERLIN FILENAME"]:::exclusion N_FilenameInvalid_Node0 -- Yes -->|Alternative| N_FilenameInvalid_Node0_action N_FilenameInvalid_Node0_action --> E_FilenameInvalid S_FilenameInvalid --> N_FilenameInvalid_Node0 N_FilenameInvalid_Node0 -- No --> E_FilenameInvalid
invalid destination filename"}:::decision N_FilenameInvalid_Node0_action["System abends with error message
EMI - INVALID MERLIN FILENAME"]:::exclusion N_FilenameInvalid_Node0 -- Yes -->|Alternative| N_FilenameInvalid_Node0_action N_FilenameInvalid_Node0_action --> E_FilenameInvalid S_FilenameInvalid --> N_FilenameInvalid_Node0 N_FilenameInvalid_Node0 -- No --> E_FilenameInvalid
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
EMCSEND2 return status is EMI-FILENAME-INVALID
WHEN:
Email send operation fails due to invalid destination filename
THEN:
System abends with error message 'EMI - INVALID MERLIN FILENAME'
β Consolidated Acceptance Criteria
- Processing reaches the end of email send routine → add 1 to WS-FMT-MACHINE-SEQ counter
- The email operation finishes → the system adds 1 to WS-FMT-MACHINE-SEQ
- The resend operation completes → the system adds 1 to the formatted machine sequence number
- The resend process finishes → the system adds 1 to WS-FMT-MACHINE-SEQ to increment the sequence number
- The system finishes processing the email notification → the system adds 1 to WS-FMT-MACHINE-SEQ to increment the machine sequence number
- The notification processing completes without errors → the system adds 1 to WS-FMT-MACHINE-SEQ to increment the machine 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_IncrementMachineSequenceNumber(["Start Step"])
E_IncrementMachineSequenceNumber(["End Step"])
N_IncrementMachineSequenceNumber_Node0{"Processing reaches the end of email
send routine"}:::decision N_IncrementMachineSequenceNumber_Node0_action["Add 1 to WS-FMT-MACHINE-SEQ counter"]:::main N_IncrementMachineSequenceNumber_Node0 -- Yes --> N_IncrementMachineSequenceNumber_Node0_action N_IncrementMachineSequenceNumber_Node0_action --> E_IncrementMachineSequenceNumber S_IncrementMachineSequenceNumber --> N_IncrementMachineSequenceNumber_Node0 N_IncrementMachineSequenceNumber_Node1{"The email operation finishes"}:::decision N_IncrementMachineSequenceNumber_Node1_action["The system adds 1 to
WS-FMT-MACHINE-SEQ"]:::main N_IncrementMachineSequenceNumber_Node1 -- Yes --> N_IncrementMachineSequenceNumber_Node1_action N_IncrementMachineSequenceNumber_Node1_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node0 -- No --> N_IncrementMachineSequenceNumber_Node1 N_IncrementMachineSequenceNumber_Node2{"The resend operation completes"}:::decision N_IncrementMachineSequenceNumber_Node2_action["The system adds 1 to the formatted
machine sequence number"]:::main N_IncrementMachineSequenceNumber_Node2 -- Yes --> N_IncrementMachineSequenceNumber_Node2_action N_IncrementMachineSequenceNumber_Node2_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node1 -- No --> N_IncrementMachineSequenceNumber_Node2 N_IncrementMachineSequenceNumber_Node3{"The resend process finishes"}:::decision N_IncrementMachineSequenceNumber_Node3_action["The system adds 1 to
WS-FMT-MACHINE-SEQ to increment the
sequence number"]:::main N_IncrementMachineSequenceNumber_Node3 -- Yes --> N_IncrementMachineSequenceNumber_Node3_action N_IncrementMachineSequenceNumber_Node3_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node2 -- No --> N_IncrementMachineSequenceNumber_Node3 N_IncrementMachineSequenceNumber_Node4{"The system finishes processing the
email notification"}:::decision N_IncrementMachineSequenceNumber_Node4_action["The system adds 1 to
WS-FMT-MACHINE-SEQ to increment the
machine sequence number"]:::main N_IncrementMachineSequenceNumber_Node4 -- Yes --> N_IncrementMachineSequenceNumber_Node4_action N_IncrementMachineSequenceNumber_Node4_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node3 -- No --> N_IncrementMachineSequenceNumber_Node4 N_IncrementMachineSequenceNumber_Node5{"The notification processing
completes without errors"}:::decision N_IncrementMachineSequenceNumber_Node5_action["The system adds 1 to
WS-FMT-MACHINE-SEQ to increment the
machine sequence number"]:::main N_IncrementMachineSequenceNumber_Node5 -- Yes --> N_IncrementMachineSequenceNumber_Node5_action N_IncrementMachineSequenceNumber_Node5_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node4 -- No --> N_IncrementMachineSequenceNumber_Node5 N_IncrementMachineSequenceNumber_Node5 -- No --> E_IncrementMachineSequenceNumber
send routine"}:::decision N_IncrementMachineSequenceNumber_Node0_action["Add 1 to WS-FMT-MACHINE-SEQ counter"]:::main N_IncrementMachineSequenceNumber_Node0 -- Yes --> N_IncrementMachineSequenceNumber_Node0_action N_IncrementMachineSequenceNumber_Node0_action --> E_IncrementMachineSequenceNumber S_IncrementMachineSequenceNumber --> N_IncrementMachineSequenceNumber_Node0 N_IncrementMachineSequenceNumber_Node1{"The email operation finishes"}:::decision N_IncrementMachineSequenceNumber_Node1_action["The system adds 1 to
WS-FMT-MACHINE-SEQ"]:::main N_IncrementMachineSequenceNumber_Node1 -- Yes --> N_IncrementMachineSequenceNumber_Node1_action N_IncrementMachineSequenceNumber_Node1_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node0 -- No --> N_IncrementMachineSequenceNumber_Node1 N_IncrementMachineSequenceNumber_Node2{"The resend operation completes"}:::decision N_IncrementMachineSequenceNumber_Node2_action["The system adds 1 to the formatted
machine sequence number"]:::main N_IncrementMachineSequenceNumber_Node2 -- Yes --> N_IncrementMachineSequenceNumber_Node2_action N_IncrementMachineSequenceNumber_Node2_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node1 -- No --> N_IncrementMachineSequenceNumber_Node2 N_IncrementMachineSequenceNumber_Node3{"The resend process finishes"}:::decision N_IncrementMachineSequenceNumber_Node3_action["The system adds 1 to
WS-FMT-MACHINE-SEQ to increment the
sequence number"]:::main N_IncrementMachineSequenceNumber_Node3 -- Yes --> N_IncrementMachineSequenceNumber_Node3_action N_IncrementMachineSequenceNumber_Node3_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node2 -- No --> N_IncrementMachineSequenceNumber_Node3 N_IncrementMachineSequenceNumber_Node4{"The system finishes processing the
email notification"}:::decision N_IncrementMachineSequenceNumber_Node4_action["The system adds 1 to
WS-FMT-MACHINE-SEQ to increment the
machine sequence number"]:::main N_IncrementMachineSequenceNumber_Node4 -- Yes --> N_IncrementMachineSequenceNumber_Node4_action N_IncrementMachineSequenceNumber_Node4_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node3 -- No --> N_IncrementMachineSequenceNumber_Node4 N_IncrementMachineSequenceNumber_Node5{"The notification processing
completes without errors"}:::decision N_IncrementMachineSequenceNumber_Node5_action["The system adds 1 to
WS-FMT-MACHINE-SEQ to increment the
machine sequence number"]:::main N_IncrementMachineSequenceNumber_Node5 -- Yes --> N_IncrementMachineSequenceNumber_Node5_action N_IncrementMachineSequenceNumber_Node5_action --> E_IncrementMachineSequenceNumber N_IncrementMachineSequenceNumber_Node4 -- No --> N_IncrementMachineSequenceNumber_Node5 N_IncrementMachineSequenceNumber_Node5 -- No --> E_IncrementMachineSequenceNumber
File: GCX126R.cbl
GIVEN:
Email send operation has completed (successfully or with handled errors)
WHEN:
Processing reaches the end of email send routine
THEN:
Add 1 to WS-FMT-MACHINE-SEQ counter
File: GCX126R.cbl
GIVEN:
The email sending process has completed (either successfully purged or successfully rerouted)
WHEN:
The email operation finishes
THEN:
The system adds 1 to WS-FMT-MACHINE-SEQ
File: GCX126R.cbl
GIVEN:
The email notification has been successfully resent to OM01247 and the message queue has been purged
WHEN:
The resend operation completes
THEN:
The system adds 1 to the formatted machine sequence number
File: GCX126R.cbl
GIVEN:
An email resend operation has completed (successfully or with error)
WHEN:
The resend process finishes
THEN:
The system adds 1 to WS-FMT-MACHINE-SEQ to increment the sequence number
File: GCX126R.cbl
GIVEN:
The email send operation has completed with any result status
WHEN:
The system finishes processing the email notification
THEN:
The system adds 1 to WS-FMT-MACHINE-SEQ to increment the machine sequence number
File: GCX126R.cbl
GIVEN:
An email notification has been successfully processed through EMCSEND2
WHEN:
The notification processing completes without errors
THEN:
The system adds 1 to WS-FMT-MACHINE-SEQ to increment the machine sequence number
β Consolidated Acceptance Criteria
- The email sending process is initiated → the system calls CCISCOM program with CCCOM and ISCOM parameters to setup the communication 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_CallCCISCOMtoSetupISCOM(["Start Step"])
E_CallCCISCOMtoSetupISCOM(["End Step"])
N_CallCCISCOMtoSetupISCOM_Node0{"The email sending process is
initiated"}:::decision N_CallCCISCOMtoSetupISCOM_Node0_action["The system calls CCISCOM program
with CCCOM and ISCOM parameters to
setup the communication context"]:::main N_CallCCISCOMtoSetupISCOM_Node0 -- Yes --> N_CallCCISCOMtoSetupISCOM_Node0_action N_CallCCISCOMtoSetupISCOM_Node0_action --> E_CallCCISCOMtoSetupISCOM S_CallCCISCOMtoSetupISCOM --> N_CallCCISCOMtoSetupISCOM_Node0 N_CallCCISCOMtoSetupISCOM_Node0 -- No --> E_CallCCISCOMtoSetupISCOM
initiated"}:::decision N_CallCCISCOMtoSetupISCOM_Node0_action["The system calls CCISCOM program
with CCCOM and ISCOM parameters to
setup the communication context"]:::main N_CallCCISCOMtoSetupISCOM_Node0 -- Yes --> N_CallCCISCOMtoSetupISCOM_Node0_action N_CallCCISCOMtoSetupISCOM_Node0_action --> E_CallCCISCOMtoSetupISCOM S_CallCCISCOMtoSetupISCOM --> N_CallCCISCOMtoSetupISCOM_Node0 N_CallCCISCOMtoSetupISCOM_Node0 -- No --> E_CallCCISCOMtoSetupISCOM
File: GCX126R.cbl
GIVEN:
The system needs to send an email notification via EMCSEND2
WHEN:
The email sending process is initiated
THEN:
- The system calls cciscom program with cccom
- Iscom parameters to setup the communication context
β Consolidated Acceptance Criteria
- The system invokes EMCSEND2 program → the email is sent with all specified parameters and the return status flag is populated with the result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType(["Start Step"])
E_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType(["End Step"])
N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0{"The system invokes EMCSEND2 program"}:::decision
N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0_action["The email is sent with all
specified parameters and the return
status flag is populated with the
result"]:::main N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0 -- Yes --> N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0_action N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0_action --> E_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType S_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType --> N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0 N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0 -- No --> E_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType
specified parameters and the return
status flag is populated with the
result"]:::main N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0 -- Yes --> N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0_action N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0_action --> E_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType S_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType --> N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0 N_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType_Node0 -- No --> E_CallEMCSEND2withParametersFromUserCodeDestinationFilenameToUserCodeCopyUserCodeSubjectKeywordsReportContentReturnStatusFlagSegmentNumbersItemType
File: GCX126R.cbl
GIVEN:
The communication context is established and email parameters are prepared including From User Code (EMI-FROM-USERCODE), Destination Filename (EMI-DESTINATION-FILENAME), To User Code (EMI-TO-USERCODE), Copy User Code (EMI-COPY-USERCODE), Subject (EMI-SUBJECT), Keywords (EMI-KEYWORDS), Report Content (MRLN-350-REPORT), Return Status Flag (EMI-RETURN-STATUS-FLAG), Segment Numbers (EMI-SEG-NO1, EMI-SEG-NO2), and Item Type (EMI-ITEM-TYPE)
WHEN:
The system invokes EMCSEND2 program
THEN:
- The email is sent with all specified parameters
- The return status flag is populated with the result
β Consolidated Acceptance Criteria
- The email sending operation finishes → the system calls ISCCCOM program with ISCOM and CCCOM parameters to restore the original communication context
- The email send operation finishes → the system calls ISCCCOM with ISCOM and CCCOM parameters to restore the communication control block 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_CallISCCCOMtoRestoreCCCOM(["Start Step"])
E_CallISCCCOMtoRestoreCCCOM(["End Step"])
N_CallISCCCOMtoRestoreCCCOM_Node0{"The email sending operation
finishes"}:::decision N_CallISCCCOMtoRestoreCCCOM_Node0_action["The system calls ISCCCOM program
with ISCOM and CCCOM parameters to
restore the original communication
context"]:::main N_CallISCCCOMtoRestoreCCCOM_Node0 -- Yes --> N_CallISCCCOMtoRestoreCCCOM_Node0_action N_CallISCCCOMtoRestoreCCCOM_Node0_action --> E_CallISCCCOMtoRestoreCCCOM S_CallISCCCOMtoRestoreCCCOM --> N_CallISCCCOMtoRestoreCCCOM_Node0 N_CallISCCCOMtoRestoreCCCOM_Node1{"The email send operation finishes"}:::decision N_CallISCCCOMtoRestoreCCCOM_Node1_action["The system calls ISCCCOM with ISCOM
and CCCOM parameters to restore the
communication control block state"]:::main N_CallISCCCOMtoRestoreCCCOM_Node1 -- Yes --> N_CallISCCCOMtoRestoreCCCOM_Node1_action N_CallISCCCOMtoRestoreCCCOM_Node1_action --> E_CallISCCCOMtoRestoreCCCOM N_CallISCCCOMtoRestoreCCCOM_Node0 -- No --> N_CallISCCCOMtoRestoreCCCOM_Node1 N_CallISCCCOMtoRestoreCCCOM_Node1 -- No --> E_CallISCCCOMtoRestoreCCCOM
finishes"}:::decision N_CallISCCCOMtoRestoreCCCOM_Node0_action["The system calls ISCCCOM program
with ISCOM and CCCOM parameters to
restore the original communication
context"]:::main N_CallISCCCOMtoRestoreCCCOM_Node0 -- Yes --> N_CallISCCCOMtoRestoreCCCOM_Node0_action N_CallISCCCOMtoRestoreCCCOM_Node0_action --> E_CallISCCCOMtoRestoreCCCOM S_CallISCCCOMtoRestoreCCCOM --> N_CallISCCCOMtoRestoreCCCOM_Node0 N_CallISCCCOMtoRestoreCCCOM_Node1{"The email send operation finishes"}:::decision N_CallISCCCOMtoRestoreCCCOM_Node1_action["The system calls ISCCCOM with ISCOM
and CCCOM parameters to restore the
communication control block state"]:::main N_CallISCCCOMtoRestoreCCCOM_Node1 -- Yes --> N_CallISCCCOMtoRestoreCCCOM_Node1_action N_CallISCCCOMtoRestoreCCCOM_Node1_action --> E_CallISCCCOMtoRestoreCCCOM N_CallISCCCOMtoRestoreCCCOM_Node0 -- No --> N_CallISCCCOMtoRestoreCCCOM_Node1 N_CallISCCCOMtoRestoreCCCOM_Node1 -- No --> E_CallISCCCOMtoRestoreCCCOM
File: GCX126R.cbl
GIVEN:
The EMCSEND2 program has completed sending the email
WHEN:
The email sending operation finishes
THEN:
- The system calls iscccom program with iscom
- Cccom parameters to restore the original communication context
File: GCX126R.cbl
GIVEN:
The EMCSEND2 call has completed and ISCOM contains updated communication information
WHEN:
The email send operation finishes
THEN:
- The system calls iscccom with iscom
- Cccom parameters to restore the communication control block state
β Consolidated Acceptance Criteria
- The email sending completes successfully → the system calls CIMS program with PURG function code and ALT-PCB to purge the message from the 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_NoErrorsPurgeIMSMessageQueue(["Start Step"])
E_NoErrorsPurgeIMSMessageQueue(["End Step"])
N_NoErrorsPurgeIMSMessageQueue_Node0{"The email sending completes
successfully"}:::decision N_NoErrorsPurgeIMSMessageQueue_Node0_action["The system calls CIMS program with
PURG function code and ALT-PCB to
purge the message from the queue"]:::main N_NoErrorsPurgeIMSMessageQueue_Node0 -- Yes --> N_NoErrorsPurgeIMSMessageQueue_Node0_action N_NoErrorsPurgeIMSMessageQueue_Node0_action --> E_NoErrorsPurgeIMSMessageQueue S_NoErrorsPurgeIMSMessageQueue --> N_NoErrorsPurgeIMSMessageQueue_Node0 N_NoErrorsPurgeIMSMessageQueue_Node0 -- No --> E_NoErrorsPurgeIMSMessageQueue
successfully"}:::decision N_NoErrorsPurgeIMSMessageQueue_Node0_action["The system calls CIMS program with
PURG function code and ALT-PCB to
purge the message from the queue"]:::main N_NoErrorsPurgeIMSMessageQueue_Node0 -- Yes --> N_NoErrorsPurgeIMSMessageQueue_Node0_action N_NoErrorsPurgeIMSMessageQueue_Node0_action --> E_NoErrorsPurgeIMSMessageQueue S_NoErrorsPurgeIMSMessageQueue --> N_NoErrorsPurgeIMSMessageQueue_Node0 N_NoErrorsPurgeIMSMessageQueue_Node0 -- No --> E_NoErrorsPurgeIMSMessageQueue
File: GCX126R.cbl
GIVEN:
The EMCSEND2 return status flag indicates no errors (EMI-NO-ERRORS)
WHEN:
The email sending completes successfully
THEN:
- The system calls cims program with purg function code
- Alt-pcb to purge the message from the queue
β Consolidated Acceptance Criteria
- The email sending fails due to invalid sender user code → the system sets error message to 'EMI - INVALID MERLIN FROM' in CCCOM error message field and calls CERR program to 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_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM(["Start Step"])
E_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM(["End Step"])
N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0{"The email sending fails due to
invalid sender user code"}:::decision N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0_action["The system sets error message to
EMI - INVALID MERLIN FROM in CCCOM
error message field and calls CERR
program to abort"]:::exclusion N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0 -- Yes -->|Alternative| N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0_action N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0_action --> E_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM S_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM --> N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0 N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0 -- No --> E_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM
invalid sender user code"}:::decision N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0_action["The system sets error message to
EMI - INVALID MERLIN FROM in CCCOM
error message field and calls CERR
program to abort"]:::exclusion N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0 -- Yes -->|Alternative| N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0_action N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0_action --> E_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM S_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM --> N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0 N_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM_Node0 -- No --> E_FromUserNotFoundSetErrorMessageEMIINVALIDMERLINFROM
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The EMCSEND2 return status flag indicates sender not found (EMI-FROM-NOT-FOUND)
WHEN:
The email sending fails due to invalid sender user code
THEN:
- The system sets error message to 'emi - invalid merlin from' in cccom error message field
- Calls cerr program to abort
β Consolidated Acceptance Criteria
- The email sending fails due to invalid recipient → the system moves EMI-TO-USERCODES(02) to WS-BAD-MERLIN-ID, clears EMI-TO-USERCODE, sets EMI-TO-USERCODES(01) to 'OM01247', sets EMI-DESTINATION-FILENAME to 'IN', and performs Z116-RESEND-MERLIN
- The email sending fails due to invalid recipient → the system moves EMI-TO-USERCODES(01) to WS-BAD-MERLIN-ID, clears EMI-TO-USERCODE, sets EMI-TO-USERCODES(01) to 'OM01247', sets EMI-DESTINATION-FILENAME to 'IN', and performs Z116-RESEND-MERLIN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ToCopyUserNotFoundIdentifyBadMerlinID(["Start Step"])
E_ToCopyUserNotFoundIdentifyBadMerlinID(["End Step"])
N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0{"The email sending fails due to
invalid recipient"}:::decision N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0_action["The system moves EMI-TO-USERCODES02
to WS-BAD-MERLIN-ID, clears
EMI-TO-USERCODE, sets
EMI-TO-USERCODES01 to OM01247 , sets
EMI-DESTINATION-FILENAME to IN , and
performs Z116-RESEND-MERLIN"]:::exclusion N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0 -- Yes -->|Alternative| N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0_action N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0_action --> E_ToCopyUserNotFoundIdentifyBadMerlinID S_ToCopyUserNotFoundIdentifyBadMerlinID --> N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0 N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1{"The email sending fails due to
invalid recipient"}:::decision N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1_action["The system moves EMI-TO-USERCODES01
to WS-BAD-MERLIN-ID, clears
EMI-TO-USERCODE, sets
EMI-TO-USERCODES01 to OM01247 , sets
EMI-DESTINATION-FILENAME to IN , and
performs Z116-RESEND-MERLIN"]:::exclusion N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1 -- Yes -->|Alternative| N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1_action N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1_action --> E_ToCopyUserNotFoundIdentifyBadMerlinID N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0 -- No --> N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1 N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1 -- No --> E_ToCopyUserNotFoundIdentifyBadMerlinID
invalid recipient"}:::decision N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0_action["The system moves EMI-TO-USERCODES02
to WS-BAD-MERLIN-ID, clears
EMI-TO-USERCODE, sets
EMI-TO-USERCODES01 to OM01247 , sets
EMI-DESTINATION-FILENAME to IN , and
performs Z116-RESEND-MERLIN"]:::exclusion N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0 -- Yes -->|Alternative| N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0_action N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0_action --> E_ToCopyUserNotFoundIdentifyBadMerlinID S_ToCopyUserNotFoundIdentifyBadMerlinID --> N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0 N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1{"The email sending fails due to
invalid recipient"}:::decision N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1_action["The system moves EMI-TO-USERCODES01
to WS-BAD-MERLIN-ID, clears
EMI-TO-USERCODE, sets
EMI-TO-USERCODES01 to OM01247 , sets
EMI-DESTINATION-FILENAME to IN , and
performs Z116-RESEND-MERLIN"]:::exclusion N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1 -- Yes -->|Alternative| N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1_action N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1_action --> E_ToCopyUserNotFoundIdentifyBadMerlinID N_ToCopyUserNotFoundIdentifyBadMerlinID_Node0 -- No --> N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1 N_ToCopyUserNotFoundIdentifyBadMerlinID_Node1 -- No --> E_ToCopyUserNotFoundIdentifyBadMerlinID
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The EMCSEND2 return status flag indicates recipient not found (EMI-TO-OR-COPY-NOT-FOUND) and the message type is unrelease (88-Z110-MRLN-TYPE-IS-UNRLSE)
WHEN:
The email sending fails due to invalid recipient
THEN:
The system moves EMI-TO-USERCODES(02) to WS-BAD-MERLIN-ID, clears EMI-TO-USERCODE, sets EMI-TO-USERCODES(01) to 'OM01247', sets EMI-DESTINATION-FILENAME to 'IN', and performs Z116-RESEND-MERLIN
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The EMCSEND2 return status flag indicates recipient not found (EMI-TO-OR-COPY-NOT-FOUND) and the message type is not unrelease
WHEN:
The email sending fails due to invalid recipient
THEN:
The system moves EMI-TO-USERCODES(01) to WS-BAD-MERLIN-ID, clears EMI-TO-USERCODE, sets EMI-TO-USERCODES(01) to 'OM01247', sets EMI-DESTINATION-FILENAME to 'IN', and performs Z116-RESEND-MERLIN
β Consolidated Acceptance Criteria
- The email has been rerouted to default user → the system clears EMI-SUBJECT, builds a new subject message containing WS-BAD-MERLIN-ID and text 'INVALID MERLIN TO - REPORT REROUTE', and performs Z116-RESEND-MERLIN again to send the 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_ResendFailedEmailtoOM01247withRerouteNotification(["Start Step"])
E_ResendFailedEmailtoOM01247withRerouteNotification(["End Step"])
N_ResendFailedEmailtoOM01247withRerouteNotification_Node0{"The email has been rerouted to
default user"}:::decision N_ResendFailedEmailtoOM01247withRerouteNotification_Node0_action["The system clears EMI-SUBJECT,
builds a new subject message
containing WS-BAD-MERLIN-ID and text
INVALID MERLIN TO - REPORT REROUTE ,
and performs Z116-RESEND-MERLIN
again to send the notification"]:::main N_ResendFailedEmailtoOM01247withRerouteNotification_Node0 -- Yes --> N_ResendFailedEmailtoOM01247withRerouteNotification_Node0_action N_ResendFailedEmailtoOM01247withRerouteNotification_Node0_action --> E_ResendFailedEmailtoOM01247withRerouteNotification S_ResendFailedEmailtoOM01247withRerouteNotification --> N_ResendFailedEmailtoOM01247withRerouteNotification_Node0 N_ResendFailedEmailtoOM01247withRerouteNotification_Node0 -- No --> E_ResendFailedEmailtoOM01247withRerouteNotification
default user"}:::decision N_ResendFailedEmailtoOM01247withRerouteNotification_Node0_action["The system clears EMI-SUBJECT,
builds a new subject message
containing WS-BAD-MERLIN-ID and text
INVALID MERLIN TO - REPORT REROUTE ,
and performs Z116-RESEND-MERLIN
again to send the notification"]:::main N_ResendFailedEmailtoOM01247withRerouteNotification_Node0 -- Yes --> N_ResendFailedEmailtoOM01247withRerouteNotification_Node0_action N_ResendFailedEmailtoOM01247withRerouteNotification_Node0_action --> E_ResendFailedEmailtoOM01247withRerouteNotification S_ResendFailedEmailtoOM01247withRerouteNotification --> N_ResendFailedEmailtoOM01247withRerouteNotification_Node0 N_ResendFailedEmailtoOM01247withRerouteNotification_Node0 -- No --> E_ResendFailedEmailtoOM01247withRerouteNotification
File: GCX126R.cbl
GIVEN:
The resend operation completed successfully (EMI-NO-ERRORS after Z116-RESEND-MERLIN)
WHEN:
The email has been rerouted to default user
THEN:
- The system clears emi-subject, builds a new subject message containing ws-bad-merlin-id
- Text 'invalid merlin to - report reroute', and performs z116-resend-merlin again to send the notification
β Consolidated Acceptance Criteria
- The email sending fails due to invalid destination filename → the system sets error message to 'EMI - INVALID MERLIN FILENAME' in CCCOM error message field and calls CERR program to 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_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME(["Start Step"])
E_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME(["End Step"])
N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0{"The email sending fails due to
invalid destination filename"}:::decision N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0_action["The system sets error message to
EMI - INVALID MERLIN FILENAME in
CCCOM error message field and calls
CERR program to abort"]:::exclusion N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- Yes -->|Alternative| N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0_action N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0_action --> E_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME S_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME --> N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0 N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- No --> E_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME
invalid destination filename"}:::decision N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0_action["The system sets error message to
EMI - INVALID MERLIN FILENAME in
CCCOM error message field and calls
CERR program to abort"]:::exclusion N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- Yes -->|Alternative| N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0_action N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0_action --> E_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME S_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME --> N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0 N_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- No --> E_FilenameInvalidSetErrorMessageEMIINVALIDMERLINFILENAME
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The EMCSEND2 return status flag indicates invalid filename (EMI-FILENAME-INVALID)
WHEN:
The email sending fails due to invalid destination filename
THEN:
- The system sets error message to 'emi - invalid merlin filename' in cccom error message field
- Calls cerr program to abort
β Consolidated Acceptance Criteria
- The return status indicates no errors (EMI-NO-ERRORS) → the system purges the alternate message queue to complete the email 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_NoErrorsEmailSentSuccessfully(["Start Step"])
E_NoErrorsEmailSentSuccessfully(["End Step"])
N_NoErrorsEmailSentSuccessfully_Node0{"The return status indicates no
errors EMI-NO-ERRORS"}:::decision N_NoErrorsEmailSentSuccessfully_Node0_action["The system purges the alternate
message queue to complete the email
transaction"]:::main N_NoErrorsEmailSentSuccessfully_Node0 -- Yes --> N_NoErrorsEmailSentSuccessfully_Node0_action N_NoErrorsEmailSentSuccessfully_Node0_action --> E_NoErrorsEmailSentSuccessfully S_NoErrorsEmailSentSuccessfully --> N_NoErrorsEmailSentSuccessfully_Node0 N_NoErrorsEmailSentSuccessfully_Node0 -- No --> E_NoErrorsEmailSentSuccessfully
errors EMI-NO-ERRORS"}:::decision N_NoErrorsEmailSentSuccessfully_Node0_action["The system purges the alternate
message queue to complete the email
transaction"]:::main N_NoErrorsEmailSentSuccessfully_Node0 -- Yes --> N_NoErrorsEmailSentSuccessfully_Node0_action N_NoErrorsEmailSentSuccessfully_Node0_action --> E_NoErrorsEmailSentSuccessfully S_NoErrorsEmailSentSuccessfully --> N_NoErrorsEmailSentSuccessfully_Node0 N_NoErrorsEmailSentSuccessfully_Node0 -- No --> E_NoErrorsEmailSentSuccessfully
File: GCX126R.cbl
GIVEN:
An email notification has been processed through EMCSEND2
WHEN:
The return status indicates no errors (EMI-NO-ERRORS)
THEN:
The system purges the alternate message queue to complete the email transaction
β Consolidated Acceptance Criteria
- The return status indicates the FROM user was not found (EMI-FROM-NOT-FOUND) → the system sets error message 'EMI - INVALID MERLIN FROM' and aborts the 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_FromUserNotFoundError(["Start Step"])
E_FromUserNotFoundError(["End Step"])
N_FromUserNotFoundError_Node0{"The return status indicates the
FROM user was not found
EMI-FROM-NOT-FOUND"}:::decision N_FromUserNotFoundError_Node0_action["The system sets error message EMI -
INVALID MERLIN FROM and aborts the
program"]:::main N_FromUserNotFoundError_Node0 -- Yes --> N_FromUserNotFoundError_Node0_action N_FromUserNotFoundError_Node0_action --> E_FromUserNotFoundError S_FromUserNotFoundError --> N_FromUserNotFoundError_Node0 N_FromUserNotFoundError_Node0 -- No --> E_FromUserNotFoundError
FROM user was not found
EMI-FROM-NOT-FOUND"}:::decision N_FromUserNotFoundError_Node0_action["The system sets error message EMI -
INVALID MERLIN FROM and aborts the
program"]:::main N_FromUserNotFoundError_Node0 -- Yes --> N_FromUserNotFoundError_Node0_action N_FromUserNotFoundError_Node0_action --> E_FromUserNotFoundError S_FromUserNotFoundError --> N_FromUserNotFoundError_Node0 N_FromUserNotFoundError_Node0 -- No --> E_FromUserNotFoundError
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification is being sent through EMCSEND2
WHEN:
The return status indicates the FROM user was not found (EMI-FROM-NOT-FOUND)
THEN:
The system sets error message 'EMI - INVALID MERLIN FROM' and aborts the program
β Consolidated Acceptance Criteria
- The system needs to identify the invalid recipient → the system captures the invalid Merlin ID from EMI-TO-USERCODES position 2 into WS-BAD-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_GetBadMerlinIDfromTOUSERCODES2(["Start Step"])
E_GetBadMerlinIDfromTOUSERCODES2(["End Step"])
N_GetBadMerlinIDfromTOUSERCODES2_Node0{"The system needs to identify the
invalid recipient"}:::decision N_GetBadMerlinIDfromTOUSERCODES2_Node0_action["The system captures the invalid
Merlin ID from EMI-TO-USERCODES
position 2 into WS-BAD-MERLIN-ID"]:::exclusion N_GetBadMerlinIDfromTOUSERCODES2_Node0 -- Yes -->|Alternative| N_GetBadMerlinIDfromTOUSERCODES2_Node0_action N_GetBadMerlinIDfromTOUSERCODES2_Node0_action --> E_GetBadMerlinIDfromTOUSERCODES2 S_GetBadMerlinIDfromTOUSERCODES2 --> N_GetBadMerlinIDfromTOUSERCODES2_Node0 N_GetBadMerlinIDfromTOUSERCODES2_Node0 -- No --> E_GetBadMerlinIDfromTOUSERCODES2
invalid recipient"}:::decision N_GetBadMerlinIDfromTOUSERCODES2_Node0_action["The system captures the invalid
Merlin ID from EMI-TO-USERCODES
position 2 into WS-BAD-MERLIN-ID"]:::exclusion N_GetBadMerlinIDfromTOUSERCODES2_Node0 -- Yes -->|Alternative| N_GetBadMerlinIDfromTOUSERCODES2_Node0_action N_GetBadMerlinIDfromTOUSERCODES2_Node0_action --> E_GetBadMerlinIDfromTOUSERCODES2 S_GetBadMerlinIDfromTOUSERCODES2 --> N_GetBadMerlinIDfromTOUSERCODES2_Node0 N_GetBadMerlinIDfromTOUSERCODES2_Node0 -- No --> E_GetBadMerlinIDfromTOUSERCODES2
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification has failed due to invalid TO or COPY recipient (EMI-TO-OR-COPY-NOT-FOUND) and the notification type is unreleased cargo (88-Z110-MRLN-TYPE-IS-UNRLSE)
WHEN:
The system needs to identify the invalid recipient
THEN:
The system captures the invalid Merlin ID from EMI-TO-USERCODES position 2 into WS-BAD-MERLIN-ID
β Consolidated Acceptance Criteria
- The system needs to identify the invalid recipient → the system captures the invalid Merlin ID from EMI-TO-USERCODES position 1 into WS-BAD-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_GetBadMerlinIDfromTOUSERCODES1(["Start Step"])
E_GetBadMerlinIDfromTOUSERCODES1(["End Step"])
N_GetBadMerlinIDfromTOUSERCODES1_Node0{"The system needs to identify the
invalid recipient"}:::decision N_GetBadMerlinIDfromTOUSERCODES1_Node0_action["The system captures the invalid
Merlin ID from EMI-TO-USERCODES
position 1 into WS-BAD-MERLIN-ID"]:::exclusion N_GetBadMerlinIDfromTOUSERCODES1_Node0 -- Yes -->|Alternative| N_GetBadMerlinIDfromTOUSERCODES1_Node0_action N_GetBadMerlinIDfromTOUSERCODES1_Node0_action --> E_GetBadMerlinIDfromTOUSERCODES1 S_GetBadMerlinIDfromTOUSERCODES1 --> N_GetBadMerlinIDfromTOUSERCODES1_Node0 N_GetBadMerlinIDfromTOUSERCODES1_Node0 -- No --> E_GetBadMerlinIDfromTOUSERCODES1
invalid recipient"}:::decision N_GetBadMerlinIDfromTOUSERCODES1_Node0_action["The system captures the invalid
Merlin ID from EMI-TO-USERCODES
position 1 into WS-BAD-MERLIN-ID"]:::exclusion N_GetBadMerlinIDfromTOUSERCODES1_Node0 -- Yes -->|Alternative| N_GetBadMerlinIDfromTOUSERCODES1_Node0_action N_GetBadMerlinIDfromTOUSERCODES1_Node0_action --> E_GetBadMerlinIDfromTOUSERCODES1 S_GetBadMerlinIDfromTOUSERCODES1 --> N_GetBadMerlinIDfromTOUSERCODES1_Node0 N_GetBadMerlinIDfromTOUSERCODES1_Node0 -- No --> E_GetBadMerlinIDfromTOUSERCODES1
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification has failed due to invalid TO or COPY recipient (EMI-TO-OR-COPY-NOT-FOUND) and the notification type is not unreleased cargo
WHEN:
The system needs to identify the invalid recipient
THEN:
The system captures the invalid Merlin ID from EMI-TO-USERCODES position 1 into WS-BAD-MERLIN-ID
β Consolidated Acceptance Criteria
- The system prepares to reroute the notification → the system clears EMI-TO-USERCODE, sets EMI-TO-USERCODES position 1 to 'OM01247', and sets destination filename to 'IN'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTOUSERCODES1toOM01247(["Start Step"])
E_SetTOUSERCODES1toOM01247(["End Step"])
N_SetTOUSERCODES1toOM01247_Node0{"The system prepares to reroute the
notification"}:::decision N_SetTOUSERCODES1toOM01247_Node0_action["The system clears EMI-TO-USERCODE,
sets EMI-TO-USERCODES position 1 to
OM01247 , and sets destination
filename to IN"]:::main N_SetTOUSERCODES1toOM01247_Node0 -- Yes --> N_SetTOUSERCODES1toOM01247_Node0_action N_SetTOUSERCODES1toOM01247_Node0_action --> E_SetTOUSERCODES1toOM01247 S_SetTOUSERCODES1toOM01247 --> N_SetTOUSERCODES1toOM01247_Node0 N_SetTOUSERCODES1toOM01247_Node0 -- No --> E_SetTOUSERCODES1toOM01247
notification"}:::decision N_SetTOUSERCODES1toOM01247_Node0_action["The system clears EMI-TO-USERCODE,
sets EMI-TO-USERCODES position 1 to
OM01247 , and sets destination
filename to IN"]:::main N_SetTOUSERCODES1toOM01247_Node0 -- Yes --> N_SetTOUSERCODES1toOM01247_Node0_action N_SetTOUSERCODES1toOM01247_Node0_action --> E_SetTOUSERCODES1toOM01247 S_SetTOUSERCODES1toOM01247 --> N_SetTOUSERCODES1toOM01247_Node0 N_SetTOUSERCODES1toOM01247_Node0 -- No --> E_SetTOUSERCODES1toOM01247
File: GCX126R.cbl
GIVEN:
An email notification has failed due to invalid TO or COPY recipient (EMI-TO-OR-COPY-NOT-FOUND)
WHEN:
The system prepares to reroute the notification
THEN:
The system clears EMI-TO-USERCODE, sets EMI-TO-USERCODES position 1 to 'OM01247', and sets destination filename to 'IN'
β Consolidated Acceptance Criteria
- The system prepares the reroute notification → the system clears EMI-SUBJECT and creates a message containing the invalid Merlin ID (WS-BAD-MERLIN-ID) with text 'INVALID MERLIN TO - REPORT REROUTE', then calls Z116-RESEND-MERLIN again to send this 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_PrepareRerouteNotificationSubject(["Start Step"])
E_PrepareRerouteNotificationSubject(["End Step"])
N_PrepareRerouteNotificationSubject_Node0{"The system prepares the reroute
notification"}:::decision N_PrepareRerouteNotificationSubject_Node0_action["The system clears EMI-SUBJECT and
creates a message containing the
invalid Merlin ID WS-BAD-MERLIN-ID
with text INVALID MERLIN TO - REPORT
REROUTE , then calls
Z116-RESEND-MERLIN again to send
this notification"]:::main N_PrepareRerouteNotificationSubject_Node0 -- Yes --> N_PrepareRerouteNotificationSubject_Node0_action N_PrepareRerouteNotificationSubject_Node0_action --> E_PrepareRerouteNotificationSubject S_PrepareRerouteNotificationSubject --> N_PrepareRerouteNotificationSubject_Node0 N_PrepareRerouteNotificationSubject_Node0 -- No --> E_PrepareRerouteNotificationSubject
notification"}:::decision N_PrepareRerouteNotificationSubject_Node0_action["The system clears EMI-SUBJECT and
creates a message containing the
invalid Merlin ID WS-BAD-MERLIN-ID
with text INVALID MERLIN TO - REPORT
REROUTE , then calls
Z116-RESEND-MERLIN again to send
this notification"]:::main N_PrepareRerouteNotificationSubject_Node0 -- Yes --> N_PrepareRerouteNotificationSubject_Node0_action N_PrepareRerouteNotificationSubject_Node0_action --> E_PrepareRerouteNotificationSubject S_PrepareRerouteNotificationSubject --> N_PrepareRerouteNotificationSubject_Node0 N_PrepareRerouteNotificationSubject_Node0 -- No --> E_PrepareRerouteNotificationSubject
File: GCX126R.cbl
GIVEN:
An email notification was successfully rerouted to default recipient (EMI-NO-ERRORS after resend)
WHEN:
The system prepares the reroute notification
THEN:
- The system clears emi-subject
- Creates a message containing the invalid merlin id (ws-bad-merlin-id) with text 'invalid merlin to - report reroute', then calls z116-resend-merlin again to send this notification
β Consolidated Acceptance Criteria
- The return status indicates the destination filename is invalid (EMI-FILENAME-INVALID) → the system sets error message 'EMI - INVALID MERLIN FILENAME' and aborts the 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_FilenameInvalidError(["Start Step"])
E_FilenameInvalidError(["End Step"])
N_FilenameInvalidError_Node0{"The return status indicates the
destination filename is invalid
EMI-FILENAME-INVALID"}:::decision N_FilenameInvalidError_Node0_action["The system sets error message EMI -
INVALID MERLIN FILENAME and aborts
the program"]:::exclusion N_FilenameInvalidError_Node0 -- Yes -->|Alternative| N_FilenameInvalidError_Node0_action N_FilenameInvalidError_Node0_action --> E_FilenameInvalidError S_FilenameInvalidError --> N_FilenameInvalidError_Node0 N_FilenameInvalidError_Node0 -- No --> E_FilenameInvalidError
destination filename is invalid
EMI-FILENAME-INVALID"}:::decision N_FilenameInvalidError_Node0_action["The system sets error message EMI -
INVALID MERLIN FILENAME and aborts
the program"]:::exclusion N_FilenameInvalidError_Node0 -- Yes -->|Alternative| N_FilenameInvalidError_Node0_action N_FilenameInvalidError_Node0_action --> E_FilenameInvalidError S_FilenameInvalidError --> N_FilenameInvalidError_Node0 N_FilenameInvalidError_Node0 -- No --> E_FilenameInvalidError
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification is being sent through EMCSEND2
WHEN:
The return status indicates the destination filename is invalid (EMI-FILENAME-INVALID)
THEN:
The system sets error message 'EMI - INVALID MERLIN FILENAME' and aborts the program
β Consolidated Acceptance Criteria
- The email send service returns a status indicating no errors occurred → the system purges the IMS alternate message 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_SendSuccessful(["Start Step"])
E_SendSuccessful(["End Step"])
N_SendSuccessful_Node0{"The email send service returns a
status indicating no errors occurred"}:::decision N_SendSuccessful_Node0_action["The system purges the IMS alternate
message queue"]:::main N_SendSuccessful_Node0 -- Yes --> N_SendSuccessful_Node0_action N_SendSuccessful_Node0_action --> E_SendSuccessful S_SendSuccessful --> N_SendSuccessful_Node0 N_SendSuccessful_Node0 -- No --> E_SendSuccessful
status indicating no errors occurred"}:::decision N_SendSuccessful_Node0_action["The system purges the IMS alternate
message queue"]:::main N_SendSuccessful_Node0 -- Yes --> N_SendSuccessful_Node0_action N_SendSuccessful_Node0_action --> E_SendSuccessful S_SendSuccessful --> N_SendSuccessful_Node0 N_SendSuccessful_Node0 -- No --> E_SendSuccessful
File: GCX126R.cbl
GIVEN:
The email resend operation to OM01247 has been attempted
WHEN:
The email send service returns a status indicating no errors occurred
THEN:
The system purges the IMS alternate message queue
β Consolidated Acceptance Criteria
- The email send service returns a status indicating the FROM usercode was not found → the system sets the error message to 'EMI - INVALID MERLIN FROM' and terminates processing abnormally
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AbendInvalidFROMUsercode(["Start Step"])
E_AbendInvalidFROMUsercode(["End Step"])
N_AbendInvalidFROMUsercode_Node0{"The email send service returns a
status indicating the FROM usercode
was not found"}:::decision N_AbendInvalidFROMUsercode_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FROM and
terminates processing abnormally"]:::main N_AbendInvalidFROMUsercode_Node0 -- Yes --> N_AbendInvalidFROMUsercode_Node0_action N_AbendInvalidFROMUsercode_Node0_action --> E_AbendInvalidFROMUsercode S_AbendInvalidFROMUsercode --> N_AbendInvalidFROMUsercode_Node0 N_AbendInvalidFROMUsercode_Node0 -- No --> E_AbendInvalidFROMUsercode
status indicating the FROM usercode
was not found"}:::decision N_AbendInvalidFROMUsercode_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FROM and
terminates processing abnormally"]:::main N_AbendInvalidFROMUsercode_Node0 -- Yes --> N_AbendInvalidFROMUsercode_Node0_action N_AbendInvalidFROMUsercode_Node0_action --> E_AbendInvalidFROMUsercode S_AbendInvalidFROMUsercode --> N_AbendInvalidFROMUsercode_Node0 N_AbendInvalidFROMUsercode_Node0 -- No --> E_AbendInvalidFROMUsercode
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The email resend operation to OM01247 has been attempted
WHEN:
The email send service returns a status indicating the FROM usercode was not found
THEN:
The system sets the error message to 'EMI - INVALID MERLIN FROM' and terminates processing abnormally
β Consolidated Acceptance Criteria
- The email send service returns a status indicating the TO or COPY usercode was not found → the system sets the error message to 'EMI - INVALID MERLIN TO OR COPY' and terminates processing abnormally
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AbendInvalidTOCOPYUsercode(["Start Step"])
E_AbendInvalidTOCOPYUsercode(["End Step"])
N_AbendInvalidTOCOPYUsercode_Node0{"The email send service returns a
status indicating the TO or COPY
usercode was not found"}:::decision N_AbendInvalidTOCOPYUsercode_Node0_action["The system sets the error message
to EMI - INVALID MERLIN TO OR COPY
and terminates processing abnormally"]:::main N_AbendInvalidTOCOPYUsercode_Node0 -- Yes --> N_AbendInvalidTOCOPYUsercode_Node0_action N_AbendInvalidTOCOPYUsercode_Node0_action --> E_AbendInvalidTOCOPYUsercode S_AbendInvalidTOCOPYUsercode --> N_AbendInvalidTOCOPYUsercode_Node0 N_AbendInvalidTOCOPYUsercode_Node0 -- No --> E_AbendInvalidTOCOPYUsercode
status indicating the TO or COPY
usercode was not found"}:::decision N_AbendInvalidTOCOPYUsercode_Node0_action["The system sets the error message
to EMI - INVALID MERLIN TO OR COPY
and terminates processing abnormally"]:::main N_AbendInvalidTOCOPYUsercode_Node0 -- Yes --> N_AbendInvalidTOCOPYUsercode_Node0_action N_AbendInvalidTOCOPYUsercode_Node0_action --> E_AbendInvalidTOCOPYUsercode S_AbendInvalidTOCOPYUsercode --> N_AbendInvalidTOCOPYUsercode_Node0 N_AbendInvalidTOCOPYUsercode_Node0 -- No --> E_AbendInvalidTOCOPYUsercode
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The email resend operation to OM01247 has been attempted
WHEN:
The email send service returns a status indicating the TO or COPY usercode was not found
THEN:
The system sets the error message to 'EMI - INVALID MERLIN TO OR COPY' and terminates processing abnormally
β Consolidated Acceptance Criteria
- The email send service returns a status indicating the filename is invalid → the system sets the error message to 'EMI - INVALID MERLIN FILENAME' and terminates processing abnormally
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AbendInvalidFilename(["Start Step"])
E_AbendInvalidFilename(["End Step"])
N_AbendInvalidFilename_Node0{"The email send service returns a
status indicating the filename is
invalid"}:::decision N_AbendInvalidFilename_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FILENAME and
terminates processing abnormally"]:::exclusion N_AbendInvalidFilename_Node0 -- Yes -->|Alternative| N_AbendInvalidFilename_Node0_action N_AbendInvalidFilename_Node0_action --> E_AbendInvalidFilename S_AbendInvalidFilename --> N_AbendInvalidFilename_Node0 N_AbendInvalidFilename_Node0 -- No --> E_AbendInvalidFilename
status indicating the filename is
invalid"}:::decision N_AbendInvalidFilename_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FILENAME and
terminates processing abnormally"]:::exclusion N_AbendInvalidFilename_Node0 -- Yes -->|Alternative| N_AbendInvalidFilename_Node0_action N_AbendInvalidFilename_Node0_action --> E_AbendInvalidFilename S_AbendInvalidFilename --> N_AbendInvalidFilename_Node0 N_AbendInvalidFilename_Node0 -- No --> E_AbendInvalidFilename
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The email resend operation to OM01247 has been attempted
WHEN:
The email send service returns a status indicating the filename is invalid
THEN:
The system sets the error message to 'EMI - INVALID MERLIN FILENAME' and terminates processing abnormally
β Consolidated Acceptance Criteria
- The resend process is initiated → the system clears the TO usercode field, sets TO usercode to 'OM01247', sets destination filename to 'IN', and calls EMCSEND2 with the updated parameters
- The system calls the Z116-RESEND-MERLIN procedure → the system invokes EMCSEND2 program with all email parameters including FROM usercode, destination filename, TO usercode, COPY usercode, subject, keywords, report content, return status flag, segment numbers, and item 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_CallEMCSEND2toResendEmail(["Start Step"])
E_CallEMCSEND2toResendEmail(["End Step"])
N_CallEMCSEND2toResendEmail_Node0{"The resend process is initiated"}:::decision
N_CallEMCSEND2toResendEmail_Node0_action["The system clears the TO usercode
field, sets TO usercode to OM01247 ,
sets destination filename to IN ,
and calls EMCSEND2 with the updated
parameters"]:::main N_CallEMCSEND2toResendEmail_Node0 -- Yes --> N_CallEMCSEND2toResendEmail_Node0_action N_CallEMCSEND2toResendEmail_Node0_action --> E_CallEMCSEND2toResendEmail S_CallEMCSEND2toResendEmail --> N_CallEMCSEND2toResendEmail_Node0 N_CallEMCSEND2toResendEmail_Node1{"The system calls the
Z116-RESEND-MERLIN procedure"}:::decision N_CallEMCSEND2toResendEmail_Node1_action["The system invokes EMCSEND2 program
with all email parameters including
FROM usercode, destination filename,
TO usercode, COPY usercode, subject,
keywords, report content, return
status flag, segment numbers, and
item type"]:::main N_CallEMCSEND2toResendEmail_Node1 -- Yes --> N_CallEMCSEND2toResendEmail_Node1_action N_CallEMCSEND2toResendEmail_Node1_action --> E_CallEMCSEND2toResendEmail N_CallEMCSEND2toResendEmail_Node0 -- No --> N_CallEMCSEND2toResendEmail_Node1 N_CallEMCSEND2toResendEmail_Node1 -- No --> E_CallEMCSEND2toResendEmail
field, sets TO usercode to OM01247 ,
sets destination filename to IN ,
and calls EMCSEND2 with the updated
parameters"]:::main N_CallEMCSEND2toResendEmail_Node0 -- Yes --> N_CallEMCSEND2toResendEmail_Node0_action N_CallEMCSEND2toResendEmail_Node0_action --> E_CallEMCSEND2toResendEmail S_CallEMCSEND2toResendEmail --> N_CallEMCSEND2toResendEmail_Node0 N_CallEMCSEND2toResendEmail_Node1{"The system calls the
Z116-RESEND-MERLIN procedure"}:::decision N_CallEMCSEND2toResendEmail_Node1_action["The system invokes EMCSEND2 program
with all email parameters including
FROM usercode, destination filename,
TO usercode, COPY usercode, subject,
keywords, report content, return
status flag, segment numbers, and
item type"]:::main N_CallEMCSEND2toResendEmail_Node1 -- Yes --> N_CallEMCSEND2toResendEmail_Node1_action N_CallEMCSEND2toResendEmail_Node1_action --> E_CallEMCSEND2toResendEmail N_CallEMCSEND2toResendEmail_Node0 -- No --> N_CallEMCSEND2toResendEmail_Node1 N_CallEMCSEND2toResendEmail_Node1 -- No --> E_CallEMCSEND2toResendEmail
File: GCX126R.cbl
GIVEN:
An email notification has failed to send to the primary recipient
WHEN:
The resend process is initiated
THEN:
The system clears the TO usercode field, sets TO usercode to 'OM01247', sets destination filename to 'IN', and calls EMCSEND2 with the updated parameters
File: GCX126R.cbl
GIVEN:
Email recipients have been reset with EMI-TO-USERCODES(01) set to OM01247 and EMI-DESTINATION-FILENAME set to IN
WHEN:
The system calls the Z116-RESEND-MERLIN procedure
THEN:
The system invokes EMCSEND2 program with all email parameters including FROM usercode, destination filename, TO usercode, COPY usercode, subject, keywords, report content, return status flag, segment numbers, and item type
β Consolidated Acceptance Criteria
- EMCSEND2 returns EMI-FROM-NOT-FOUND status → the system sets error message to 'EMI - INVALID MERLIN FROM' and performs Z900-ABEND 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_AbendInvalidFROMUsercode(["Start Step"])
E_AbendInvalidFROMUsercode(["End Step"])
N_AbendInvalidFROMUsercode_Node0{"EMCSEND2 returns EMI-FROM-NOT-FOUND
status"}:::decision N_AbendInvalidFROMUsercode_Node0_action["The system sets error message to
EMI - INVALID MERLIN FROM and
performs Z900-ABEND to terminate
processing"]:::exclusion N_AbendInvalidFROMUsercode_Node0 -- Yes -->|Alternative| N_AbendInvalidFROMUsercode_Node0_action N_AbendInvalidFROMUsercode_Node0_action --> E_AbendInvalidFROMUsercode S_AbendInvalidFROMUsercode --> N_AbendInvalidFROMUsercode_Node0 N_AbendInvalidFROMUsercode_Node0 -- No --> E_AbendInvalidFROMUsercode
status"}:::decision N_AbendInvalidFROMUsercode_Node0_action["The system sets error message to
EMI - INVALID MERLIN FROM and
performs Z900-ABEND to terminate
processing"]:::exclusion N_AbendInvalidFROMUsercode_Node0 -- Yes -->|Alternative| N_AbendInvalidFROMUsercode_Node0_action N_AbendInvalidFROMUsercode_Node0_action --> E_AbendInvalidFROMUsercode S_AbendInvalidFROMUsercode --> N_AbendInvalidFROMUsercode_Node0 N_AbendInvalidFROMUsercode_Node0 -- No --> E_AbendInvalidFROMUsercode
File: GCX126R.cbl
GIVEN:
An email resend is attempted via EMCSEND2
WHEN:
EMCSEND2 returns EMI-FROM-NOT-FOUND status
THEN:
The system sets error message to 'EMI - INVALID MERLIN FROM' and performs Z900-ABEND to terminate processing
β Consolidated Acceptance Criteria
- EMCSEND2 returns EMI-TO-OR-COPY-NOT-FOUND status → the system sets error message to 'EMI - INVALID MERLIN TO OR COPY' and performs Z900-ABEND 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_AbendInvalidTOCOPYUsercode(["Start Step"])
E_AbendInvalidTOCOPYUsercode(["End Step"])
N_AbendInvalidTOCOPYUsercode_Node0{"EMCSEND2 returns
EMI-TO-OR-COPY-NOT-FOUND status"}:::decision N_AbendInvalidTOCOPYUsercode_Node0_action["The system sets error message to
EMI - INVALID MERLIN TO OR COPY and
performs Z900-ABEND to terminate
processing"]:::exclusion N_AbendInvalidTOCOPYUsercode_Node0 -- Yes -->|Alternative| N_AbendInvalidTOCOPYUsercode_Node0_action N_AbendInvalidTOCOPYUsercode_Node0_action --> E_AbendInvalidTOCOPYUsercode S_AbendInvalidTOCOPYUsercode --> N_AbendInvalidTOCOPYUsercode_Node0 N_AbendInvalidTOCOPYUsercode_Node0 -- No --> E_AbendInvalidTOCOPYUsercode
EMI-TO-OR-COPY-NOT-FOUND status"}:::decision N_AbendInvalidTOCOPYUsercode_Node0_action["The system sets error message to
EMI - INVALID MERLIN TO OR COPY and
performs Z900-ABEND to terminate
processing"]:::exclusion N_AbendInvalidTOCOPYUsercode_Node0 -- Yes -->|Alternative| N_AbendInvalidTOCOPYUsercode_Node0_action N_AbendInvalidTOCOPYUsercode_Node0_action --> E_AbendInvalidTOCOPYUsercode S_AbendInvalidTOCOPYUsercode --> N_AbendInvalidTOCOPYUsercode_Node0 N_AbendInvalidTOCOPYUsercode_Node0 -- No --> E_AbendInvalidTOCOPYUsercode
File: GCX126R.cbl
GIVEN:
An email resend is attempted via EMCSEND2
WHEN:
EMCSEND2 returns EMI-TO-OR-COPY-NOT-FOUND status
THEN:
The system sets error message to 'EMI - INVALID MERLIN TO OR COPY' and performs Z900-ABEND to terminate processing
β Consolidated Acceptance Criteria
- EMCSEND2 returns EMI-FILENAME-INVALID status → the system sets error message to 'EMI - INVALID MERLIN FILENAME' and performs Z900-ABEND to terminate processing
- If the return status in Z116-RESEND-MERLIN → move 'EMI - INVALID MERLIN FILENAME' to CC-ERROR-MESSAGE and call CERR program to abend 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_AbendInvalidFilename(["Start Step"])
E_AbendInvalidFilename(["End Step"])
N_AbendInvalidFilename_Node0{"EMCSEND2 returns
EMI-FILENAME-INVALID status"}:::decision N_AbendInvalidFilename_Node0_action["The system sets error message to
EMI - INVALID MERLIN FILENAME and
performs Z900-ABEND to terminate
processing"]:::exclusion N_AbendInvalidFilename_Node0 -- Yes -->|Alternative| N_AbendInvalidFilename_Node0_action N_AbendInvalidFilename_Node0_action --> E_AbendInvalidFilename S_AbendInvalidFilename --> N_AbendInvalidFilename_Node0 N_AbendInvalidFilename_Node1{"The system evaluates the return
status in Z116-RESEND-MERLIN"}:::decision N_AbendInvalidFilename_Node1_action["Move EMI - INVALID MERLIN FILENAME
to CC-ERROR-MESSAGE and call CERR
program to abend the transaction"]:::exclusion N_AbendInvalidFilename_Node1 -- Yes -->|Alternative| N_AbendInvalidFilename_Node1_action N_AbendInvalidFilename_Node1_action --> E_AbendInvalidFilename N_AbendInvalidFilename_Node0 -- No --> N_AbendInvalidFilename_Node1 N_AbendInvalidFilename_Node1 -- No --> E_AbendInvalidFilename
EMI-FILENAME-INVALID status"}:::decision N_AbendInvalidFilename_Node0_action["The system sets error message to
EMI - INVALID MERLIN FILENAME and
performs Z900-ABEND to terminate
processing"]:::exclusion N_AbendInvalidFilename_Node0 -- Yes -->|Alternative| N_AbendInvalidFilename_Node0_action N_AbendInvalidFilename_Node0_action --> E_AbendInvalidFilename S_AbendInvalidFilename --> N_AbendInvalidFilename_Node0 N_AbendInvalidFilename_Node1{"The system evaluates the return
status in Z116-RESEND-MERLIN"}:::decision N_AbendInvalidFilename_Node1_action["Move EMI - INVALID MERLIN FILENAME
to CC-ERROR-MESSAGE and call CERR
program to abend the transaction"]:::exclusion N_AbendInvalidFilename_Node1 -- Yes -->|Alternative| N_AbendInvalidFilename_Node1_action N_AbendInvalidFilename_Node1_action --> E_AbendInvalidFilename N_AbendInvalidFilename_Node0 -- No --> N_AbendInvalidFilename_Node1 N_AbendInvalidFilename_Node1 -- No --> E_AbendInvalidFilename
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email resend is attempted via EMCSEND2
WHEN:
EMCSEND2 returns EMI-FILENAME-INVALID status
THEN:
The system sets error message to 'EMI - INVALID MERLIN FILENAME' and performs Z900-ABEND to terminate processing
File: GCX126R.cbl
GIVEN:
The EMCSEND2 program has returned with EMI-FILENAME-INVALID status
WHEN:
The system evaluates the return status in Z116-RESEND-MERLIN
THEN:
- Move 'emi - invalid merlin filename' to cc-error-message
- Call cerr program to abend the transaction
β Consolidated Acceptance Criteria
- The resend process begins → the system moves SPACES to EMI-TO-USERCODE to clear the 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_ClearTOUsercodeField(["Start Step"])
E_ClearTOUsercodeField(["End Step"])
N_ClearTOUsercodeField_Node0{"The resend process begins"}:::decision
N_ClearTOUsercodeField_Node0_action["The system moves SPACES to
EMI-TO-USERCODE to clear the field"]:::main N_ClearTOUsercodeField_Node0 -- Yes --> N_ClearTOUsercodeField_Node0_action N_ClearTOUsercodeField_Node0_action --> E_ClearTOUsercodeField S_ClearTOUsercodeField --> N_ClearTOUsercodeField_Node0 N_ClearTOUsercodeField_Node0 -- No --> E_ClearTOUsercodeField
EMI-TO-USERCODE to clear the field"]:::main N_ClearTOUsercodeField_Node0 -- Yes --> N_ClearTOUsercodeField_Node0_action N_ClearTOUsercodeField_Node0_action --> E_ClearTOUsercodeField S_ClearTOUsercodeField --> N_ClearTOUsercodeField_Node0 N_ClearTOUsercodeField_Node0 -- No --> E_ClearTOUsercodeField
File: GCX126R.cbl
GIVEN:
An email notification needs to be resent
WHEN:
The resend process begins
THEN:
The system moves SPACES to EMI-TO-USERCODE to clear the field
β Consolidated Acceptance Criteria
- Setting up the resend parameters → the system moves 'OM01247' to EMI-TO-USERCODES(01) as the default 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_SetTOUsercodetoOM01247(["Start Step"])
E_SetTOUsercodetoOM01247(["End Step"])
N_SetTOUsercodetoOM01247_Node0{"Setting up the resend parameters"}:::decision
N_SetTOUsercodetoOM01247_Node0_action["The system moves OM01247 to
EMI-TO-USERCODES01 as the default
recipient"]:::main N_SetTOUsercodetoOM01247_Node0 -- Yes --> N_SetTOUsercodetoOM01247_Node0_action N_SetTOUsercodetoOM01247_Node0_action --> E_SetTOUsercodetoOM01247 S_SetTOUsercodetoOM01247 --> N_SetTOUsercodetoOM01247_Node0 N_SetTOUsercodetoOM01247_Node0 -- No --> E_SetTOUsercodetoOM01247
EMI-TO-USERCODES01 as the default
recipient"]:::main N_SetTOUsercodetoOM01247_Node0 -- Yes --> N_SetTOUsercodetoOM01247_Node0_action N_SetTOUsercodetoOM01247_Node0_action --> E_SetTOUsercodetoOM01247 S_SetTOUsercodetoOM01247 --> N_SetTOUsercodetoOM01247_Node0 N_SetTOUsercodetoOM01247_Node0 -- No --> E_SetTOUsercodetoOM01247
File: GCX126R.cbl
GIVEN:
The TO usercode field has been cleared
WHEN:
Setting up the resend parameters
THEN:
The system moves 'OM01247' to EMI-TO-USERCODES(01) as the default recipient
β Consolidated Acceptance Criteria
- Configuring the destination for resend → the system moves 'IN' to EMI-DESTINATION-FILENAME
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationFilenametoIN(["Start Step"])
E_SetDestinationFilenametoIN(["End Step"])
N_SetDestinationFilenametoIN_Node0{"Configuring the destination for
resend"}:::decision N_SetDestinationFilenametoIN_Node0_action["The system moves IN to
EMI-DESTINATION-FILENAME"]:::main N_SetDestinationFilenametoIN_Node0 -- Yes --> N_SetDestinationFilenametoIN_Node0_action N_SetDestinationFilenametoIN_Node0_action --> E_SetDestinationFilenametoIN S_SetDestinationFilenametoIN --> N_SetDestinationFilenametoIN_Node0 N_SetDestinationFilenametoIN_Node0 -- No --> E_SetDestinationFilenametoIN
resend"}:::decision N_SetDestinationFilenametoIN_Node0_action["The system moves IN to
EMI-DESTINATION-FILENAME"]:::main N_SetDestinationFilenametoIN_Node0 -- Yes --> N_SetDestinationFilenametoIN_Node0_action N_SetDestinationFilenametoIN_Node0_action --> E_SetDestinationFilenametoIN S_SetDestinationFilenametoIN --> N_SetDestinationFilenametoIN_Node0 N_SetDestinationFilenametoIN_Node0 -- No --> E_SetDestinationFilenametoIN
File: GCX126R.cbl
GIVEN:
The recipient has been set to the default usercode
WHEN:
Configuring the destination for resend
THEN:
The system moves 'IN' to EMI-DESTINATION-FILENAME
β Consolidated Acceptance Criteria
- Ready to resend the email → the system calls EMCSEND2 passing ISCOM, EMI-FROM-USERCODE, EMI-DESTINATION-FILENAME, EMI-TO-USERCODE, EMI-COPY-USERCODE, EMI-SUBJECT, EMI-KEYWORDS, MRLN-350-REPORT, EMI-RETURN-STATUS-FLAG, EMI-SEG-NO1, EMI-SEG-NO2, and EMI-ITEM-TYPE 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_CallEMCSEND2withUpdatedParameters(["Start Step"])
E_CallEMCSEND2withUpdatedParameters(["End Step"])
N_CallEMCSEND2withUpdatedParameters_Node0{"Ready to resend the email"}:::decision
N_CallEMCSEND2withUpdatedParameters_Node0_action["The system calls EMCSEND2 passing
ISCOM, EMI-FROM-USERCODE,
EMI-DESTINATION-FILENAME,
EMI-TO-USERCODE, EMI-COPY-USERCODE,
EMI-SUBJECT, EMI-KEYWORDS,
MRLN-350-REPORT,
EMI-RETURN-STATUS-FLAG, EMI-SEG-NO1,
EMI-SEG-NO2, and EMI-ITEM-TYPE
parameters"]:::main N_CallEMCSEND2withUpdatedParameters_Node0 -- Yes --> N_CallEMCSEND2withUpdatedParameters_Node0_action N_CallEMCSEND2withUpdatedParameters_Node0_action --> E_CallEMCSEND2withUpdatedParameters S_CallEMCSEND2withUpdatedParameters --> N_CallEMCSEND2withUpdatedParameters_Node0 N_CallEMCSEND2withUpdatedParameters_Node0 -- No --> E_CallEMCSEND2withUpdatedParameters
ISCOM, EMI-FROM-USERCODE,
EMI-DESTINATION-FILENAME,
EMI-TO-USERCODE, EMI-COPY-USERCODE,
EMI-SUBJECT, EMI-KEYWORDS,
MRLN-350-REPORT,
EMI-RETURN-STATUS-FLAG, EMI-SEG-NO1,
EMI-SEG-NO2, and EMI-ITEM-TYPE
parameters"]:::main N_CallEMCSEND2withUpdatedParameters_Node0 -- Yes --> N_CallEMCSEND2withUpdatedParameters_Node0_action N_CallEMCSEND2withUpdatedParameters_Node0_action --> E_CallEMCSEND2withUpdatedParameters S_CallEMCSEND2withUpdatedParameters --> N_CallEMCSEND2withUpdatedParameters_Node0 N_CallEMCSEND2withUpdatedParameters_Node0 -- No --> E_CallEMCSEND2withUpdatedParameters
File: GCX126R.cbl
GIVEN:
All resend parameters have been configured (TO usercode = OM01247, destination = IN)
WHEN:
Ready to resend the email
THEN:
The system calls EMCSEND2 passing ISCOM, EMI-FROM-USERCODE, EMI-DESTINATION-FILENAME, EMI-TO-USERCODE, EMI-COPY-USERCODE, EMI-SUBJECT, EMI-KEYWORDS, MRLN-350-REPORT, EMI-RETURN-STATUS-FLAG, EMI-SEG-NO1, EMI-SEG-NO2, and EMI-ITEM-TYPE parameters
β Consolidated Acceptance Criteria
- The resend email process is initiated → the system calls CCISCOM with CCCOM and ISCOM parameters to initialize the communication control block for email 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_CallCCISCOMtoInitializeISCOM(["Start Step"])
E_CallCCISCOMtoInitializeISCOM(["End Step"])
N_CallCCISCOMtoInitializeISCOM_Node0{"The resend email process is
initiated"}:::decision N_CallCCISCOMtoInitializeISCOM_Node0_action["The system calls CCISCOM with CCCOM
and ISCOM parameters to initialize
the communication control block for
email operations"]:::main N_CallCCISCOMtoInitializeISCOM_Node0 -- Yes --> N_CallCCISCOMtoInitializeISCOM_Node0_action N_CallCCISCOMtoInitializeISCOM_Node0_action --> E_CallCCISCOMtoInitializeISCOM S_CallCCISCOMtoInitializeISCOM --> N_CallCCISCOMtoInitializeISCOM_Node0 N_CallCCISCOMtoInitializeISCOM_Node0 -- No --> E_CallCCISCOMtoInitializeISCOM
initiated"}:::decision N_CallCCISCOMtoInitializeISCOM_Node0_action["The system calls CCISCOM with CCCOM
and ISCOM parameters to initialize
the communication control block for
email operations"]:::main N_CallCCISCOMtoInitializeISCOM_Node0 -- Yes --> N_CallCCISCOMtoInitializeISCOM_Node0_action N_CallCCISCOMtoInitializeISCOM_Node0_action --> E_CallCCISCOMtoInitializeISCOM S_CallCCISCOMtoInitializeISCOM --> N_CallCCISCOMtoInitializeISCOM_Node0 N_CallCCISCOMtoInitializeISCOM_Node0 -- No --> E_CallCCISCOMtoInitializeISCOM
File: GCX126R.cbl
GIVEN:
The system needs to send an email notification and CCCOM contains current session information
WHEN:
The resend email process is initiated
THEN:
- The system calls cciscom with cccom
- Iscom parameters to initialize the communication control block for email operations
β Consolidated Acceptance Criteria
- The system executes the email send operation → the system calls EMCSEND2 with ISCOM, from user code, destination filename, to user code, copy user code, subject, keywords, report content (MRLN-350-REPORT), return status flag, segment numbers, and item type to send 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_CallEMCSEND2withParameters(["Start Step"])
E_CallEMCSEND2withParameters(["End Step"])
N_CallEMCSEND2withParameters_Node0{"The system executes the email send
operation"}:::decision N_CallEMCSEND2withParameters_Node0_action["The system calls EMCSEND2 with
ISCOM, from user code, destination
filename, to user code, copy user
code, subject, keywords, report
content MRLN-350-REPORT, return
status flag, segment numbers, and
item type to send the email
notification"]:::main N_CallEMCSEND2withParameters_Node0 -- Yes --> N_CallEMCSEND2withParameters_Node0_action N_CallEMCSEND2withParameters_Node0_action --> E_CallEMCSEND2withParameters S_CallEMCSEND2withParameters --> N_CallEMCSEND2withParameters_Node0 N_CallEMCSEND2withParameters_Node0 -- No --> E_CallEMCSEND2withParameters
operation"}:::decision N_CallEMCSEND2withParameters_Node0_action["The system calls EMCSEND2 with
ISCOM, from user code, destination
filename, to user code, copy user
code, subject, keywords, report
content MRLN-350-REPORT, return
status flag, segment numbers, and
item type to send the email
notification"]:::main N_CallEMCSEND2withParameters_Node0 -- Yes --> N_CallEMCSEND2withParameters_Node0_action N_CallEMCSEND2withParameters_Node0_action --> E_CallEMCSEND2withParameters S_CallEMCSEND2withParameters --> N_CallEMCSEND2withParameters_Node0 N_CallEMCSEND2withParameters_Node0 -- No --> E_CallEMCSEND2withParameters
File: GCX126R.cbl
GIVEN:
The communication control block is initialized and all email parameters are prepared including from user code, destination filename, to user code, copy user code, subject, keywords, and report content
WHEN:
The system executes the email send operation
THEN:
The system calls EMCSEND2 with ISCOM, from user code, destination filename, to user code, copy user code, subject, keywords, report content (MRLN-350-REPORT), return status flag, segment numbers, and item type to send the email notification
β Consolidated Acceptance Criteria
- If the email send result → the system moves 'EMI - INVALID MERLIN FROM' to the error message field in CCCOM and performs the abend routine (Z900-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_SetErrorInvalidMerlinFROM(["Start Step"])
E_SetErrorInvalidMerlinFROM(["End Step"])
N_SetErrorInvalidMerlinFROM_Node0{"The system evaluates the email send
result"}:::decision N_SetErrorInvalidMerlinFROM_Node0_action["The system moves EMI - INVALID
MERLIN FROM to the error message
field in CCCOM and performs the
abend routine Z900-ABEND"]:::exclusion N_SetErrorInvalidMerlinFROM_Node0 -- Yes -->|Alternative| N_SetErrorInvalidMerlinFROM_Node0_action N_SetErrorInvalidMerlinFROM_Node0_action --> E_SetErrorInvalidMerlinFROM S_SetErrorInvalidMerlinFROM --> N_SetErrorInvalidMerlinFROM_Node0 N_SetErrorInvalidMerlinFROM_Node0 -- No --> E_SetErrorInvalidMerlinFROM
result"}:::decision N_SetErrorInvalidMerlinFROM_Node0_action["The system moves EMI - INVALID
MERLIN FROM to the error message
field in CCCOM and performs the
abend routine Z900-ABEND"]:::exclusion N_SetErrorInvalidMerlinFROM_Node0 -- Yes -->|Alternative| N_SetErrorInvalidMerlinFROM_Node0_action N_SetErrorInvalidMerlinFROM_Node0_action --> E_SetErrorInvalidMerlinFROM S_SetErrorInvalidMerlinFROM --> N_SetErrorInvalidMerlinFROM_Node0 N_SetErrorInvalidMerlinFROM_Node0 -- No --> E_SetErrorInvalidMerlinFROM
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The EMCSEND2 call completed and the return status flag indicates the sender user code was not found (EMI-FROM-NOT-FOUND)
WHEN:
The system evaluates the email send result
THEN:
- The system moves 'emi - invalid merlin from' to the error message field in cccom
- Performs the abend routine (z900-abend)
β Consolidated Acceptance Criteria
- If the email send result → the system moves 'EMI - INVALID MERLIN TO OR COPY' to the error message field in CCCOM and performs the abend routine (Z900-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_SetErrorInvalidMerlinTOorCOPY(["Start Step"])
E_SetErrorInvalidMerlinTOorCOPY(["End Step"])
N_SetErrorInvalidMerlinTOorCOPY_Node0{"The system evaluates the email send
result"}:::decision N_SetErrorInvalidMerlinTOorCOPY_Node0_action["The system moves EMI - INVALID
MERLIN TO OR COPY to the error
message field in CCCOM and performs
the abend routine Z900-ABEND"]:::exclusion N_SetErrorInvalidMerlinTOorCOPY_Node0 -- Yes -->|Alternative| N_SetErrorInvalidMerlinTOorCOPY_Node0_action N_SetErrorInvalidMerlinTOorCOPY_Node0_action --> E_SetErrorInvalidMerlinTOorCOPY S_SetErrorInvalidMerlinTOorCOPY --> N_SetErrorInvalidMerlinTOorCOPY_Node0 N_SetErrorInvalidMerlinTOorCOPY_Node0 -- No --> E_SetErrorInvalidMerlinTOorCOPY
result"}:::decision N_SetErrorInvalidMerlinTOorCOPY_Node0_action["The system moves EMI - INVALID
MERLIN TO OR COPY to the error
message field in CCCOM and performs
the abend routine Z900-ABEND"]:::exclusion N_SetErrorInvalidMerlinTOorCOPY_Node0 -- Yes -->|Alternative| N_SetErrorInvalidMerlinTOorCOPY_Node0_action N_SetErrorInvalidMerlinTOorCOPY_Node0_action --> E_SetErrorInvalidMerlinTOorCOPY S_SetErrorInvalidMerlinTOorCOPY --> N_SetErrorInvalidMerlinTOorCOPY_Node0 N_SetErrorInvalidMerlinTOorCOPY_Node0 -- No --> E_SetErrorInvalidMerlinTOorCOPY
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The EMCSEND2 call completed and the return status flag indicates the recipient or copy user code was not found (EMI-TO-OR-COPY-NOT-FOUND)
WHEN:
The system evaluates the email send result
THEN:
- The system moves 'emi - invalid merlin to or copy' to the error message field in cccom
- Performs the abend routine (z900-abend)
β Consolidated Acceptance Criteria
- If the email send result → the system moves 'EMI - INVALID MERLIN FILENAME' to the error message field in CCCOM and performs the abend routine (Z900-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_SetErrorInvalidMerlinFilename(["Start Step"])
E_SetErrorInvalidMerlinFilename(["End Step"])
N_SetErrorInvalidMerlinFilename_Node0{"The system evaluates the email send
result"}:::decision N_SetErrorInvalidMerlinFilename_Node0_action["The system moves EMI - INVALID
MERLIN FILENAME to the error message
field in CCCOM and performs the
abend routine Z900-ABEND"]:::exclusion N_SetErrorInvalidMerlinFilename_Node0 -- Yes -->|Alternative| N_SetErrorInvalidMerlinFilename_Node0_action N_SetErrorInvalidMerlinFilename_Node0_action --> E_SetErrorInvalidMerlinFilename S_SetErrorInvalidMerlinFilename --> N_SetErrorInvalidMerlinFilename_Node0 N_SetErrorInvalidMerlinFilename_Node0 -- No --> E_SetErrorInvalidMerlinFilename
result"}:::decision N_SetErrorInvalidMerlinFilename_Node0_action["The system moves EMI - INVALID
MERLIN FILENAME to the error message
field in CCCOM and performs the
abend routine Z900-ABEND"]:::exclusion N_SetErrorInvalidMerlinFilename_Node0 -- Yes -->|Alternative| N_SetErrorInvalidMerlinFilename_Node0_action N_SetErrorInvalidMerlinFilename_Node0_action --> E_SetErrorInvalidMerlinFilename S_SetErrorInvalidMerlinFilename --> N_SetErrorInvalidMerlinFilename_Node0 N_SetErrorInvalidMerlinFilename_Node0 -- No --> E_SetErrorInvalidMerlinFilename
File: GCX126R.cbl
GIVEN:
The EMCSEND2 call completed and the return status flag indicates the destination filename is invalid (EMI-FILENAME-INVALID)
WHEN:
The system evaluates the email send result
THEN:
- The system moves 'emi - invalid merlin filename' to the error message field in cccom
- Performs the abend routine (z900-abend)
β Consolidated Acceptance Criteria
- The return status flag indicates EMI-NO-ERRORS → the system purges the message from the alternate PCB message queue and increments the machine 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_NoErrorsPurgeMessageQueue(["Start Step"])
E_NoErrorsPurgeMessageQueue(["End Step"])
N_NoErrorsPurgeMessageQueue_Node0{"The return status flag indicates
EMI-NO-ERRORS"}:::decision N_NoErrorsPurgeMessageQueue_Node0_action["The system purges the message from
the alternate PCB message queue and
increments the machine sequence
number"]:::main N_NoErrorsPurgeMessageQueue_Node0 -- Yes --> N_NoErrorsPurgeMessageQueue_Node0_action N_NoErrorsPurgeMessageQueue_Node0_action --> E_NoErrorsPurgeMessageQueue S_NoErrorsPurgeMessageQueue --> N_NoErrorsPurgeMessageQueue_Node0 N_NoErrorsPurgeMessageQueue_Node0 -- No --> E_NoErrorsPurgeMessageQueue
EMI-NO-ERRORS"}:::decision N_NoErrorsPurgeMessageQueue_Node0_action["The system purges the message from
the alternate PCB message queue and
increments the machine sequence
number"]:::main N_NoErrorsPurgeMessageQueue_Node0 -- Yes --> N_NoErrorsPurgeMessageQueue_Node0_action N_NoErrorsPurgeMessageQueue_Node0_action --> E_NoErrorsPurgeMessageQueue S_NoErrorsPurgeMessageQueue --> N_NoErrorsPurgeMessageQueue_Node0 N_NoErrorsPurgeMessageQueue_Node0 -- No --> E_NoErrorsPurgeMessageQueue
File: GCX126R.cbl
GIVEN:
An email notification has been sent via EMCSEND2
WHEN:
The return status flag indicates EMI-NO-ERRORS
THEN:
- The system purges the message from the alternate pcb message queue
- Increments the machine sequence number
β Consolidated Acceptance Criteria
- The return status flag indicates EMI-FROM-NOT-FOUND → the system sets the error message to 'EMI - INVALID MERLIN FROM' and aborts 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_AbortwithErrorMessageEMIINVALIDMERLINFROM(["Start Step"])
E_AbortwithErrorMessageEMIINVALIDMERLINFROM(["End Step"])
N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0{"The return status flag indicates
EMI-FROM-NOT-FOUND"}:::decision N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FROM and
aborts processing"]:::main N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0 -- Yes --> N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0_action N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0_action --> E_AbortwithErrorMessageEMIINVALIDMERLINFROM S_AbortwithErrorMessageEMIINVALIDMERLINFROM --> N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0 N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0 -- No --> E_AbortwithErrorMessageEMIINVALIDMERLINFROM
EMI-FROM-NOT-FOUND"}:::decision N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FROM and
aborts processing"]:::main N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0 -- Yes --> N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0_action N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0_action --> E_AbortwithErrorMessageEMIINVALIDMERLINFROM S_AbortwithErrorMessageEMIINVALIDMERLINFROM --> N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0 N_AbortwithErrorMessageEMIINVALIDMERLINFROM_Node0 -- No --> E_AbortwithErrorMessageEMIINVALIDMERLINFROM
File: GCX126R.cbl
GIVEN:
An email notification has been attempted via EMCSEND2
WHEN:
The return status flag indicates EMI-FROM-NOT-FOUND
THEN:
The system sets the error message to 'EMI - INVALID MERLIN FROM' and aborts processing
β Consolidated Acceptance Criteria
- The return status flag indicates EMI-TO-OR-COPY-NOT-FOUND → the system saves the invalid Merlin ID from TO-USERCODES position 02 to WS-BAD-MERLIN-ID 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_SaveBadMerlinIDfromTOUSERCODES02(["Start Step"])
E_SaveBadMerlinIDfromTOUSERCODES02(["End Step"])
N_SaveBadMerlinIDfromTOUSERCODES02_Node0{"The return status flag indicates
EMI-TO-OR-COPY-NOT-FOUND"}:::decision N_SaveBadMerlinIDfromTOUSERCODES02_Node0_action["The system saves the invalid Merlin
ID from TO-USERCODES position 02 to
WS-BAD-MERLIN-ID for error reporting"]:::main N_SaveBadMerlinIDfromTOUSERCODES02_Node0 -- Yes --> N_SaveBadMerlinIDfromTOUSERCODES02_Node0_action N_SaveBadMerlinIDfromTOUSERCODES02_Node0_action --> E_SaveBadMerlinIDfromTOUSERCODES02 S_SaveBadMerlinIDfromTOUSERCODES02 --> N_SaveBadMerlinIDfromTOUSERCODES02_Node0 N_SaveBadMerlinIDfromTOUSERCODES02_Node0 -- No --> E_SaveBadMerlinIDfromTOUSERCODES02
EMI-TO-OR-COPY-NOT-FOUND"}:::decision N_SaveBadMerlinIDfromTOUSERCODES02_Node0_action["The system saves the invalid Merlin
ID from TO-USERCODES position 02 to
WS-BAD-MERLIN-ID for error reporting"]:::main N_SaveBadMerlinIDfromTOUSERCODES02_Node0 -- Yes --> N_SaveBadMerlinIDfromTOUSERCODES02_Node0_action N_SaveBadMerlinIDfromTOUSERCODES02_Node0_action --> E_SaveBadMerlinIDfromTOUSERCODES02 S_SaveBadMerlinIDfromTOUSERCODES02 --> N_SaveBadMerlinIDfromTOUSERCODES02_Node0 N_SaveBadMerlinIDfromTOUSERCODES02_Node0 -- No --> E_SaveBadMerlinIDfromTOUSERCODES02
File: GCX126R.cbl
GIVEN:
An unrelease type email notification has been attempted via EMCSEND2 and the message type is UNRLSE
WHEN:
The return status flag indicates EMI-TO-OR-COPY-NOT-FOUND
THEN:
The system saves the invalid Merlin ID from TO-USERCODES position 02 to WS-BAD-MERLIN-ID for error reporting
β Consolidated Acceptance Criteria
- The return status flag indicates EMI-TO-OR-COPY-NOT-FOUND → the system saves the invalid Merlin ID from TO-USERCODES position 01 to WS-BAD-MERLIN-ID 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_SaveBadMerlinIDfromTOUSERCODES01(["Start Step"])
E_SaveBadMerlinIDfromTOUSERCODES01(["End Step"])
N_SaveBadMerlinIDfromTOUSERCODES01_Node0{"The return status flag indicates
EMI-TO-OR-COPY-NOT-FOUND"}:::decision N_SaveBadMerlinIDfromTOUSERCODES01_Node0_action["The system saves the invalid Merlin
ID from TO-USERCODES position 01 to
WS-BAD-MERLIN-ID for error reporting"]:::main N_SaveBadMerlinIDfromTOUSERCODES01_Node0 -- Yes --> N_SaveBadMerlinIDfromTOUSERCODES01_Node0_action N_SaveBadMerlinIDfromTOUSERCODES01_Node0_action --> E_SaveBadMerlinIDfromTOUSERCODES01 S_SaveBadMerlinIDfromTOUSERCODES01 --> N_SaveBadMerlinIDfromTOUSERCODES01_Node0 N_SaveBadMerlinIDfromTOUSERCODES01_Node0 -- No --> E_SaveBadMerlinIDfromTOUSERCODES01
EMI-TO-OR-COPY-NOT-FOUND"}:::decision N_SaveBadMerlinIDfromTOUSERCODES01_Node0_action["The system saves the invalid Merlin
ID from TO-USERCODES position 01 to
WS-BAD-MERLIN-ID for error reporting"]:::main N_SaveBadMerlinIDfromTOUSERCODES01_Node0 -- Yes --> N_SaveBadMerlinIDfromTOUSERCODES01_Node0_action N_SaveBadMerlinIDfromTOUSERCODES01_Node0_action --> E_SaveBadMerlinIDfromTOUSERCODES01 S_SaveBadMerlinIDfromTOUSERCODES01 --> N_SaveBadMerlinIDfromTOUSERCODES01_Node0 N_SaveBadMerlinIDfromTOUSERCODES01_Node0 -- No --> E_SaveBadMerlinIDfromTOUSERCODES01
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A non-unrelease type email notification has been attempted via EMCSEND2 and the message type is not UNRLSE
WHEN:
The return status flag indicates EMI-TO-OR-COPY-NOT-FOUND
THEN:
The system saves the invalid Merlin ID from TO-USERCODES position 01 to WS-BAD-MERLIN-ID for error reporting
β Consolidated Acceptance Criteria
- The system prepares to reroute the notification → the system clears EMI-TO-USERCODE to spaces, sets TO-USERCODES position 01 to 'OM01247', and sets the destination filename to 'IN'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTOUSERCODES01toOM01247(["Start Step"])
E_SetTOUSERCODES01toOM01247(["End Step"])
N_SetTOUSERCODES01toOM01247_Node0{"The system prepares to reroute the
notification"}:::decision N_SetTOUSERCODES01toOM01247_Node0_action["The system clears EMI-TO-USERCODE
to spaces, sets TO-USERCODES
position 01 to OM01247 , and sets
the destination filename to IN"]:::main N_SetTOUSERCODES01toOM01247_Node0 -- Yes --> N_SetTOUSERCODES01toOM01247_Node0_action N_SetTOUSERCODES01toOM01247_Node0_action --> E_SetTOUSERCODES01toOM01247 S_SetTOUSERCODES01toOM01247 --> N_SetTOUSERCODES01toOM01247_Node0 N_SetTOUSERCODES01toOM01247_Node0 -- No --> E_SetTOUSERCODES01toOM01247
notification"}:::decision N_SetTOUSERCODES01toOM01247_Node0_action["The system clears EMI-TO-USERCODE
to spaces, sets TO-USERCODES
position 01 to OM01247 , and sets
the destination filename to IN"]:::main N_SetTOUSERCODES01toOM01247_Node0 -- Yes --> N_SetTOUSERCODES01toOM01247_Node0_action N_SetTOUSERCODES01toOM01247_Node0_action --> E_SetTOUSERCODES01toOM01247 S_SetTOUSERCODES01toOM01247 --> N_SetTOUSERCODES01toOM01247_Node0 N_SetTOUSERCODES01toOM01247_Node0 -- No --> E_SetTOUSERCODES01toOM01247
File: GCX126R.cbl
GIVEN:
An email notification has failed with EMI-TO-OR-COPY-NOT-FOUND and the invalid Merlin ID has been captured
WHEN:
The system prepares to reroute the notification
THEN:
The system clears EMI-TO-USERCODE to spaces, sets TO-USERCODES position 01 to 'OM01247', and sets the destination filename to 'IN'
β Consolidated Acceptance Criteria
- The system initiates the resend process → the system calls EMCSEND2 with the corrected recipient information to resend the 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_ResendEmailviaEMCSEND2(["Start Step"])
E_ResendEmailviaEMCSEND2(["End Step"])
N_ResendEmailviaEMCSEND2_Node0{"The system initiates the resend
process"}:::decision N_ResendEmailviaEMCSEND2_Node0_action["The system calls EMCSEND2 with the
corrected recipient information to
resend the notification"]:::main N_ResendEmailviaEMCSEND2_Node0 -- Yes --> N_ResendEmailviaEMCSEND2_Node0_action N_ResendEmailviaEMCSEND2_Node0_action --> E_ResendEmailviaEMCSEND2 S_ResendEmailviaEMCSEND2 --> N_ResendEmailviaEMCSEND2_Node0 N_ResendEmailviaEMCSEND2_Node0 -- No --> E_ResendEmailviaEMCSEND2
process"}:::decision N_ResendEmailviaEMCSEND2_Node0_action["The system calls EMCSEND2 with the
corrected recipient information to
resend the notification"]:::main N_ResendEmailviaEMCSEND2_Node0 -- Yes --> N_ResendEmailviaEMCSEND2_Node0_action N_ResendEmailviaEMCSEND2_Node0_action --> E_ResendEmailviaEMCSEND2 S_ResendEmailviaEMCSEND2 --> N_ResendEmailviaEMCSEND2_Node0 N_ResendEmailviaEMCSEND2_Node0 -- No --> E_ResendEmailviaEMCSEND2
File: GCX126R.cbl
GIVEN:
The notification recipient has been corrected to the default user OM01247 and destination filename set to IN
WHEN:
The system initiates the resend process
THEN:
The system calls EMCSEND2 with the corrected recipient information to resend the notification
β Consolidated Acceptance Criteria
- The resend operation completes successfully → the system clears the EMI-SUBJECT, builds a new subject message containing the bad Merlin ID concatenated with ' INVALID MERLIN TO - REPORT REROUTE', and sends this notification via EMCSEND2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE(["Start Step"])
E_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE(["End Step"])
N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0{"The resend operation completes
successfully"}:::decision N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action["The system clears the EMI-SUBJECT,
builds a new subject message
containing the bad Merlin ID
concatenated with INVALID MERLIN TO
- REPORT REROUTE , and sends this
notification via EMCSEND2"]:::main N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- Yes --> N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action --> E_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE S_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE --> N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- No --> E_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE
successfully"}:::decision N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action["The system clears the EMI-SUBJECT,
builds a new subject message
containing the bad Merlin ID
concatenated with INVALID MERLIN TO
- REPORT REROUTE , and sends this
notification via EMCSEND2"]:::main N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- Yes --> N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action --> E_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE S_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE --> N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 N_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- No --> E_BuildRerouteMessageBadMerlinIDINVALIDMERLINTOREPORTREROUTE
File: GCX126R.cbl
GIVEN:
The notification has been successfully resent to the default user OM01247 with EMI-NO-ERRORS status
WHEN:
The resend operation completes successfully
THEN:
The system clears the EMI-SUBJECT, builds a new subject message containing the bad Merlin ID concatenated with ' INVALID MERLIN TO - REPORT REROUTE', and sends this notification via EMCSEND2
β Consolidated Acceptance Criteria
- The resend operation fails with a status other than EMI-NO-ERRORS → the system sets the error message to 'EMI - INVALID MERLIN TO OR COPY' and aborts 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_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY(["Start Step"])
E_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY(["End Step"])
N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0{"The resend operation fails with a
status other than EMI-NO-ERRORS"}:::decision N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0_action["The system sets the error message
to EMI - INVALID MERLIN TO OR COPY
and aborts processing"]:::main N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0 -- Yes --> N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0_action N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0_action --> E_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY S_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY --> N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0 N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0 -- No --> E_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY
status other than EMI-NO-ERRORS"}:::decision N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0_action["The system sets the error message
to EMI - INVALID MERLIN TO OR COPY
and aborts processing"]:::main N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0 -- Yes --> N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0_action N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0_action --> E_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY S_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY --> N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0 N_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY_Node0 -- No --> E_AbortwithErrorMessageEMIINVALIDMERLINTOORCOPY
File: GCX126R.cbl
GIVEN:
A notification resend has been attempted with the corrected default user OM01247
WHEN:
The resend operation fails with a status other than EMI-NO-ERRORS
THEN:
The system sets the error message to 'EMI - INVALID MERLIN TO OR COPY' and aborts processing
β Consolidated Acceptance Criteria
- The return status flag indicates EMI-FILENAME-INVALID → the system sets the error message to 'EMI - INVALID MERLIN FILENAME' and aborts 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_AbortwithErrorMessageEMIINVALIDMERLINFILENAME(["Start Step"])
E_AbortwithErrorMessageEMIINVALIDMERLINFILENAME(["End Step"])
N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0{"The return status flag indicates
EMI-FILENAME-INVALID"}:::decision N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FILENAME and
aborts processing"]:::exclusion N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- Yes -->|Alternative| N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0_action N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0_action --> E_AbortwithErrorMessageEMIINVALIDMERLINFILENAME S_AbortwithErrorMessageEMIINVALIDMERLINFILENAME --> N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0 N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- No --> E_AbortwithErrorMessageEMIINVALIDMERLINFILENAME
EMI-FILENAME-INVALID"}:::decision N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0_action["The system sets the error message
to EMI - INVALID MERLIN FILENAME and
aborts processing"]:::exclusion N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- Yes -->|Alternative| N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0_action N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0_action --> E_AbortwithErrorMessageEMIINVALIDMERLINFILENAME S_AbortwithErrorMessageEMIINVALIDMERLINFILENAME --> N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0 N_AbortwithErrorMessageEMIINVALIDMERLINFILENAME_Node0 -- No --> E_AbortwithErrorMessageEMIINVALIDMERLINFILENAME
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email notification has been attempted via EMCSEND2
WHEN:
The return status flag indicates EMI-FILENAME-INVALID
THEN:
The system sets the error message to 'EMI - INVALID MERLIN FILENAME' and aborts processing
β Consolidated Acceptance Criteria
- The system detects the recipient not found error → the system saves the invalid recipient ID, clears the TO recipient field, sets the TO recipient to OM01247, sets the destination filename to IN, resends the original email, and if successful, sends a reroute notification with subject containing the invalid Merlin ID and message 'INVALID MERLIN TO - REPORT REROUTE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailSendFailed(["Start Step"])
E_EmailSendFailed(["End Step"])
N_EmailSendFailed_Node0{"The system detects the recipient
not found error"}:::decision N_EmailSendFailed_Node0_action["The system saves the invalid
recipient ID, clears the TO
recipient field, sets the TO
recipient to OM01247, sets the
destination filename to IN, resends
the original email, and if
successful, sends a reroute
notification with subject containing
the invalid Merlin ID and message
INVALID MERLIN TO - REPORT REROUTE"]:::exclusion N_EmailSendFailed_Node0 -- Yes -->|Alternative| N_EmailSendFailed_Node0_action N_EmailSendFailed_Node0_action --> E_EmailSendFailed S_EmailSendFailed --> N_EmailSendFailed_Node0 N_EmailSendFailed_Node0 -- No --> E_EmailSendFailed
not found error"}:::decision N_EmailSendFailed_Node0_action["The system saves the invalid
recipient ID, clears the TO
recipient field, sets the TO
recipient to OM01247, sets the
destination filename to IN, resends
the original email, and if
successful, sends a reroute
notification with subject containing
the invalid Merlin ID and message
INVALID MERLIN TO - REPORT REROUTE"]:::exclusion N_EmailSendFailed_Node0 -- Yes -->|Alternative| N_EmailSendFailed_Node0_action N_EmailSendFailed_Node0_action --> E_EmailSendFailed S_EmailSendFailed --> N_EmailSendFailed_Node0 N_EmailSendFailed_Node0 -- No --> E_EmailSendFailed
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email send operation has failed with error status EMI-TO-OR-COPY-NOT-FOUND
WHEN:
The system detects the recipient not found error
THEN:
- The system saves the invalid recipient id, clears the to recipient field, sets the to recipient to om01247, sets the destination filename to in, resends the original email, and if successful, sends a reroute notification with subject containing the invalid merlin id
- Message 'invalid merlin to - report reroute'
β Consolidated Acceptance Criteria
- The system needs to identify the invalid recipient → if the message type is unrelease (88-Z110-MRLN-TYPE-IS-UNRLSE), save EMI-TO-USERCODES(02) as the bad Merlin ID, otherwise save EMI-TO-USERCODES(01) as the bad 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_SaveFailedRecipientID(["Start Step"])
E_SaveFailedRecipientID(["End Step"])
N_SaveFailedRecipientID_Node0{"The system needs to identify the
invalid recipient"}:::decision N_SaveFailedRecipientID_Node0_action["If the message type is unrelease
88-Z110-MRLN-TYPE-IS-UNRLSE, save
EMI-TO-USERCODES02 as the bad Merlin
ID, otherwise save
EMI-TO-USERCODES01 as the bad Merlin
ID"]:::exclusion N_SaveFailedRecipientID_Node0 -- Yes -->|Alternative| N_SaveFailedRecipientID_Node0_action N_SaveFailedRecipientID_Node0_action --> E_SaveFailedRecipientID S_SaveFailedRecipientID --> N_SaveFailedRecipientID_Node0 N_SaveFailedRecipientID_Node0 -- No --> E_SaveFailedRecipientID
invalid recipient"}:::decision N_SaveFailedRecipientID_Node0_action["If the message type is unrelease
88-Z110-MRLN-TYPE-IS-UNRLSE, save
EMI-TO-USERCODES02 as the bad Merlin
ID, otherwise save
EMI-TO-USERCODES01 as the bad Merlin
ID"]:::exclusion N_SaveFailedRecipientID_Node0 -- Yes -->|Alternative| N_SaveFailedRecipientID_Node0_action N_SaveFailedRecipientID_Node0_action --> E_SaveFailedRecipientID S_SaveFailedRecipientID --> N_SaveFailedRecipientID_Node0 N_SaveFailedRecipientID_Node0 -- No --> E_SaveFailedRecipientID
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
An email send has failed with EMI-TO-OR-COPY-NOT-FOUND error status
WHEN:
The system needs to identify the invalid recipient
THEN:
If the message type is unrelease (88-Z110-MRLN-TYPE-IS-UNRLSE), save EMI-TO-USERCODES(02) as the bad Merlin ID, otherwise save EMI-TO-USERCODES(01) as the bad Merlin ID
β Consolidated Acceptance Criteria
- The system prepares to resend the email → clear EMI-TO-USERCODE field to spaces, set EMI-TO-USERCODES(01) to OM01247, and set EMI-DESTINATION-FILENAME to IN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearRecipientField(["Start Step"])
E_ClearRecipientField(["End Step"])
N_ClearRecipientField_Node0{"The system prepares to resend the
email"}:::decision N_ClearRecipientField_Node0_action["Clear EMI-TO-USERCODE field to
spaces, set EMI-TO-USERCODES01 to
OM01247, and set
EMI-DESTINATION-FILENAME to IN"]:::main N_ClearRecipientField_Node0 -- Yes --> N_ClearRecipientField_Node0_action N_ClearRecipientField_Node0_action --> E_ClearRecipientField S_ClearRecipientField --> N_ClearRecipientField_Node0 N_ClearRecipientField_Node0 -- No --> E_ClearRecipientField
email"}:::decision N_ClearRecipientField_Node0_action["Clear EMI-TO-USERCODE field to
spaces, set EMI-TO-USERCODES01 to
OM01247, and set
EMI-DESTINATION-FILENAME to IN"]:::main N_ClearRecipientField_Node0 -- Yes --> N_ClearRecipientField_Node0_action N_ClearRecipientField_Node0_action --> E_ClearRecipientField S_ClearRecipientField --> N_ClearRecipientField_Node0 N_ClearRecipientField_Node0 -- No --> E_ClearRecipientField
File: GCX126R.cbl
GIVEN:
The invalid recipient ID has been saved to WS-BAD-MERLIN-ID
WHEN:
The system prepares to resend the email
THEN:
Clear EMI-TO-USERCODE field to spaces, set EMI-TO-USERCODES(01) to OM01247, and set EMI-DESTINATION-FILENAME to IN
β Consolidated Acceptance Criteria
- The system prepares the reroute notification → clear EMI-SUBJECT to spaces and build a new subject by concatenating WS-BAD-MERLIN-ID, a space, and the text 'INVALID MERLIN TO - REPORT REROUTE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE(["Start Step"])
E_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE(["End Step"])
N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0{"The system prepares the reroute
notification"}:::decision N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action["Clear EMI-SUBJECT to spaces and
build a new subject by concatenating
WS-BAD-MERLIN-ID, a space, and the
text INVALID MERLIN TO - REPORT
REROUTE"]:::main N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- Yes --> N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action --> E_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE S_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE --> N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- No --> E_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE
notification"}:::decision N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action["Clear EMI-SUBJECT to spaces and
build a new subject by concatenating
WS-BAD-MERLIN-ID, a space, and the
text INVALID MERLIN TO - REPORT
REROUTE"]:::main N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- Yes --> N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0_action --> E_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE S_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE --> N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 N_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE_Node0 -- No --> E_BuildSubjectBadMerlinIDINVALIDMERLINTOREPORTREROUTE
File: GCX126R.cbl
GIVEN:
The email has been successfully resent to OM01247 and WS-BAD-MERLIN-ID contains the invalid recipient ID
WHEN:
The system prepares the reroute notification
THEN:
- Clear emi-subject to spaces
- Build a new subject by concatenating ws-bad-merlin-id, a space, and the text 'invalid merlin to - report reroute'
β Consolidated Acceptance Criteria
- The system calls the Z116-RESEND-MERLIN procedure again → the system invokes EMCSEND2 program with the reroute notification subject and all other email parameters to send the notification 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_SendRerouteNotificationEmail(["Start Step"])
E_SendRerouteNotificationEmail(["End Step"])
N_SendRerouteNotificationEmail_Node0{"The system calls the
Z116-RESEND-MERLIN procedure again"}:::decision N_SendRerouteNotificationEmail_Node0_action["The system invokes EMCSEND2 program
with the reroute notification
subject and all other email
parameters to send the notification
to OM01247"]:::main N_SendRerouteNotificationEmail_Node0 -- Yes --> N_SendRerouteNotificationEmail_Node0_action N_SendRerouteNotificationEmail_Node0_action --> E_SendRerouteNotificationEmail S_SendRerouteNotificationEmail --> N_SendRerouteNotificationEmail_Node0 N_SendRerouteNotificationEmail_Node0 -- No --> E_SendRerouteNotificationEmail
Z116-RESEND-MERLIN procedure again"}:::decision N_SendRerouteNotificationEmail_Node0_action["The system invokes EMCSEND2 program
with the reroute notification
subject and all other email
parameters to send the notification
to OM01247"]:::main N_SendRerouteNotificationEmail_Node0 -- Yes --> N_SendRerouteNotificationEmail_Node0_action N_SendRerouteNotificationEmail_Node0_action --> E_SendRerouteNotificationEmail S_SendRerouteNotificationEmail --> N_SendRerouteNotificationEmail_Node0 N_SendRerouteNotificationEmail_Node0 -- No --> E_SendRerouteNotificationEmail
File: GCX126R.cbl
GIVEN:
The reroute notification subject has been built with the invalid Merlin ID and reroute message
WHEN:
The system calls the Z116-RESEND-MERLIN procedure again
THEN:
- The system invokes emcsend2 program with the reroute notification subject
- All other email parameters to send the notification to om01247
β Consolidated Acceptance Criteria
- If the EMI-RETURN-STATUS-FLAG → if EMI-NO-ERRORS is true, the reroute process completes successfully; if EMI-FROM-NOT-FOUND, abend with error 'EMI - INVALID MERLIN FROM'; if EMI-TO-OR-COPY-NOT-FOUND, abend with error 'EMI - INVALID MERLIN TO OR COPY'; if EMI-FILENAME-INVALID, abend with error 'EMI - INVALID MERLIN FILENAME'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalSendSuccessful(["Start Step"])
E_FinalSendSuccessful(["End Step"])
N_FinalSendSuccessful_Node0{"The system evaluates the
EMI-RETURN-STATUS-FLAG"}:::decision N_FinalSendSuccessful_Node0_action["If EMI-NO-ERRORS is true, the
reroute process completes
successfully if EMI-FROM-NOT-FOUND,
abend with error EMI - INVALID
MERLIN FROM if
EMI-TO-OR-COPY-NOT-FOUND, abend with
error EMI - INVALID MERLIN TO OR
COPY if EMI-FILENAME-INVALID, abend
with error EMI - INVALID MERLIN
FILENAME"]:::exclusion N_FinalSendSuccessful_Node0 -- Yes -->|Alternative| N_FinalSendSuccessful_Node0_action N_FinalSendSuccessful_Node0_action --> E_FinalSendSuccessful S_FinalSendSuccessful --> N_FinalSendSuccessful_Node0 N_FinalSendSuccessful_Node0 -- No --> E_FinalSendSuccessful
EMI-RETURN-STATUS-FLAG"}:::decision N_FinalSendSuccessful_Node0_action["If EMI-NO-ERRORS is true, the
reroute process completes
successfully if EMI-FROM-NOT-FOUND,
abend with error EMI - INVALID
MERLIN FROM if
EMI-TO-OR-COPY-NOT-FOUND, abend with
error EMI - INVALID MERLIN TO OR
COPY if EMI-FILENAME-INVALID, abend
with error EMI - INVALID MERLIN
FILENAME"]:::exclusion N_FinalSendSuccessful_Node0 -- Yes -->|Alternative| N_FinalSendSuccessful_Node0_action N_FinalSendSuccessful_Node0_action --> E_FinalSendSuccessful S_FinalSendSuccessful --> N_FinalSendSuccessful_Node0 N_FinalSendSuccessful_Node0 -- No --> E_FinalSendSuccessful
File: GCX126R.cbl
GIVEN:
The reroute notification email has been sent via EMCSEND2
WHEN:
The system evaluates the EMI-RETURN-STATUS-FLAG
THEN:
If EMI-NO-ERRORS is true, the reroute process completes successfully; if EMI-FROM-NOT-FOUND, abend with error 'EMI - INVALID MERLIN FROM'; if EMI-TO-OR-COPY-NOT-FOUND, abend with error 'EMI - INVALID MERLIN TO OR COPY'; if EMI-FILENAME-INVALID, abend with error 'EMI - INVALID MERLIN FILENAME'
β Consolidated Acceptance Criteria
- The Z116-RESEND-MERLIN procedure completes → add 1 to WS-FMT-MACHINE-SEQ to increment the sequence number
- The system completes the email send operation in Z116-RESEND-MERLIN → call CIMS program with PURG function code and ALT-PCB to remove the message from the 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_EmailSuccessfullyRerouted(["Start Step"])
E_EmailSuccessfullyRerouted(["End Step"])
N_EmailSuccessfullyRerouted_Node0{"The Z116-RESEND-MERLIN procedure
completes"}:::decision N_EmailSuccessfullyRerouted_Node0_action["Add 1 to WS-FMT-MACHINE-SEQ to
increment the sequence number"]:::main N_EmailSuccessfullyRerouted_Node0 -- Yes --> N_EmailSuccessfullyRerouted_Node0_action N_EmailSuccessfullyRerouted_Node0_action --> E_EmailSuccessfullyRerouted S_EmailSuccessfullyRerouted --> N_EmailSuccessfullyRerouted_Node0 N_EmailSuccessfullyRerouted_Node1{"The system completes the email send
operation in Z116-RESEND-MERLIN"}:::decision N_EmailSuccessfullyRerouted_Node1_action["Call CIMS program with PURG
function code and ALT-PCB to remove
the message from the queue"]:::main N_EmailSuccessfullyRerouted_Node1 -- Yes --> N_EmailSuccessfullyRerouted_Node1_action N_EmailSuccessfullyRerouted_Node1_action --> E_EmailSuccessfullyRerouted N_EmailSuccessfullyRerouted_Node0 -- No --> N_EmailSuccessfullyRerouted_Node1 N_EmailSuccessfullyRerouted_Node1 -- No --> E_EmailSuccessfullyRerouted
completes"}:::decision N_EmailSuccessfullyRerouted_Node0_action["Add 1 to WS-FMT-MACHINE-SEQ to
increment the sequence number"]:::main N_EmailSuccessfullyRerouted_Node0 -- Yes --> N_EmailSuccessfullyRerouted_Node0_action N_EmailSuccessfullyRerouted_Node0_action --> E_EmailSuccessfullyRerouted S_EmailSuccessfullyRerouted --> N_EmailSuccessfullyRerouted_Node0 N_EmailSuccessfullyRerouted_Node1{"The system completes the email send
operation in Z116-RESEND-MERLIN"}:::decision N_EmailSuccessfullyRerouted_Node1_action["Call CIMS program with PURG
function code and ALT-PCB to remove
the message from the queue"]:::main N_EmailSuccessfullyRerouted_Node1 -- Yes --> N_EmailSuccessfullyRerouted_Node1_action N_EmailSuccessfullyRerouted_Node1_action --> E_EmailSuccessfullyRerouted N_EmailSuccessfullyRerouted_Node0 -- No --> N_EmailSuccessfullyRerouted_Node1 N_EmailSuccessfullyRerouted_Node1 -- No --> E_EmailSuccessfullyRerouted
File: GCX126R.cbl
GIVEN:
An email has been successfully sent via EMCSEND2 with EMI-NO-ERRORS status
WHEN:
The Z116-RESEND-MERLIN procedure completes
THEN:
Add 1 to WS-FMT-MACHINE-SEQ to increment the sequence number
File: GCX126R.cbl
GIVEN:
An email has been successfully sent with EMI-NO-ERRORS status
WHEN:
The system completes the email send operation in Z116-RESEND-MERLIN
THEN:
- Call cims program with purg function code
- Alt-pcb to remove the message from the queue
β Consolidated Acceptance Criteria
- If the return status in Z116-RESEND-MERLIN → move 'EMI - INVALID MERLIN FROM' to CC-ERROR-MESSAGE and call CERR program to abend 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_AbendInvalidFROMUser(["Start Step"])
E_AbendInvalidFROMUser(["End Step"])
N_AbendInvalidFROMUser_Node0{"The system evaluates the return
status in Z116-RESEND-MERLIN"}:::decision N_AbendInvalidFROMUser_Node0_action["Move EMI - INVALID MERLIN FROM to
CC-ERROR-MESSAGE and call CERR
program to abend the transaction"]:::exclusion N_AbendInvalidFROMUser_Node0 -- Yes -->|Alternative| N_AbendInvalidFROMUser_Node0_action N_AbendInvalidFROMUser_Node0_action --> E_AbendInvalidFROMUser S_AbendInvalidFROMUser --> N_AbendInvalidFROMUser_Node0 N_AbendInvalidFROMUser_Node0 -- No --> E_AbendInvalidFROMUser
status in Z116-RESEND-MERLIN"}:::decision N_AbendInvalidFROMUser_Node0_action["Move EMI - INVALID MERLIN FROM to
CC-ERROR-MESSAGE and call CERR
program to abend the transaction"]:::exclusion N_AbendInvalidFROMUser_Node0 -- Yes -->|Alternative| N_AbendInvalidFROMUser_Node0_action N_AbendInvalidFROMUser_Node0_action --> E_AbendInvalidFROMUser S_AbendInvalidFROMUser --> N_AbendInvalidFROMUser_Node0 N_AbendInvalidFROMUser_Node0 -- No --> E_AbendInvalidFROMUser
File: GCX126R.cbl
GIVEN:
The EMCSEND2 program has returned with EMI-FROM-NOT-FOUND status
WHEN:
The system evaluates the return status in Z116-RESEND-MERLIN
THEN:
- Move 'emi - invalid merlin from' to cc-error-message
- Call cerr program to abend the transaction
β Consolidated Acceptance Criteria
- If the return status in Z116-RESEND-MERLIN → move 'EMI - INVALID MERLIN TO OR COPY' to CC-ERROR-MESSAGE and call CERR program to abend 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_AbendInvalidTOCOPYUser(["Start Step"])
E_AbendInvalidTOCOPYUser(["End Step"])
N_AbendInvalidTOCOPYUser_Node0{"The system evaluates the return
status in Z116-RESEND-MERLIN"}:::decision N_AbendInvalidTOCOPYUser_Node0_action["Move EMI - INVALID MERLIN TO OR
COPY to CC-ERROR-MESSAGE and call
CERR program to abend the
transaction"]:::exclusion N_AbendInvalidTOCOPYUser_Node0 -- Yes -->|Alternative| N_AbendInvalidTOCOPYUser_Node0_action N_AbendInvalidTOCOPYUser_Node0_action --> E_AbendInvalidTOCOPYUser S_AbendInvalidTOCOPYUser --> N_AbendInvalidTOCOPYUser_Node0 N_AbendInvalidTOCOPYUser_Node0 -- No --> E_AbendInvalidTOCOPYUser
status in Z116-RESEND-MERLIN"}:::decision N_AbendInvalidTOCOPYUser_Node0_action["Move EMI - INVALID MERLIN TO OR
COPY to CC-ERROR-MESSAGE and call
CERR program to abend the
transaction"]:::exclusion N_AbendInvalidTOCOPYUser_Node0 -- Yes -->|Alternative| N_AbendInvalidTOCOPYUser_Node0_action N_AbendInvalidTOCOPYUser_Node0_action --> E_AbendInvalidTOCOPYUser S_AbendInvalidTOCOPYUser --> N_AbendInvalidTOCOPYUser_Node0 N_AbendInvalidTOCOPYUser_Node0 -- No --> E_AbendInvalidTOCOPYUser
File: GCX126R.cbl
GIVEN:
The EMCSEND2 program has returned with EMI-TO-OR-COPY-NOT-FOUND status
WHEN:
The system evaluates the return status in Z116-RESEND-MERLIN
THEN:
- Move 'emi - invalid merlin to or copy' to cc-error-message
- Call cerr program to abend the transaction
β Consolidated Acceptance Criteria
- The Merlin contact fetch process is initiated → the function code should be set to 'GU' (Get Unique), all key values (GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE) should be cleared to spaces, the return flag (GCCTBIO-RETURN-FLAG) should be cleared to spaces, the MC segment (GCSTBRT-MC-SEGMENT) should be cleared to spaces, and both SECOND-PCB-FLAG and UNQUAL-SSA-FLAG should be 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_InitializeFunctionCodetoGUClearKeyValuesandFlags(["Start Step"])
E_InitializeFunctionCodetoGUClearKeyValuesandFlags(["End Step"])
N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0{"The Merlin contact fetch process is
initiated"}:::decision N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0_action["The function code should be set to
GU Get Unique, all key values
GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE
should be cleared to spaces, the
return flag GCCTBIO-RETURN-FLAG
should be cleared to spaces, the MC
segment GCSTBRT-MC-SEGMENT should be
cleared to spaces, and both
SECOND-PCB-FLAG and UNQUAL-SSA-FLAG
should be cleared to spaces"]:::main N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0 -- Yes --> N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0_action N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0_action --> E_InitializeFunctionCodetoGUClearKeyValuesandFlags S_InitializeFunctionCodetoGUClearKeyValuesandFlags --> N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0 N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0 -- No --> E_InitializeFunctionCodetoGUClearKeyValuesandFlags
initiated"}:::decision N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0_action["The function code should be set to
GU Get Unique, all key values
GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE
should be cleared to spaces, the
return flag GCCTBIO-RETURN-FLAG
should be cleared to spaces, the MC
segment GCSTBRT-MC-SEGMENT should be
cleared to spaces, and both
SECOND-PCB-FLAG and UNQUAL-SSA-FLAG
should be cleared to spaces"]:::main N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0 -- Yes --> N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0_action N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0_action --> E_InitializeFunctionCodetoGUClearKeyValuesandFlags S_InitializeFunctionCodetoGUClearKeyValuesandFlags --> N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0 N_InitializeFunctionCodetoGUClearKeyValuesandFlags_Node0 -- No --> E_InitializeFunctionCodetoGUClearKeyValuesandFlags
File: GCX126R.cbl
GIVEN:
A need to retrieve Merlin contact information from the customs table
WHEN:
The Merlin contact fetch process is initiated
THEN:
- The function code should be set to 'gu' (get unique), all key values (gcstbrt-key-value, gcstbdp-key-value) should be cleared to spaces, the return flag (gcctbio-return-flag) should be cleared to spaces, the mc segment (gcstbrt-mc-segment) should be cleared to spaces, and both second-pcb-flag
- Unqual-ssa-flag should be cleared to spaces
β Consolidated Acceptance Criteria
- Preparing to fetch Merlin contact information → the table identifier (GCSTBRT-KEY-TABLE-ID) should be set to 'MC-TABLE-ID' to identify the Merlin contact segment in the customs 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_SetTableIDtoMCCustomsTable(["Start Step"])
E_SetTableIDtoMCCustomsTable(["End Step"])
N_SetTableIDtoMCCustomsTable_Node0{"Preparing to fetch Merlin contact
information"}:::decision N_SetTableIDtoMCCustomsTable_Node0_action["The table identifier
GCSTBRT-KEY-TABLE-ID should be set
to MC-TABLE-ID to identify the
Merlin contact segment in the
customs table"]:::main N_SetTableIDtoMCCustomsTable_Node0 -- Yes --> N_SetTableIDtoMCCustomsTable_Node0_action N_SetTableIDtoMCCustomsTable_Node0_action --> E_SetTableIDtoMCCustomsTable S_SetTableIDtoMCCustomsTable --> N_SetTableIDtoMCCustomsTable_Node0 N_SetTableIDtoMCCustomsTable_Node0 -- No --> E_SetTableIDtoMCCustomsTable
information"}:::decision N_SetTableIDtoMCCustomsTable_Node0_action["The table identifier
GCSTBRT-KEY-TABLE-ID should be set
to MC-TABLE-ID to identify the
Merlin contact segment in the
customs table"]:::main N_SetTableIDtoMCCustomsTable_Node0 -- Yes --> N_SetTableIDtoMCCustomsTable_Node0_action N_SetTableIDtoMCCustomsTable_Node0_action --> E_SetTableIDtoMCCustomsTable S_SetTableIDtoMCCustomsTable --> N_SetTableIDtoMCCustomsTable_Node0 N_SetTableIDtoMCCustomsTable_Node0 -- No --> E_SetTableIDtoMCCustomsTable
File: GCX126R.cbl
GIVEN:
The retrieval parameters have been initialized
WHEN:
Preparing to fetch Merlin contact information
THEN:
The table identifier (GCSTBRT-KEY-TABLE-ID) should be set to 'MC-TABLE-ID' to identify the Merlin contact segment in the customs table
β Consolidated Acceptance Criteria
- Setting up the search criteria for Merlin contact → the sequence ID (GCSTBRT-KEY-SEQID) should be set to the manifest-to station name (GCCC-MANIF-TO-STATION-NAME) from 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_SetSequenceIDtoManifestToStationName(["Start Step"])
E_SetSequenceIDtoManifestToStationName(["End Step"])
N_SetSequenceIDtoManifestToStationName_Node0{"Setting up the search criteria for
Merlin contact"}:::decision N_SetSequenceIDtoManifestToStationName_Node0_action["The sequence ID GCSTBRT-KEY-SEQID
should be set to the manifest-to
station name
GCCC-MANIF-TO-STATION-NAME from the
cargo record"]:::main N_SetSequenceIDtoManifestToStationName_Node0 -- Yes --> N_SetSequenceIDtoManifestToStationName_Node0_action N_SetSequenceIDtoManifestToStationName_Node0_action --> E_SetSequenceIDtoManifestToStationName S_SetSequenceIDtoManifestToStationName --> N_SetSequenceIDtoManifestToStationName_Node0 N_SetSequenceIDtoManifestToStationName_Node0 -- No --> E_SetSequenceIDtoManifestToStationName
Merlin contact"}:::decision N_SetSequenceIDtoManifestToStationName_Node0_action["The sequence ID GCSTBRT-KEY-SEQID
should be set to the manifest-to
station name
GCCC-MANIF-TO-STATION-NAME from the
cargo record"]:::main N_SetSequenceIDtoManifestToStationName_Node0 -- Yes --> N_SetSequenceIDtoManifestToStationName_Node0_action N_SetSequenceIDtoManifestToStationName_Node0_action --> E_SetSequenceIDtoManifestToStationName S_SetSequenceIDtoManifestToStationName --> N_SetSequenceIDtoManifestToStationName_Node0 N_SetSequenceIDtoManifestToStationName_Node0 -- No --> E_SetSequenceIDtoManifestToStationName
File: GCX126R.cbl
GIVEN:
The table identifier has been set to MC and a cargo record with manifest-to station name exists
WHEN:
Setting up the search criteria for Merlin contact
THEN:
The sequence ID (GCSTBRT-KEY-SEQID) should be set to the manifest-to station name (GCCC-MANIF-TO-STATION-NAME) from the cargo record
β Consolidated Acceptance Criteria
- The table I/O service is invoked → the GCCTBIO program should be called with parameters: CCCOM, SECOND-PCB-FLAG, UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE, GCSTBRT-LIT, GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT, and GCCTBIO-RETURN-FLAG to retrieve the MC 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_CallGCCTBIOtoRetrieveMCSegment(["Start Step"])
E_CallGCCTBIOtoRetrieveMCSegment(["End Step"])
N_CallGCCTBIOtoRetrieveMCSegment_Node0{"The table IO service is invoked"}:::decision
N_CallGCCTBIOtoRetrieveMCSegment_Node0_action["The GCCTBIO program should be
called with parameters: CCCOM,
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG,
GCCTBIO-FUNC-CODE, GCSTBRT-LIT,
GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT,
and GCCTBIO-RETURN-FLAG to retrieve
the MC segment"]:::main N_CallGCCTBIOtoRetrieveMCSegment_Node0 -- Yes --> N_CallGCCTBIOtoRetrieveMCSegment_Node0_action N_CallGCCTBIOtoRetrieveMCSegment_Node0_action --> E_CallGCCTBIOtoRetrieveMCSegment S_CallGCCTBIOtoRetrieveMCSegment --> N_CallGCCTBIOtoRetrieveMCSegment_Node0 N_CallGCCTBIOtoRetrieveMCSegment_Node0 -- No --> E_CallGCCTBIOtoRetrieveMCSegment
called with parameters: CCCOM,
SECOND-PCB-FLAG, UNQUAL-SSA-FLAG,
GCCTBIO-FUNC-CODE, GCSTBRT-LIT,
GCSTBRT-KEY-VALUE,
GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT,
and GCCTBIO-RETURN-FLAG to retrieve
the MC segment"]:::main N_CallGCCTBIOtoRetrieveMCSegment_Node0 -- Yes --> N_CallGCCTBIOtoRetrieveMCSegment_Node0_action N_CallGCCTBIOtoRetrieveMCSegment_Node0_action --> E_CallGCCTBIOtoRetrieveMCSegment S_CallGCCTBIOtoRetrieveMCSegment --> N_CallGCCTBIOtoRetrieveMCSegment_Node0 N_CallGCCTBIOtoRetrieveMCSegment_Node0 -- No --> E_CallGCCTBIOtoRetrieveMCSegment
File: GCX126R.cbl
GIVEN:
The function code is 'GU', table ID is 'MC', and sequence ID is set to manifest-to station name
WHEN:
The table I/O service is invoked
THEN:
The GCCTBIO program should be called with parameters: CCCOM, SECOND-PCB-FLAG, UNQUAL-SSA-FLAG, GCCTBIO-FUNC-CODE, GCSTBRT-LIT, GCSTBRT-KEY-VALUE, GCSTBDP-KEY-VALUE, WS-TABLE-SEGMENT, and GCCTBIO-RETURN-FLAG to retrieve the MC segment
β Consolidated Acceptance Criteria
- The return flag (GCCTBIO-RETURN-FLAG) equals '0' indicating successful retrieval → the retrieved segment (WS-TABLE-SEGMENT) should be moved to the MC segment structure (GCSTBRT-MC-SEGMENT), making the Merlin email ID (GCSTBRT-MC-MERLIN-ID) available for use in notification 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_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment(["Start Step"])
E_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment(["End Step"])
N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0{"The return flag GCCTBIO-RETURN-FLAG
equals 0 indicating successful
retrieval"}:::decision N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0_action["The retrieved segment
WS-TABLE-SEGMENT should be moved to
the MC segment structure
GCSTBRT-MC-SEGMENT, making the
Merlin email ID GCSTBRT-MC-MERLIN-ID
available for use in notification
routing"]:::main N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0 -- Yes --> N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0_action N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0_action --> E_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment S_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment --> N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0 N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0 -- No --> E_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment
equals 0 indicating successful
retrieval"}:::decision N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0_action["The retrieved segment
WS-TABLE-SEGMENT should be moved to
the MC segment structure
GCSTBRT-MC-SEGMENT, making the
Merlin email ID GCSTBRT-MC-MERLIN-ID
available for use in notification
routing"]:::main N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0 -- Yes --> N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0_action N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0_action --> E_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment S_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment --> N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0 N_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment_Node0 -- No --> E_MoveRetrievedSegmenttoMCSegmentStructureExtractMerlinEmailIDfromMCSegment
File: GCX126R.cbl
GIVEN:
The GCCTBIO service has been called to retrieve the MC segment
WHEN:
The return flag (GCCTBIO-RETURN-FLAG) equals '0' indicating successful retrieval
THEN:
The retrieved segment (WS-TABLE-SEGMENT) should be moved to the MC segment structure (GCSTBRT-MC-SEGMENT), making the Merlin email ID (GCSTBRT-MC-MERLIN-ID) available for use in notification routing
β Consolidated Acceptance Criteria
- The return flag (GCCTBIO-RETURN-FLAG) does not equal '0' indicating retrieval failure → the MC segment structure (GCSTBRT-MC-SEGMENT) should be cleared to spaces, indicating that no Merlin email ID is available for the manifest-to 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_ClearMCSegmentSettoSpaces(["Start Step"])
E_ClearMCSegmentSettoSpaces(["End Step"])
N_ClearMCSegmentSettoSpaces_Node0{"The return flag GCCTBIO-RETURN-FLAG
does not equal 0 indicating
retrieval failure"}:::decision N_ClearMCSegmentSettoSpaces_Node0_action["The MC segment structure
GCSTBRT-MC-SEGMENT should be cleared
to spaces, indicating that no Merlin
email ID is available for the
manifest-to station"]:::main N_ClearMCSegmentSettoSpaces_Node0 -- Yes --> N_ClearMCSegmentSettoSpaces_Node0_action N_ClearMCSegmentSettoSpaces_Node0_action --> E_ClearMCSegmentSettoSpaces S_ClearMCSegmentSettoSpaces --> N_ClearMCSegmentSettoSpaces_Node0 N_ClearMCSegmentSettoSpaces_Node0 -- No --> E_ClearMCSegmentSettoSpaces
does not equal 0 indicating
retrieval failure"}:::decision N_ClearMCSegmentSettoSpaces_Node0_action["The MC segment structure
GCSTBRT-MC-SEGMENT should be cleared
to spaces, indicating that no Merlin
email ID is available for the
manifest-to station"]:::main N_ClearMCSegmentSettoSpaces_Node0 -- Yes --> N_ClearMCSegmentSettoSpaces_Node0_action N_ClearMCSegmentSettoSpaces_Node0_action --> E_ClearMCSegmentSettoSpaces S_ClearMCSegmentSettoSpaces --> N_ClearMCSegmentSettoSpaces_Node0 N_ClearMCSegmentSettoSpaces_Node0 -- No --> E_ClearMCSegmentSettoSpaces
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The GCCTBIO service has been called to retrieve the MC segment
WHEN:
The return flag (GCCTBIO-RETURN-FLAG) does not equal '0' indicating retrieval failure
THEN:
The MC segment structure (GCSTBRT-MC-SEGMENT) should be cleared to spaces, indicating that no Merlin email ID is available for the manifest-to station
β Consolidated Acceptance Criteria
- The log information structure is being prepared → the log input structure should be cleared to spaces, security byte should be set to HIGH-VALUE, sending transaction should be set to 'GCT1261E', and ACF2 user ID should be populated from 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_PrepareLogInformationStructure(["Start Step"])
E_PrepareLogInformationStructure(["End Step"])
N_PrepareLogInformationStructure_Node0{"The log information structure is
being prepared"}:::decision N_PrepareLogInformationStructure_Node0_action["The log input structure should be
cleared to spaces, security byte
should be set to HIGH-VALUE, sending
transaction should be set to
GCT1261E , and ACF2 user ID should
be populated from the common control
area"]:::main N_PrepareLogInformationStructure_Node0 -- Yes --> N_PrepareLogInformationStructure_Node0_action N_PrepareLogInformationStructure_Node0_action --> E_PrepareLogInformationStructure S_PrepareLogInformationStructure --> N_PrepareLogInformationStructure_Node0 N_PrepareLogInformationStructure_Node0 -- No --> E_PrepareLogInformationStructure
being prepared"}:::decision N_PrepareLogInformationStructure_Node0_action["The log input structure should be
cleared to spaces, security byte
should be set to HIGH-VALUE, sending
transaction should be set to
GCT1261E , and ACF2 user ID should
be populated from the common control
area"]:::main N_PrepareLogInformationStructure_Node0 -- Yes --> N_PrepareLogInformationStructure_Node0_action N_PrepareLogInformationStructure_Node0_action --> E_PrepareLogInformationStructure S_PrepareLogInformationStructure --> N_PrepareLogInformationStructure_Node0 N_PrepareLogInformationStructure_Node0 -- No --> E_PrepareLogInformationStructure
File: GCX126R.cbl
GIVEN:
A request to log cargo information message is received
WHEN:
The log information structure is being prepared
THEN:
The log input structure should be cleared to spaces, security byte should be set to HIGH-VALUE, sending transaction should be set to 'GCT1261E', and ACF2 user ID should be populated from the common control area
β Consolidated Acceptance Criteria
- Date and time formatting is performed → the log date should be formatted by concatenating machine century and machine date, and the log time should be set to the machine time
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDateandTime(["Start Step"])
E_FormatDateandTime(["End Step"])
N_FormatDateandTime_Node0{"Date and time formatting is
performed"}:::decision N_FormatDateandTime_Node0_action["The log date should be formatted by
concatenating machine century and
machine date, and the log time
should be set to the machine time"]:::main N_FormatDateandTime_Node0 -- Yes --> N_FormatDateandTime_Node0_action N_FormatDateandTime_Node0_action --> E_FormatDateandTime S_FormatDateandTime --> N_FormatDateandTime_Node0 N_FormatDateandTime_Node0 -- No --> E_FormatDateandTime
performed"}:::decision N_FormatDateandTime_Node0_action["The log date should be formatted by
concatenating machine century and
machine date, and the log time
should be set to the machine time"]:::main N_FormatDateandTime_Node0 -- Yes --> N_FormatDateandTime_Node0_action N_FormatDateandTime_Node0_action --> E_FormatDateandTime S_FormatDateandTime --> N_FormatDateandTime_Node0 N_FormatDateandTime_Node0 -- No --> E_FormatDateandTime
File: GCX126R.cbl
GIVEN:
The log information structure has been initialized with security and transaction details
WHEN:
- Date
- Time formatting is performed
THEN:
- The log date should be formatted by concatenating machine century
- Machine date, and the log time should be set to the machine time
β Consolidated Acceptance Criteria
- The cargo or train identifier is being set → the current CCN key should be moved to the train or US CCN field in the log 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_SetCCNTrainID(["Start Step"])
E_SetCCNTrainID(["End Step"])
N_SetCCNTrainID_Node0{"The cargo or train identifier is
being set"}:::decision N_SetCCNTrainID_Node0_action["The current CCN key should be moved
to the train or US CCN field in the
log structure"]:::main N_SetCCNTrainID_Node0 -- Yes --> N_SetCCNTrainID_Node0_action N_SetCCNTrainID_Node0_action --> E_SetCCNTrainID S_SetCCNTrainID --> N_SetCCNTrainID_Node0 N_SetCCNTrainID_Node0 -- No --> E_SetCCNTrainID
being set"}:::decision N_SetCCNTrainID_Node0_action["The current CCN key should be moved
to the train or US CCN field in the
log structure"]:::main N_SetCCNTrainID_Node0 -- Yes --> N_SetCCNTrainID_Node0_action N_SetCCNTrainID_Node0_action --> E_SetCCNTrainID S_SetCCNTrainID --> N_SetCCNTrainID_Node0 N_SetCCNTrainID_Node0 -- No --> E_SetCCNTrainID
File: GCX126R.cbl
GIVEN:
Date and time have been formatted for the log entry
WHEN:
The cargo or train identifier is being set
THEN:
The current CCN key should be moved to the train or US CCN field in the log structure
β Consolidated Acceptance Criteria
- The cargo type is being determined → the cargo type indicator should be set to CA-CARGO to indicate this is a Canadian 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_SetCargoTypeCACargoorUSCargo(["Start Step"])
E_SetCargoTypeCACargoorUSCargo(["End Step"])
N_SetCargoTypeCACargoorUSCargo_Node0{"The cargo type is being determined"}:::decision
N_SetCargoTypeCACargoorUSCargo_Node0_action["The cargo type indicator should be
set to CA-CARGO to indicate this is
a Canadian cargo record"]:::main N_SetCargoTypeCACargoorUSCargo_Node0 -- Yes --> N_SetCargoTypeCACargoorUSCargo_Node0_action N_SetCargoTypeCACargoorUSCargo_Node0_action --> E_SetCargoTypeCACargoorUSCargo S_SetCargoTypeCACargoorUSCargo --> N_SetCargoTypeCACargoorUSCargo_Node0 N_SetCargoTypeCACargoorUSCargo_Node0 -- No --> E_SetCargoTypeCACargoorUSCargo
set to CA-CARGO to indicate this is
a Canadian cargo record"]:::main N_SetCargoTypeCACargoorUSCargo_Node0 -- Yes --> N_SetCargoTypeCACargoorUSCargo_Node0_action N_SetCargoTypeCACargoorUSCargo_Node0_action --> E_SetCargoTypeCACargoorUSCargo S_SetCargoTypeCACargoorUSCargo --> N_SetCargoTypeCACargoorUSCargo_Node0 N_SetCargoTypeCACargoorUSCargo_Node0 -- No --> E_SetCargoTypeCACargoorUSCargo
File: GCX126R.cbl
GIVEN:
The CCN or train identifier has been set in the log structure
WHEN:
The cargo type is being determined
THEN:
The cargo type indicator should be set to CA-CARGO to indicate this is a Canadian cargo record
β Consolidated Acceptance Criteria
- The message text is being populated → the information message content should be moved to the log 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_SetMessageText(["Start Step"])
E_SetMessageText(["End Step"])
N_SetMessageText_Node0{"The message text is being populated"}:::decision
N_SetMessageText_Node0_action["The information message content
should be moved to the log message
field"]:::main N_SetMessageText_Node0 -- Yes --> N_SetMessageText_Node0_action N_SetMessageText_Node0_action --> E_SetMessageText S_SetMessageText --> N_SetMessageText_Node0 N_SetMessageText_Node0 -- No --> E_SetMessageText
should be moved to the log message
field"]:::main N_SetMessageText_Node0 -- Yes --> N_SetMessageText_Node0_action N_SetMessageText_Node0_action --> E_SetMessageText S_SetMessageText --> N_SetMessageText_Node0 N_SetMessageText_Node0 -- No --> E_SetMessageText
File: GCX126R.cbl
GIVEN:
The action code has been set to LOG-USE-INPUT-MESSAGE
WHEN:
The message text is being populated
THEN:
The information message content should be moved to the log message field
β Consolidated Acceptance Criteria
- Message text validation is performed → if the message text is spaces or low-values, exit without creating a log entry; otherwise, proceed with log 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_MessageTextEmpty(["Start Step"])
E_MessageTextEmpty(["End Step"])
N_MessageTextEmpty_Node0{"Message text validation is
performed"}:::decision N_MessageTextEmpty_Node0_action["If the message text is spaces or
low-values, exit without creating a
log entry otherwise, proceed with
log creation"]:::main N_MessageTextEmpty_Node0 -- Yes --> N_MessageTextEmpty_Node0_action N_MessageTextEmpty_Node0_action --> E_MessageTextEmpty S_MessageTextEmpty --> N_MessageTextEmpty_Node0 N_MessageTextEmpty_Node0 -- No --> E_MessageTextEmpty
performed"}:::decision N_MessageTextEmpty_Node0_action["If the message text is spaces or
low-values, exit without creating a
log entry otherwise, proceed with
log creation"]:::main N_MessageTextEmpty_Node0 -- Yes --> N_MessageTextEmpty_Node0_action N_MessageTextEmpty_Node0_action --> E_MessageTextEmpty S_MessageTextEmpty --> N_MessageTextEmpty_Node0 N_MessageTextEmpty_Node0 -- No --> E_MessageTextEmpty
File: GCX126R.cbl
GIVEN:
The message text has been populated in the log structure
WHEN:
Message text validation is performed
THEN:
If the message text is spaces or low-values, exit without creating a log entry; otherwise, proceed with log creation
β Consolidated Acceptance Criteria
- Date and time normalization is performed → all spaces in the date field should be replaced with zeroes, and all spaces in the time field should be replaced with '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_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime(["Start Step"])
E_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime(["End Step"])
N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0{"Date and time normalization is
performed"}:::decision N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0_action["All spaces in the date field should
be replaced with zeroes, and all
spaces in the time field should be
replaced with 1"]:::main N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0 -- Yes --> N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0_action N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0_action --> E_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime S_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime --> N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0 N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0 -- No --> E_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime
performed"}:::decision N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0_action["All spaces in the date field should
be replaced with zeroes, and all
spaces in the time field should be
replaced with 1"]:::main N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0 -- Yes --> N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0_action N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0_action --> E_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime S_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime --> N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0 N_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime_Node0 -- No --> E_ReplaceSpaceswithZeroesinDateReplaceSpaceswith1inTime
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The message text validation has passed and message is not empty
WHEN:
- Date
- Time normalization is performed
THEN:
All spaces in the date field should be replaced with zeroes, and all spaces in the time field should be replaced with '1'
β Consolidated Acceptance Criteria
- The alternate PCB status is being changed → the CIMS program should be called with CHNG function for the alternate PCB using the GCT1051E 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_ChangeAlternatePCBStatus(["Start Step"])
E_ChangeAlternatePCBStatus(["End Step"])
N_ChangeAlternatePCBStatus_Node0{"The alternate PCB status is being
changed"}:::decision N_ChangeAlternatePCBStatus_Node0_action["The CIMS program should be called
with CHNG function for the alternate
PCB using the GCT1051E message"]:::main N_ChangeAlternatePCBStatus_Node0 -- Yes --> N_ChangeAlternatePCBStatus_Node0_action N_ChangeAlternatePCBStatus_Node0_action --> E_ChangeAlternatePCBStatus S_ChangeAlternatePCBStatus --> N_ChangeAlternatePCBStatus_Node0 N_ChangeAlternatePCBStatus_Node0 -- No --> E_ChangeAlternatePCBStatus
changed"}:::decision N_ChangeAlternatePCBStatus_Node0_action["The CIMS program should be called
with CHNG function for the alternate
PCB using the GCT1051E message"]:::main N_ChangeAlternatePCBStatus_Node0 -- Yes --> N_ChangeAlternatePCBStatus_Node0_action N_ChangeAlternatePCBStatus_Node0_action --> E_ChangeAlternatePCBStatus S_ChangeAlternatePCBStatus --> N_ChangeAlternatePCBStatus_Node0 N_ChangeAlternatePCBStatus_Node0 -- No --> E_ChangeAlternatePCBStatus
File: GCX126R.cbl
GIVEN:
The log data has been transferred to the GCT1051E message structure
WHEN:
The alternate PCB status is being changed
THEN:
The CIMS program should be called with CHNG function for the alternate PCB using the GCT1051E message
β Consolidated Acceptance Criteria
- The alternate PCB is being purged → the CIMS program should be called with PURG function for the alternate PCB to complete the logging 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_PurgeAlternatePCB(["Start Step"])
E_PurgeAlternatePCB(["End Step"])
N_PurgeAlternatePCB_Node0{"The alternate PCB is being purged"}:::decision
N_PurgeAlternatePCB_Node0_action["The CIMS program should be called
with PURG function for the alternate
PCB to complete the logging
transaction"]:::main N_PurgeAlternatePCB_Node0 -- Yes --> N_PurgeAlternatePCB_Node0_action N_PurgeAlternatePCB_Node0_action --> E_PurgeAlternatePCB S_PurgeAlternatePCB --> N_PurgeAlternatePCB_Node0 N_PurgeAlternatePCB_Node0 -- No --> E_PurgeAlternatePCB
with PURG function for the alternate
PCB to complete the logging
transaction"]:::main N_PurgeAlternatePCB_Node0 -- Yes --> N_PurgeAlternatePCB_Node0_action N_PurgeAlternatePCB_Node0_action --> E_PurgeAlternatePCB S_PurgeAlternatePCB --> N_PurgeAlternatePCB_Node0 N_PurgeAlternatePCB_Node0 -- No --> E_PurgeAlternatePCB
File: GCX126R.cbl
GIVEN:
The log message has been written using WRITMSGL
WHEN:
The alternate PCB is being purged
THEN:
The CIMS program should be called with PURG function for the alternate PCB to complete the logging transaction
β Consolidated Acceptance Criteria
- The system needs to persist the changes to the cargo database → the system clears the status code, sets the accept status to blank, and replaces the cargo record in the GCSCCRT cargo database using the IMS REPL function
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation(["Start Step"])
E_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation(["End Step"])
N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0{"The system needs to persist the
changes to the cargo database"}:::decision N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0_action["The system clears the status code,
sets the accept status to blank, and
replaces the cargo record in the
GCSCCRT cargo database using the IMS
REPL function"]:::main N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0 -- Yes --> N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0_action N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0_action --> E_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation S_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation --> N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0 N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0 -- No --> E_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation
changes to the cargo database"}:::decision N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0_action["The system clears the status code,
sets the accept status to blank, and
replaces the cargo record in the
GCSCCRT cargo database using the IMS
REPL function"]:::main N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0 -- Yes --> N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0_action N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0_action --> E_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation S_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation --> N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0 N_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation_Node0 -- No --> E_UpdateCargoRecordReplacecargorecordindatabasewithupdatedinformation
File: GCX126R.cbl
GIVEN:
A cargo record has been retrieved and modified with updated customs status, release information, or other EDI 350 message data
WHEN:
The system needs to persist the changes to the cargo database
THEN:
The system clears the status code, sets the accept status to blank, and replaces the cargo record in the GCSCCRT cargo database using the IMS REPL function
β Consolidated Acceptance Criteria
- The update process is initiated → the system sets the status code field to spaces to clear any previous status 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_ClearStatusCode(["Start Step"])
E_ClearStatusCode(["End Step"])
N_ClearStatusCode_Node0{"The update process is initiated"}:::decision
N_ClearStatusCode_Node0_action["The system sets the status code
field to spaces to clear any
previous status information"]:::main N_ClearStatusCode_Node0 -- Yes --> N_ClearStatusCode_Node0_action N_ClearStatusCode_Node0_action --> E_ClearStatusCode S_ClearStatusCode --> N_ClearStatusCode_Node0 N_ClearStatusCode_Node0 -- No --> E_ClearStatusCode
field to spaces to clear any
previous status information"]:::main N_ClearStatusCode_Node0 -- Yes --> N_ClearStatusCode_Node0_action N_ClearStatusCode_Node0_action --> E_ClearStatusCode S_ClearStatusCode --> N_ClearStatusCode_Node0 N_ClearStatusCode_Node0 -- No --> E_ClearStatusCode
File: GCX126R.cbl
GIVEN:
A cargo record is ready to be updated in the database
WHEN:
The update process is initiated
THEN:
The system sets the status code field to spaces to clear any previous status information
β Consolidated Acceptance Criteria
- The system calls the IMS CIMS program with the REPL function → the system passes the common communication area, REPL function code, cargo PCB, and the cargo report segment to update the GCSCCRT cargo database 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_CallIMSREPLFunction(["Start Step"])
E_CallIMSREPLFunction(["End Step"])
N_CallIMSREPLFunction_Node0{"The system calls the IMS CIMS
program with the REPL function"}:::decision N_CallIMSREPLFunction_Node0_action["The system passes the common
communication area, REPL function
code, cargo PCB, and the cargo
report segment to update the GCSCCRT
cargo database record"]:::main N_CallIMSREPLFunction_Node0 -- Yes --> N_CallIMSREPLFunction_Node0_action N_CallIMSREPLFunction_Node0_action --> E_CallIMSREPLFunction S_CallIMSREPLFunction --> N_CallIMSREPLFunction_Node0 N_CallIMSREPLFunction_Node0 -- No --> E_CallIMSREPLFunction
program with the REPL function"}:::decision N_CallIMSREPLFunction_Node0_action["The system passes the common
communication area, REPL function
code, cargo PCB, and the cargo
report segment to update the GCSCCRT
cargo database record"]:::main N_CallIMSREPLFunction_Node0 -- Yes --> N_CallIMSREPLFunction_Node0_action N_CallIMSREPLFunction_Node0_action --> E_CallIMSREPLFunction S_CallIMSREPLFunction --> N_CallIMSREPLFunction_Node0 N_CallIMSREPLFunction_Node0 -- No --> E_CallIMSREPLFunction
File: GCX126R.cbl
GIVEN:
The status code is cleared, accept status is set to blank, and the cargo record contains all updated information
WHEN:
The system calls the IMS CIMS program with the REPL function
THEN:
The system passes the common communication area, REPL function code, cargo PCB, and the cargo report segment to update the GCSCCRT cargo database record
β Consolidated Acceptance Criteria
- Preparing to search for associated US cargo records → the car ID index is set to the current cargo's equipment car key, the waybill index is set to the saved waybill index value, and the US CCN key index is initialized to low values for the search 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_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues(["Start Step"])
E_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues(["End Step"])
N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0{"Preparing to search for associated
US cargo records"}:::decision N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0_action["The car ID index is set to the
current cargo s equipment car key,
the waybill index is set to the
saved waybill index value, and the
US CCN key index is initialized to
low values for the search operation"]:::main N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0 -- Yes --> N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0_action N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0_action --> E_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues S_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues --> N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0 N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0 -- No --> E_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues
US cargo records"}:::decision N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0_action["The car ID index is set to the
current cargo s equipment car key,
the waybill index is set to the
saved waybill index value, and the
US CCN key index is initialized to
low values for the search operation"]:::main N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0 -- Yes --> N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0_action N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0_action --> E_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues S_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues --> N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0 N_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues_Node0 -- No --> E_SetCarIDfromCurrentCargoSetWaybillIndexfromSavedValueSetUSCCNtoLowValues
File: GCX126R.cbl
GIVEN:
A current cargo record with equipment car identification and a saved waybill index value
WHEN:
Preparing to search for associated US cargo records
THEN:
The car ID index is set to the current cargo's equipment car key, the waybill index is set to the saved waybill index value, and the US CCN key index is initialized to low values for the search operation
β Consolidated Acceptance Criteria
- Initiating the US cargo search using the car-waybill index with greater-than-or-equal-to operator → the system retrieves the first US cargo record from GCSUSRT table matching or exceeding 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_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord(["Start Step"])
E_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord(["End Step"])
N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0{"Initiating the US cargo search
using the car-waybill index with
greater-than-or-equal-to operator"}:::decision N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0_action["The system retrieves the first US
cargo record from GCSUSRT table
matching or exceeding the search
criteria"]:::main N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0 -- Yes --> N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0_action N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0_action --> E_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord S_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord --> N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0 N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0 -- No --> E_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord
using the car-waybill index with
greater-than-or-equal-to operator"}:::decision N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0_action["The system retrieves the first US
cargo record from GCSUSRT table
matching or exceeding the search
criteria"]:::main N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0 -- Yes --> N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0_action N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0_action --> E_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord S_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord --> N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0 N_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord_Node0 -- No --> E_InitializeSearchwithOperatorRetrieveFirstUSCargoRecord
File: GCX126R.cbl
GIVEN:
Search parameters are set with car ID index, waybill index, and US CCN key initialized to low values
WHEN:
Initiating the US cargo search using the car-waybill index with greater-than-or-equal-to operator
THEN:
The system retrieves the first US cargo record from GCSUSRT table matching or exceeding the search criteria
β Consolidated Acceptance Criteria
- The database returns a status indicating no record was found → the end-of-file flag is set to true indicating no matching US cargo 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_RecordFoundNotFoundSetEndofFileFlag(["Start Step"])
E_RecordFoundNotFoundSetEndofFileFlag(["End Step"])
N_RecordFoundNotFoundSetEndofFileFlag_Node0{"The database returns a status
indicating no record was found"}:::decision N_RecordFoundNotFoundSetEndofFileFlag_Node0_action["The end-of-file flag is set to true
indicating no matching US cargo
exists"]:::main N_RecordFoundNotFoundSetEndofFileFlag_Node0 -- Yes --> N_RecordFoundNotFoundSetEndofFileFlag_Node0_action N_RecordFoundNotFoundSetEndofFileFlag_Node0_action --> E_RecordFoundNotFoundSetEndofFileFlag S_RecordFoundNotFoundSetEndofFileFlag --> N_RecordFoundNotFoundSetEndofFileFlag_Node0 N_RecordFoundNotFoundSetEndofFileFlag_Node0 -- No --> E_RecordFoundNotFoundSetEndofFileFlag
indicating no record was found"}:::decision N_RecordFoundNotFoundSetEndofFileFlag_Node0_action["The end-of-file flag is set to true
indicating no matching US cargo
exists"]:::main N_RecordFoundNotFoundSetEndofFileFlag_Node0 -- Yes --> N_RecordFoundNotFoundSetEndofFileFlag_Node0_action N_RecordFoundNotFoundSetEndofFileFlag_Node0_action --> E_RecordFoundNotFoundSetEndofFileFlag S_RecordFoundNotFoundSetEndofFileFlag --> N_RecordFoundNotFoundSetEndofFileFlag_Node0 N_RecordFoundNotFoundSetEndofFileFlag_Node0 -- No --> E_RecordFoundNotFoundSetEndofFileFlag
File: GCX126R.cbl
GIVEN:
An initial retrieval attempt for US cargo by car and waybill has been executed
WHEN:
The database returns a status indicating no record was found
THEN:
The end-of-file flag is set to true indicating no matching US cargo exists
β Consolidated Acceptance Criteria
- Comparing the first 12 characters of the retrieved US cargo's car ID index with the current cargo's equipment car key → if the car IDs match, continue validation; if they do not match, set the end-of-file flag to terminate the 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_CarIDMatchesCurrentCargo(["Start Step"])
E_CarIDMatchesCurrentCargo(["End Step"])
N_CarIDMatchesCurrentCargo_Node0{"Comparing the first 12 characters
of the retrieved US cargo s car ID
index with the current cargo s
equipment car key"}:::decision N_CarIDMatchesCurrentCargo_Node0_action["If the car IDs match, continue
validation if they do not match, set
the end-of-file flag to terminate
the search"]:::exclusion N_CarIDMatchesCurrentCargo_Node0 -- Yes -->|Alternative| N_CarIDMatchesCurrentCargo_Node0_action N_CarIDMatchesCurrentCargo_Node0_action --> E_CarIDMatchesCurrentCargo S_CarIDMatchesCurrentCargo --> N_CarIDMatchesCurrentCargo_Node0 N_CarIDMatchesCurrentCargo_Node0 -- No --> E_CarIDMatchesCurrentCargo
of the retrieved US cargo s car ID
index with the current cargo s
equipment car key"}:::decision N_CarIDMatchesCurrentCargo_Node0_action["If the car IDs match, continue
validation if they do not match, set
the end-of-file flag to terminate
the search"]:::exclusion N_CarIDMatchesCurrentCargo_Node0 -- Yes -->|Alternative| N_CarIDMatchesCurrentCargo_Node0_action N_CarIDMatchesCurrentCargo_Node0_action --> E_CarIDMatchesCurrentCargo S_CarIDMatchesCurrentCargo --> N_CarIDMatchesCurrentCargo_Node0 N_CarIDMatchesCurrentCargo_Node0 -- No --> E_CarIDMatchesCurrentCargo
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database
WHEN:
Comparing the first 12 characters of the retrieved US cargo's car ID index with the current cargo's equipment car key
THEN:
If the car IDs match, continue validation; if they do not match, set the end-of-file flag to terminate the search
β Consolidated Acceptance Criteria
- Comparing the retrieved US cargo's waybill number index with the saved waybill index value → if the waybill numbers match, proceed to check cargo status; if they do not match, set the end-of-file flag to terminate the 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_WaybillMatchesSavedIndex(["Start Step"])
E_WaybillMatchesSavedIndex(["End Step"])
N_WaybillMatchesSavedIndex_Node0{"Comparing the retrieved US cargo s
waybill number index with the saved
waybill index value"}:::decision N_WaybillMatchesSavedIndex_Node0_action["If the waybill numbers match,
proceed to check cargo status if
they do not match, set the
end-of-file flag to terminate the
search"]:::exclusion N_WaybillMatchesSavedIndex_Node0 -- Yes -->|Alternative| N_WaybillMatchesSavedIndex_Node0_action N_WaybillMatchesSavedIndex_Node0_action --> E_WaybillMatchesSavedIndex S_WaybillMatchesSavedIndex --> N_WaybillMatchesSavedIndex_Node0 N_WaybillMatchesSavedIndex_Node0 -- No --> E_WaybillMatchesSavedIndex
waybill number index with the saved
waybill index value"}:::decision N_WaybillMatchesSavedIndex_Node0_action["If the waybill numbers match,
proceed to check cargo status if
they do not match, set the
end-of-file flag to terminate the
search"]:::exclusion N_WaybillMatchesSavedIndex_Node0 -- Yes -->|Alternative| N_WaybillMatchesSavedIndex_Node0_action N_WaybillMatchesSavedIndex_Node0_action --> E_WaybillMatchesSavedIndex S_WaybillMatchesSavedIndex --> N_WaybillMatchesSavedIndex_Node0 N_WaybillMatchesSavedIndex_Node0 -- No --> E_WaybillMatchesSavedIndex
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved and the car ID has been validated as matching
WHEN:
Comparing the retrieved US cargo's waybill number index with the saved waybill index value
THEN:
If the waybill numbers match, proceed to check cargo status; if they do not match, set the end-of-file flag to terminate the search
β Consolidated Acceptance Criteria
- The database returns a status indicating no more records exist → the end-of-file flag is set to true indicating the search is complete with no valid US cargo 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_RecordFoundNotFoundfromGetNextSetEndofFileFlag(["Start Step"])
E_RecordFoundNotFoundfromGetNextSetEndofFileFlag(["End Step"])
N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0{"The database returns a status
indicating no more records exist"}:::decision N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0_action["The end-of-file flag is set to true
indicating the search is complete
with no valid US cargo found"]:::main N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0 -- Yes --> N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0_action N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0_action --> E_RecordFoundNotFoundfromGetNextSetEndofFileFlag S_RecordFoundNotFoundfromGetNextSetEndofFileFlag --> N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0 N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0 -- No --> E_RecordFoundNotFoundfromGetNextSetEndofFileFlag
indicating no more records exist"}:::decision N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0_action["The end-of-file flag is set to true
indicating the search is complete
with no valid US cargo found"]:::main N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0 -- Yes --> N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0_action N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0_action --> E_RecordFoundNotFoundfromGetNextSetEndofFileFlag S_RecordFoundNotFoundfromGetNextSetEndofFileFlag --> N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0 N_RecordFoundNotFoundfromGetNextSetEndofFileFlag_Node0 -- No --> E_RecordFoundNotFoundfromGetNextSetEndofFileFlag
File: GCX126R.cbl
GIVEN:
A get-next retrieval attempt for US cargo by car and waybill has been executed
WHEN:
The database returns a status indicating no more records exist
THEN:
The end-of-file flag is set to true indicating the search is complete with no valid US cargo found
β Consolidated Acceptance Criteria
- Comparing the first 12 characters of the retrieved US cargo's car ID index with the current cargo's equipment car key → if the car IDs match, continue validation; if they do not match, set the end-of-file flag to terminate the 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_CarIDMatchesCurrentCargofromGetNext(["Start Step"])
E_CarIDMatchesCurrentCargofromGetNext(["End Step"])
N_CarIDMatchesCurrentCargofromGetNext_Node0{"Comparing the first 12 characters
of the retrieved US cargo s car ID
index with the current cargo s
equipment car key"}:::decision N_CarIDMatchesCurrentCargofromGetNext_Node0_action["If the car IDs match, continue
validation if they do not match, set
the end-of-file flag to terminate
the search"]:::exclusion N_CarIDMatchesCurrentCargofromGetNext_Node0 -- Yes -->|Alternative| N_CarIDMatchesCurrentCargofromGetNext_Node0_action N_CarIDMatchesCurrentCargofromGetNext_Node0_action --> E_CarIDMatchesCurrentCargofromGetNext S_CarIDMatchesCurrentCargofromGetNext --> N_CarIDMatchesCurrentCargofromGetNext_Node0 N_CarIDMatchesCurrentCargofromGetNext_Node0 -- No --> E_CarIDMatchesCurrentCargofromGetNext
of the retrieved US cargo s car ID
index with the current cargo s
equipment car key"}:::decision N_CarIDMatchesCurrentCargofromGetNext_Node0_action["If the car IDs match, continue
validation if they do not match, set
the end-of-file flag to terminate
the search"]:::exclusion N_CarIDMatchesCurrentCargofromGetNext_Node0 -- Yes -->|Alternative| N_CarIDMatchesCurrentCargofromGetNext_Node0_action N_CarIDMatchesCurrentCargofromGetNext_Node0_action --> E_CarIDMatchesCurrentCargofromGetNext S_CarIDMatchesCurrentCargofromGetNext --> N_CarIDMatchesCurrentCargofromGetNext_Node0 N_CarIDMatchesCurrentCargofromGetNext_Node0 -- No --> E_CarIDMatchesCurrentCargofromGetNext
File: GCX126R.cbl
GIVEN:
A subsequent US cargo record has been successfully retrieved from the database
WHEN:
Comparing the first 12 characters of the retrieved US cargo's car ID index with the current cargo's equipment car key
THEN:
If the car IDs match, continue validation; if they do not match, set the end-of-file flag to terminate the search
β Consolidated Acceptance Criteria
- Comparing the retrieved US cargo's waybill number index with the saved waybill index value → if the waybill numbers match, proceed to check cargo status; if they do not match, set the end-of-file flag to terminate the 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_WaybillMatchesSavedIndexfromGetNext(["Start Step"])
E_WaybillMatchesSavedIndexfromGetNext(["End Step"])
N_WaybillMatchesSavedIndexfromGetNext_Node0{"Comparing the retrieved US cargo s
waybill number index with the saved
waybill index value"}:::decision N_WaybillMatchesSavedIndexfromGetNext_Node0_action["If the waybill numbers match,
proceed to check cargo status if
they do not match, set the
end-of-file flag to terminate the
search"]:::exclusion N_WaybillMatchesSavedIndexfromGetNext_Node0 -- Yes -->|Alternative| N_WaybillMatchesSavedIndexfromGetNext_Node0_action N_WaybillMatchesSavedIndexfromGetNext_Node0_action --> E_WaybillMatchesSavedIndexfromGetNext S_WaybillMatchesSavedIndexfromGetNext --> N_WaybillMatchesSavedIndexfromGetNext_Node0 N_WaybillMatchesSavedIndexfromGetNext_Node0 -- No --> E_WaybillMatchesSavedIndexfromGetNext
waybill number index with the saved
waybill index value"}:::decision N_WaybillMatchesSavedIndexfromGetNext_Node0_action["If the waybill numbers match,
proceed to check cargo status if
they do not match, set the
end-of-file flag to terminate the
search"]:::exclusion N_WaybillMatchesSavedIndexfromGetNext_Node0 -- Yes -->|Alternative| N_WaybillMatchesSavedIndexfromGetNext_Node0_action N_WaybillMatchesSavedIndexfromGetNext_Node0_action --> E_WaybillMatchesSavedIndexfromGetNext S_WaybillMatchesSavedIndexfromGetNext --> N_WaybillMatchesSavedIndexfromGetNext_Node0 N_WaybillMatchesSavedIndexfromGetNext_Node0 -- No --> E_WaybillMatchesSavedIndexfromGetNext
File: GCX126R.cbl
GIVEN:
A subsequent US cargo record has been retrieved and the car ID has been validated as matching
WHEN:
Comparing the retrieved US cargo's waybill number index with the saved waybill index value
THEN:
If the waybill numbers match, proceed to check cargo status; if they do not match, set the end-of-file flag to terminate the search
β Consolidated Acceptance Criteria
- Evaluating the cargo's deletion status indicator and the train-created-for-it flag → if the cargo is marked as deleted OR the train-created-for-it flag equals 'Y', continue the search loop; if both conditions are false, mark the US manifest 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_CargoDeletedorTRCreatedfromGetNext(["Start Step"])
E_CargoDeletedorTRCreatedfromGetNext(["End Step"])
N_CargoDeletedorTRCreatedfromGetNext_Node0{"Evaluating the cargo s deletion
status indicator and the
train-created-for-it flag"}:::decision N_CargoDeletedorTRCreatedfromGetNext_Node0_action["If the cargo is marked as deleted
OR the train-created-for-it flag
equals Y , continue the search loop
if both conditions are false, mark
the US manifest as found"]:::main N_CargoDeletedorTRCreatedfromGetNext_Node0 -- Yes --> N_CargoDeletedorTRCreatedfromGetNext_Node0_action N_CargoDeletedorTRCreatedfromGetNext_Node0_action --> E_CargoDeletedorTRCreatedfromGetNext S_CargoDeletedorTRCreatedfromGetNext --> N_CargoDeletedorTRCreatedfromGetNext_Node0 N_CargoDeletedorTRCreatedfromGetNext_Node0 -- No --> E_CargoDeletedorTRCreatedfromGetNext
status indicator and the
train-created-for-it flag"}:::decision N_CargoDeletedorTRCreatedfromGetNext_Node0_action["If the cargo is marked as deleted
OR the train-created-for-it flag
equals Y , continue the search loop
if both conditions are false, mark
the US manifest as found"]:::main N_CargoDeletedorTRCreatedfromGetNext_Node0 -- Yes --> N_CargoDeletedorTRCreatedfromGetNext_Node0_action N_CargoDeletedorTRCreatedfromGetNext_Node0_action --> E_CargoDeletedorTRCreatedfromGetNext S_CargoDeletedorTRCreatedfromGetNext --> N_CargoDeletedorTRCreatedfromGetNext_Node0 N_CargoDeletedorTRCreatedfromGetNext_Node0 -- No --> E_CargoDeletedorTRCreatedfromGetNext
File: GCX126R.cbl
GIVEN:
A subsequent US cargo record has been retrieved with matching car ID and waybill number
WHEN:
- Evaluating the cargo's deletion status indicator
- The train-created-for-it flag
THEN:
If the cargo is marked as deleted OR the train-created-for-it flag equals 'Y', continue the search loop; if both conditions are false, mark the US manifest as found
β Consolidated Acceptance Criteria
- All validation checks pass successfully on the subsequent record → the US manifest found flag is set to true and the search process completes 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_MarkUSManifestFoundfromGetNext(["Start Step"])
E_MarkUSManifestFoundfromGetNext(["End Step"])
N_MarkUSManifestFoundfromGetNext_Node0{"All validation checks pass
successfully on the subsequent
record"}:::decision N_MarkUSManifestFoundfromGetNext_Node0_action["The US manifest found flag is set
to true and the search process
completes successfully"]:::main N_MarkUSManifestFoundfromGetNext_Node0 -- Yes --> N_MarkUSManifestFoundfromGetNext_Node0_action N_MarkUSManifestFoundfromGetNext_Node0_action --> E_MarkUSManifestFoundfromGetNext S_MarkUSManifestFoundfromGetNext --> N_MarkUSManifestFoundfromGetNext_Node0 N_MarkUSManifestFoundfromGetNext_Node0 -- No --> E_MarkUSManifestFoundfromGetNext
successfully on the subsequent
record"}:::decision N_MarkUSManifestFoundfromGetNext_Node0_action["The US manifest found flag is set
to true and the search process
completes successfully"]:::main N_MarkUSManifestFoundfromGetNext_Node0 -- Yes --> N_MarkUSManifestFoundfromGetNext_Node0_action N_MarkUSManifestFoundfromGetNext_Node0_action --> E_MarkUSManifestFoundfromGetNext S_MarkUSManifestFoundfromGetNext --> N_MarkUSManifestFoundfromGetNext_Node0 N_MarkUSManifestFoundfromGetNext_Node0 -- No --> E_MarkUSManifestFoundfromGetNext
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A subsequent US cargo record has been retrieved with matching car ID and waybill, and the cargo is not deleted and has no train record created
WHEN:
All validation checks pass successfully on the subsequent record
THEN:
- The us manifest found flag is set to true
- The search process completes successfully
β Consolidated Acceptance Criteria
- The US manifest found flag is false AND the end-of-file flag is false → continue the search loop to retrieve the next US cargo record; otherwise, exit the 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_ContinueSearch(["Start Step"])
E_ContinueSearch(["End Step"])
N_ContinueSearch_Node0{"The US manifest found flag is false
AND the end-of-file flag is false"}:::decision N_ContinueSearch_Node0_action["Continue the search loop to
retrieve the next US cargo record
otherwise, exit the search process"]:::main N_ContinueSearch_Node0 -- Yes --> N_ContinueSearch_Node0_action N_ContinueSearch_Node0_action --> E_ContinueSearch S_ContinueSearch --> N_ContinueSearch_Node0 N_ContinueSearch_Node0 -- No --> E_ContinueSearch
AND the end-of-file flag is false"}:::decision N_ContinueSearch_Node0_action["Continue the search loop to
retrieve the next US cargo record
otherwise, exit the search process"]:::main N_ContinueSearch_Node0 -- Yes --> N_ContinueSearch_Node0_action N_ContinueSearch_Node0_action --> E_ContinueSearch S_ContinueSearch --> N_ContinueSearch_Node0 N_ContinueSearch_Node0 -- No --> E_ContinueSearch
File: GCX126R.cbl
GIVEN:
A US cargo record has been processed and either found valid or skipped
WHEN:
- The us manifest found flag is false
- The end-of-file flag is false
THEN:
Continue the search loop to retrieve the next US cargo record; otherwise, exit the search process
β Consolidated Acceptance Criteria
- The system compares the first 12 characters of the US cargo car ID number index with the current car ID key → if the car IDs do not match, set end of database flag and stop validation; if they match, continue to waybill 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_CarIDMatchesCurrentCarID(["Start Step"])
E_CarIDMatchesCurrentCarID(["End Step"])
N_CarIDMatchesCurrentCarID_Node0{"The system compares the first 12
characters of the US cargo car ID
number index with the current car ID
key"}:::decision N_CarIDMatchesCurrentCarID_Node0_action["If the car IDs do not match, set
end of database flag and stop
validation if they match, continue
to waybill validation"]:::main N_CarIDMatchesCurrentCarID_Node0 -- Yes --> N_CarIDMatchesCurrentCarID_Node0_action N_CarIDMatchesCurrentCarID_Node0_action --> E_CarIDMatchesCurrentCarID S_CarIDMatchesCurrentCarID --> N_CarIDMatchesCurrentCarID_Node0 N_CarIDMatchesCurrentCarID_Node0 -- No --> E_CarIDMatchesCurrentCarID
characters of the US cargo car ID
number index with the current car ID
key"}:::decision N_CarIDMatchesCurrentCarID_Node0_action["If the car IDs do not match, set
end of database flag and stop
validation if they match, continue
to waybill validation"]:::main N_CarIDMatchesCurrentCarID_Node0 -- Yes --> N_CarIDMatchesCurrentCarID_Node0_action N_CarIDMatchesCurrentCarID_Node0_action --> E_CarIDMatchesCurrentCarID S_CarIDMatchesCurrentCarID --> N_CarIDMatchesCurrentCarID_Node0 N_CarIDMatchesCurrentCarID_Node0 -- No --> E_CarIDMatchesCurrentCarID
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved with a car ID number index
WHEN:
The system compares the first 12 characters of the US cargo car ID number index with the current car ID key
THEN:
- If the car ids do not match, set end of database flag
- Stop validation; if they match, continue to waybill validation
β Consolidated Acceptance Criteria
- The system compares the US cargo waybill number index with the saved waybill index → if the waybill numbers do not match, set end of database flag and stop validation; if they match, continue to cargo 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_WaybillIndexMatchesSavedWaybill(["Start Step"])
E_WaybillIndexMatchesSavedWaybill(["End Step"])
N_WaybillIndexMatchesSavedWaybill_Node0{"The system compares the US cargo
waybill number index with the saved
waybill index"}:::decision N_WaybillIndexMatchesSavedWaybill_Node0_action["If the waybill numbers do not
match, set end of database flag and
stop validation if they match,
continue to cargo status validation"]:::main N_WaybillIndexMatchesSavedWaybill_Node0 -- Yes --> N_WaybillIndexMatchesSavedWaybill_Node0_action N_WaybillIndexMatchesSavedWaybill_Node0_action --> E_WaybillIndexMatchesSavedWaybill S_WaybillIndexMatchesSavedWaybill --> N_WaybillIndexMatchesSavedWaybill_Node0 N_WaybillIndexMatchesSavedWaybill_Node0 -- No --> E_WaybillIndexMatchesSavedWaybill
waybill number index with the saved
waybill index"}:::decision N_WaybillIndexMatchesSavedWaybill_Node0_action["If the waybill numbers do not
match, set end of database flag and
stop validation if they match,
continue to cargo status validation"]:::main N_WaybillIndexMatchesSavedWaybill_Node0 -- Yes --> N_WaybillIndexMatchesSavedWaybill_Node0_action N_WaybillIndexMatchesSavedWaybill_Node0_action --> E_WaybillIndexMatchesSavedWaybill S_WaybillIndexMatchesSavedWaybill --> N_WaybillIndexMatchesSavedWaybill_Node0 N_WaybillIndexMatchesSavedWaybill_Node0 -- No --> E_WaybillIndexMatchesSavedWaybill
File: GCX126R.cbl
GIVEN:
The US cargo record's car ID matches the current car ID
WHEN:
The system compares the US cargo waybill number index with the saved waybill index
THEN:
- If the waybill numbers do not match, set end of database flag
- Stop validation; if they match, continue to cargo status validation
β Consolidated Acceptance Criteria
- The system checks if the train created indicator equals 'Y' → if train record exists (indicator = 'Y'), continue searching for next record without setting US manifest found flag; if no train record exists, set US manifest 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_TRCreatedforCargo(["Start Step"])
E_TRCreatedforCargo(["End Step"])
N_TRCreatedforCargo_Node0{"The system checks if the train
created indicator equals Y"}:::decision N_TRCreatedforCargo_Node0_action["If train record exists indicator Y
, continue searching for next record
without setting US manifest found
flag if no train record exists, set
US manifest found flag"]:::main N_TRCreatedforCargo_Node0 -- Yes --> N_TRCreatedforCargo_Node0_action N_TRCreatedforCargo_Node0_action --> E_TRCreatedforCargo S_TRCreatedforCargo --> N_TRCreatedforCargo_Node0 N_TRCreatedforCargo_Node0 -- No --> E_TRCreatedforCargo
created indicator equals Y"}:::decision N_TRCreatedforCargo_Node0_action["If train record exists indicator Y
, continue searching for next record
without setting US manifest found
flag if no train record exists, set
US manifest found flag"]:::main N_TRCreatedforCargo_Node0 -- Yes --> N_TRCreatedforCargo_Node0_action N_TRCreatedforCargo_Node0_action --> E_TRCreatedforCargo S_TRCreatedforCargo --> N_TRCreatedforCargo_Node0 N_TRCreatedforCargo_Node0 -- No --> E_TRCreatedforCargo
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The US cargo record is not deleted and matches car ID and waybill criteria
WHEN:
The system checks if the train created indicator equals 'Y'
THEN:
If train record exists (indicator = 'Y'), continue searching for next record without setting US manifest found flag; if no train record exists, set US manifest found flag
β Consolidated Acceptance Criteria
- All validation criteria are satisfied → set the US manifest found indicator to true to enable further processing of this US 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_SetUSManifestFound(["Start Step"])
E_SetUSManifestFound(["End Step"])
N_SetUSManifestFound_Node0{"All validation criteria are
satisfied"}:::decision N_SetUSManifestFound_Node0_action["Set the US manifest found indicator
to true to enable further processing
of this US cargo record"]:::main N_SetUSManifestFound_Node0 -- Yes --> N_SetUSManifestFound_Node0_action N_SetUSManifestFound_Node0_action --> E_SetUSManifestFound S_SetUSManifestFound --> N_SetUSManifestFound_Node0 N_SetUSManifestFound_Node0 -- No --> E_SetUSManifestFound
satisfied"}:::decision N_SetUSManifestFound_Node0_action["Set the US manifest found indicator
to true to enable further processing
of this US cargo record"]:::main N_SetUSManifestFound_Node0 -- Yes --> N_SetUSManifestFound_Node0_action N_SetUSManifestFound_Node0_action --> E_SetUSManifestFound S_SetUSManifestFound --> N_SetUSManifestFound_Node0 N_SetUSManifestFound_Node0 -- No --> E_SetUSManifestFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The US cargo record matches car ID and waybill, is not deleted, and has no existing train record
WHEN:
All validation criteria are satisfied
THEN:
Set the US manifest found indicator to true to enable further processing of this US cargo record
β Consolidated Acceptance Criteria
- Either the car ID does not match the current car ID or the waybill number does not match the saved waybill index → set the end of database flag to true to terminate the 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_SetEndofDatabase(["Start Step"])
E_SetEndofDatabase(["End Step"])
N_SetEndofDatabase_Node0{"Either the car ID does not match
the current car ID or the waybill
number does not match the saved
waybill index"}:::decision N_SetEndofDatabase_Node0_action["Set the end of database flag to
true to terminate the search process"]:::exclusion N_SetEndofDatabase_Node0 -- Yes -->|Alternative| N_SetEndofDatabase_Node0_action N_SetEndofDatabase_Node0_action --> E_SetEndofDatabase S_SetEndofDatabase --> N_SetEndofDatabase_Node0 N_SetEndofDatabase_Node0 -- No --> E_SetEndofDatabase
the current car ID or the waybill
number does not match the saved
waybill index"}:::decision N_SetEndofDatabase_Node0_action["Set the end of database flag to
true to terminate the search process"]:::exclusion N_SetEndofDatabase_Node0 -- Yes -->|Alternative| N_SetEndofDatabase_Node0_action N_SetEndofDatabase_Node0_action --> E_SetEndofDatabase S_SetEndofDatabase --> N_SetEndofDatabase_Node0 N_SetEndofDatabase_Node0 -- No --> E_SetEndofDatabase
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved during search
WHEN:
Either the car ID does not match the current car ID or the waybill number does not match the saved waybill index
THEN:
Set the end of database flag to true to terminate the search process
β Consolidated Acceptance Criteria
- The cargo is either marked as deleted or has a train record already created (indicator = 'Y') → continue to the next iteration of the search without setting the US manifest 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_ContinueSearch(["Start Step"])
E_ContinueSearch(["End Step"])
N_ContinueSearch_Node0{"The cargo is either marked as
deleted or has a train record
already created indicator Y"}:::decision N_ContinueSearch_Node0_action["Continue to the next iteration of
the search without setting the US
manifest found flag"]:::main N_ContinueSearch_Node0 -- Yes --> N_ContinueSearch_Node0_action N_ContinueSearch_Node0_action --> E_ContinueSearch S_ContinueSearch --> N_ContinueSearch_Node0 N_ContinueSearch_Node0 -- No --> E_ContinueSearch
deleted or has a train record
already created indicator Y"}:::decision N_ContinueSearch_Node0_action["Continue to the next iteration of
the search without setting the US
manifest found flag"]:::main N_ContinueSearch_Node0 -- Yes --> N_ContinueSearch_Node0_action N_ContinueSearch_Node0_action --> E_ContinueSearch S_ContinueSearch --> N_ContinueSearch_Node0 N_ContinueSearch_Node0 -- No --> E_ContinueSearch
File: GCX126R.cbl
GIVEN:
The US cargo record matches car ID and waybill criteria
WHEN:
The cargo is either marked as deleted or has a train record already created (indicator = 'Y')
THEN:
Continue to the next iteration of the search without setting the US manifest found flag
β Consolidated Acceptance Criteria
- Initiating a search for matching US cargo records → the search parameters are set with car ID from current cargo equipment key, waybill index from saved waybill index, and search function set to Get Next with 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_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB(["Start Step"])
E_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB(["End Step"])
N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0{"Initiating a search for matching US
cargo records"}:::decision N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0_action["The search parameters are set with
car ID from current cargo equipment
key, waybill index from saved
waybill index, and search function
set to Get Next with Car-Waybill
index"]:::main N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0 -- Yes --> N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0_action N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0_action --> E_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB S_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB --> N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0 N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0 -- No --> E_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB
cargo records"}:::decision N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0_action["The search parameters are set with
car ID from current cargo equipment
key, waybill index from saved
waybill index, and search function
set to Get Next with Car-Waybill
index"]:::main N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0 -- Yes --> N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0_action N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0_action --> E_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB S_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB --> N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0 N_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB_Node0 -- No --> E_SetSearchParametersCarIDfromcurrentcargoWaybillindexfromcurrentcargoSetstatustoGEGB
File: GCX126R.cbl
GIVEN:
A current cargo record with equipment car ID and waybill index
WHEN:
Initiating a search for matching US cargo records
THEN:
The search parameters are set with car ID from current cargo equipment key, waybill index from saved waybill index, and search function set to Get Next with Car-Waybill index
β Consolidated Acceptance Criteria
- The US cargo retrieval function is invoked → the system calls GCCUSIO to retrieve the next US cargo record matching the car and waybill 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_CallGetNextUSCargobyCarandWaybillIndex(["Start Step"])
E_CallGetNextUSCargobyCarandWaybillIndex(["End Step"])
N_CallGetNextUSCargobyCarandWaybillIndex_Node0{"The US cargo retrieval function is
invoked"}:::decision N_CallGetNextUSCargobyCarandWaybillIndex_Node0_action["The system calls GCCUSIO to
retrieve the next US cargo record
matching the car and waybill
criteria"]:::main N_CallGetNextUSCargobyCarandWaybillIndex_Node0 -- Yes --> N_CallGetNextUSCargobyCarandWaybillIndex_Node0_action N_CallGetNextUSCargobyCarandWaybillIndex_Node0_action --> E_CallGetNextUSCargobyCarandWaybillIndex S_CallGetNextUSCargobyCarandWaybillIndex --> N_CallGetNextUSCargobyCarandWaybillIndex_Node0 N_CallGetNextUSCargobyCarandWaybillIndex_Node0 -- No --> E_CallGetNextUSCargobyCarandWaybillIndex
invoked"}:::decision N_CallGetNextUSCargobyCarandWaybillIndex_Node0_action["The system calls GCCUSIO to
retrieve the next US cargo record
matching the car and waybill
criteria"]:::main N_CallGetNextUSCargobyCarandWaybillIndex_Node0 -- Yes --> N_CallGetNextUSCargobyCarandWaybillIndex_Node0_action N_CallGetNextUSCargobyCarandWaybillIndex_Node0_action --> E_CallGetNextUSCargobyCarandWaybillIndex S_CallGetNextUSCargobyCarandWaybillIndex --> N_CallGetNextUSCargobyCarandWaybillIndex_Node0 N_CallGetNextUSCargobyCarandWaybillIndex_Node0 -- No --> E_CallGetNextUSCargobyCarandWaybillIndex
File: GCX126R.cbl
GIVEN:
Search parameters are configured with car ID, waybill index, segment type GCSUSRT, function Get Next, and index type Car-Waybill
WHEN:
The US cargo retrieval function is invoked
THEN:
- The system calls gccusio to retrieve the next us cargo record matching the car
- Waybill criteria
β Consolidated Acceptance Criteria
- The comparison of car ID and waybill fails → set the end of file flag to true to stop the search as no matching 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_SetEndofDatabaseFlagNoMatchFound(["Start Step"])
E_SetEndofDatabaseFlagNoMatchFound(["End Step"])
N_SetEndofDatabaseFlagNoMatchFound_Node0{"The comparison of car ID and
waybill fails"}:::decision N_SetEndofDatabaseFlagNoMatchFound_Node0_action["Set the end of file flag to true to
stop the search as no matching
record exists"]:::main N_SetEndofDatabaseFlagNoMatchFound_Node0 -- Yes --> N_SetEndofDatabaseFlagNoMatchFound_Node0_action N_SetEndofDatabaseFlagNoMatchFound_Node0_action --> E_SetEndofDatabaseFlagNoMatchFound S_SetEndofDatabaseFlagNoMatchFound --> N_SetEndofDatabaseFlagNoMatchFound_Node0 N_SetEndofDatabaseFlagNoMatchFound_Node0 -- No --> E_SetEndofDatabaseFlagNoMatchFound
waybill fails"}:::decision N_SetEndofDatabaseFlagNoMatchFound_Node0_action["Set the end of file flag to true to
stop the search as no matching
record exists"]:::main N_SetEndofDatabaseFlagNoMatchFound_Node0 -- Yes --> N_SetEndofDatabaseFlagNoMatchFound_Node0_action N_SetEndofDatabaseFlagNoMatchFound_Node0_action --> E_SetEndofDatabaseFlagNoMatchFound S_SetEndofDatabaseFlagNoMatchFound --> N_SetEndofDatabaseFlagNoMatchFound_Node0 N_SetEndofDatabaseFlagNoMatchFound_Node0 -- No --> E_SetEndofDatabaseFlagNoMatchFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved but its car ID or waybill index does not match the current cargo
WHEN:
- The comparison of car id
- Waybill fails
THEN:
Set the end of file flag to true to stop the search as no matching record exists
β Consolidated Acceptance Criteria
- The cargo status check determines the record should be skipped → continue to the next iteration of the search without setting the found flag, allowing the loop to retrieve the 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_ContinueSearchSkipThisRecord(["Start Step"])
E_ContinueSearchSkipThisRecord(["End Step"])
N_ContinueSearchSkipThisRecord_Node0{"The cargo status check determines
the record should be skipped"}:::decision N_ContinueSearchSkipThisRecord_Node0_action["Continue to the next iteration of
the search without setting the found
flag, allowing the loop to retrieve
the next record"]:::main N_ContinueSearchSkipThisRecord_Node0 -- Yes --> N_ContinueSearchSkipThisRecord_Node0_action N_ContinueSearchSkipThisRecord_Node0_action --> E_ContinueSearchSkipThisRecord S_ContinueSearchSkipThisRecord --> N_ContinueSearchSkipThisRecord_Node0 N_ContinueSearchSkipThisRecord_Node0 -- No --> E_ContinueSearchSkipThisRecord
the record should be skipped"}:::decision N_ContinueSearchSkipThisRecord_Node0_action["Continue to the next iteration of
the search without setting the found
flag, allowing the loop to retrieve
the next record"]:::main N_ContinueSearchSkipThisRecord_Node0 -- Yes --> N_ContinueSearchSkipThisRecord_Node0_action N_ContinueSearchSkipThisRecord_Node0_action --> E_ContinueSearchSkipThisRecord S_ContinueSearchSkipThisRecord --> N_ContinueSearchSkipThisRecord_Node0 N_ContinueSearchSkipThisRecord_Node0 -- No --> E_ContinueSearchSkipThisRecord
File: GCX126R.cbl
GIVEN:
A US cargo record that matches car ID and waybill but is either deleted or has a train created
WHEN:
The cargo status check determines the record should be skipped
THEN:
Continue to the next iteration of the search without setting the found flag, allowing the loop to retrieve the next record
β Consolidated Acceptance Criteria
- The system prepares the database call parameters → the database status code is set to 'GEGB', the segment type is set to GCSUSRT, the function is set to Get Next (GN), the index type is set to Car-Waybill, and the operator is set to greater than ('>') for sequential 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_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan(["Start Step"])
E_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan(["End Step"])
N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0{"The system prepares the database
call parameters"}:::decision N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0_action["The database status code is set to
GEGB , the segment type is set to
GCSUSRT, the function is set to Get
Next GN, the index type is set to
Car-Waybill, and the operator is set
to greater than for sequential
retrieval"]:::main N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0 -- Yes --> N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0_action N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0_action --> E_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan S_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan --> N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0 N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0 -- No --> E_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan
call parameters"}:::decision N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0_action["The database status code is set to
GEGB , the segment type is set to
GCSUSRT, the function is set to Get
Next GN, the index type is set to
Car-Waybill, and the operator is set
to greater than for sequential
retrieval"]:::main N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0 -- Yes --> N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0_action N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0_action --> E_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan S_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan --> N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0 N_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan_Node0 -- No --> E_SetDatabaseStatusCodetoGEGBSetSegmentTypetoGCSUSRTSetFunctiontoGetNextGNSetIndexTypetoCarWaybillSetOperatortoGreaterThan
File: GCX126R.cbl
GIVEN:
A request to retrieve the next US cargo record by car and waybill index
WHEN:
The system prepares the database call parameters
THEN:
The database status code is set to 'GEGB', the segment type is set to GCSUSRT, the function is set to Get Next (GN), the index type is set to Car-Waybill, and the operator is set to greater than ('>') for sequential retrieval
β Consolidated Acceptance Criteria
- The GCCUSIO program is called with the configured parameters and US cargo segment → the system retrieves the next US cargo record from the database and returns the database 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_CallGCCUSIOtoRetrieveNextUSCargoRecord(["Start Step"])
E_CallGCCUSIOtoRetrieveNextUSCargoRecord(["End Step"])
N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0{"The GCCUSIO program is called with
the configured parameters and US
cargo segment"}:::decision N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0_action["The system retrieves the next US
cargo record from the database and
returns the database status code"]:::main N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0 -- Yes --> N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0_action N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0_action --> E_CallGCCUSIOtoRetrieveNextUSCargoRecord S_CallGCCUSIOtoRetrieveNextUSCargoRecord --> N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0 N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0 -- No --> E_CallGCCUSIOtoRetrieveNextUSCargoRecord
the configured parameters and US
cargo segment"}:::decision N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0_action["The system retrieves the next US
cargo record from the database and
returns the database status code"]:::main N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0 -- Yes --> N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0_action N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0_action --> E_CallGCCUSIOtoRetrieveNextUSCargoRecord S_CallGCCUSIOtoRetrieveNextUSCargoRecord --> N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0 N_CallGCCUSIOtoRetrieveNextUSCargoRecord_Node0 -- No --> E_CallGCCUSIOtoRetrieveNextUSCargoRecord
File: GCX126R.cbl
GIVEN:
Database call parameters are configured with status code 'GEGB', segment type GCSUSRT, function Get Next, index type Car-Waybill, and operator greater than
WHEN:
- The gccusio program is called with the configured parameters
- Us cargo segment
THEN:
- The system retrieves the next us cargo record from the database
- Returns the database status code
β Consolidated Acceptance Criteria
- The database status code is not equal to spaces (indicating an error or end-of-data condition) → the end-of-database flag is set to true and processing terminates for this retrieval attempt
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseStatusOKNoErrorStatus(["Start Step"])
E_DatabaseStatusOKNoErrorStatus(["End Step"])
N_DatabaseStatusOKNoErrorStatus_Node0{"The database status code is not
equal to spaces indicating an error
or end-of-data condition"}:::decision N_DatabaseStatusOKNoErrorStatus_Node0_action["The end-of-database flag is set to
true and processing terminates for
this retrieval attempt"]:::exclusion N_DatabaseStatusOKNoErrorStatus_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKNoErrorStatus_Node0_action N_DatabaseStatusOKNoErrorStatus_Node0_action --> E_DatabaseStatusOKNoErrorStatus S_DatabaseStatusOKNoErrorStatus --> N_DatabaseStatusOKNoErrorStatus_Node0 N_DatabaseStatusOKNoErrorStatus_Node0 -- No --> E_DatabaseStatusOKNoErrorStatus
equal to spaces indicating an error
or end-of-data condition"}:::decision N_DatabaseStatusOKNoErrorStatus_Node0_action["The end-of-database flag is set to
true and processing terminates for
this retrieval attempt"]:::exclusion N_DatabaseStatusOKNoErrorStatus_Node0 -- Yes -->|Alternative| N_DatabaseStatusOKNoErrorStatus_Node0_action N_DatabaseStatusOKNoErrorStatus_Node0_action --> E_DatabaseStatusOKNoErrorStatus S_DatabaseStatusOKNoErrorStatus --> N_DatabaseStatusOKNoErrorStatus_Node0 N_DatabaseStatusOKNoErrorStatus_Node0 -- No --> E_DatabaseStatusOKNoErrorStatus
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A database call has been executed to retrieve the next US cargo record
WHEN:
The database status code is not equal to spaces (indicating an error or end-of-data condition)
THEN:
- The end-of-database flag is set to true
- Processing terminates for this retrieval attempt
β Consolidated Acceptance Criteria
- The system compares the retrieved cargo's car ID (first 12 characters) with the current equipment car ID key and the waybill number index with the saved waybill index → if both the car ID and waybill number match the current values, the system proceeds to validate the cargo deletion and train creation status; otherwise, the end-of-database 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_CarIDandWaybillMatchCurrentValuesYesMatchFound(["Start Step"])
E_CarIDandWaybillMatchCurrentValuesYesMatchFound(["End Step"])
N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0{"The system compares the retrieved
cargo s car ID first 12 characters
with the current equipment car ID
key and the waybill number index
with the saved waybill index"}:::decision N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0_action["If both the car ID and waybill
number match the current values, the
system proceeds to validate the
cargo deletion and train creation
status otherwise, the
end-of-database flag is set to true"]:::main N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0 -- Yes --> N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0_action N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0_action --> E_CarIDandWaybillMatchCurrentValuesYesMatchFound S_CarIDandWaybillMatchCurrentValuesYesMatchFound --> N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0 N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0 -- No --> E_CarIDandWaybillMatchCurrentValuesYesMatchFound
cargo s car ID first 12 characters
with the current equipment car ID
key and the waybill number index
with the saved waybill index"}:::decision N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0_action["If both the car ID and waybill
number match the current values, the
system proceeds to validate the
cargo deletion and train creation
status otherwise, the
end-of-database flag is set to true"]:::main N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0 -- Yes --> N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0_action N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0_action --> E_CarIDandWaybillMatchCurrentValuesYesMatchFound S_CarIDandWaybillMatchCurrentValuesYesMatchFound --> N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0 N_CarIDandWaybillMatchCurrentValuesYesMatchFound_Node0 -- No --> E_CarIDandWaybillMatchCurrentValuesYesMatchFound
File: GCX126R.cbl
GIVEN:
A US cargo record has been successfully retrieved from the database with a valid status
WHEN:
- The system compares the retrieved cargo's car id (first 12 characters) with the current equipment car id key
- The waybill number index with the saved waybill index
THEN:
- If both the car id
- Waybill number match the current values, the system proceeds to validate the cargo deletion
- Train creation status; otherwise, the end-of-database flag is set to true
β Consolidated Acceptance Criteria
- The cargo record has a deletion status indicator set or the train-created-for-it flag is set to 'Y' → the system continues to the next record without setting the US manifest 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_CargoDeletedorTRCreatedYesSkipRecord(["Start Step"])
E_CargoDeletedorTRCreatedYesSkipRecord(["End Step"])
N_CargoDeletedorTRCreatedYesSkipRecord_Node0{"The cargo record has a deletion
status indicator set or the
train-created-for-it flag is set to
Y"}:::decision N_CargoDeletedorTRCreatedYesSkipRecord_Node0_action["The system continues to the next
record without setting the US
manifest found flag"]:::main N_CargoDeletedorTRCreatedYesSkipRecord_Node0 -- Yes --> N_CargoDeletedorTRCreatedYesSkipRecord_Node0_action N_CargoDeletedorTRCreatedYesSkipRecord_Node0_action --> E_CargoDeletedorTRCreatedYesSkipRecord S_CargoDeletedorTRCreatedYesSkipRecord --> N_CargoDeletedorTRCreatedYesSkipRecord_Node0 N_CargoDeletedorTRCreatedYesSkipRecord_Node0 -- No --> E_CargoDeletedorTRCreatedYesSkipRecord
status indicator set or the
train-created-for-it flag is set to
Y"}:::decision N_CargoDeletedorTRCreatedYesSkipRecord_Node0_action["The system continues to the next
record without setting the US
manifest found flag"]:::main N_CargoDeletedorTRCreatedYesSkipRecord_Node0 -- Yes --> N_CargoDeletedorTRCreatedYesSkipRecord_Node0_action N_CargoDeletedorTRCreatedYesSkipRecord_Node0_action --> E_CargoDeletedorTRCreatedYesSkipRecord S_CargoDeletedorTRCreatedYesSkipRecord --> N_CargoDeletedorTRCreatedYesSkipRecord_Node0 N_CargoDeletedorTRCreatedYesSkipRecord_Node0 -- No --> E_CargoDeletedorTRCreatedYesSkipRecord
File: GCX126R.cbl
GIVEN:
A US cargo record has been retrieved that matches the current car ID and waybill number
WHEN:
The cargo record has a deletion status indicator set or the train-created-for-it flag is set to 'Y'
THEN:
The system continues to the next record without setting the US manifest found flag
β Consolidated Acceptance Criteria
- The cargo record does not have a deletion status indicator set and the train-created-for-it flag is not set to 'Y' → the US manifest found flag is set to true, indicating a valid US cargo record has been located
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoDeletedorTRCreatedNoValidCargo(["Start Step"])
E_CargoDeletedorTRCreatedNoValidCargo(["End Step"])
N_CargoDeletedorTRCreatedNoValidCargo_Node0{"The cargo record does not have a
deletion status indicator set and
the train-created-for-it flag is not
set to Y"}:::decision N_CargoDeletedorTRCreatedNoValidCargo_Node0_action["The US manifest found flag is set
to true, indicating a valid US cargo
record has been located"]:::main N_CargoDeletedorTRCreatedNoValidCargo_Node0 -- Yes --> N_CargoDeletedorTRCreatedNoValidCargo_Node0_action N_CargoDeletedorTRCreatedNoValidCargo_Node0_action --> E_CargoDeletedorTRCreatedNoValidCargo S_CargoDeletedorTRCreatedNoValidCargo --> N_CargoDeletedorTRCreatedNoValidCargo_Node0 N_CargoDeletedorTRCreatedNoValidCargo_Node0 -- No --> E_CargoDeletedorTRCreatedNoValidCargo
deletion status indicator set and
the train-created-for-it flag is not
set to Y"}:::decision N_CargoDeletedorTRCreatedNoValidCargo_Node0_action["The US manifest found flag is set
to true, indicating a valid US cargo
record has been located"]:::main N_CargoDeletedorTRCreatedNoValidCargo_Node0 -- Yes --> N_CargoDeletedorTRCreatedNoValidCargo_Node0_action N_CargoDeletedorTRCreatedNoValidCargo_Node0_action --> E_CargoDeletedorTRCreatedNoValidCargo S_CargoDeletedorTRCreatedNoValidCargo --> N_CargoDeletedorTRCreatedNoValidCargo_Node0 N_CargoDeletedorTRCreatedNoValidCargo_Node0 -- No --> E_CargoDeletedorTRCreatedNoValidCargo
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been retrieved that matches the current car ID and waybill number
WHEN:
- The cargo record does not have a deletion status indicator set
- The train-created-for-it flag is not set to 'y'
THEN:
The US manifest found flag is set to true, indicating a valid US cargo record has been located
β Consolidated Acceptance Criteria
- Either the retrieved cargo's car ID (first 12 characters) does not match the current equipment car ID key or the waybill number index does not match the saved waybill index → the end-of-database flag is set to true, terminating the search for matching US 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_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill(["Start Step"])
E_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill(["End Step"])
N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0{"Either the retrieved cargo s car ID
first 12 characters does not match
the current equipment car ID key or
the waybill number index does not
match the saved waybill index"}:::decision N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0_action["The end-of-database flag is set to
true, terminating the search for
matching US cargo records"]:::main N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0 -- Yes --> N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0_action N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0_action --> E_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill S_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill --> N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0 N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0 -- No --> E_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill
first 12 characters does not match
the current equipment car ID key or
the waybill number index does not
match the saved waybill index"}:::decision N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0_action["The end-of-database flag is set to
true, terminating the search for
matching US cargo records"]:::main N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0 -- Yes --> N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0_action N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0_action --> E_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill S_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill --> N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0 N_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill_Node0 -- No --> E_CarIDandWaybillMatchCurrentValuesNoDifferentCarWaybill
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A US cargo record has been successfully retrieved from the database with a valid status
WHEN:
Either the retrieved cargo's car ID (first 12 characters) does not match the current equipment car ID key or the waybill number index does not match the saved waybill index
THEN:
The end-of-database flag is set to true, terminating the search for matching US cargo records
β Consolidated Acceptance Criteria
- The system begins to set cargo status flags → all four cargo status switches (WS-SWITCH1-CARGO, WS-SWITCH2-CARGO, WS-SWITCH3-CARGO, WS-SWITCH4-CARGO) are set to SPACE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeAllCargoStatusFlagstoSpace(["Start Step"])
E_InitializeAllCargoStatusFlagstoSpace(["End Step"])
N_InitializeAllCargoStatusFlagstoSpace_Node0{"The system begins to set cargo
status flags"}:::decision N_InitializeAllCargoStatusFlagstoSpace_Node0_action["All four cargo status switches
WS-SWITCH1-CARGO, WS-SWITCH2-CARGO,
WS-SWITCH3-CARGO, WS-SWITCH4-CARGO
are set to SPACE"]:::main N_InitializeAllCargoStatusFlagstoSpace_Node0 -- Yes --> N_InitializeAllCargoStatusFlagstoSpace_Node0_action N_InitializeAllCargoStatusFlagstoSpace_Node0_action --> E_InitializeAllCargoStatusFlagstoSpace S_InitializeAllCargoStatusFlagstoSpace --> N_InitializeAllCargoStatusFlagstoSpace_Node0 N_InitializeAllCargoStatusFlagstoSpace_Node0 -- No --> E_InitializeAllCargoStatusFlagstoSpace
status flags"}:::decision N_InitializeAllCargoStatusFlagstoSpace_Node0_action["All four cargo status switches
WS-SWITCH1-CARGO, WS-SWITCH2-CARGO,
WS-SWITCH3-CARGO, WS-SWITCH4-CARGO
are set to SPACE"]:::main N_InitializeAllCargoStatusFlagstoSpace_Node0 -- Yes --> N_InitializeAllCargoStatusFlagstoSpace_Node0_action N_InitializeAllCargoStatusFlagstoSpace_Node0_action --> E_InitializeAllCargoStatusFlagstoSpace S_InitializeAllCargoStatusFlagstoSpace --> N_InitializeAllCargoStatusFlagstoSpace_Node0 N_InitializeAllCargoStatusFlagstoSpace_Node0 -- No --> E_InitializeAllCargoStatusFlagstoSpace
File: GCX126R.cbl
GIVEN:
The cargo status evaluation process is starting
WHEN:
The system begins to set cargo status flags
THEN:
All four cargo status switches (WS-SWITCH1-CARGO, WS-SWITCH2-CARGO, WS-SWITCH3-CARGO, WS-SWITCH4-CARGO) are set to SPACE
β Consolidated Acceptance Criteria
- The database status code is not equal to SPACES → the cargo not found flag (WS-CARGO-NOT-FOUND) 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_SetFlagCargoNotFound(["Start Step"])
E_SetFlagCargoNotFound(["End Step"])
N_SetFlagCargoNotFound_Node0{"The database status code is not
equal to SPACES"}:::decision N_SetFlagCargoNotFound_Node0_action["The cargo not found flag
WS-CARGO-NOT-FOUND is set to TRUE"]:::main N_SetFlagCargoNotFound_Node0 -- Yes --> N_SetFlagCargoNotFound_Node0_action N_SetFlagCargoNotFound_Node0_action --> E_SetFlagCargoNotFound S_SetFlagCargoNotFound --> N_SetFlagCargoNotFound_Node0 N_SetFlagCargoNotFound_Node0 -- No --> E_SetFlagCargoNotFound
equal to SPACES"}:::decision N_SetFlagCargoNotFound_Node0_action["The cargo not found flag
WS-CARGO-NOT-FOUND is set to TRUE"]:::main N_SetFlagCargoNotFound_Node0 -- Yes --> N_SetFlagCargoNotFound_Node0_action N_SetFlagCargoNotFound_Node0_action --> E_SetFlagCargoNotFound S_SetFlagCargoNotFound --> N_SetFlagCargoNotFound_Node0 N_SetFlagCargoNotFound_Node0 -- No --> E_SetFlagCargoNotFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
A cargo database query has been executed
WHEN:
The database status code is not equal to SPACES
THEN:
The cargo not found flag (WS-CARGO-NOT-FOUND) is set to TRUE
β Consolidated Acceptance Criteria
- The database status code equals SPACES → the cargo found flag (WS-CARGO-FOUND) 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_SetFlagCargoFound(["Start Step"])
E_SetFlagCargoFound(["End Step"])
N_SetFlagCargoFound_Node0{"The database status code equals
SPACES"}:::decision N_SetFlagCargoFound_Node0_action["The cargo found flag WS-CARGO-FOUND
is set to TRUE"]:::main N_SetFlagCargoFound_Node0 -- Yes --> N_SetFlagCargoFound_Node0_action N_SetFlagCargoFound_Node0_action --> E_SetFlagCargoFound S_SetFlagCargoFound --> N_SetFlagCargoFound_Node0 N_SetFlagCargoFound_Node0 -- No --> E_SetFlagCargoFound
SPACES"}:::decision N_SetFlagCargoFound_Node0_action["The cargo found flag WS-CARGO-FOUND
is set to TRUE"]:::main N_SetFlagCargoFound_Node0 -- Yes --> N_SetFlagCargoFound_Node0_action N_SetFlagCargoFound_Node0_action --> E_SetFlagCargoFound S_SetFlagCargoFound --> N_SetFlagCargoFound_Node0 N_SetFlagCargoFound_Node0 -- No --> E_SetFlagCargoFound
File: GCX126R.cbl
GIVEN:
A cargo database query has been executed
WHEN:
The database status code equals SPACES
THEN:
The cargo found flag (WS-CARGO-FOUND) is set to TRUE
β Consolidated Acceptance Criteria
- The cargo waybill key for index does not equal the saved waybill index → the cargo not waybill match flag (WS-CARGO-NOT-WB) 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_SetFlagCargoNotWaybillMatch(["Start Step"])
E_SetFlagCargoNotWaybillMatch(["End Step"])
N_SetFlagCargoNotWaybillMatch_Node0{"The cargo waybill key for index
does not equal the saved waybill
index"}:::decision N_SetFlagCargoNotWaybillMatch_Node0_action["The cargo not waybill match flag
WS-CARGO-NOT-WB is set to TRUE"]:::main N_SetFlagCargoNotWaybillMatch_Node0 -- Yes --> N_SetFlagCargoNotWaybillMatch_Node0_action N_SetFlagCargoNotWaybillMatch_Node0_action --> E_SetFlagCargoNotWaybillMatch S_SetFlagCargoNotWaybillMatch --> N_SetFlagCargoNotWaybillMatch_Node0 N_SetFlagCargoNotWaybillMatch_Node0 -- No --> E_SetFlagCargoNotWaybillMatch
does not equal the saved waybill
index"}:::decision N_SetFlagCargoNotWaybillMatch_Node0_action["The cargo not waybill match flag
WS-CARGO-NOT-WB is set to TRUE"]:::main N_SetFlagCargoNotWaybillMatch_Node0 -- Yes --> N_SetFlagCargoNotWaybillMatch_Node0_action N_SetFlagCargoNotWaybillMatch_Node0_action --> E_SetFlagCargoNotWaybillMatch S_SetFlagCargoNotWaybillMatch --> N_SetFlagCargoNotWaybillMatch_Node0 N_SetFlagCargoNotWaybillMatch_Node0 -- No --> E_SetFlagCargoNotWaybillMatch
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record has been found in the database AND a saved waybill index exists (not blank)
WHEN:
The cargo waybill key for index does not equal the saved waybill index
THEN:
The cargo not waybill match flag (WS-CARGO-NOT-WB) is set to TRUE
β Consolidated Acceptance Criteria
- The cargo delete status field equals 'D' → the cargo deleted flag (WS-CARGO-DELETED) 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_SetFlagCargoDeleted(["Start Step"])
E_SetFlagCargoDeleted(["End Step"])
N_SetFlagCargoDeleted_Node0{"The cargo delete status field
equals D"}:::decision N_SetFlagCargoDeleted_Node0_action["The cargo deleted flag
WS-CARGO-DELETED is set to TRUE"]:::main N_SetFlagCargoDeleted_Node0 -- Yes --> N_SetFlagCargoDeleted_Node0_action N_SetFlagCargoDeleted_Node0_action --> E_SetFlagCargoDeleted S_SetFlagCargoDeleted --> N_SetFlagCargoDeleted_Node0 N_SetFlagCargoDeleted_Node0 -- No --> E_SetFlagCargoDeleted
equals D"}:::decision N_SetFlagCargoDeleted_Node0_action["The cargo deleted flag
WS-CARGO-DELETED is set to TRUE"]:::main N_SetFlagCargoDeleted_Node0 -- Yes --> N_SetFlagCargoDeleted_Node0_action N_SetFlagCargoDeleted_Node0_action --> E_SetFlagCargoDeleted S_SetFlagCargoDeleted --> N_SetFlagCargoDeleted_Node0 N_SetFlagCargoDeleted_Node0 -- No --> E_SetFlagCargoDeleted
File: GCX126R.cbl
GIVEN:
Cargo record has been found in the database AND waybill validation has passed (or no waybill index was provided)
WHEN:
The cargo delete status field equals 'D'
THEN:
The cargo deleted flag (WS-CARGO-DELETED) is set to TRUE
β Consolidated Acceptance Criteria
- The cargo status return indicator (GCCC-STATUS-RETURN) is TRUE → the cargo returned flag (WS-CARGO-RETURNED) 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_SetFlagCargoReturned(["Start Step"])
E_SetFlagCargoReturned(["End Step"])
N_SetFlagCargoReturned_Node0{"The cargo status return indicator
GCCC-STATUS-RETURN is TRUE"}:::decision N_SetFlagCargoReturned_Node0_action["The cargo returned flag
WS-CARGO-RETURNED is set to TRUE"]:::main N_SetFlagCargoReturned_Node0 -- Yes --> N_SetFlagCargoReturned_Node0_action N_SetFlagCargoReturned_Node0_action --> E_SetFlagCargoReturned S_SetFlagCargoReturned --> N_SetFlagCargoReturned_Node0 N_SetFlagCargoReturned_Node0 -- No --> E_SetFlagCargoReturned
GCCC-STATUS-RETURN is TRUE"}:::decision N_SetFlagCargoReturned_Node0_action["The cargo returned flag
WS-CARGO-RETURNED is set to TRUE"]:::main N_SetFlagCargoReturned_Node0 -- Yes --> N_SetFlagCargoReturned_Node0_action N_SetFlagCargoReturned_Node0_action --> E_SetFlagCargoReturned S_SetFlagCargoReturned --> N_SetFlagCargoReturned_Node0 N_SetFlagCargoReturned_Node0 -- No --> E_SetFlagCargoReturned
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record has been found in the database AND is not deleted AND waybill validation has passed
WHEN:
The cargo status return indicator (GCCC-STATUS-RETURN) is TRUE
THEN:
The cargo returned flag (WS-CARGO-RETURNED) is set to TRUE
β Consolidated Acceptance Criteria
- The cargo release status field equals 'R' → the cargo released flag (WS-CARGO-RELEASED) 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_SetFlagCargoReleased(["Start Step"])
E_SetFlagCargoReleased(["End Step"])
N_SetFlagCargoReleased_Node0{"The cargo release status field
equals R"}:::decision N_SetFlagCargoReleased_Node0_action["The cargo released flag
WS-CARGO-RELEASED is set to TRUE"]:::main N_SetFlagCargoReleased_Node0 -- Yes --> N_SetFlagCargoReleased_Node0_action N_SetFlagCargoReleased_Node0_action --> E_SetFlagCargoReleased S_SetFlagCargoReleased --> N_SetFlagCargoReleased_Node0 N_SetFlagCargoReleased_Node0 -- No --> E_SetFlagCargoReleased
equals R"}:::decision N_SetFlagCargoReleased_Node0_action["The cargo released flag
WS-CARGO-RELEASED is set to TRUE"]:::main N_SetFlagCargoReleased_Node0 -- Yes --> N_SetFlagCargoReleased_Node0_action N_SetFlagCargoReleased_Node0_action --> E_SetFlagCargoReleased S_SetFlagCargoReleased --> N_SetFlagCargoReleased_Node0 N_SetFlagCargoReleased_Node0 -- No --> E_SetFlagCargoReleased
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record has been found in the database AND is not deleted AND waybill validation has passed
WHEN:
The cargo release status field equals 'R'
THEN:
The cargo released flag (WS-CARGO-RELEASED) is set to TRUE
β Consolidated Acceptance Criteria
- The cargo train ID field (GCCC-CP-TRAIN-ID) is not equal to SPACES → the cargo on a train flag (WS-CARGO-ON-A-TRAIN) 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_SetFlagCargoOnATrain(["Start Step"])
E_SetFlagCargoOnATrain(["End Step"])
N_SetFlagCargoOnATrain_Node0{"The cargo train ID field
GCCC-CP-TRAIN-ID is not equal to
SPACES"}:::decision N_SetFlagCargoOnATrain_Node0_action["The cargo on a train flag
WS-CARGO-ON-A-TRAIN is set to TRUE"]:::main N_SetFlagCargoOnATrain_Node0 -- Yes --> N_SetFlagCargoOnATrain_Node0_action N_SetFlagCargoOnATrain_Node0_action --> E_SetFlagCargoOnATrain S_SetFlagCargoOnATrain --> N_SetFlagCargoOnATrain_Node0 N_SetFlagCargoOnATrain_Node0 -- No --> E_SetFlagCargoOnATrain
GCCC-CP-TRAIN-ID is not equal to
SPACES"}:::decision N_SetFlagCargoOnATrain_Node0_action["The cargo on a train flag
WS-CARGO-ON-A-TRAIN is set to TRUE"]:::main N_SetFlagCargoOnATrain_Node0 -- Yes --> N_SetFlagCargoOnATrain_Node0_action N_SetFlagCargoOnATrain_Node0_action --> E_SetFlagCargoOnATrain S_SetFlagCargoOnATrain --> N_SetFlagCargoOnATrain_Node0 N_SetFlagCargoOnATrain_Node0 -- No --> E_SetFlagCargoOnATrain
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record has been found in the database AND is not deleted AND waybill validation has passed
WHEN:
The cargo train ID field (GCCC-CP-TRAIN-ID) is not equal to SPACES
THEN:
The cargo on a train flag (WS-CARGO-ON-A-TRAIN) is set to TRUE
β Consolidated Acceptance Criteria
- The system attempts to retrieve the train record from the train database using the CRN as the search key → iF the train record is found in the database (indicated by blank status code) THEN the train is confirmed to exist in the system and processing continues with logging arrival acknowledgment at border ELSE IF the train record is not found in the database (indicated by non-blank status code) THEN the system identifies the train as not existing and generates an unknown train notification message containing the CRN with text 'UNKNOWN TRAIN ENTRY IN EDI 350' and 'THIS CRN WAS 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_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem(["Start Step"])
E_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem(["End Step"])
N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0{"The system attempts to retrieve the
train record from the train database
using the CRN as the search key"}:::decision N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0_action["IF the train record is found in the
database indicated by blank status
code THEN the train is confirmed to
exist in the system and processing
continues with logging arrival
acknowledgment at border ELSE IF the
train record is not found in the
database indicated by non-blank
status code THEN the system
identifies the train as not existing
and generates an unknown train
notification message containing the
CRN with text UNKNOWN TRAIN ENTRY IN
EDI 350 and THIS CRN WAS NOT FOUND"]:::main N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0 -- Yes --> N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0_action N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0_action --> E_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem S_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem --> N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0 N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0 -- No --> E_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem
train record from the train database
using the CRN as the search key"}:::decision N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0_action["IF the train record is found in the
database indicated by blank status
code THEN the train is confirmed to
exist in the system and processing
continues with logging arrival
acknowledgment at border ELSE IF the
train record is not found in the
database indicated by non-blank
status code THEN the system
identifies the train as not existing
and generates an unknown train
notification message containing the
CRN with text UNKNOWN TRAIN ENTRY IN
EDI 350 and THIS CRN WAS NOT FOUND"]:::main N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0 -- Yes --> N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0_action N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0_action --> E_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem S_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem --> N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0 N_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem_Node0 -- No --> E_VerifyTrainExistsRetrieveCanadiantraininformationfromdatabaseusingtrainIDtoverifytrainexistsinsystem
File: GCX126R.cbl
GIVEN:
A Conventional 350 EDI message is being processed AND the X4 segment contains entry type code '992' AND the X4 segment contains a Consist Release Number (CRN) in the related document ID field (positions 1-25)
WHEN:
The system attempts to retrieve the train record from the train database using the CRN as the search key
THEN:
- If the train record is found in the database (indicated by blank status code) then the train is confirmed to exist in the system
- Processing continues with logging arrival acknowledgment at border else if the train record is not found in the database (indicated by non-blank status code) then the system identifies the train as not existing
- Generates an unknown train notification message containing the crn with text 'unknown train entry in edi 350' and 'this crn was not found'
β Consolidated Acceptance Criteria
- The system executes the database retrieval operation → the system performs a GU (Get Unique) function call to retrieve the train root segment (GCB4R-TRAIN-ROOT-SEGMENT) from the train database (GCB4-PCB) using the qualified search key (B4RT-SSAQ) AND the database returns a status code indicating whether the record was found or 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_RetrieveTrainRecordfromDatabase(["Start Step"])
E_RetrieveTrainRecordfromDatabase(["End Step"])
N_RetrieveTrainRecordfromDatabase_Node0{"The system executes the database
retrieval operation"}:::decision N_RetrieveTrainRecordfromDatabase_Node0_action["The system performs a GU Get Unique
function call to retrieve the train
root segment
GCB4R-TRAIN-ROOT-SEGMENT from the
train database GCB4-PCB using the
qualified search key B4RT-SSAQ AND
the database returns a status code
indicating whether the record was
found or not found"]:::main N_RetrieveTrainRecordfromDatabase_Node0 -- Yes --> N_RetrieveTrainRecordfromDatabase_Node0_action N_RetrieveTrainRecordfromDatabase_Node0_action --> E_RetrieveTrainRecordfromDatabase S_RetrieveTrainRecordfromDatabase --> N_RetrieveTrainRecordfromDatabase_Node0 N_RetrieveTrainRecordfromDatabase_Node0 -- No --> E_RetrieveTrainRecordfromDatabase
retrieval operation"}:::decision N_RetrieveTrainRecordfromDatabase_Node0_action["The system performs a GU Get Unique
function call to retrieve the train
root segment
GCB4R-TRAIN-ROOT-SEGMENT from the
train database GCB4-PCB using the
qualified search key B4RT-SSAQ AND
the database returns a status code
indicating whether the record was
found or not found"]:::main N_RetrieveTrainRecordfromDatabase_Node0 -- Yes --> N_RetrieveTrainRecordfromDatabase_Node0_action N_RetrieveTrainRecordfromDatabase_Node0_action --> E_RetrieveTrainRecordfromDatabase S_RetrieveTrainRecordfromDatabase --> N_RetrieveTrainRecordfromDatabase_Node0 N_RetrieveTrainRecordfromDatabase_Node0 -- No --> E_RetrieveTrainRecordfromDatabase
File: GCX126R.cbl
GIVEN:
The train search key (B4-KEY-VALUE) has been set to the Consist Release Number from the X4 segment
WHEN:
The system executes the database retrieval operation
THEN:
The system performs a GU (Get Unique) function call to retrieve the train root segment (GCB4R-TRAIN-ROOT-SEGMENT) from the train database (GCB4-PCB) using the qualified search key (B4RT-SSAQ) AND the database returns a status code indicating whether the record was found or not found
β Consolidated Acceptance Criteria
- The system confirms train existence → the system prepares log information with current machine date (CC-MACHINE-CENTURY and CC-MACHINE-DATE-X concatenated into GCX105-DATE) AND current machine time (CC-MACHINE-TIME-X into GCX105-TIME) AND action code 'ZZZ' (into GCX105-ACTION-CODE) AND the Consist Release Number from X4 positions 1-25 (into GCX105-TRAIN-OR-US-CCN) AND sets the cargo type indicator to Canadian train (GCX105-CA-TRAIN) AND sets the message text to '350 ACK - ARRIVAL ACK AT BORDER' (into GCX105-MESSAGE) AND spawns the GCT1051E log entry 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_TrainExistsinSystem(["Start Step"])
E_TrainExistsinSystem(["End Step"])
N_TrainExistsinSystem_Node0{"The system confirms train existence"}:::decision
N_TrainExistsinSystem_Node0_action["The system prepares log information
with current machine date
CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X concatenated into
GCX105-DATE AND current machine time
CC-MACHINE-TIME-X into GCX105-TIME
AND action code ZZZ into
GCX105-ACTION-CODE AND the Consist
Release Number from X4 positions
1-25 into GCX105-TRAIN-OR-US-CCN AND
sets the cargo type indicator to
Canadian train GCX105-CA-TRAIN AND
sets the message text to 350 ACK -
ARRIVAL ACK AT BORDER into
GCX105-MESSAGE AND spawns the
GCT1051E log entry process"]:::main N_TrainExistsinSystem_Node0 -- Yes --> N_TrainExistsinSystem_Node0_action N_TrainExistsinSystem_Node0_action --> E_TrainExistsinSystem S_TrainExistsinSystem --> N_TrainExistsinSystem_Node0 N_TrainExistsinSystem_Node0 -- No --> E_TrainExistsinSystem
with current machine date
CC-MACHINE-CENTURY and
CC-MACHINE-DATE-X concatenated into
GCX105-DATE AND current machine time
CC-MACHINE-TIME-X into GCX105-TIME
AND action code ZZZ into
GCX105-ACTION-CODE AND the Consist
Release Number from X4 positions
1-25 into GCX105-TRAIN-OR-US-CCN AND
sets the cargo type indicator to
Canadian train GCX105-CA-TRAIN AND
sets the message text to 350 ACK -
ARRIVAL ACK AT BORDER into
GCX105-MESSAGE AND spawns the
GCT1051E log entry process"]:::main N_TrainExistsinSystem_Node0 -- Yes --> N_TrainExistsinSystem_Node0_action N_TrainExistsinSystem_Node0_action --> E_TrainExistsinSystem S_TrainExistsinSystem --> N_TrainExistsinSystem_Node0 N_TrainExistsinSystem_Node0 -- No --> E_TrainExistsinSystem
File: GCX126R.cbl
GIVEN:
The train record retrieval returned a blank status code indicating the train exists in the database
WHEN:
The system confirms train existence
THEN:
- The system prepares log information with current machine date (cc-machine-century
- Cc-machine-date-x concatenated into gcx105-date) and current machine time (cc-machine-time-x into gcx105-time) and action code 'zzz' (into gcx105-action-code) and the consist release number from x4 positions 1-25 (into gcx105-train-or-us-ccn) and sets the cargo type indicator to canadian train (gcx105-ca-train) and sets the message text to '350 ack - arrival ack at border' (into gcx105-message) and spawns the gct1051e log entry process
β Consolidated Acceptance Criteria
- The system confirms train non-existence → the system clears the first detail line (MRLN-DTL-LINE 01 to spaces) AND constructs an error message by concatenating 'UNKNOWN TRAIN ENTRY IN EDI 350 ' with the Consist Release Number from X4 positions 1-25 into the first detail line AND sets the third detail line to 'THIS CRN WAS NOT FOUND.' AND sets the report line counter (MRLN-LINE) to 4 AND sets the message type indicator to unknown (88-Z110-MRLN-TYPE-IS-UNKNOWN) AND invokes the email send preparation process (Z110-PREP-EMCSEND)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainNotFound(["Start Step"])
E_TrainNotFound(["End Step"])
N_TrainNotFound_Node0{"The system confirms train
non-existence"}:::decision N_TrainNotFound_Node0_action["The system clears the first detail
line MRLN-DTL-LINE 01 to spaces AND
constructs an error message by
concatenating UNKNOWN TRAIN ENTRY IN
EDI 350 with the Consist Release
Number from X4 positions 1-25 into
the first detail line AND sets the
third detail line to THIS CRN WAS
NOT FOUND. AND sets the report line
counter MRLN-LINE to 4 AND sets the
message type indicator to unknown
88-Z110-MRLN-TYPE-IS-UNKNOWN AND
invokes the email send preparation
process Z110-PREP-EMCSEND"]:::main N_TrainNotFound_Node0 -- Yes --> N_TrainNotFound_Node0_action N_TrainNotFound_Node0_action --> E_TrainNotFound S_TrainNotFound --> N_TrainNotFound_Node0 N_TrainNotFound_Node0 -- No --> E_TrainNotFound
non-existence"}:::decision N_TrainNotFound_Node0_action["The system clears the first detail
line MRLN-DTL-LINE 01 to spaces AND
constructs an error message by
concatenating UNKNOWN TRAIN ENTRY IN
EDI 350 with the Consist Release
Number from X4 positions 1-25 into
the first detail line AND sets the
third detail line to THIS CRN WAS
NOT FOUND. AND sets the report line
counter MRLN-LINE to 4 AND sets the
message type indicator to unknown
88-Z110-MRLN-TYPE-IS-UNKNOWN AND
invokes the email send preparation
process Z110-PREP-EMCSEND"]:::main N_TrainNotFound_Node0 -- Yes --> N_TrainNotFound_Node0_action N_TrainNotFound_Node0_action --> E_TrainNotFound S_TrainNotFound --> N_TrainNotFound_Node0 N_TrainNotFound_Node0 -- No --> E_TrainNotFound
File: GCX126R.cbl
Exclusion / Alternative Path
GIVEN:
The train record retrieval returned a non-blank status code indicating the train does not exist in the database
WHEN:
The system confirms train non-existence
THEN:
- The system clears the first detail line (mrln-dtl-line 01 to spaces) and constructs an error message by concatenating 'unknown train entry in edi 350 ' with the consist release number from x4 positions 1-25 into the first detail line
- Sets the third detail line to 'this crn was not found.' and sets the report line counter (mrln-line) to 4
- Sets the message type indicator to unknown (88-z110-mrln-type-is-unknown) and invokes the email send preparation process (z110-prep-emcsend)