Displaying Customer (BNK1DCS)
The BNK1DCS
The BNK1DCS
Here is a high level diagram of the program:
Abend Handling Setup
Setting up Abend handling
First, the PREMIERE
EXEC CICS HANDLE ABEND
ABEND-HANDLING
PREMIERE SECTION.
A010.
*
* Set up the Abend handling
*
EXEC CICS HANDLE ABEND
LABEL(ABEND-HANDLING)
END-EXEC.
Input Evaluation and Operations
First Time Check
First, the program checks if it is the first time through by evaluating if EIBCALEN
WHEN EIBCALEN = ZERO
MOVE LOW-VALUE TO BNK1DCO
MOVE -1 TO CUSTNOL
SET SEND-ERASE TO TRUE
INITIALIZE WS-COMM-AREA
PERFORM STORE-TERM-DEF
MOVE STORED-UCTRANS TO WS-COMM-TERM
PERFORM SEND-MAP
PA Key Pressed
Next, the program checks if a PA key (DFHPA1
DFHPA2
DFHPA3
WHEN EIBAID = DFHPA1 OR DFHPA2 OR DFHPA3
CONTINUE
PF3 Key Pressed
Then, the program checks if the PF3 key is pressed. If true, it restores the terminal definition and returns to the main menu.
WHEN EIBAID = DFHPF3
*
* Set the terminal UCTRAN back to its starting position
*
PERFORM RESTORE-TERM-DEF
EXEC CICS RETURN
TRANSID('OMEN')
IMMEDIATE
RESP(WS-CICS-RESP)
RESP2(WS-CICS-RESP2)
END-EXEC
PF5
Key Pressed
PF5
If the PF5
PROCESS-MAP
WHEN EIBAID = DFHPF5
PERFORM PROCESS-MAP
PF10
Key Pressed
PF10
Similarly, if the PF10
PROCESS-MAP
WHEN EIBAID = DFHPF10
PERFORM PROCESS-MAP
AID or PF12 Key Pressed
If the AID or PF12 key is pressed, the program restores the terminal definition and sends a termination message.
WHEN EIBAID = DFHAID OR DFHPF12
*
* Set the terminal UCTRAN back to its starting position
*
PERFORM RESTORE-TERM-DEF
PERFORM SEND-TERMINATION-MSG
EXEC CICS
RETURN
END-EXEC
CLEAR Key Pressed
When the CLEAR key is pressed, the program restores the terminal definition, erases the screen, and returns control to CICS.
WHEN EIBAID = DFHCLEAR
*
* Set the terminal UCTRAN back to its starting position
*
PERFORM RESTORE-TERM-DEF
EXEC CICS SEND CONTROL
ERASE
FREEKB
END-EXEC
EXEC CICS RETURN
END-EXEC
ENTER Key Pressed
If the ENTER key is pressed, the program processes the content by performing the PROCESS-MAP
WHEN EIBAID = DFHENTER
PERFORM PROCESS-MAP
Other Key Pressed
For any other key pressed, the program sends an invalid key message to the user.
WHEN OTHER
MOVE SPACES TO MESSAGEO
MOVE 'Invalid key pressed.' TO MESSAGEO
MOVE -1 TO CUSTNOL
SET SEND-DATAONLY-ALARM TO TRUE
PERFORM SEND-MAP
RESTORE-TERM-DEF
RESTORE-TERM-DEF
The RESTORE-TERM-DEF
RESTORE-TERM-DEF SECTION.
RTD010.
*
* We must now restore the UCTRAN setting back to what it
* was at the start
*
MOVE DFHCOMMAREA TO WS-COMM-AREA.
MOVE WS-COMM-TERM TO WS-UCTRANS.
EXEC CICS SET TERMINAL(EIBTRMID)
UCTRANST(WS-UCTRANS)
RESP(WS-CICS-RESP)
RESP2(WS-CICS-RESP2)
END-EXEC.
IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
*
* Preserve the RESP and RESP2, then set up the
* standard ABEND info before getting the applid,
STORE-TERM-DEF
STORE-TERM-DEF
The STORE-TERM-DEF
STORE-TERM-DEF SECTION.
STD010.
*
* Inquire on the terminal and store the UCTRANS settings
*
EXEC CICS INQUIRE
TERMINAL(EIBTRMID)
UCTRANST(WS-UCTRANS)
RESP(WS-CICS-RESP)
RESP2(WS-CICS-RESP2)
END-EXEC.
*
* Store the original UCTRAN value
*
MOVE WS-UCTRANS TO STORED-UCTRANS.
*
* If Uppercase translation is switched on,
* then set it to NOUCTRAN(451).
Interim Summary
So far, we saw how the program handles various key presses and performs corresponding actions such as restoring terminal definitions, processing maps, and sending termination messages. These steps ensure that the program responds appropriately to user inputs and maintains the terminal's state. Now, we will focus on the return and error handling mechanisms, which manage the program's response to errors and ensure a smooth return to the main menu or appropriate error handling routines.
Return and Error Handling
Checking EIBCALEN
First, we check if EIBCALEN
DFHCOMMAREA
WS-COMM-AREA
IF EIBCALEN NOT = ZERO
MOVE COMM-TERM OF DFHCOMMAREA TO WS-COMM-TERM
MOVE COMM-EYE OF DFHCOMMAREA TO WS-COMM-EYE
MOVE COMM-SCODE OF DFHCOMMAREA TO WS-COMM-SCODE
MOVE COMM-CUSTNO OF DFHCOMMAREA TO WS-COMM-CUSTNO
MOVE COMM-NAME OF DFHCOMMAREA TO WS-COMM-NAME
MOVE COMM-ADDR OF DFHCOMMAREA TO WS-COMM-ADDR
MOVE COMM-DOB OF DFHCOMMAREA TO WS-COMM-DOB
MOVE COMM-CREDIT-SCORE OF DFHCOMMAREA
TO WS-COMM-CREDIT-SCORE
MOVE COMM-CS-REVIEW-DATE OF DFHCOMMAREA
TO WS-COMM-CS-REVIEW-DATE
MOVE COMM-UPD OF DFHCOMMAREA TO WS-COMM-UPDATE
END-IF.
Returning TRANSID
Next, we execute a CICS RETURN command with TRANSID('ODCS')
WS-COMM-AREA
WS-CICS-RESP
WS-CICS-RESP2
EXEC CICS
RETURN TRANSID('ODCS')
COMMAREA(WS-COMM-AREA)
LENGTH(266)
RESP(WS-CICS-RESP)
RESP2(WS-CICS-RESP2)
END-EXEC.
Handling Error Response
Then, we check if WS-CICS-RESP
DFHRESP(NORMAL)
ABNDINFO-REC
ABND-RESPCODE
ABND-RESP2CODE
APPLID
TASKNO
TRANID
POPULATE-TIME-DATE
ABND-DATE
ABND-TIME
IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
*
* Preserve the RESP and RESP2, then set up the
* standard ABEND info before getting the applid,
* date/time etc. and linking to the Abend Handler
* program.
*
INITIALIZE ABNDINFO-REC
MOVE EIBRESP TO ABND-RESPCODE
MOVE EIBRESP2 TO ABND-RESP2CODE
*
* Get supplemental information
*
EXEC CICS ASSIGN APPLID(ABND-APPLID)
END-EXEC
MOVE EIBTASKN TO ABND-TASKNO-KEY
MOVE EIBTRNID TO ABND-TRANID
PERFORM POPULATE-TIME-DATE
POPULATE-TIME-DATE
POPULATE-TIME-DATE
The POPULATE-TIME-DATE
WS-ORIG-DATE
WS-TIME-NOW
POPULATE-TIME-DATE SECTION.
PTD10.
D DISPLAY 'POPULATE-TIME-DATE SECTION'.
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.
Finalizing Error Handling
Moving to the final steps, we set additional fields in ABNDINFO-REC
WS-ABEND-PGM
WS-FAIL-INFO
RESTORE-TERM-DEF
ABEND-THIS-TASK
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
END-STRING
MOVE WS-U-TIME TO ABND-UTIME-KEY
MOVE 'HBNK' TO ABND-CODE
EXEC CICS ASSIGN PROGRAM(ABND-PROGRAM)
END-EXEC
MOVE ZEROS TO ABND-SQLCODE
STRING 'A010 - RETURN TRANSID(ODCS) FAIL'
DELIMITED BY SIZE,
'EIBRESP=' DELIMITED BY SIZE,
ABND-RESPCODE DELIMITED BY SIZE,
This is an auto-generated document by Swimm 🌊 and has not yet been verified by a human