CICS FREE provides resource deallocation capabilities for programs and transactions. It enables programs to free resources, manage resource cleanup, and handle resource deallocation in CICS environments.
CICS FREE is a command that allows programs to deallocate resources in the system. It provides resource deallocation capabilities, resource cleanup, and resource management for CICS applications.
1234EXEC CICS FREE RESOURCE(resource-name) [RESP(response-code)] END-EXEC
Memory resource types
File resource types
Communication resource types
System resource types
1234567891011121314151617181920212223IDENTIFICATION DIVISION. PROGRAM-ID. FREE01. DATA DIVISION. WORKING-STORAGE SECTION. 01 RESOURCE-NAME PIC X(8) VALUE 'MAINMEM'. 01 RESPONSE-CODE PIC S9(8) COMP. PROCEDURE DIVISION. DISPLAY 'Freeing resource' DISPLAY 'Resource: ' RESOURCE-NAME EXEC CICS FREE RESOURCE(RESOURCE-NAME) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) DISPLAY 'Resource freed successfully' ELSE DISPLAY 'Resource free failed' END-IF EXEC CICS RETURN END-EXEC.
123456789101112131415161718192021222324252627282930313233343536373839404142434445IDENTIFICATION DIVISION. PROGRAM-ID. FREE02. DATA DIVISION. WORKING-STORAGE SECTION. 01 RESOURCE-NAME PIC X(8). 01 RESPONSE-CODE PIC S9(8) COMP. 01 FREE-COUNT PIC S9(2) COMP VALUE 0. 01 MAX-FREES PIC S9(2) COMP VALUE 3. 01 RESOURCE-LIST. 05 RESOURCE-ITEM OCCURS 3 TIMES. 10 RESOURCE-ID PIC X(8). 10 RESOURCE-STATUS PIC X(1). PROCEDURE DIVISION. PERFORM INITIALIZE-RESOURCES PERFORM FREE-MULTIPLE-RESOURCES EXEC CICS RETURN END-EXEC. INITIALIZE-RESOURCES. MOVE 'MAINMEM' TO RESOURCE-ID(1) MOVE 'VSAMFILE' TO RESOURCE-ID(2) MOVE 'CONVERS' TO RESOURCE-ID(3). FREE-MULTIPLE-RESOURCES. PERFORM VARYING FREE-COUNT FROM 1 BY 1 UNTIL FREE-COUNT > MAX-FREES MOVE RESOURCE-ID(FREE-COUNT) TO RESOURCE-NAME PERFORM FREE-SINGLE-RESOURCE IF RESPONSE-CODE = DFHRESP(NORMAL) MOVE 'F' TO RESOURCE-STATUS(FREE-COUNT) DISPLAY 'Resource ' FREE-COUNT ' freed successfully' ELSE MOVE 'E' TO RESOURCE-STATUS(FREE-COUNT) DISPLAY 'Resource ' FREE-COUNT ' free failed' END-IF END-PERFORM. FREE-SINGLE-RESOURCE. EXEC CICS FREE RESOURCE(RESOURCE-NAME) RESP(RESPONSE-CODE) END-EXEC.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748IDENTIFICATION DIVISION. PROGRAM-ID. FREE03. DATA DIVISION. WORKING-STORAGE SECTION. 01 RESOURCE-NAME PIC X(8) VALUE 'MAINMEM'. 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 FREE-SUCCESSFUL PIC X(1) VALUE 'N'. PROCEDURE DIVISION. PERFORM FREE-RESOURCE-WITH-RETRY EXEC CICS RETURN END-EXEC. FREE-RESOURCE-WITH-RETRY. PERFORM FREE-RESOURCE IF RESPONSE-CODE NOT = DFHRESP(NORMAL) AND RETRY-COUNT < MAX-RETRIES ADD 1 TO RETRY-COUNT DISPLAY 'Retry ' RETRY-COUNT ' resource free operation' PERFORM FREE-RESOURCE-WITH-RETRY END-IF. FREE-RESOURCE. EXEC CICS FREE RESOURCE(RESOURCE-NAME) RESP(RESPONSE-CODE) END-EXEC EVALUATE RESPONSE-CODE WHEN DFHRESP(NORMAL) MOVE 'Y' TO FREE-SUCCESSFUL DISPLAY 'Resource free operation successful' WHEN DFHRESP(NOTAUTH) DISPLAY 'Not authorized to free resource' WHEN DFHRESP(INVREQ) DISPLAY 'Invalid resource free request' WHEN DFHRESP(RESOURCEERR) DISPLAY 'Resource free operation error' WHEN DFHRESP(RESOURCENOTFOUND) DISPLAY 'Resource not found' WHEN DFHRESP(RESOURCEINUSE) DISPLAY 'Resource is in use' WHEN OTHER DISPLAY 'Unexpected resource free error' END-EVALUATE.
Think of CICS FREE like putting away your toys:
Create a program that frees a basic resource.
Write a program that manages multiple resource deallocations.
Implement comprehensive error handling for resource deallocation failures.