CICS PUT CONTAINER (CHANNEL) provides channel container storage capabilities for programs and transactions. It enables programs to store data in channel containers, manage channel data storage, and handle channel container operations in CICS environments.
CICS PUT CONTAINER (CHANNEL) is a command that allows programs to store data in channel containers. It provides channel data storage capabilities, container management, and channel container handling for CICS applications.
1234567EXEC CICS PUT CONTAINER CHANNEL(channel-name) CONTAINER(container-name) FROM(data-area) LENGTH(data-length) [RESP(response-code)] END-EXEC
Containers with application data
Containers with control information
Containers with message data
User-defined containers
1234567891011121314151617181920212223242526272829303132333435IDENTIFICATION DIVISION. PROGRAM-ID. PUTCONTAINERCHANNEL01. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHANNEL-NAME PIC X(8) VALUE 'MAINCHAN'. 01 CONTAINER-NAME PIC X(8) VALUE 'DATACON1'. 01 DATA-AREA PIC X(100) VALUE 'Sample data for container'. 01 DATA-LENGTH PIC S9(8) COMP VALUE 100. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CONTAINER-STORED PIC X(1) VALUE 'N'. PROCEDURE DIVISION. IF CONTAINER-STORED = 'N' DISPLAY 'Storing container: ' CONTAINER-NAME DISPLAY 'In channel: ' CHANNEL-NAME EXEC CICS PUT CONTAINER CHANNEL(CHANNEL-NAME) CONTAINER(CONTAINER-NAME) FROM(DATA-AREA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) MOVE 'Y' TO CONTAINER-STORED DISPLAY 'Container stored successfully' ELSE DISPLAY 'Failed to store container' END-IF ELSE DISPLAY 'Container already stored' END-IF EXEC CICS RETURN END-EXEC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758IDENTIFICATION DIVISION. PROGRAM-ID. PUTCONTAINERCHANNEL02. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHANNEL-NAME PIC X(8) VALUE 'MAINCHAN'. 01 CONTAINER-NAME PIC X(8). 01 DATA-AREA PIC X(200). 01 DATA-LENGTH PIC S9(8) COMP VALUE 200. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CONTAINER-COUNT PIC S9(2) COMP VALUE 0. 01 MAX-CONTAINERS PIC S9(2) COMP VALUE 5. 01 TOTAL-DATA-LENGTH PIC S9(8) COMP VALUE 0. 01 CONTAINER-LIST. 05 CONTAINER-ITEM OCCURS 5 TIMES. 10 CONTAINER-ID PIC X(8). 10 CONTAINER-STATUS PIC X(1). 10 CONTAINER-SIZE PIC S9(8) COMP. PROCEDURE DIVISION. PERFORM STORE-MULTIPLE-CHANNEL-CONTAINERS DISPLAY 'Total data stored: ' TOTAL-DATA-LENGTH ' bytes' EXEC CICS RETURN END-EXEC. STORE-MULTIPLE-CHANNEL-CONTAINERS. MOVE 'CONTAIN1' TO CONTAINER-ID(1) MOVE 'CONTAIN2' TO CONTAINER-ID(2) MOVE 'CONTAIN3' TO CONTAINER-ID(3) MOVE 'CONTAIN4' TO CONTAINER-ID(4) MOVE 'CONTAIN5' TO CONTAINER-ID(5) PERFORM VARYING CONTAINER-COUNT FROM 1 BY 1 UNTIL CONTAINER-COUNT > MAX-CONTAINERS MOVE CONTAINER-ID(CONTAINER-COUNT) TO CONTAINER-NAME MOVE 'Sample data for container' TO DATA-AREA PERFORM STORE-SINGLE-CHANNEL-CONTAINER IF RESPONSE-CODE = DFHRESP(NORMAL) MOVE 'S' TO CONTAINER-STATUS(CONTAINER-COUNT) MOVE DATA-LENGTH TO CONTAINER-SIZE(CONTAINER-COUNT) ADD DATA-LENGTH TO TOTAL-DATA-LENGTH DISPLAY 'Stored: ' CONTAINER-NAME ' Size: ' DATA-LENGTH ELSE MOVE 'F' TO CONTAINER-STATUS(CONTAINER-COUNT) MOVE 0 TO CONTAINER-SIZE(CONTAINER-COUNT) DISPLAY 'Failed: ' CONTAINER-NAME END-IF END-PERFORM. STORE-SINGLE-CHANNEL-CONTAINER. EXEC CICS PUT CONTAINER CHANNEL(CHANNEL-NAME) CONTAINER(CONTAINER-NAME) FROM(DATA-AREA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152IDENTIFICATION DIVISION. PROGRAM-ID. PUTCONTAINERCHANNEL03. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHANNEL-NAME PIC X(8) VALUE 'TESTCHAN'. 01 CONTAINER-NAME PIC X(8) VALUE 'TESTCON'. 01 DATA-AREA PIC X(50) VALUE 'Test data for container'. 01 DATA-LENGTH PIC S9(8) COMP VALUE 50. 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 STORAGE-SUCCESSFUL PIC X(1) VALUE 'N'. PROCEDURE DIVISION. PERFORM STORE-CHANNEL-CONTAINER-WITH-ERROR-HANDLING EXEC CICS RETURN END-EXEC. STORE-CHANNEL-CONTAINER-WITH-ERROR-HANDLING. PERFORM STORE-CHANNEL-CONTAINER IF RESPONSE-CODE NOT = DFHRESP(NORMAL) AND RETRY-COUNT < MAX-RETRIES ADD 1 TO RETRY-COUNT DISPLAY 'Retry ' RETRY-COUNT ' storing channel container' PERFORM STORE-CHANNEL-CONTAINER-WITH-ERROR-HANDLING END-IF. STORE-CHANNEL-CONTAINER. EXEC CICS PUT CONTAINER CHANNEL(CHANNEL-NAME) CONTAINER(CONTAINER-NAME) FROM(DATA-AREA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC EVALUATE RESPONSE-CODE WHEN DFHRESP(NORMAL) MOVE 'Y' TO STORAGE-SUCCESSFUL DISPLAY 'Channel container stored successfully' WHEN DFHRESP(NOTFND) DISPLAY 'Channel not found' WHEN DFHRESP(NOTAUTH) DISPLAY 'Not authorized to store container' WHEN DFHRESP(INVREQ) DISPLAY 'Invalid container request' WHEN DFHRESP(CONTAINERERR) DISPLAY 'Container storage error' WHEN OTHER DISPLAY 'Unexpected error occurred' END-EVALUATE.
Think of CICS PUT CONTAINER (CHANNEL) like putting toys in a toy box:
Create a program that stores a specific container in a channel.
Write a program that manages multiple channel container storage operations.
Implement comprehensive error handling for channel container storage failures.