CICS CANCEL provides transaction cancellation capabilities for programs and transactions. It enables programs to cancel transactions, manage cancellation requests, and handle cancellation operations in CICS environments.
CICS CANCEL is a command that allows programs to cancel transactions, requests, or operations that are currently in progress. It provides transaction management capabilities, cancellation control, and cancellation handling for CICS applications.
12345EXEC CICS CANCEL TRANSID(transaction-id) [REQID(request-id)] [RESP(response-code)] END-EXEC
Cancel entire transactions
Cancel specific requests
Cancel specific operations
Cancel running processes
123456789101112131415161718192021222324252627IDENTIFICATION DIVISION. PROGRAM-ID. CANCEL01. DATA DIVISION. WORKING-STORAGE SECTION. 01 TRANSACTION-ID PIC X(4) VALUE 'TEST'. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CANCELLATION-REQUESTED PIC X(1) VALUE 'Y'. PROCEDURE DIVISION. IF CANCELLATION-REQUESTED = 'Y' DISPLAY 'Cancelling transaction: ' TRANSACTION-ID EXEC CICS CANCEL TRANSID(TRANSACTION-ID) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) DISPLAY 'Transaction cancelled successfully' ELSE DISPLAY 'Failed to cancel transaction' END-IF ELSE DISPLAY 'No cancellation requested' END-IF EXEC CICS RETURN END-EXEC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546IDENTIFICATION DIVISION. PROGRAM-ID. CANCEL02. DATA DIVISION. WORKING-STORAGE SECTION. 01 TRANSACTION-ID PIC X(4). 01 REQUEST-ID PIC X(8). 01 RESPONSE-CODE PIC S9(8) COMP. 01 CANCELLATION-COUNT PIC S9(2) COMP VALUE 0. 01 MAX-CANCELLATIONS PIC S9(2) COMP VALUE 5. 01 TRANSACTION-LIST. 05 TRANSACTION-ITEM OCCURS 5 TIMES. 10 TRANSACTION-NAME PIC X(4). 10 TRANSACTION-STATUS PIC X(1). PROCEDURE DIVISION. PERFORM CANCEL-MULTIPLE-TRANSACTIONS EXEC CICS RETURN END-EXEC. CANCEL-MULTIPLE-TRANSACTIONS. MOVE 'TEST' TO TRANSACTION-NAME(1) MOVE 'DEMO' TO TRANSACTION-NAME(2) MOVE 'SAMP' TO TRANSACTION-NAME(3) MOVE 'PROD' TO TRANSACTION-NAME(4) MOVE 'DEV' TO TRANSACTION-NAME(5) PERFORM VARYING CANCELLATION-COUNT FROM 1 BY 1 UNTIL CANCELLATION-COUNT > MAX-CANCELLATIONS MOVE TRANSACTION-NAME(CANCELLATION-COUNT) TO TRANSACTION-ID PERFORM CANCEL-SINGLE-TRANSACTION IF RESPONSE-CODE = DFHRESP(NORMAL) MOVE 'C' TO TRANSACTION-STATUS(CANCELLATION-COUNT) DISPLAY 'Cancelled: ' TRANSACTION-ID ELSE MOVE 'F' TO TRANSACTION-STATUS(CANCELLATION-COUNT) DISPLAY 'Failed: ' TRANSACTION-ID END-IF END-PERFORM. CANCEL-SINGLE-TRANSACTION. EXEC CICS CANCEL TRANSID(TRANSACTION-ID) RESP(RESPONSE-CODE) END-EXEC.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748IDENTIFICATION DIVISION. PROGRAM-ID. CANCEL03. DATA DIVISION. WORKING-STORAGE SECTION. 01 TRANSACTION-ID PIC X(4) VALUE 'TEST'. 01 REQUEST-ID PIC X(8) VALUE 'REQ00001'. 01 RESPONSE-CODE PIC S9(8) COMP. 01 RETRY-COUNT PIC S9(2) COMP VALUE 0. 01 MAX-RETRIES PIC S9(2) COMP VALUE 3. 01 CANCELLATION-SUCCESSFUL PIC X(1) VALUE 'N'. PROCEDURE DIVISION. PERFORM CANCEL-WITH-ERROR-HANDLING EXEC CICS RETURN END-EXEC. CANCEL-WITH-ERROR-HANDLING. PERFORM CANCEL-TRANSACTION IF RESPONSE-CODE NOT = DFHRESP(NORMAL) AND RETRY-COUNT < MAX-RETRIES ADD 1 TO RETRY-COUNT DISPLAY 'Retry ' RETRY-COUNT ' cancelling transaction' PERFORM CANCEL-WITH-ERROR-HANDLING END-IF. CANCEL-TRANSACTION. EXEC CICS CANCEL TRANSID(TRANSACTION-ID) REQID(REQUEST-ID) RESP(RESPONSE-CODE) END-EXEC EVALUATE RESPONSE-CODE WHEN DFHRESP(NORMAL) MOVE 'Y' TO CANCELLATION-SUCCESSFUL DISPLAY 'Transaction cancelled successfully' WHEN DFHRESP(NOTFND) DISPLAY 'Transaction not found' WHEN DFHRESP(NOTAUTH) DISPLAY 'Not authorized to cancel transaction' WHEN DFHRESP(INVREQ) DISPLAY 'Invalid cancellation request' WHEN DFHRESP(CANCELLATIONERR) DISPLAY 'Cancellation error' WHEN OTHER DISPLAY 'Unexpected error occurred' END-EVALUATE.
Think of CICS CANCEL like stopping a game:
Create a program that cancels a specific transaction.
Write a program that manages multiple transaction cancellations.
Implement comprehensive error handling for cancellation failures.