IWAYEVT0 Program

The IWAYEVT0 sample program demonstrates event handling by sending a record to the iWay Transaction Adapter for CICS using CICS sockets. No response is returned and each data record that is mapped by the COPYBOOKS must be preceded by a 4 byte binary length.

You must configure the adapter with an event to receive this data. Using iWay Explorer, select the Is Length Prefix checkbox and Request from the Synchronization Type drop-down list. Specify iWAYEVT0.CBL in the Preparser FD field. The host and port must match the value set used in the sample program.

The EZASOKET interface is documented in the Z/OS communications server IP sockets guide.

Note: For other platforms, use the socket interface appropriate for that platform.

On Windows, the IWAYEVT0 sample program is located in:

C:\Program Files\iWay7\etc\samples\cics\iwayevt0

The following supporting files are provided:

       CBL TRUNC(BIN)
       ID DIVISION.
       PROGRAM-ID. IWAYEVT0.
      ***************************************************************
      * IWAYEVT0 - THIS SAMPLE PROGRAM DEMONSTRATES SENDING A       *
      * RECORD TO THE IWAY CICS ADAPTER USING CICS SOCKETS.  NO     *
      * RESPONSE IS RETURNED.  DATA RECORDS MAPPED BY COPYBOOKS     *
      * MUST EACH BE PRECEDED BY A 4 BYTE BINARY LENGTH.            *
      *                                                             *
      * THE CICS ADAPTER MUST BE CONFIGURED WITH AN EVENT TO        *
      * RECEIVE THIS DATA.  SELECT "IS LENGTH PREFIX", SYNCHRON-    *
      * IZATION TYPE "REQUEST", AND USE IWAYEVT0.CBL AS THE         *
      * PREPARSER FD.  HOST AND PORT MUST MATCH THE VALUES SET      *
      * BELOW.                                                      *
      *                                                             *
      * THE EZASOKET INTERFACE IS DOCUMENTED IN THE Z/OS            *
      * COMMUNICATIONS SERVER IP CICS SOCKETS GUIDE.                *
      *                                                             *
      * USES: IWAYEVT0_IN.CBL     (INPUT RECORD)                    *
      *                                                             *
      ***************************************************************
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 SOCKET-GROUP.
          05 SOC-FUNCTION              PIC X(16) VALUE SPACES.
          05 ERRNO                     PIC 9(8) BINARY VALUE ZEROES.
          05 RETCODE                   PIC S9(8) BINARY VALUE ZEROES.
          05 AF                        PIC 9(8) BINARY VALUE 2.
          05 SOCTYPE                   PIC 9(8) BINARY VALUE 1.
          05 PROTO                     PIC 9(8) BINARY VALUE 0.
          05 NAMELEN                   PIC 9(8) BINARY.
          05 HOSTNAME                  PIC X(255).
          05 HOSTENT                   POINTER.
          05 NAME.
             10 FAMILY                 PIC 9(4) BINARY VALUE 2.
             10 PORT                   PIC 9(4) BINARY.
             10 IP-ADDRESS             PIC 9(8) BINARY.
             10 IP-ADDRESS-ALPHA REDEFINES IP-ADDRESS PIC X(4).
             10 RESERVED               PIC X(8) VALUE LOW-VALUES.
          05 FLAGS                     PIC 9(8) BINARY VALUE 0.
          05 SOCKET                    PIC 9(4) BINARY.
          05 NBYTE                     PIC 9(8) BINARY.
          05 CMD                       PIC 9(8) BINARY.
          05 REQARG                    PIC 9(8) BINARY.
       01 WORKAREA.
          05 LLEN                         PIC 9(8) BINARY VALUE 4.
          05 ERRMSG                       PIC X(41)
             VALUE 'ERROR ENCOUNTERED DURING '.
          05 TMSG                         PIC X(44)
             VALUE 'EVENTCBL: RECORD TRANSMISSION WAS SUCCESSFUL'.
      ***************************************************************
      * SAMPLE INBOUND DATA RECORD WITH VARIOUS COBOL TYPES.        *
      ***************************************************************
       01 INBOUND-RECORD.
          05 ALPHA01               PIC X(8)
             VALUE 'ABCDEFGH'.
          05 INT01                 PIC S9(4) BINARY VALUE 25.
          05 PACK01                PIC S9(15) PACKED-DECIMAL VALUE 50.
          05 ZONE01                PIC 9(4) VALUE 75.
       LINKAGE SECTION.
          01  HOSTENT-STRUCT.
              05  HOSTNAME-PTR   POINTER.
              05  HOSTALIASL-PTR POINTER.
              05  HOSTFAMILY     PIC S9(8) BINARY.
              05  HOSTADR-LEN    PIC S9(8) BINARY.
              05  HOSTADRL-PTR   POINTER.
          01  HOST-ENTRY-PTR     POINTER.
          01  HOST-ENTRY         PIC 9(8) BINARY.
       PROCEDURE DIVISION.
       MAINLINE.
      ***************************************************************
      * CHANGE HOSTNAME AND PORT TO SITE SPECIFIC LOCATION OF THE   *
      * CICS ADAPTER.                                               *
      ***************************************************************
           MOVE 'YOUR.DNS.NAME' TO HOSTNAME
           MOVE 4772 TO PORT
           PERFORM GETSOCK
           PERFORM GETHOSTBYNAME
           PERFORM SETBLOCK
           PERFORM CONNECTTOHOST
           PERFORM SENDDATA
           PERFORM CLOSESOCK
           EXEC CICS SEND TEXT FROM(TMSG)
              LENGTH(LENGTH OF TMSG)
           END-EXEC
           EXEC CICS RETURN END-EXEC
           GOBACK.
       GETSOCK.
           MOVE 'SOCKET          ' TO SOC-FUNCTION
           CALL 'EZASOKET' USING SOC-FUNCTION,
                AF,
                SOCTYPE,
                PROTO,
                ERRNO,
                RETCODE
           MOVE RETCODE TO SOCKET
           IF RETCODE < 0
              PERFORM WRITERR-EXIT
           END-IF.
       GETHOSTBYNAME.
           MOVE 'GETHOSTBYNAME   ' TO SOC-FUNCTION
           MOVE LENGTH OF HOSTNAME TO NAMELEN
           CALL 'EZASOKET' USING SOC-FUNCTION NAMELEN HOSTNAME
                HOSTENT RETCODE
                IF RETCODE EQUAL ZERO
                   SET ADDRESS OF HOSTENT-STRUCT TO HOSTENT
                   SET ADDRESS OF HOST-ENTRY-PTR TO HOSTADRL-PTR
                   SET ADDRESS OF HOST-ENTRY TO HOST-ENTRY-PTR
                ELSE
                   PERFORM WRITERR-EXIT
                END-IF.
       SETBLOCK.
           MOVE 'FCNTL           ' TO SOC-FUNCTION
           MOVE 4 TO CMD
           MOVE 0 TO REQARG
           CALL 'EZASOKET' USING SOC-FUNCTION, SOCKET, CMD, REQARG,
                           ERRNO, RETCODE.
       CONNECTTOHOST.
           MOVE HOST-ENTRY TO IP-ADDRESS
           MOVE 'CONNECT         ' TO SOC-FUNCTION
           CALL 'EZASOKET' USING SOC-FUNCTION,
                SOCKET,
                NAME,
                ERRNO,
                RETCODE
           IF RETCODE = 0
                CONTINUE
           ELSE
              PERFORM WRITERR-EXIT
           END-IF.
       SENDDATA.
      ***************************************************************
      * PRECEDE THE RECORD WITH 4 BYTE BINARY RECORD LENGTH         *
      ***************************************************************
           MOVE 'SEND            ' TO SOC-FUNCTION
           MOVE LENGTH OF INBOUND-RECORD TO NBYTE
           MOVE 4 TO LLEN
           MOVE 0 TO RETCODE
           CALL 'EZASOKET' USING SOC-FUNCTION,
                 SOCKET,
                 FLAGS,
                 LLEN,
                 NBYTE,
                 ERRNO,
                 RETCODE
           IF RETCODE = -1
              PERFORM WRITERR-EXIT
           END-IF
      ***************************************************************
      * SEND THE ACTUAL RECORD                                      *
      ***************************************************************
           CALL 'EZASOKET' USING SOC-FUNCTION,
                SOCKET,
                FLAGS,
                NBYTE,
                INBOUND-RECORD,
                BY REFERENCE ERRNO,
                RETCODE
           IF RETCODE = -1
              PERFORM WRITERR-EXIT
           END-IF
           .
       CLOSESOCK.
           MOVE ZEROES TO RETCODE ERRNO
           MOVE 'CLOSE           ' TO SOC-FUNCTION
           CALL 'EZASOKET' USING SOC-FUNCTION,
              SOCKET,
              ERRNO,
              RETCODE
           IF RETCODE < 0
              PERFORM WRITERR-EXIT
           END-IF.
       WRITERR-EXIT.
           MOVE SOC-FUNCTION TO ERRMSG(26:15)
           EXEC CICS SEND TEXT FROM(ERRMSG)
              LENGTH(LENGTH OF ERRMSG)
           END-EXEC
           EXEC CICS RETURN END-EXEC.

iWay Software