The only reliable solution I was able to come up with is a program than runs periodically (every 3 minutes) to do a CICS INQUIRE TASK to look for the CICS listener task (CSKL in our case). After a TCP/IP failure, the CSKL task terminates so it is not in a CICS task list. I was unable to figure out a reliable way to utilize either EXEC CICS INQUIRE EXITPROGRAM(EZACIC01) or EXEC CICS EXTRACT EXIT PROGRAM(EZACIC01) as noted in IBM documentation and IBMLink items I've reviewed.
If the CSKL task is not found in CICS, this locally written program does a CICS LINK to EZACIC20 to attempt a deferred termination (P20TYPE = C'D'), then another CICS LINK to EZACIC20 to attempt an initialization (P20TYPE = C'I'). This works for us because we run with IMMED = YES in the socket configuration file, which indicates that the listener is to start when the interface starts. This has worked well for us on more than one occasion.
To verify that the CICS socket interface is working, a small "NERDC CICS Check Sockets CGI" application was written utilizing a small CGI socket client program written in C running on AIX which attempts to connect to a CICS assembler iterative socket child server program. This application simply returns an "OK" message (with the CICS SYSID) to the Web browser if all appears "well" with the socket interface. Some of this code is based upon the sample code provided with the IBM Redbook SG24-4547 noted earlier in the "Installation" section of this presentation.
For CA-InterTest, we updated the IN25UEXI module with:
IN25UEX CALL=EZACICAL
IN25UEX CALL=EZACIC04
IN25UEX CALL=EZACIC05
IN25UEX CALL=EZACIC06
IN25UEX CALL=EZACIC08
IN25UEX CALL=EZASOKET
Last updated on August 6, 1999, by Steve Ware, <mailto:sfw@nersp.nerdc.ufl.edu>.