MainframeMaster

CICS RECEIVE APPC

Receive data on an established APPC conversation. Typically paired with LINKed partner programs and prior ALLOCATE or ACCEPT.

Syntax

cobol
1
2
3
4
5
6
EXEC CICS RECEIVE CONVID(conversation-id) INTO(data-area) FLENGTH(length-area) RESP(resp) RESP2(resp2) END-EXEC.

Usage Patterns

Length Discovery

First determine required length, then allocate buffer accordingly to avoid LENGERR:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
* First call to get length EXEC CICS RECEIVE CONVID(WS-CONVID) FLENGTH(WS-RCV-LEN) RESP(WS-RESP) END-EXEC. IF WS-RESP = DFHRESP(LENGERR) OR WS-RESP = DFHRESP(NORMAL) EXEC CICS GETMAIN SET(WS-RCV-PTR) LENGTH(WS-RCV-LEN) END-EXEC SET ADDRESS OF WS-RCV-BUF TO WS-RCV-PTR EXEC CICS RECEIVE CONVID(WS-CONVID) INTO(WS-RCV-BUF) FLENGTH(WS-RCV-LEN) RESP(WS-RESP) END-EXEC END-IF.

Error Handling

  • LENGERR: Increase buffer; use two-step pattern above.
  • INVREQ: Invalid CONVID or state; verify prior ALLOCATE/ACCEPT.
  • IOERR: Communication issue; implement retry/backoff.

Notes

  • Use FLENGTH to capture the number of bytes received.
  • Handle LENGERR when target buffer is too small.
  • Conversation is identified by CONVID from ALLOCATE/ACCEPT.

Example

cobol
1
2
3
4
5
6
7
8
9
10
11
12
EXEC CICS RECEIVE CONVID(WS-CONVID) INTO(WS-RCV-BUF) FLENGTH(WS-RCV-LEN) RESP(WS-RESP) RESP2(WS-RESP2) END-EXEC. IF WS-RESP = DFHRESP(NORMAL) PERFORM PROCESS-INCOMING-DATA ELSE PERFORM HANDLE-APPC-ERROR END-IF.