CICS FREEMAIN64 provides 64-bit memory deallocation capabilities for programs and transactions. It enables programs to free allocated 64-bit memory, manage 64-bit memory cleanup, and handle 64-bit memory deallocation in CICS environments.
CICS FREEMAIN64 is a command that allows programs to deallocate 64-bit memory in the system. It provides 64-bit memory deallocation capabilities, 64-bit memory cleanup, and 64-bit memory management for CICS applications.
12345EXEC CICS FREEMAIN64 [DATA(data-area)] [LENGTH(data-length)] [RESP(response-code)] END-EXEC
64-bit main storage memory types
64-bit memory area types
64-bit dynamic memory types
64-bit system memory types
12345678910111213141516171819202122232425IDENTIFICATION DIVISION. PROGRAM-ID. FREEMAIN64. DATA DIVISION. WORKING-STORAGE SECTION. 01 DATA-AREA PIC X(100). 01 DATA-LENGTH PIC S9(4) COMP VALUE 100. 01 RESPONSE-CODE PIC S9(8) COMP. PROCEDURE DIVISION. DISPLAY 'Freeing 64-bit memory' DISPLAY 'Data length: ' DATA-LENGTH EXEC CICS FREEMAIN64 DATA(DATA-AREA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) DISPLAY '64-bit memory freed successfully' ELSE DISPLAY '64-bit memory free failed' END-IF EXEC CICS RETURN END-EXEC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152IDENTIFICATION DIVISION. PROGRAM-ID. FREEMAIN642. DATA DIVISION. WORKING-STORAGE SECTION. 01 DATA-AREA PIC X(100). 01 DATA-LENGTH PIC S9(4) COMP VALUE 100. 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 MEMORY-STATUS PIC X(1). 01 MEMORY-LIST. 05 MEMORY-ITEM OCCURS 3 TIMES. 10 MEMORY-ID PIC X(8). 10 MEMORY-SIZE PIC S9(4) COMP. 10 MEMORY-STATUS PIC X(1). PROCEDURE DIVISION. PERFORM INITIALIZE-64BIT-MEMORY PERFORM FREE-MULTIPLE-64BIT-MEMORY EXEC CICS RETURN END-EXEC. INITIALIZE-64BIT-MEMORY. MOVE 'MEM001' TO MEMORY-ID(1) MOVE 100 TO MEMORY-SIZE(1) MOVE 'MEM002' TO MEMORY-ID(2) MOVE 200 TO MEMORY-SIZE(2) MOVE 'MEM003' TO MEMORY-ID(3) MOVE 300 TO MEMORY-SIZE(3). FREE-MULTIPLE-64BIT-MEMORY. PERFORM VARYING FREE-COUNT FROM 1 BY 1 UNTIL FREE-COUNT > MAX-FREES MOVE MEMORY-SIZE(FREE-COUNT) TO DATA-LENGTH PERFORM FREE-SINGLE-64BIT-MEMORY IF RESPONSE-CODE = DFHRESP(NORMAL) MOVE 'F' TO MEMORY-STATUS(FREE-COUNT) DISPLAY '64-bit memory ' FREE-COUNT ' freed successfully' ELSE MOVE 'E' TO MEMORY-STATUS(FREE-COUNT) DISPLAY '64-bit memory ' FREE-COUNT ' free failed' END-IF END-PERFORM. FREE-SINGLE-64BIT-MEMORY. EXEC CICS FREEMAIN64 DATA(DATA-AREA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950IDENTIFICATION DIVISION. PROGRAM-ID. FREEMAIN643. DATA DIVISION. WORKING-STORAGE SECTION. 01 DATA-AREA PIC X(100). 01 DATA-LENGTH PIC S9(4) COMP VALUE 100. 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 MEMORY-FREE-SUCCESSFUL PIC X(1) VALUE 'N'. PROCEDURE DIVISION. PERFORM FREE-64BIT-MEMORY-WITH-RETRY EXEC CICS RETURN END-EXEC. FREE-64BIT-MEMORY-WITH-RETRY. PERFORM FREE-64BIT-MEMORY IF RESPONSE-CODE NOT = DFHRESP(NORMAL) AND RETRY-COUNT < MAX-RETRIES ADD 1 TO RETRY-COUNT DISPLAY 'Retry ' RETRY-COUNT ' 64-bit memory free operation' PERFORM FREE-64BIT-MEMORY-WITH-RETRY END-IF. FREE-64BIT-MEMORY. EXEC CICS FREEMAIN64 DATA(DATA-AREA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC EVALUATE RESPONSE-CODE WHEN DFHRESP(NORMAL) MOVE 'Y' TO MEMORY-FREE-SUCCESSFUL DISPLAY '64-bit memory free operation successful' WHEN DFHRESP(NOTAUTH) DISPLAY 'Not authorized to free 64-bit memory' WHEN DFHRESP(INVREQ) DISPLAY 'Invalid 64-bit memory free request' WHEN DFHRESP(MEMORYERR) DISPLAY '64-bit memory free operation error' WHEN DFHRESP(MEMORYNOTFOUND) DISPLAY '64-bit memory not found' WHEN DFHRESP(MEMORYINUSE) DISPLAY '64-bit memory is in use' WHEN OTHER DISPLAY 'Unexpected 64-bit memory free error' END-EVALUATE.
Think of CICS FREEMAIN64 like putting away your big memory toys:
Create a program that frees basic 64-bit memory.
Write a program that manages multiple 64-bit memory deallocations.
Implement comprehensive error handling for 64-bit memory deallocation failures.