* 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. BSTTEZ55. * * COPYRIGHT TEI 2009-2011 * * THIS IS A COPY OF BSTTEZ52 THAT USES GETADDRINFO TO AQUIRE * THE ADDRESS OF THE SERVER. * * BASED ON FIGURE 38 IN MVS TCP/IP SOCKETS RED BOOK. * GG24-2561-00 * * SEE COMMENTS IN BSTTEZ01. * * CHANGE LOG: * APR 05, 2010 TT NEW PROGRAM * TT = TONY THIGPEN TONY@VSE2PDF.COM * MAY 05, 2010 TT USE WS-SERVER-NAME FOR GETADDRINFO * SEP 04, 2010 TT REMOVED BSTTEZA8 COPYBOOK * SEP 04, 2010 TT ADDED BSTTEZAR COPYBOOK ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 PROGRAM-INFOMATION. 05 PROGRAM-NAME PIC X(08) VALUE 'BSTTEZ55'. 05 PROGRAM-TITLE PIC X(23) VALUE 'EZA CLIENT '. 01 WS-AREA. 05 WS-STOP PIC X(01) VALUE SPACE. 05 WS-ORIGINAL-SOCKET PIC S9(04) COMP. 05 WS-IPPORT PIC S9(04) COMP VALUE +4321. 05 WS-LOOPS PIC S9(04) COMP VALUE +3. * REPLACE THE VALUE OF THE FOLLOWING VARIABLE WITH THE CORRECT * NAME OF THE SERVER. NOTE: A VALUE OF SPACES RETURNS THE * CORRECT LOOP-BACK ADDRES. 05 WS-SERVER-NAME PIC X(64) VALUE ' '. 01 ABEND-INFORMATION. 03 CURRENT-FUNCTION PIC X(20) VALUE SPACES. 03 CURRENT-ERROR PIC 9(05) VALUE ZEROES. 03 ABEND-CODE PIC 9(04) VALUE ZEROS. 03 ABEND-SPACE. 05 ABEND-NUMBER PIC S9(04) VALUE ZEROS. 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. 01 EZACIC09-DATA. COPY BSTTEZA9. LINKAGE SECTION. 01 OUTPUT-IP-NAME PIC X(28). PROCEDURE DIVISION. MAINLINE SECTION. ML-START. 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-GETADDRINFO. MOVE WS-SERVER-NAME TO BUFFER-OUT. MOVE +9 TO EZA-NODELEN. MOVE SPACES TO EZA-SERVICE. MOVE +0 TO EZA-SERVLEN. MOVE LOW-VALUES TO EZA-ADDRINFO. COMPUTE EZA-AI-FLAGS = EZA-AI-ALL. MOVE EZA-INETANY TO EZA-AI-FAMILY. MOVE EZA-STREAM TO EZA-AI-SOCKTYPE. PERFORM EZA-GETADDRINFO. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0008. ML-EZACIC09. SET EZ9-RES TO EZA-RES. PERFORM EZA-RES-EXTRACT. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0009. SET ADDRESS OF OUTPUT-IP-NAME TO EZ9-NAME. MOVE OUTPUT-IP-NAME (1:EZ9-NAME-LEN) TO EZA-NAME. ML-FREEADDRINFO. PERFORM EZA-FREEADDRINFO. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0010. ML-SOCKET. MOVE EZA-NAME-FAMILY 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 WS-IPPORT TO EZA-NAME-PORT. PERFORM EZA-CONNECT. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0003. ML-SEND. MOVE 'BSTTEZ03' TO BUFFER-OUT. MOVE +8 TO EZA-NBYTE. PERFORM EZA-SEND. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0004. ML-SELECT. * ACCEPT WS-STOP FROM CONSOLE. COMPUTE EZ6-SUB1 = EZA-S + 1. MOVE '1' TO EZ6-FLAG (EZ6-SUB1). PERFORM EZA-CHARACTERS-TO-BITS. COMPUTE EZA-MAXSOC-SELECT = EZA-S + 1. MOVE LOW-VALUES TO EZA-TIMEOUT. MOVE -1 TO EZA-TIMEOUT-SECONDS. MOVE 30 TO EZA-TIMEOUT-SECONDS. MOVE LOW-VALUES TO RSNDMSK. MOVE LOW-VALUES TO WSNDMSK. MOVE LOW-VALUES TO ESNDMSK. MOVE EZ6-MASK TO RSNDMSK (1 : LENGTH OF EZ6-MASK). PERFORM EZA-SELECT. IF EZA-RETCODE IS LESS THAN +1 GO TO AR-0005. MOVE LOW-VALUES TO EZ6-MASK. MOVE LENGTH OF EZ6-MASK TO EZ6-SUB1. IF LENGTH OF ERETMSK IS LESS THAN EZ6-SUB1 MOVE LENGTH OF ERETMSK TO EZ6-SUB1. MOVE RRETMSK TO EZ6-MASK (1 : EZ6-SUB1). PERFORM EZA-BITS-TO-CHARACTERS. * ACCEPT WS-STOP FROM CONSOLE. ML-RECV. PERFORM EZA-RECV. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0006. ML-COUNTER. SUBTRACT +1 FROM WS-LOOPS. IF WS-LOOPS IS GREATER THAN +0 GO TO ML-SEND. ML-CLOSE. PERFORM EZA-CLOSE. IF EZA-RETCODE IS LESS THAN +0 GO TO AR-0007. ML-TERMAPI. PERFORM EZA-TERMAPI. ML-EXIT. GOBACK. * COPY IN ALL THE EZA SECTIONS COPY BSTTEZAP. COPY BSTTEZAR. CONSOLE-TRACE SECTION. * COMMENT OUT THE DISPLAY IF IT IS NOT WANTED CT-START. DISPLAY PROGRAM-NAME ' ' EZA-FUNCTION UPON CONSOLE. 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-0008. MOVE 0008 TO ABEND-CODE. GO TO AR-ABEND. AR-0009. MOVE 0009 TO ABEND-CODE. GO TO AR-ABEND. AR-0010. MOVE 0010 TO ABEND-CODE. GO TO AR-ABEND. AR-ABEND. DISPLAY '*ABEND* ' PROGRAM-INFOMATION UPON CONSOLE. DISPLAY 'PROGRAM ABEND=' ABEND-CODE UPON CONSOLE. DISPLAY 'FUNCTION=' CURRENT-FUNCTION UPON CONSOLE. DISPLAY 'ERROR=' CURRENT-ERROR UPON CONSOLE. MOVE SPACES TO ABEND-SPACE. ADD +1 TO ABEND-NUMBER. AR-EXIT. EXIT.