5.1.2.1 Examples

The following sample is an example of a COBOL CICS client program.

Listing COBOL CICS Client Program Example

IDENTIFICATION DIVISION.
 PROGRAM-ID.     TESTCLN.
 ENVIRONMENT     DIVISION.
 CONFIGURATION SECTION.
 SOURCE-COMPUTER. IBM-3090.
 OBJECT-COMPUTER. IBM-3090.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 FILLER   PIC X(32) VALUE 'SAMPLE COBOL CICS CLIENT PROGRAM'.
 01 MSG-AREA.
 05 M-DATA             PIC X(42) VALUE SPACES.
 05 M-RCDE             PIC Z(05) VALUE ZEROS.
 01 WS-COMMAREA.
 05 WC-DATALEN         PIC S9(9) COMP-4.
 05 WC-SVCNAME         PIC X(16).
 05 WC-REQUESTCD       PIC S9(9) COMP-4.
 05 WC-RETURNCD        PIC S9(9) COMP-4.
 05 WC-REQRETURNCD     PIC S9(9) COMP-4.
 05 WC-REQDATA         PIC X(14).
 LINKAGE SECTION.
 01 DFHCOMMAREA        PIC X(14).
 PROCEDURE DIVISION.
 A100-ENTRY.
 MOVE +14                  TO WC-DATALEN.
 MOVE 'TOLOWER'            TO WC-SVCNAME.
 MOVE +5                   TO WC-REQUESTCD.
 MOVE 'THIS IS A TEST'     TO WC-REQDATA.
 EXEC CICS LINK PROGRAM('BEAPRERQ')
           COMMAREA(WS-COMMAREA)
           LENGTH(LENGTH OF WS-COMMAREA)
 END-EXEC.
 IF RETURNCD = 0
    MOVE 'SUCCESSFUL CALL, RETURN DATA IS IN WC-DATA'
      TO MSG-DATA
 ELSE
   MOVE 'PROCESS ERROR OCCURRED, RETURN CODE EQUAL '
     TO MSG-DATA
   MOVE RETURNCD TO M-RCDE
 END-IF.
 EXEC CICS SEND TEXT FROM(MSG-AREA) LENGTH(47)
           ERASE TERMINAL FREEKB CURSOR(0)
 END-EXEC.
 A200-EXIT.
     EXEC CICS RETURN END-EXEC.

The following is an example of a C CICS client program.

Listing C CICS Client Program Example

long resp, resp2;
unsigned short int lmsg;
struct CMAREA carea;


carea.CltHdr.DataLen = strlen(sendbuf);
memcpy(carea.CltHdr.SvcName, “ECHO”, 4);
carea.CltHdr.RequestCd = BEA_REQUEST_RESPONSE;
memcpy(carea.Request_data, “This is a test”, 14);
lmsg=sizeof(carea);
/* Use the name defined during installation */
EXEC CICS LINK PROGRAM("PREREQ") 
                           COMMAREA(&carea)
                           LENGTH(lmsg) RESP(resp) RESP2(resp2);
if(carea.CltHdr.ReturnCd || carea.CltHdr.ReqReturnCd)
           process error;
else
           successful call, returned data is in Request_data;

Note:

C Programmers, do not include the NULL terminator on any strings. In the previous example, the memxxx calls were used instead of the strxxx calls. This example is typical when using C and CICS together. For more information see your C for CICS documentation.