CoreCobol
A pseudo-conversational CICS program skeleton
The template most CICS screens follow.
WORKING-STORAGE SECTION.
01 WS-RESP PIC S9(8) COMP.
01 WS-COMMAREA.
05 WS-STEP PIC X(01) VALUE '1'.
05 WS-ACCT-ID PIC X(10) VALUE SPACES.
COPY PAYMAP.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(11).
PROCEDURE DIVISION.
0000-MAIN.
IF EIBCALEN = ZERO
PERFORM 1000-FIRST-TIME
ELSE
MOVE DFHCOMMAREA TO WS-COMMAREA
EVALUATE EIBAID
WHEN DFHPF3 PERFORM 8000-EXIT
WHEN DFHCLEAR PERFORM 1000-FIRST-TIME
WHEN OTHER PERFORM 2000-HANDLE-INPUT
END-EVALUATE
END-IF
PERFORM 9000-RETURN.
2000-HANDLE-INPUT.
EXEC CICS RECEIVE MAP('PAYM01') MAPSET('PAYMAP')
RESP(WS-RESP) END-EXEC
IF ACCTNOL = ZERO
MOVE 'ACCOUNT NUMBER IS REQUIRED' TO MSGO
MOVE -1 TO ACCTNOL
PERFORM 8100-SEND-DATAONLY
ELSE
MOVE ACCTNOI TO WS-ACCT-ID
PERFORM 3000-READ-ACCOUNT
END-IF.
3000-READ-ACCOUNT.
EXEC CICS READ FILE('ACCTFILE') INTO(WS-ACCT-REC)
RIDFLD(WS-ACCT-ID) RESP(WS-RESP) END-EXEC
EVALUATE WS-RESP
WHEN DFHRESP(NORMAL) PERFORM 3100-SHOW
WHEN DFHRESP(NOTFND)
MOVE 'ACCOUNT NOT FOUND' TO MSGO
MOVE -1 TO ACCTNOL
PERFORM 8100-SEND-DATAONLY
WHEN OTHER PERFORM 9900-ERROR
END-EVALUATE.
8100-SEND-DATAONLY.
EXEC CICS SEND MAP('PAYM01') MAPSET('PAYMAP')
DATAONLY CURSOR FREEKB END-EXEC.
9000-RETURN.
EXEC CICS RETURN TRANSID('PAY1')
COMMAREA(WS-COMMAREA)
LENGTH(LENGTH OF WS-COMMAREA) END-EXEC.- EIBCALEN distinguishes a fresh start from a continuation.
- EIBAID tells you which key the user pressed, so PF3 exits properly.
- RESP on every command turns conditions into branches instead of abends.
- FREEKB unlocks the keyboard; without it the user cannot type.
- -1 in the length field positions the cursor on the field in error.
Stuck on something else?
Ask the community or search the full course.