Credit/Debit (BNK1CRA)
The BNK1CRA
The BNK1CRA
Here is a high level diagram of the program:
Handling User Inputs and Mapping
Handling First Time Through
First, the code checks if it is the first time through by evaluating if EIBCALEN
BNK1CDO
ACCNOL
SEND-ERASE
SEND-MAP
EVALUATE TRUE
*
* Is it the first time through? If so, send the map
* with erased (empty) data fields.
*
WHEN EIBCALEN = ZERO
MOVE LOW-VALUE TO BNK1CDO
MOVE -1 TO ACCNOL
SET SEND-ERASE TO TRUE
PERFORM SEND-MAP
Handling PA Key Press
Moving to the next condition, if a PA key is pressed (EIBAID
DFHPA1
DFHPA2
DFHPA3
WHEN EIBAID = DFHPA1 OR DFHPA2 OR DFHPA3
CONTINUE
Handling PF3 Key Press
Next, if the PF3 key is pressed (EIBAID
DFHPF3
WHEN EIBAID = DFHPF3
EXEC CICS RETURN
TRANSID('OMEN')
IMMEDIATE
RESP(WS-CICS-RESP)
RESP2(WS-CICS-RESP2)
END-EXEC
Handling AID or PF12 Key Press
Then, if the AID or PF12 key is pressed (EIBAID
DFHAID
DFHPF12
SEND-TERMINATION-MSG
WHEN EIBAID = DFHAID OR DFHPF12
PERFORM SEND-TERMINATION-MSG
EXEC CICS
RETURN
END-EXEC
Handling CLEAR Key Press
When the CLEAR key is pressed (EIBAID
DFHCLEAR
WHEN EIBAID = DFHCLEAR
EXEC CICS SEND CONTROL
ERASE
FREEKB
END-EXEC
EXEC CICS RETURN
END-EXEC
Handling ENTER Key Press
When the ENTER key is pressed (EIBAID
DFHENTER
PROCESS-MAP
WHEN EIBAID = DFHENTER
PERFORM PROCESS-MAP
Handling Invalid Key Press
Finally, if any other key is pressed, the code moves low values to BNK1CDO
ACCNOL
SEND-DATAONLY-ALARM
SEND-MAP
WHEN OTHER
MOVE LOW-VALUES TO BNK1CDO
MOVE 'Invalid key pressed.' TO MESSAGEO
MOVE 8 TO ACCNOL
SET SEND-DATAONLY-ALARM TO TRUE
PERFORM SEND-MAP
Data Preservation for Subsequent Processing
This is the next section of the flow.
Checking EIBCALEN
First, the code checks if EIBCALEN
IF EIBCALEN NOT = ZERO
Moving Account Number
Next, the account number from the communication area (COMM-ACCNO
WS-COMM-ACCNO
MOVE COMM-ACCNO TO WS-COMM-ACCNO
Moving Sign
Then, the sign from the communication area (COMM-SIGN
WS-COMM-SIGN
MOVE COMM-SIGN TO WS-COMM-SIGN
Moving Amount
Finally, the amount from the communication area (COMM-AMT
WS-COMM-AMT
MOVE COMM-AMT TO WS-COMM-AMT
Interim Summary
So far, we saw how the program handles various key presses, including PA, PF3, AID, PF12, CLEAR, ENTER, and invalid keys, and how it processes user inputs and maps them accordingly. Now, we will focus on how the program preserves data for subsequent processing to ensure continuity and accuracy in the user's session.
System Return and Error Handling
Checking CICS Response
First, we check if WS-CICS-RESP
DFHRESP(NORMAL)
IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
Initializing Abend Information
Next, we initialize the ABNDINFO-REC
EIBRESP
EIBRESP2
ABND-RESPCODE
ABND-RESP2CODE
INITIALIZE ABNDINFO-REC
MOVE EIBRESP TO ABND-RESPCODE
MOVE EIBRESP2 TO ABND-RESP2CODE
Assigning Application ID
Then, we assign the application ID to ABND-APPLID
ASSIGN
EXEC CICS ASSIGN APPLID(ABND-APPLID)
END-EXEC
Moving Task and Transaction IDs
We move the task number EIBTASKN
ABND-TASKNO-KEY
EIBTRNID
ABND-TRANID
MOVE EIBTASKN TO ABND-TASKNO-KEY
MOVE EIBTRNID TO ABND-TRANID
Populating Time and Date
Next, we perform the POPULATE-TIME-DATE
PERFORM POPULATE-TIME-DATE
Populating Time and Date Details
The POPULATE-TIME-DATE
ASKTIME
FORMATTIME
WS-U-TIME
WS-ORIG-DATE
WS-TIME-NOW
POPULATE-TIME-DATE SECTION.
PTD010.
EXEC CICS ASKTIME
ABSTIME(WS-U-TIME)
END-EXEC.
EXEC CICS FORMATTIME
ABSTIME(WS-U-TIME)
DDMMYYYY(WS-ORIG-DATE)
TIME(WS-TIME-NOW)
DATESEP
END-EXEC.
PTD999.
EXIT.
Moving Date and Time
We move the original date WS-ORIG-DATE
ABND-DATE
WS-TIME-NOW-GRP-HH
WS-TIME-NOW-GRP-MM
WS-TIME-NOW-GRP-MM
ABND-TIME
MOVE WS-ORIG-DATE TO ABND-DATE
STRING WS-TIME-NOW-GRP-HH DELIMITED BY SIZE,
':' DELIMITED BY SIZE,
WS-TIME-NOW-GRP-MM DELIMITED BY SIZE,
':' DELIMITED BY SIZE,
WS-TIME-NOW-GRP-MM DELIMITED BY SIZE
INTO ABND-TIME
Assigning Program Name
We assign the current program name to ABND-PROGRAM
ASSIGN
EXEC CICS ASSIGN PROGRAM(ABND-PROGRAM)
END-EXEC
Constructing Freeform Message
We construct a freeform message ABND-FREEFORM
STRING 'A010 - RETURN TRANSID(OCRA) FAIL.'
DELIMITED BY SIZE,
'EIBRESP=' DELIMITED BY SIZE,
ABND-RESPCODE DELIMITED BY SIZE,
' RESP2=' DELIMITED BY SIZE,
ABND-RESP2CODE DELIMITED BY SIZE
INTO ABND-FREEFORM
Linking to Abend Handler
Finally, we link to the abend handler program WS-ABEND-PGM
ABNDINFO-REC
EXEC CICS LINK PROGRAM(WS-ABEND-PGM)
COMMAREA(ABNDINFO-REC)
END-EXEC
This is an auto-generated document by Swimm 🌊 and has not yet been verified by a human