CICS GETNEXT CONTAINER (CHANNEL) provides channel container browsing capabilities for programs and transactions. It enables programs to browse channel containers, iterate through container lists, and handle channel container browsing operations in CICS environments.
CICS GETNEXT CONTAINER (CHANNEL) is a command that allows programs to browse channel containers in sequence, retrieve the next container in a browse operation, and iterate through channel container lists. It provides channel container browsing capabilities, container iteration, and channel container list handling for CICS applications.
123456EXEC CICS GETNEXT CONTAINER CHANNEL(channel-name) INTO(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
123456789101112131415161718192021222324252627282930313233343536IDENTIFICATION DIVISION. PROGRAM-ID. GETNEXTCONTAINERCHANNEL01. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHANNEL-NAME PIC X(8) VALUE 'MAINCHAN'. 01 CONTAINER-DATA PIC X(100). 01 DATA-LENGTH PIC S9(8) COMP VALUE 100. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CONTAINER-COUNT PIC S9(4) COMP VALUE 0. 01 MAX-CONTAINERS PIC S9(4) COMP VALUE 10. 01 BROWSE-ACTIVE PIC X(1) VALUE 'Y'. PROCEDURE DIVISION. PERFORM START-CHANNEL-CONTAINER-BROWSE PERFORM UNTIL BROWSE-ACTIVE = 'N' OR CONTAINER-COUNT >= MAX-CONTAINERS EXEC CICS GETNEXT CONTAINER CHANNEL(CHANNEL-NAME) INTO(CONTAINER-DATA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) ADD 1 TO CONTAINER-COUNT DISPLAY 'Container ' CONTAINER-COUNT ': ' CONTAINER-DATA(1:DATA-LENGTH) ELSE MOVE 'N' TO BROWSE-ACTIVE DISPLAY 'End of containers or error occurred' END-IF END-PERFORM EXEC CICS ENDBROWSE CONTAINER END-EXEC EXEC CICS RETURN END-EXEC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152IDENTIFICATION DIVISION. PROGRAM-ID. GETNEXTCONTAINERCHANNEL02. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHANNEL-NAME PIC X(8) VALUE 'MAINCHAN'. 01 CONTAINER-DATA PIC X(200). 01 DATA-LENGTH PIC S9(8) COMP VALUE 200. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CONTAINER-COUNT PIC S9(4) COMP VALUE 0. 01 MAX-CONTAINERS PIC S9(4) COMP VALUE 20. 01 BROWSE-ACTIVE PIC X(1) VALUE 'Y'. 01 CONTAINER-LIST. 05 CONTAINER-ITEM OCCURS 20 TIMES. 10 CONTAINER-ID PIC X(8). 10 CONTAINER-STATUS PIC X(1). PROCEDURE DIVISION. PERFORM START-CHANNEL-CONTAINER-BROWSE PERFORM BROWSE-CHANNEL-CONTAINERS PERFORM END-CHANNEL-CONTAINER-BROWSE EXEC CICS RETURN END-EXEC. START-CHANNEL-CONTAINER-BROWSE. EXEC CICS STARTBROWSE CONTAINER CHANNEL(CHANNEL-NAME) END-EXEC. BROWSE-CHANNEL-CONTAINERS. PERFORM UNTIL BROWSE-ACTIVE = 'N' OR CONTAINER-COUNT >= MAX-CONTAINERS EXEC CICS GETNEXT CONTAINER CHANNEL(CHANNEL-NAME) INTO(CONTAINER-DATA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) ADD 1 TO CONTAINER-COUNT MOVE CONTAINER-DATA(1:8) TO CONTAINER-ID(CONTAINER-COUNT) MOVE 'A' TO CONTAINER-STATUS(CONTAINER-COUNT) DISPLAY 'Retrieved container: ' CONTAINER-ID(CONTAINER-COUNT) ELSE MOVE 'N' TO BROWSE-ACTIVE DISPLAY 'End of containers or error occurred' END-IF END-PERFORM. END-CHANNEL-CONTAINER-BROWSE. EXEC CICS ENDBROWSE CONTAINER END-EXEC.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869IDENTIFICATION DIVISION. PROGRAM-ID. GETNEXTCONTAINERCHANNEL03. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHANNEL-NAME PIC X(8) VALUE 'TESTCHAN'. 01 CONTAINER-DATA PIC X(100). 01 DATA-LENGTH PIC S9(8) COMP VALUE 100. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CONTAINER-COUNT PIC S9(4) COMP VALUE 0. 01 MAX-CONTAINERS PIC S9(4) COMP VALUE 15. 01 BROWSE-ACTIVE PIC X(1) VALUE 'Y'. 01 RETRY-COUNT PIC S9(2) COMP VALUE 0. 01 MAX-RETRIES PIC S9(2) COMP VALUE 3. PROCEDURE DIVISION. PERFORM START-CHANNEL-CONTAINER-BROWSE PERFORM BROWSE-CHANNEL-CONTAINERS-WITH-ERROR-HANDLING PERFORM END-CHANNEL-CONTAINER-BROWSE EXEC CICS RETURN END-EXEC. START-CHANNEL-CONTAINER-BROWSE. EXEC CICS STARTBROWSE CONTAINER CHANNEL(CHANNEL-NAME) END-EXEC. BROWSE-CHANNEL-CONTAINERS-WITH-ERROR-HANDLING. PERFORM UNTIL BROWSE-ACTIVE = 'N' OR CONTAINER-COUNT >= MAX-CONTAINERS PERFORM GET-NEXT-CHANNEL-CONTAINER IF RESPONSE-CODE = DFHRESP(NORMAL) ADD 1 TO CONTAINER-COUNT DISPLAY 'Container ' CONTAINER-COUNT ': ' CONTAINER-DATA(1:DATA-LENGTH) ELSE PERFORM HANDLE-CHANNEL-BROWSE-ERROR END-IF END-PERFORM. GET-NEXT-CHANNEL-CONTAINER. EXEC CICS GETNEXT CONTAINER CHANNEL(CHANNEL-NAME) INTO(CONTAINER-DATA) LENGTH(DATA-LENGTH) RESP(RESPONSE-CODE) END-EXEC. HANDLE-CHANNEL-BROWSE-ERROR. EVALUATE RESPONSE-CODE WHEN DFHRESP(ENDFILE) MOVE 'N' TO BROWSE-ACTIVE DISPLAY 'End of containers reached' WHEN DFHRESP(NOTAUTH) DISPLAY 'Not authorized to browse containers' MOVE 'N' TO BROWSE-ACTIVE WHEN DFHRESP(INVREQ) DISPLAY 'Invalid browse request' MOVE 'N' TO BROWSE-ACTIVE WHEN DFHRESP(CONTAINERERR) DISPLAY 'Container browse error' MOVE 'N' TO BROWSE-ACTIVE WHEN OTHER DISPLAY 'Unexpected error occurred' MOVE 'N' TO BROWSE-ACTIVE END-EVALUATE. END-CHANNEL-CONTAINER-BROWSE. EXEC CICS ENDBROWSE CONTAINER END-EXEC.
Think of CICS GETNEXT CONTAINER (CHANNEL) like looking through a toy box:
Create a program that browses through channel containers using GETNEXT CONTAINER.
Write a program that manages channel container browsing with filtering and sorting.
Implement comprehensive error handling for channel container browsing failures.