CICS CONVERSE provides program-to-program communication capabilities for programs and transactions. It enables programs to initiate conversations, manage program communication, and handle program-to-program conversations in CICS environments.
CICS CONVERSE is a command that allows programs to initiate conversations with other programs. It provides program-to-program communication capabilities, conversation management, and program communication for CICS applications.
123456789EXEC CICS CONVERSE CONVID(conversation-id) [FROM(data-area)] [FROMLENGTH(data-length)] [INTO(data-area)] [SET(pointer-variable)] [LENGTH(data-length)] [RESP(response-code)] END-EXEC
Conversations with immediate response
Conversations with delayed response
Conversations with two-way communication
Conversations with multiple participants
12345678910111213141516171819202122232425262728293031IDENTIFICATION DIVISION. PROGRAM-ID. CONVERSE01. DATA DIVISION. WORKING-STORAGE SECTION. 01 CONVERSATION-ID PIC X(8) VALUE 'CONV001'. 01 SEND-DATA PIC X(80) VALUE 'Hello from program'. 01 SEND-LENGTH PIC S9(4) COMP VALUE 18. 01 RECEIVE-DATA PIC X(80). 01 RECEIVE-LENGTH PIC S9(4) COMP. 01 RESPONSE-CODE PIC S9(8) COMP. PROCEDURE DIVISION. DISPLAY 'Starting conversation with program' EXEC CICS CONVERSE CONVID(CONVERSATION-ID) FROM(SEND-DATA) FROMLENGTH(SEND-LENGTH) INTO(RECEIVE-DATA) LENGTH(RECEIVE-LENGTH) RESP(RESPONSE-CODE) END-EXEC IF RESPONSE-CODE = DFHRESP(NORMAL) DISPLAY 'Conversation successful' DISPLAY 'Received: ' RECEIVE-DATA(1:RECEIVE-LENGTH) ELSE DISPLAY 'Conversation failed' END-IF EXEC CICS RETURN END-EXEC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364IDENTIFICATION DIVISION. PROGRAM-ID. CONVERSE02. DATA DIVISION. WORKING-STORAGE SECTION. 01 CONVERSATION-ID PIC X(8). 01 SEND-DATA PIC X(80). 01 SEND-LENGTH PIC S9(4) COMP. 01 RECEIVE-DATA PIC X(80). 01 RECEIVE-LENGTH PIC S9(4) COMP. 01 RESPONSE-CODE PIC S9(8) COMP. 01 CONVERSATION-COUNT PIC S9(2) COMP VALUE 0. 01 MAX-CONVERSATIONS PIC S9(2) COMP VALUE 3. 01 CONVERSATION-LIST. 05 CONVERSATION-ITEM OCCURS 3 TIMES. 10 CONV-ID PIC X(8). 10 CONV-MESSAGE PIC X(80). 10 CONV-LENGTH PIC S9(4) COMP. PROCEDURE DIVISION. PERFORM INITIALIZE-CONVERSATIONS PERFORM CONDUCT-MULTIPLE-CONVERSATIONS EXEC CICS RETURN END-EXEC. INITIALIZE-CONVERSATIONS. MOVE 'CONV001' TO CONV-ID(1) MOVE 'Request data from service A' TO CONV-MESSAGE(1) MOVE 26 TO CONV-LENGTH(1) MOVE 'CONV002' TO CONV-ID(2) MOVE 'Request data from service B' TO CONV-MESSAGE(2) MOVE 26 TO CONV-LENGTH(2) MOVE 'CONV003' TO CONV-ID(3) MOVE 'Request data from service C' TO CONV-MESSAGE(3) MOVE 26 TO CONV-LENGTH(3). CONDUCT-MULTIPLE-CONVERSATIONS. PERFORM VARYING CONVERSATION-COUNT FROM 1 BY 1 UNTIL CONVERSATION-COUNT > MAX-CONVERSATIONS MOVE CONV-ID(CONVERSATION-COUNT) TO CONVERSATION-ID MOVE CONV-MESSAGE(CONVERSATION-COUNT) TO SEND-DATA MOVE CONV-LENGTH(CONVERSATION-COUNT) TO SEND-LENGTH PERFORM CONDUCT-SINGLE-CONVERSATION IF RESPONSE-CODE = DFHRESP(NORMAL) DISPLAY 'Conversation ' CONVERSATION-COUNT ' successful' DISPLAY 'Response: ' RECEIVE-DATA(1:RECEIVE-LENGTH) ELSE DISPLAY 'Conversation ' CONVERSATION-COUNT ' failed' END-IF END-PERFORM. CONDUCT-SINGLE-CONVERSATION. EXEC CICS CONVERSE CONVID(CONVERSATION-ID) FROM(SEND-DATA) FROMLENGTH(SEND-LENGTH) INTO(RECEIVE-DATA) LENGTH(RECEIVE-LENGTH) RESP(RESPONSE-CODE) END-EXEC.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556IDENTIFICATION DIVISION. PROGRAM-ID. CONVERSE03. DATA DIVISION. WORKING-STORAGE SECTION. 01 CONVERSATION-ID PIC X(8) VALUE 'CONV001'. 01 SEND-DATA PIC X(80) VALUE 'Test message'. 01 SEND-LENGTH PIC S9(4) COMP VALUE 12. 01 RECEIVE-DATA PIC X(80). 01 RECEIVE-LENGTH PIC S9(4) COMP. 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 CONVERSATION-SUCCESSFUL PIC X(1) VALUE 'N'. PROCEDURE DIVISION. PERFORM CONDUCT-CONVERSATION-WITH-RETRY EXEC CICS RETURN END-EXEC. CONDUCT-CONVERSATION-WITH-RETRY. PERFORM CONDUCT-CONVERSATION IF RESPONSE-CODE NOT = DFHRESP(NORMAL) AND RETRY-COUNT < MAX-RETRIES ADD 1 TO RETRY-COUNT DISPLAY 'Retry ' RETRY-COUNT ' conversation' PERFORM CONDUCT-CONVERSATION-WITH-RETRY END-IF. CONDUCT-CONVERSATION. EXEC CICS CONVERSE CONVID(CONVERSATION-ID) FROM(SEND-DATA) FROMLENGTH(SEND-LENGTH) INTO(RECEIVE-DATA) LENGTH(RECEIVE-LENGTH) RESP(RESPONSE-CODE) END-EXEC EVALUATE RESPONSE-CODE WHEN DFHRESP(NORMAL) MOVE 'Y' TO CONVERSATION-SUCCESSFUL DISPLAY 'Conversation successful' WHEN DFHRESP(NOTAUTH) DISPLAY 'Not authorized for conversation' WHEN DFHRESP(INVREQ) DISPLAY 'Invalid conversation request' WHEN DFHRESP(CONVIDERR) DISPLAY 'Invalid conversation ID' WHEN DFHRESP(CONVFAILED) DISPLAY 'Conversation failed' WHEN DFHRESP(CONVTIMEOUT) DISPLAY 'Conversation timeout' WHEN OTHER DISPLAY 'Unexpected conversation error' END-EVALUATE.
Think of CICS CONVERSE like talking to a friend on the phone:
Create a program that conducts a simple conversation with another program.
Write a program that manages multiple conversation operations.
Implement comprehensive error handling for conversation failures.