CBL LIB XOPTS(SP) * AS WRITTEN, THIS PROGRAM REQUIRES THE FOLLOWING CBL OPTIONS. * CBL MAP,XREF(SHORT),OFFSET,TEST(ALL,SYM),APOST,LIB * CBL TRUNC(BIN),NOZWB * CBL DATA(31),RMODE(ANY) IDENTIFICATION DIVISION. PROGRAM-ID. BSTTEZ60. * * COPYRIGHT TEI 2009-2011 * * IPV6 VERSION OF BSTTEZ10 * * BASED ON FIGURE 38 IN MVS TCP/IP SOCKETS RED BOOK. * GG24-2561-00 * * SEE COMMENTS IN BSTTEZ61. * * CHANGE LOG: * AUG 19, 2009 TT NEW PROGRAM * TT = TONY THIGPEN TONY@VSE2PDF.COM * AUG 19, 2009 TT CHECK IF PLT STARTUP AND IF YES, SKIP TCPIP * SEP 04, 2010 TT REMOVED BSTTEZA8 COPYBOOK ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 PROGRAM-INFOMATION. 05 PROGRAM-NAME PIC X(08) VALUE 'BSTTEZ60'. 05 PROGRAM-TITLE PIC X(25) VALUE 'EZA CICS SHUTDOWN CLIENT'. 01 WS-AREA. 05 WS-TEXT-LENGTH PIC S9(04) COMP. 05 WS-IPADDRESS PIC X(16) VALUE X'00000000000000000000000000000001'. 05 WS-IPPORT PIC S9(04) COMP VALUE +4444. 05 WS-FCI PIC X(01). 88 HAVE-TERMINAL VALUE X'01'. 05 WS-CVDA PIC S9(09) COMP. 01 ABEND-INFORMATION. 03 CURRENT-FUNCTION PIC X(20) VALUE SPACES. 03 CURRENT-ERROR PIC 9(05) VALUE ZEROES. 03 FILLER PIC X(01) VALUE SPACES. 03 ABEND-CODE PIC 9(04) VALUE ZEROS. 01 MESSAGES. 05 MSG-DONE PIC X(14) VALUE 'BSTTEZ60 DONE '. 05 MSG-EZA. 10 MSG-EZA-TRAN PIC X(04). 10 FILLER PIC X(01). 10 MSG-EZA-TASK PIC 9(07). 10 FILLER PIC X(01). 10 MSG-EZA-FUNCTION PIC X(16). 05 MSG-START-SERVER PIC X(35) VALUE 'STARTING LISTENER TRANSACTION EZ61 '. 05 MSG-STOP-SERVER PIC X(35) VALUE 'STOPING LISTENER TRANSACTION EZ61 '. 01 BUFFER-IN PIC X(80) VALUE SPACES. 01 BUFFER-OUT PIC X(80) VALUE SPACES. 01 RSNDMSK PIC X(08) VALUE LOW-VALUES. 01 WSNDMSK PIC X(08) VALUE LOW-VALUES. 01 ESNDMSK PIC X(08) VALUE LOW-VALUES. 01 RRETMSK PIC X(08) VALUE LOW-VALUES. 01 WRETMSK PIC X(08) VALUE LOW-VALUES. 01 ERETMSK PIC X(08) VALUE LOW-VALUES. 01 EZA-CALL-DATA. COPY BSTTEZA. 01 EZACIC06-DATA. COPY BSTTEZA6. PROCEDURE DIVISION. MAINLINE SECTION. ML-START. EXEC CICS INQUIRE SYSTEM CICSSTATUS(WS-CVDA) END-EXEC. IF WS-CVDA IS NOT EQUAL TO DFHVALUE(STARTUP) GO TO ML-NOT-PLT. EXEC CICS START TRANSID('EZ61') NOHANDLE END-EXEC IF EIBRESP IS NOT EQUAL TO DFHRESP(NORMAL) GO TO AR-0005. GO TO ML-RETURN. ML-NOT-PLT. EXEC CICS ASSIGN FCI(WS-FCI) NOHANDLE END-EXEC. PERFORM EZACIC06-SETUP. ML-INITAPI. MOVE +0 TO EZA-MAXSOC. MOVE SPACES TO EZA-IDENT. MOVE SPACES TO EZA-SUBTASK. PERFORM EZA-INITAPI. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0001. ML-SOCKET. MOVE EZA-INET6 TO EZA-AF. PERFORM EZA-SOCKET. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0002. MOVE EZA-RETCODE TO EZA-S. ML-CONNECT. MOVE LOW-VALUES TO EZA-NAMEV6. MOVE EZA-INET6 TO EZA-NAMEV6-FAMILY. MOVE WS-IPPORT TO EZA-NAMEV6-PORT. MOVE WS-IPADDRESS TO EZA-NAMEV6-IPADDRESS. PERFORM EZA-CONNECT. IF EZA-RETCODE IS LESS THAN +0 GO TO ML-START-SERVER. ML-STOP-SERVER. IF HAVE-TERMINAL EXEC CICS SEND TEXT FROM(MSG-STOP-SERVER) LENGTH(LENGTH OF MSG-STOP-SERVER) ERASE END-EXEC EXEC CICS SEND CONTROL FREEKB END-EXEC ELSE EXEC CICS WRITE OPERATOR TEXT(MSG-STOP-SERVER) TEXTLENGTH(LENGTH OF MSG-STOP-SERVER) END-EXEC. ML-SEND. MOVE 'STOP' TO BUFFER-OUT. MOVE +4 TO EZA-NBYTE. PERFORM EZA-EBCDIC-TO-ASCII. PERFORM EZA-SEND. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0003. ML-SELECT. * THIS IS A SELECT FOR TIMER ONLY MOVE +0 TO EZA-MAXSOC-SELECT. MOVE LOW-VALUES TO EZA-TIMEOUT. MOVE 10 TO EZA-TIMEOUT-SECONDS. MOVE LOW-VALUES TO RSNDMSK. MOVE LOW-VALUES TO WSNDMSK. MOVE LOW-VALUES TO ESNDMSK. TEMP PERFORM EZA-SELECT. TEMP IF EZA-RETCODE IS LESS THAN +0 TEMP GO TO AR-0004. GO TO ML-CLOSE. ML-START-SERVER. IF HAVE-TERMINAL EXEC CICS SEND TEXT FROM(MSG-START-SERVER) LENGTH(LENGTH OF MSG-START-SERVER) ERASE END-EXEC EXEC CICS SEND CONTROL FREEKB END-EXEC ELSE EXEC CICS WRITE OPERATOR TEXT(MSG-START-SERVER) TEXTLENGTH(LENGTH OF MSG-START-SERVER) END-EXEC. EXEC CICS START TRANSID('EZ61') NOHANDLE END-EXEC IF EIBRESP IS NOT EQUAL TO DFHRESP(NORMAL) GO TO AR-0005. GO TO ML-CLOSE. ML-CLOSE. PERFORM EZA-CLOSE. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0006. ML-TERMAPI. PERFORM EZA-TERMAPI. IF HAVE-TERMINAL EXEC CICS SEND TEXT FROM(MSG-DONE) LENGTH(LENGTH OF MSG-DONE) ERASE END-EXEC EXEC CICS SEND CONTROL FREEKB END-EXEC ELSE EXEC CICS WRITE OPERATOR TEXT(MSG-DONE) TEXTLENGTH(LENGTH OF MSG-DONE) END-EXEC. ML-RETURN. EXEC CICS RETURN END-EXEC. ML-EXIT. GOBACK. * COPY IN ALL THE EZA SECTIONS COPY BSTTEZAP. CONSOLE-TRACE SECTION. * COMMENT OUT THE WTO IF IT IS NOT WANTED CT-START. MOVE SPACES TO MSG-EZA. MOVE EIBTRNID TO MSG-EZA-TRAN. MOVE EIBTASKN TO MSG-EZA-TASK. MOVE EZA-FUNCTION TO MSG-EZA-FUNCTION. EXEC CICS WRITE OPERATOR TEXT(MSG-EZA) TEXTLENGTH(LENGTH OF MSG-EZA) END-EXEC. CT-EXIT. EXIT. ABEND SECTION. AR-0001. MOVE 0001 TO ABEND-CODE. GO TO AR-ABEND. AR-0002. MOVE 0002 TO ABEND-CODE. GO TO AR-ABEND. AR-0003. MOVE 0003 TO ABEND-CODE. GO TO AR-ABEND. AR-0004. MOVE 0004 TO ABEND-CODE. GO TO AR-ABEND. AR-0005. MOVE 0005 TO ABEND-CODE. GO TO AR-ABEND. AR-0006. MOVE 0006 TO ABEND-CODE. GO TO AR-ABEND. AR-0007. MOVE 0007 TO ABEND-CODE. GO TO AR-ABEND. AR-ABEND. MOVE EZA-ERRNO TO CURRENT-ERROR. IF HAVE-TERMINAL EXEC CICS SEND TEXT FROM(ABEND-INFORMATION) LENGTH(LENGTH OF ABEND-INFORMATION) ERASE 071709 END-EXEC 071709 EXEC CICS SEND CONTROL 071709 FREEKB END-EXEC. EXEC CICS WRITE OPERATOR TEXT(ABEND-INFORMATION) TEXTLENGTH(LENGTH OF ABEND-INFORMATION) END-EXEC. EXEC CICS ABEND ABCODE(ABEND-CODE) END-EXEC. AR-EXIT. EXIT.