NETLIB020.A0 NETLIB020.ABACKUP KITINSTAL.COM,NETLIB_INSTALL.COM,NETLIB_USER_INSTALL.COM,MG_KIT:[NETLIB]NETLIB020.RELEASE_NOTES MG_KIT:[NETLIB]NETLIB020.A/SAVE/INTERCHANGE/BLOCK=8192/NOCRC/GROU=0 MADISON  @LʘT6.2 _HQ::  _HQ$DKA500: V6.2 t*[NETLIB]KITINSTAL.COM;122+,./ @ 4Mt-n?0123KPWO56;]y7F]y8dؕ|"9V$ǘG @HJ $! [NETLIB]KITINSTAL.COM$!.$! KITINSTAL procedure for installing NETLIB.$!0$! 31-JAN-1991 V1.0 Madison Initial coding.M$! 05-FEB-1991 V1.0-1 Madison Two parts for integration into other kits.H$! 21-SEP-1994 V1.1 Madison Moved AXP objects to separate save set.$!)$ ON CONTROL_Y THEN GOTO NETLIB_CONTROL_Y"$ ON WARNING THEN GOTO NETLIB_FAIL$!5$ IF P1 .EQS. "VMI$_INSTALL" THEN GOTO NETLIB_INSTALL$ EXIT VMI$_UNSUPPORTED$!$NETLIB_CONTROL_Y:$ VMI$CALLBACK CONTROL_Y$! $NETLIB_FAIL:$ NETLIB_STATUS == $STATUS=$ IF F$TRNLNM ("NETLIB_STUP") .NES. "" THEN CLOSE NETLIB_STUP$ EXIT 'NETLIB_STATUS$!$NETLIB_INSTALL:$!$ IF P2 THEN SET VERIFY$! $ NETLIB_SAY := WRITE SYS$OUTPUT$!#$ IF F$GETSYI("HW_MODEL") .LT. 1024$ THEN$ NETLIB_VAX = 1$ NETLIB_AXP = 0$ NETLIB_REQD_VMSVER = "V5.2""$ NETLIB_REQD_VMSVER_OLD = "052"K$ VMI$CALLBACK CHECK_VMS_VERSION NETLIB_VMSVEROK 'NETLIB_REQD_VMSVER_OLD'$ IF .NOT. NETLIB_VMSVEROK$ THEN$$ VMI$CALLBACK MESSAGE E VMSVER -F "This product requires VMS version ''NETLIB_REQD_VMSVER' to run.'$ EXIT VMI$_FAILURE $ ENDIF$ ELSE$ NETLIB_VAX = 0$ NETLIB_AXP = 1$ ENDIF$!$!C$ VMI$CALLBACK CHECK_NET_UTILIZATION NETLIB_ENOUGHDISK 3000 30 30003$ IF .NOT. NETLIB_ENOUGHDISK THEN EXIT VMI$_FAILURE$!*$ VMI$CALLBACK SET SAFETY CONDITIONAL 5000$!$!$ TYPE SYS$INPUT:5 NETLIB Installation ProcedureF Copyright 1992-1994, MadGoat Software. All Rights Reserved.@ Redistribution for no commercial gain is permitted.$!$!$ VMI$CALLBACK SET PURGE ASK9$ @VMI$KWD:NETLIB_INSTALL 'P1 'P2 'P3 'P4 'P5 'P6 'P7 'P8$ NETLIB_STATUS == $STATUS+$ IF NETLIB_STATUS .EQ. VMI$_SUCCESS THEN - TYPE SYS$INPUTE All NETLIB images have been linked. Remember to edit your system< startup command procedure to add the following commmand:% $ @SYS$STARTUP:NETLIB_STARTUPB The file SYS$STARTUP:NETLIB_STARTUP.COM can be edited to alterE the selection of the default NETLIB transport library, as needed.$!$ EXIT 'NETLIB_STATUS  NETLIB020.A9_n?[NETLIB]NETLIB_INSTALL.COM;52U#Z*[NETLIB]NETLIB_INSTALL.COM;52+,9_.#/ @ 4U#-n?0123KPWO$56x*788N|"9V$ǘG @HJ$! [NETLIB]NETLIB_INSTALL.COM$!.$! KITINSTAL procedure for installing NETLIB.$!0$! 31-JAN-1991 V1.0 Madison Initial coding.M$! 05-FEB-1991 V1.0-1 Madison Two parts for integration into other kits.6$! 26-APR-1991 V1.0-2 Madison Nameserver changes.I$! 20-JUN-1991 V1.0-3 Madison Newer versions of some pkgs supported.L$! 03-DEC-1991 V1.0-4 Madison A bit of rearranging of the startup file.4$! 01-FEB-1992 V1.1 Volz Added TCPware support.2$! 17-FEB-1992 V1.1-1 Madison LINK/NOUSERLIB.+$! 08-OCT-1992 V1.2 Madison Alpha AXP.M$! 19-FEB-1993 V1.2-1 Madison Accommodate TCPware V3.0 filename changes.C$! 22-MAR-1993 V1.2-2 Madison TCPware now runs on AXP systems.L$! 26-MAR-1993 V1.2-3 Madison Eliminate IP0/IPA0 confusion for CMU-Tek.?$! 21-DEC-1993 V1.3 Madison First crack at WINTCP support.B$! 27-DEC-1993 V1.3-1 Madison Second crack at WINTCP support.K$! 27-JAN-1994 V1.3-2 Madison TCP0 device can exist with MultiNet too.H$! 21-SEP-1994 V1.4 Madison Moved AXP objects to separate save set.1$! 04-NOV-1994 V1.5 Madison Update for V2.0.:$! 03-JAN-1995 V1.5-1 Madison Update for OEM kitting.$!)$ ON CONTROL_Y THEN GOTO NETLIB_CONTROL_Y"$ ON WARNING THEN GOTO NETLIB_FAIL$!$ GOTO NETLIB_INSTALL$!$NETLIB_CONTROL_Y:=$ IF F$TRNLNM ("NETLIB_STUP") .NES. "" THEN CLOSE NETLIB_STUP$ VMI$CALLBACK CONTROL_Y$! $NETLIB_FAIL:$ NETLIB_STATUS == $STATUS=$ IF F$TRNLNM ("NETLIB_STUP") .NES. "" THEN CLOSE NETLIB_STUP$ EXIT 'NETLIB_STATUS$!$NETLIB_INSTALL:$!$ IF P2 THEN SET VERIFY$!E$! An "OEM" install is one in which the NETLIB savesets are embeddedG$! in another kit. The NETLIB programming files and documentation are$! not included in an OEM kit.$!L$ NETLIB_OEM_INSTALL = F$TRNLNM("NETLIB_OEM_INSTALL","LNM$PROCESS") .NES. ""$ NETLIB_VAX_SAVESET = "B"$ NETLIB_AXP_SAVESET = "C"$ IF NETLIB_OEM_INSTALL$ THEN3$ NETLIB_TMP = F$TRNLNM("NETLIB_OEM_VAX_SAVESET")?$ IF NETLIB_TMP .NES. "" THEN NETLIB_VAX_SAVESET = NETLIB_TMP3$ NETLIB_TMP = F$TRNLNM("NETLIB_OEM_AXP_SAVESET")?$ IF NETLIB_TMP .NES. "" THEN NETLIB_AXP_SAVESET = NETLIB_TMP$ ENDIF$! $ NETLIB_SAY := WRITE SYS$OUTPUT$ LINK := LINK/NOUSERLIBRARY$ NETLIB_DEBUG = ""G$ IF F$TRNLNM("NETLIB_LINK_DEBUG") .NES. "" THEN NETLIB_DEBUG := /DEBUG$!-$ NETLIB_INSTALL_NODE = F$GETSYI ("NODENAME")$!$!%$! Build the tables for menu choices.$!$ IF NETLIB_VAX$ THEN$ NETLIB_TCP_NAMES = "?" +- ":CMU TCP/IP"+- ":DEC TCP/IP Services"+- ":TGV MultiNet"+- ":PSC TCPware"+- ":TWG PathWay"-$ NETLIB_TCPS = "?:NETLIB_CMU:NETLIB_UCX"+-> ":NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ OPT = ".OPT"$ L32 = ".L32"$ ELSE$ NETLIB_TCP_NAMES = "?" +- ":DEC TCP/IP Services"+- ":TGV MultiNet"+- ":PSC TCPware"+- ":TWG PathWay"N$ NETLIB_TCPS = "?:NETLIB_UCX:NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ NETLIB_CMU = ""$ OPT = ".ALPHA_OPT"$ L32 = ".L32E"$ ENDIF$ NETLIB_I = 0$NETLIB_INIT_LOOP:$ NETLIB_I = NETLIB_I + 13$ NETLIB_TCP = F$ELEMENT (NETLIB_I,":",NETLIB_TCPS)8$ IF NETLIB_TCP .EQS. ":" THEN GOTO NETLIB_END_INIT_LOOP$ 'NETLIB_TCP = " "$ GOTO NETLIB_INIT_LOOP$!@$! Now we make some educated guesses about which TCP/IP's should$! be pre-selected.$!$NETLIB_END_INIT_LOOP:$!$ IF F$GETDVI ("IP0","EXISTS")$ THEN$!-$! Don't confuse with TCPware's IPA0: device$!.$ IF F$GETDVI ("IP0","DEVNAM") .EQS. "_IP0:"$ THEN)$ IF F$TRNLNM ("CMUTEK_ROOT") .NES. "" $ THEN$ NETLIB_CMU = "*" $ ENDIF $ ENDIF$ ENDIF-$ IF F$GETDVI ("UCX$DEVICE","EXISTS") .AND. -5 F$SEARCH ("SYS$SYSTEM:UCX$INETACP.EXE") .NES. ""$ THEN<$ IF F$SEARCH ("SYS$SYSTEM:UCX$INET_ROUTING.EXE") .NES. ""$ THEN$ NETLIB_UCX = "*" $ ENDIF$ ENDIF $ IF F$GETDVI ("INET0","EXISTS")$ THEN6$ IF F$TRNLNM("TCPWARE_SOCKLIB_SHR") .NES. "" .OR. -) F$TRNLNM("TCPIP_SOCKLIB") .NES. ""$ THEN$ NETLIB_TCPWARE = "*"$ ELSEM$ IF F$TRNLNM("TWG$TCP") .NES. "" .AND. F$TRNLNM("MULTINET_ROOT") .EQS. "" $ THEN$ NETLIB_PATHWAY = "*" $ ELSE$ NETLIB_MULTINET = "*" $ ENDIF $ ENDIF$ ENDIF$!$NETLIB_SELECT_MENU:$!$ TYPE SYS$INPUT:/ TCP/IP Support SelectionA Select the NETLIB TCP/IP support you wish to install from theC menu below. An asterisk appears next to the packages that haveB already been selected. You can remove a package from the listA by selecting it again. You may enter more than one selection+ by separating your choices with commas.$ NETLIB_M = 0$NETLIB_SEL_LOOP:$ NETLIB_M = NETLIB_M + 16$ NETLIB_N = F$ELEMENT (NETLIB_M,":",NETLIB_TCP_NAMES)3$ IF NETLIB_N .EQS. ":" THEN GOTO NETLIB_SELECT_ASK1$ NETLIB_T = F$ELEMENT (NETLIB_M,":",NETLIB_TCPS)I$ NETLIB_SAY F$FAO (" !2UL. [!AS] !AS", NETLIB_M, 'NETLIB_T, NETLIB_N)$ GOTO NETLIB_SEL_LOOP$NETLIB_SELECT_ASK:$ NETLIB_SAY ""3$ NETLIB_SAY F$FAO (" !2UL. Exit", NETLIB_M)$ NETLIB_SAY ""$ NETLIB_SAY ""$!*$ VMI$CALLBACK ASK NETLIB_CHOICE_INPUT -& " Your choice" "''NETLIB_M'"$ NETLIB_I = -1$NETLIB_PARSE_LOOP:$ NETLIB_I = NETLIB_I + 1@$ NETLIB_CHOICE = F$ELEMENT (NETLIB_I, ",", NETLIB_CHOICE_INPUT)9$ IF NETLIB_CHOICE .EQS. "," THEN GOTO NETLIB_SELECT_MENU+$ NETLIB_CHOICE = F$INTEGER (NETLIB_CHOICE)9$ IF NETLIB_CHOICE .EQ. NETLIB_M THEN GOTO NETLIB_CONFIRM:$ IF NETLIB_CHOICE .LT. 1 .OR. NETLIB_CHOICE .GT. NETLIB_M$ THEN&$ VMI$CALLBACK MESSAGE E BADCHOICE -L "Choice ''NETLIB_CHOICE' invalid; choices range from 1 to ''NETLIB_M'."$ ELSE:$ NETLIB_T = F$ELEMENT (NETLIB_CHOICE, ":", NETLIB_TCPS)$ IF 'NETLIB_T .EQS. "*"$ THEN$ 'NETLIB_T = " "$ ELSE$ 'NETLIB_T = "*" $ ENDIF$ ENDIF$ GOTO NETLIB_PARSE_LOOP$!$NETLIB_CONFIRM:$ NETLIB_SAY ""B$ NETLIB_SAY " You have selected the following TCP/IP support:"$ NETLIB_SAY ""$ NETLIB_CNT = 0$ NETLIB_M = 0$NETLIB_CONF_LOOP:$ NETLIB_M = NETLIB_M + 16$ NETLIB_N = F$ELEMENT (NETLIB_M,":",NETLIB_TCP_NAMES)1$ IF NETLIB_N .EQS. ":" THEN GOTO NETLIB_CONF_ASK1$ NETLIB_T = F$ELEMENT (NETLIB_M,":",NETLIB_TCPS)$ IF 'NETLIB_T .EQS. "*"$ THEN$ NETLIB_PRI = NETLIB_M"$ NETLIB_SAY " ",NETLIB_N$ NETLIB_CNT = NETLIB_CNT + 1$ ENDIF$ GOTO NETLIB_CONF_LOOP$!$NETLIB_CONF_ASK:7$ IF NETLIB_CNT .EQ. 0 THEN NETLIB_SAY " (None)"$ NETLIB_SAY ""$ NETLIB_SAY ""6$ VMI$CALLBACK ASK NETLIB_OK "Is this correct" "YES" B1$ IF .NOT. NETLIB_OK THEN GOTO NETLIB_SELECT_MENU$!$ IF NETLIB_CNT .EQ. 0$ THEN>$ VMI$CALLBACK MESSAGE I WONTINSTALL "No packages selected."$ EXIT VMI$_SUCCESS$ ENDIF$!/$ IF NETLIB_CNT .EQ. 1 THEN GOTO NETLIB_DIR_ASK$!$NETLIB_PRIMARY_MENU:$!$ TYPE SYS$INPUT:? You have selected support for more than one TCP/IP package.= You must now select which is to be used by default on the   NETLIB020.A9_n?[NETLIB]NETLIB_INSTALL.COM;52U#wcurrent system.$ NETLIB_M = 0$NETLIB_PRI_LOOP:$ NETLIB_M = NETLIB_M + 16$ NETLIB_N = F$ELEMENT (NETLIB_M,":",NETLIB_TCP_NAMES)4$ IF NETLIB_N .EQS. ":" THEN GOTO NETLIB_PRIMARY_ASK1$ NETLIB_T = F$ELEMENT (NETLIB_M,":",NETLIB_TCPS)2$ IF 'NETLIB_T .EQS. " " THEN GOTO NETLIB_PRI_LOOP8$ NETLIB_SAY F$FAO (" !2UL. !AS", NETLIB_M, NETLIB_N)$ GOTO NETLIB_PRI_LOOP$!$NETLIB_PRIMARY_ASK:$!$ NETLIB_SAY ""$ NETLIB_SAY ""3$ VMI$CALLBACK ASK NETLIB_TMP " Your choice"$!%$ NETLIB_PRI = F$INTEGER (NETLIB_TMP)4$ IF NETLIB_PRI .LT. 1 .OR. NETLIB_PRI .GE. NETLIB_M$ THENP$ VMI$CALLBACK MESSAGE W SELRANGE "Selection out of range. Please try again."$ GOTO NETLIB_PRIMARY_MENU$ ENDIF3$ NETLIB_T = F$ELEMENT (NETLIB_PRI,":",NETLIB_TCPS)$ IF 'NETLIB_T .NES. "*"$ THENU$ VMI$CALLBACK MESSAGE W UNAVAIL "That choice is not available. Please try again."$ GOTO NETLIB_PRIMARY_MENU$ ENDIF$!$ NETLIB_SAY ""8$ NETLIB_SAY " Default TCP/IP transport will be: ", -0 F$ELEMENT (NETLIB_PRI,":",NETLIB_TCP_NAMES)$!$NETLIB_DIR_ASK:$!$!$ TYPE SYS$INPUT:2 Choosing the NETLIB Directory@ The NETLIB libraries can be placed in any directory, as long@ as that directory is accessible to all users who plan to use) or develop NETLIB-based applications.&$ NETLIB_DEFANS := SYS$COMMON:[SYSLIB],$ IF F$TRNLNM ("NETLIB_DIR") .NES. "" THEN -+ NETLIB_DEFANS = F$TRNLNM ("NETLIB_DIR")$ VMI$CALLBACK ASK NETLIB_DIR -D "Where should the NETLIB libraries be placed" "''NETLIB_DEFANS'"1$ NETLIB_DIR = F$PARSE (NETLIB_DIR,,,"DEVICE") +-' F$PARSE (NETLIB_DIR,,,"DIRECTORY")2$ IF F$SEARCH ("''NETLIB_DIR'X.X") .EQS. "" THEN -4 VMI$CALLBACK CREATE_DIRECTORY USER 'NETLIB_DIR -3 "/OWNER=[1,4]/PROTECT=(S:RWE,O:RWE,G:RE,W:RE)"$!B$! Skip the support & docs questions if this is an "OEM" install.$!$ IF NETLIB_OEM_INSTALL$ THEN$ NETLIB_DO_PRG = 0$ NETLIB_DO_DOC = 0$ GOTO BEGIN_INSTALLING_FILES$ ENDIF$!$ TYPE SYS$INPUT:9 NETLIB Programming Support and Documentation1 The NETLIB programming support files include:6 - include files for programming in C and BLISS9 - sample C source code client and server programsE Installation of these files is optional, unless you or your usersI intend to develop NETLIB-based applications. If you elect to install= these files, they will be placed in the NETLIB directory.> The documentation set includes a Programmer's Guide and anI Installation Guide, in Bookreader, PostScript, and plain ASCII forms.C If you elect to install the documentation, you will be prompted@ for a directory into which the files will be placed; if that9 directory does not exist, it will be created for you.$!"$ VMI$CALLBACK ASK NETLIB_DO_PRG -E "Would you like to install the NETLIB programming files" "YES" B$!"$ VMI$CALLBACK ASK NETLIB_DO_DOC -A "Would you like to install the NETLIB documentation" "YES" B$!9$ IF .NOT. NETLIB_DO_DOC THEN GOTO BEGIN_INSTALLING_FILES$!$ NETLIB_DEFANS = NETLIB_DIRQ$ VMI$CALLBACK ASK NETLIB_DOC_DIR "Location for documentation" "''NETLIB_DEFANS'"8$ NETLIB_DOC_DIR = F$PARSE(NETLIB_DOC_DIR,,,"DEVICE") +-4 F$PARSE(NETLIB_DOC_DIR,,,"DIRECTORY")5$ IF F$SEARCH("''NETLIB_DOC_DIR'X.X") .EQS. "" THEN -9 VMI$CALLBACK CREATE_DIRECTORY USER 'NETLIB_DOC_DIR -7 "/OWNER=[1,4]/PROTECT=(S:RWE,O:RWE,G:RE,W:RE)"$!$BEGIN_INSTALLING_FILES:$!3$ IF NETLIB_OEM_INSTALL THEN GOTO SKIP_TIME_MESSAGE$ TYPE SYS$INPUT:B All installation questions have been asked. Installation willG continue for the next 5-15 minutes, depending on installation media type and options selected.$!E$ IF NETLIB_VAX THEN VMI$CALLBACK RESTORE_SAVESET 'NETLIB_VAX_SAVESETE$ IF NETLIB_AXP THEN VMI$CALLBACK RESTORE_SAVESET 'NETLIB_AXP_SAVESET$!$SKIP_TIME_MESSAGE:$! #$ CREATE VMI$KWD:NETLIB_STARTUP.COM4$ OPEN/APPEND NETLIB_STUP VMI$KWD:NETLIB_STARTUP.COM $ NETLIB_W = "WRITE NETLIB_STUP".$ NETLIB_W "$! SYS$STARTUP:NETLIB_STARTUP.COM"F$ NETLIB_W "$! Startup command procedure for NETLIB library routines."$ NETLIB_W "$!"@$ NETLIB_W "$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_DIR ''NETLIB_DIR'"$!$ NETLIB_W "$!"@$ NETLIB_W "$ IF F$TRNLNM (""NETLIB_SHRXFR"") .NES. """" THEN -"I$ NETLIB_W " IF F$FILE_ATTR (""NETLIB_SHRXFR:.EXE"",""KNOWN"") THEN -"/$ NETLIB_W " INSTALL REMOVE NETLIB_SHRXFR"=$ NETLIB_W "$ IF F$TRNLNM (""NETLIB_SHR"") .NES. """" THEN -"F$ NETLIB_W " IF F$FILE_ATTR (""NETLIB_SHR:.EXE"",""KNOWN"") THEN -",$ NETLIB_W " INSTALL REMOVE NETLIB_SHR"$ NETLIB_W "$!N$ NETLIB_W "$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_SHRXFR NETLIB_DIR:NETLIB_SHRXFR"1$ NETLIB_W "$ CALL DO_INSTALL NETLIB_SHRXFR:.EXE"$!A$ VMI$CALLBACK MESSAGE I LINKING "Linking image NETLIB_SHRXFR..."$ DEFINE/USER BIN_DIR VMI$KWD:;$ LINK'NETLIB_DEBUG'/SHARE/EXEC=VMI$KWD:NETLIB_SHRXFR.EXE -< VMI$KWD:NETLIB_SHRXFR.OBJ,VMI$KWD:NETLIB_SHRXFR'OPT'/OPT/$ SET PROTECTION=W:RE VMI$KWD:NETLIB_SHRXFR.EXEH$ VMI$CALLBACK PROVIDE_IMAGE NETLIB_IMGOK NETLIB_SHRXFR.EXE 'NETLIB_DIR'$!@$ NETLIB_W "$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_SHR NETLIB_DIR:",-3 F$ELEMENT (NETLIB_PRI,":",NETLIB_TCPS), "_SHR"$!$ NETLIB_I = 0$NETLIB_INST_LOOP:$ NETLIB_I = NETLIB_I + 11$ NETLIB_T = F$ELEMENT (NETLIB_I,":",NETLIB_TCPS)7$ IF NETLIB_T .EQS. ":" THEN GOTO NETLIB_FINISH_INSTALL$ IF 'NETLIB_T .EQS. "*"$ THEN? NETLIB_W "$ CALL DO_INSTALL NETLIB_DIR:''NETLIB_T'_SHR.EXE"E$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''NETLIB_T'_SHR..." $ DEFINE/USER BIN_DIR VMI$KWD:O$ LINK'DEBUG'/SHARE/EXEC=VMI$KWD:'NETLIB_T'_SHR.EXE VMI$KWD:NETLIB'OPT'/OPT,- VMI$KWD:'NETLIB_T'.OLB/LIB2$ SET PROTECTION=W:RE VMI$KWD:'NETLIB_T'_SHR.EXEK$ VMI$CALLBACK PROVIDE_IMAGE NETLIB_IMGOK 'NETLIB_T'_SHR.EXE 'NETLIB_DIR'$ ENDIF$ GOTO NETLIB_INST_LOOP$!$NETLIB_FINISH_INSTALL:$!$ NETLIB_W "$ EXIT"$ NETLIB_W "$!"$$ NETLIB_W "$DO_INSTALL: SUBROUTINE"$ NETLIB_W "$ CMD := CREATE"F$ NETLIB_W "$ IF F$FILE_ATTRIBUTES (P1,""KNOWN"") THEN CMD := REPLACE"2$ NETLIB_W "$ INSTALL 'CMD'/OPEN/SHARE/HEADER 'P1"$ NETLIB_W "$ ENDSUBROUTINE"$ CLOSE NETLIB_STUPU$ VMI$CALLBACK PROVIDE_FILE NETLIB_STUPFILE NETLIB_STARTUP.COM VMI$ROOT:[SYS$STARTUP]$!$!I$ IF NETLIB_DO_PRG .OR. NETLIB_DO_DOC THEN VMI$CALLBACK RESTORE_SAVESET D$ IF NETLIB_DO_PRG$ THENP$ VMI$CALLBACK MESSAGE I INSTALLPRG "Installing NETLIB programming support..."+$ SET PROTECTION=W:RE VMI$KWD:NETLIBDEF.*'$ SET PROTECTION=W:RE VMI$KWD:ECHO*.*?$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIBDEF.H 'NETLIB_DIRA$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIBDEF.R32 'NETLIB_DIRB$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIBDEF'L32' 'NETLIB_DIR@$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK ECHOCLIENT.C 'NETLIB_DIR@$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK ECHOSERVER.C 'NETLIB_DIRK$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK ECHOSERVER_STANDALONE.C 'NETLIB_DIR$ ENDIF$!$!$ IF NETLIB_DO_DOC$ THENJ$ VMI$CALLBACK MESSAGE I INSTALLDOC "Installing NETLIB documentation...",$ SET PROTECTION=W:RE VMI$KWD:NETLIB_DOC.*L$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIB_DOC.DECW$BOOK 'NETLIB_DOC_DIRE$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIB_DOC.PS 'NETLIB_DOC_DIRF$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIB_DOC.TXT 'NETLIB_DOC_DIR-$ SET PROTECTION=W:RE VMI$KWD:NETLIB_INST.*M$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIB_INST.DECW$BOOK 'NETLIB_DOC_DIRF$ VMI$CALLBACK PROVIDE  NETLIB020.A9_n?[NETLIB]NETLIB_INSTALL.COM;52U#_FILE NETLIB_OK NETLIB_INST.PS 'NETLIB_DOC_DIRG$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIB_INST.TXT 'NETLIB_DOC_DIR0$ SET PROTECTION=W:RE VMI$KWD:*.DECW$BOOKSHELFN$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK LIBRARY.DECW$BOOKSHELF 'NETLIB_DOC_DIRM$ VMI$CALLBACK PROVIDE_FILE NETLIB_OK NETLIB.DECW$BOOKSHELF 'NETLIB_DOC_DIR$ ENDIF$!$ IF NETLIB_CMU .EQS. "*"$ THEN0$ IF F$INTEGER (F$GETSYI ("MAXBUF")) .LT. 2300$ THEN$ TYPE SYS$INPUT: -- WARNING --D NETLIB support for CMU TCP/IP requires that the SYSGEN parameter# MAXBUF be set to at least 2300.G$ NETLIB_SAY " MAXBUF is currently set to: ", F$GETSYI ("MAXBUF")$ TYPE SYS$INPUT:F Please remember to change the value of MAXBUF before attempting to3 use a NETLIB-based application over CMU TCP/IP. $ ENDIF$ ENDIF$!$ NETLIB_STATUS == VMI$_SUCCESS$!$ EXIT 'NETLIB_STATUS  NETLIB020.ABn?"[NETLIB]NETLIB_USER_INSTALL.COM;25T"*[NETLIB]NETLIB_USER_INSTALL.COM;25+,B./ @ 4T-n?0123KPWO56T+6p7C+6p8 |"9V$ǘG @HJ"$! [NETLIB]NETLIB_USER_INSTALL.COM$!1$! Procedure for private installation of NETLIB. $! To use:$!0$! $ CREATE/DIRECTORY [some working directory]&$! $ SET DEFAULT [working directory]9$! $ BACKUP NETLIBvvu.A/SAVE [] ! to get common files4$! $ BACKUP NETLIBvvu.B/SAVE [] ! on VAX systems7$! -or- $ BACKUP NETLIBvvu.C/SAVE [] ! on AXP systems$! $ @NETLIB_USER_INSTALL$!0$! 08-FEB-1991 V1.0 Madison Initial coding.4$! 01-FEB-1992 V1.1 Volz Added TCPware support.>$! 19-FEB-1993 V1.2 Madison AXP support, TCPware updates.C$! 22-MAR-1993 V1.2-1 Madison TCPware now runs on AXP systems.L$! 26-MAR-1993 V1.2-2 Madison Eliminate IP0/IPA0 confusion for CMU-Tek.6$! 13-JAN-1994 V1.2-3 Madison Update for WIN/TCP.1$! 21-SEP-1994 V1.3 Madison Update for V1.7.1$! 05-NOV-1994 V1.4 Madison Update for V2.0.$!)$ ON CONTROL_Y THEN GOTO NETLIB_CONTROL_Y"$ ON WARNING THEN GOTO NETLIB_FAIL$! $ NETLIB_SAY := WRITE SYS$OUTPUT$ LINK := LINK/NOUSERLIBRARY#$ IF F$GETSYI("HW_MODEL") .LT. 1024$ THEN$ NETLIB_VAX = 1$ NETLIB_AXP = 0$ ELSE$ NETLIB_VAX = 0$ NETLIB_AXP = 1$ ENDIF$ DEFINE VMI$KWD SYS$DISK:[]$!$ TYPE SYS$INPUT:7 NETLIB User Installation ProcedureF Copyright 1992-1994, MadGoat Software. All Rights Reserved.@ Redistribution for no commercial gain is permitted.$!$ GOTO NETLIB_INSTALL$!$NETLIB_CONTROL_Y:=$ IF F$TRNLNM ("NETLIB_STUP") .NES. "" THEN CLOSE NETLIB_STUP0$ NETLIB_SAY "Installation cancelled by CTRL/Y."$ EXIT 1$! $NETLIB_FAIL:$ NETLIB_STATUS == $STATUS=$ IF F$TRNLNM ("NETLIB_STUP") .NES. "" THEN CLOSE NETLIB_STUP$ EXIT 'NETLIB_STATUS$!$NETLIB_INSTALL:$!-$ NETLIB_INSTALL_NODE = F$GETSYI ("NODENAME")$!%$! Build the tables for menu choices.$!$ IF NETLIB_VAX$ THEN$ NETLIB_TCP_NAMES = "?" +- ":CMU TCP/IP"+- ":DEC TCP/IP Services"+- ":TGV MultiNet"+- ":PSC TCPware"+- ":TWG PathWay"-$ NETLIB_TCPS = "?:NETLIB_CMU:NETLIB_UCX"+-> ":NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ OPT = ".OPT"$ ELSE$ NETLIB_TCP_NAMES = "?" +- ":DEC TCP/IP Services"+- ":TGV MultiNet"+- ":PSC TCPware"+- ":TWG PathWay"N$ NETLIB_TCPS = "?:NETLIB_UCX:NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ NETLIB_CMU = ""$ OPT = ".ALPHA_OPT"$ L32 = ".L32E"$ ENDIF$ NETLIB_I = 0$NETLIB_INIT_LOOP:$ NETLIB_I = NETLIB_I + 13$ NETLIB_TCP = F$ELEMENT (NETLIB_I,":",NETLIB_TCPS)8$ IF NETLIB_TCP .EQS. ":" THEN GOTO NETLIB_END_INIT_LOOP$ 'NETLIB_TCP = " "$ GOTO NETLIB_INIT_LOOP$!@$! Now we make some educated guesses about which TCP/IP's should$! be pre-selected.$!$NETLIB_END_INIT_LOOP:$!$ IF F$GETDVI ("IP0","EXISTS")$ THEN$!-$! Don't confuse with TCPware's IPA0: device$!.$ IF F$GETDVI ("IP0","DEVNAM") .EQS. "_IP0:"$ THEN)$ IF F$TRNLNM ("CMUTEK_ROOT") .NES. "" $ THEN$ NETLIB_CMU = "*" $ ENDIF $ ENDIF$ ENDIF-$ IF F$GETDVI ("UCX$DEVICE","EXISTS") .AND. -5 F$SEARCH ("SYS$SYSTEM:UCX$INETACP.EXE") .NES. ""$ THEN<$ IF F$SEARCH ("SYS$SYSTEM:UCX$INET_ROUTING.EXE") .NES. ""$ THEN$ NETLIB_UCX = "*" $ ENDIF$ ENDIF $ IF F$GETDVI ("INET0","EXISTS")$ THEN6$ IF F$TRNLNM("TCPWARE_SOCKLIB_SHR") .NES. "" .OR. -) F$TRNLNM("TCPIP_SOCKLIB") .NES. ""$ THEN$ NETLIB_TCPWARE = "*"$ ELSEM$ IF F$TRNLNM("TWG$TCP") .NES. "" .AND. F$TRNLNM("MULTINET_ROOT") .EQS. "" $ THEN$ NETLIB_PATHWAY = "*" $ ELSE$ NETLIB_MULTINET = "*" $ ENDIF $ ENDIF$ ENDIF$!$NETLIB_SELECT_MENU:$!$ TYPE SYS$INPUT:/ TCP/IP Support SelectionA Select the NETLIB TCP/IP support you wish to install from theC menu below. An asterisk appears next to the packages that haveB already been selected. You can remove a package from the listA by selecting it again. You may enter more than one selection+ by separating your choices with commas.$ NETLIB_M = 0$NETLIB_SEL_LOOP:$ NETLIB_M = NETLIB_M + 16$ NETLIB_N = F$ELEMENT (NETLIB_M,":",NETLIB_TCP_NAMES)3$ IF NETLIB_N .EQS. ":" THEN GOTO NETLIB_SELECT_ASK1$ NETLIB_T = F$ELEMENT (NETLIB_M,":",NETLIB_TCPS)I$ NETLIB_SAY F$FAO (" !2UL. [!AS] !AS", NETLIB_M, 'NETLIB_T, NETLIB_N)$ GOTO NETLIB_SEL_LOOP$NETLIB_SELECT_ASK:$ NETLIB_SAY ""3$ NETLIB_SAY F$FAO (" !2UL. Exit", NETLIB_M)$ NETLIB_SAY ""$ NETLIB_SAY ""$!'$ CALL NETLIB_ASK NETLIB_CHOICE_INPUT -& " Your choice" "''NETLIB_M'"$ NETLIB_I = -1$NETLIB_PARSE_LOOP:$ NETLIB_I = NETLIB_I + 1@$ NETLIB_CHOICE = F$ELEMENT (NETLIB_I, ",", NETLIB_CHOICE_INPUT)9$ IF NETLIB_CHOICE .EQS. "," THEN GOTO NETLIB_SELECT_MENU+$ NETLIB_CHOICE = F$INTEGER (NETLIB_CHOICE)9$ IF NETLIB_CHOICE .EQ. NETLIB_M THEN GOTO NETLIB_CONFIRM:$ IF NETLIB_CHOICE .LT. 1 .OR. NETLIB_CHOICE .GT. NETLIB_M$ THEN'$ NETLIB_SAY "%NETLIB-E-BADCHOICE, ",L "Choice ''NETLIB_CHOICE' invalid; choices range from 1 to ''NETLIB_M'."$ ELSE:$ NETLIB_T = F$ELEMENT (NETLIB_CHOICE, ":", NETLIB_TCPS)$ IF 'NETLIB_T .EQS. "*"$ THEN$ 'NETLIB_T = " "$ ELSE$ 'NETLIB_T = "*" $ ENDIF$ ENDIF$ GOTO NETLIB_PARSE_LOOP$!$NETLIB_CONFIRM:$ NETLIB_SAY ""B$ NETLIB_SAY " You have selected the following TCP/IP support:"$ NETLIB_SAY ""$ NETLIB_CNT = 0$ NETLIB_M = 0$NETLIB_CONF_LOOP:$ NETLIB_M = NETLIB_M + 16$ NETLIB_N = F$ELEMENT (NETLIB_M,":",NETLIB_TCP_NAMES)1$ IF NETLIB_N .EQS. ":" THEN GOTO NETLIB_CONF_ASK1$ NETLIB_T = F$ELEMENT (NETLIB_M,":",NETLIB_TCPS)$ IF 'NETLIB_T .EQS. "*"$ THEN$ NETLIB_PRI = NETLIB_M"$ NETLIB_SAY " ",NETLIB_N$ NETLIB_CNT = NETLIB_CNT + 1$ ENDIF$ GOTO NETLIB_CONF_LOOP$!$NETLIB_CONF_ASK:7$ IF NETLIB_CNT .EQ. 0 THEN NETLIB_SAY " (None)"$ NETLIB_SAY ""$ NETLIB_SAY ""5$ CALL NETLIB_ASK NETLIB_OK "Is this correct" "YES" B1$ IF .NOT. NETLIB_OK THEN GOTO NETLIB_SELECT_MENU$!$ IF NETLIB_CNT .EQ. 0$ THEN=$ NETLIB_SAY "%NETLIB-I-WONTINSTALL, No packages selected." $ EXIT 1$ ENDIF$!/$ IF NETLIB_CNT .EQ. 1 THEN GOTO NETLIB_DIR_ASK$!$NETLIB_PRIMARY_MENU:$!$ TYPE SYS$INPUT:? You have selected support for more than one TCP/IP package.= You must now select which is to be used by default on the current system.$ NETLIB_M = 0$NETLIB_PRI_LOOP:$ NETLIB_M = NETLIB_M + 16$ NETLIB_N = F$ELEMENT (NETLIB_M,":",NETLIB_TCP_NAMES)4$ IF NETLIB_N .EQS. ":" THEN GOTO NETLIB_PRIMARY_ASK1$ NETLIB_T = F$ELEMENT (NETLIB_M,":",NETLIB_TCPS)2$ IF 'NETLIB_T .EQS. " " THEN GOTO NETLIB_PRI_LOOP8$ NETLIB_SAY F$FAO (" !2UL. !AS", NETLIB_M, NETLIB_N)$ GOTO NETLIB_PRI_LOOP$!$NETLIB_PRIMARY_ASK:$!$ NETLIB_SAY ""$ NETLIB_SAY ""2$ CALL NETLIB_ASK NETLIB_TMP " Your choice"$!%$ NETLIB_PRI = F$INTEGER (NETLIB_TMP)4$ IF NETLIB_PRI .LT. 1 .OR. NETLIB_PRI .GE. NETLIB_M$ THENO$ NETLIB_SAY "%NETLIB-W-SELRANGE, Selection ou  NETLIB020.ABn?"[NETLIB]NETLIB_USER_INSTALL.COM;25TQt of range. Please try again."$ GOTO NETLIB_PRIMARY_MENU$ ENDIF3$ NETLIB_T = F$ELEMENT (NETLIB_PRI,":",NETLIB_TCPS)$ IF 'NETLIB_T .NES. "*"$ THENT$ NETLIB_SAY "%NETLIB-W-UNAVAIL, That choice is not available. Please try again."$ GOTO NETLIB_PRIMARY_MENU$ ENDIF$!$NETLIB_DIR_ASK:$!$ NETLIB_SAY ""8$ NETLIB_SAY " Default TCP/IP transport will be: ", -0 F$ELEMENT (NETLIB_PRI,":",NETLIB_TCP_NAMES)$!$ TYPE SYS$INPUT:! Choosing the NETLIB Directory> The NETLIB libraries may go in either your login directory( or some other directory you specify.$ NETLIB_DEFANS := SYS$LOGIN::$ IF F$TRNLNM ("NETLIB_DIR","LNM$PROCESS") .NES. "" THEN -9 NETLIB_DEFANS = F$TRNLNM ("NETLIB_DIR","LNM$PROCESS")$ CALL NETLIB_ASK NETLIB_DIR -D "Where should the NETLIB libraries be placed" "''NETLIB_DEFANS'"1$ NETLIB_DIR = F$PARSE (NETLIB_DIR,,,"DEVICE") +-' F$PARSE (NETLIB_DIR,,,"DIRECTORY")2$ IF F$SEARCH ("''NETLIB_DIR'X.X") .EQS. "" THEN - CREATE/DIRECTORY 'NETLIB_DIR$!#$ CREATE SYS$LOGIN:NETLIB_LOGIN.COM4$ OPEN/APPEND NETLIB_STUP SYS$LOGIN:NETLIB_LOGIN.COM $ NETLIB_W = "WRITE NETLIB_STUP" $ NETLIB_W "$! NETLIB_LOGIN.COM"D$ NETLIB_W "$! Login command procedure for NETLIB library routines."$ NETLIB_W "$!"4$ NETLIB_W "$ DEFINE/NOLOG NETLIB_DIR ''NETLIB_DIR'"$!$ NETLIB_W "$!"B$ NETLIB_W "$ DEFINE/NOLOG NETLIB_SHRXFR NETLIB_DIR:NETLIB_SHRXFR"$!@$ NETLIB_SAY "%NETLIB-I-LINKING, Linking image NETLIB_SHRXFR..."$ DEFINE/USER BIN_DIR VMI$KWD:($ LINK/SHARE=VMI$KWD:NETLIB_SHRXFR.EXE -< VMI$KWD:NETLIB_SHRXFR.OBJ,VMI$KWD:NETLIB_SHRXFR'OPT'/OPT$!.$ NETLIB_W "$ DEFINE NETLIB_SHR NETLIB_DIR:",-3 F$ELEMENT (NETLIB_PRI,":",NETLIB_TCPS), "_SHR"$!$ NETLIB_I = 0$NETLIB_INST_LOOP:$ NETLIB_I = NETLIB_I + 11$ NETLIB_T = F$ELEMENT (NETLIB_I,":",NETLIB_TCPS)7$ IF NETLIB_T .EQS. ":" THEN GOTO NETLIB_FINISH_INSTALL$ IF 'NETLIB_T .EQS. "*"$ THEND$ NETLIB_SAY "%NETLIB-I-LINKING, Linking image ''NETLIB_T'_SHR..." $ DEFINE/USER BIN_DIR VMI$KWD:C$ LINK/SHARE=VMI$KWD:'NETLIB_T'_SHR.EXE VMI$KWD:NETLIB'OPT'/OPT,- VMI$KWD:'NETLIB_T'.OLB/LIB$ ENDIF$ GOTO NETLIB_INST_LOOP$!$NETLIB_FINISH_INSTALL:$!$ CLOSE NETLIB_STUP$ TYPE SYS$INPUT:E The file SYS$LOGIN:NETLIB_LOGIN.COM includes commands that shouldE be added to your login command procedure to set up NETLIB logical names.! NETLIB installation complete.$!$ @SYS$LOGIN:NETLIB_LOGIN$ EXIT 1$!$NETLIB_ASK: SUBROUTINE$ PROMPT = "* " + P21$ IF "''P4'" .EQS. "B" THEN PROMPT = PROMPT + "?"7$ IF "''P3'" .NES. "" THEN PROMPT = PROMPT + " [''P3']"$ PROMPT = PROMPT + ": "$ASK1: $ ANSWER = "",$ READ SYS$COMMAND/PROMPT="''PROMPT'" ANSWER*$ IF ANSWER .EQS. "" THEN ANSWER = "''P3'"$ IF ANSWER .EQS. ""$ THEN;$ NETLIB_SAY "%NETLIB-I-ANSREQD, A response is required." $ GOTO ASK1$ ENDIF#$ ANSWER = F$EDIT (ANSWER,"UPCASE")$ IF "''P4'" .EQS. "B"$ THEN#$ ANSWER = F$EXTRACT (0,1,ANSWER).$ IF ANSWER .NES. "Y" .AND. ANSWER .NES. "N"$ THEN;$ NETLIB_SAY "%NETLIB-I-ANSYN, please answer YES or NO."$ GOTO ASK1 $ ENDIF$ ENDIF$ 'P1 == ANSWER$ ENDSUBROUTINE  NETLIB020.ArA "[NETLIB]NETLIB020.RELEASE_NOTES;10L?"*[NETLIB]NETLIB020.RELEASE_NOTES;10+,r./ @ 4L?-A 0123KPWO563ʘ7ʘ8e,89G @HJ  NETLIB Release Notes February, 1995= This file contains the release notes for the NETLIB@ TCP/IP interface library. It describes any last-minute? features, restrictions, changes, or additions made to NETLIB.A Revision/Update Information: This is a revised manual.> Operating System and Version: VAX/VMS V5.2 or later;A OpenVMS AXP V1.0 or later4 Software Version: NETLIB V2.0C Matthew Madison MadGoat Software  " ________________________ 28 February 1995< DISCLAIMER: The author, the author's employer, and@ MadGoat Software make no representations or warranties> with respect to the contents hereof and specifically? disclaim any implied warranties of merchantability or- fitness for any particular purpose.@ AXP, DEC, ULTRIX, VAX, VMS, and OpenVMS are trademarks+ of Digital Equipment Corporation.? UNIX is a trademark of Unix System Laboratories, Inc.. MultiNet is a trademark of TGV, Inc.4 TCPware is a trademark of Process Software Corporation.> PathWay is a trademark of The Wollongong Group, Inc. __________< Copyright 1994, 1995 MadGoat Software. All Rights Reserved.  A _______________________________________________________ ContentsA _______________________________________________________A CHAPTER 1 UPDATES IN V2.0C 1-1A _______________________________________________________A CHAPTER 2 NEW FEATURES 2-1A _________________________________________________A 2.1 MAJOR CHANGES 2-1A _________________________________________________3 2.2 SUPPORT DISCONTINUED FOR SOMEA TCP/IP PACKAGES 2-2A _________________________________________________8 2.3 SUPPORT DISCONTINUED FOR VMS V5.0,A V5.1 2-2A _______________________________________________________A CHAPTER 3 KNOWN BUGS, RESTRICTIONS 3-1A iii  A _______________________________________________________ 1 Updates in V2.0C> V2.0C is a maintenance update to V2.0 which includes the following changes:< 1 The TCP_DISCONNECT V1-compatibility routine now; ignores SS$_LINKDISCON errors coming back from= NETLIB_SHUTDOWN. The original V1 routine ignored? the status in the IOSB, which, for CMU TCP/IP, can< be an error status when the connection has beenA closed by the remote side. This fixes the LINKDISCON? error problems during transfers using MGFTP on CMU TCP/IP.= 2 For NETLIB_CONNECT calls on UDP sockets with CMU. TCP/IP, the connect is now faked.@ 3 Fixed missing argument on a couple of $DCLAST calls+ in the CMU and UCX interfaces.= The following changes from V2.0B are also included:< 1 NETLIB_CONNECT_BY_NAME logic for async connects wasn't quite right.< 2 Fixed NETLIB_WRITE in UCX interface to treat 0-% length writes specially.? 3 Fixed NETLIB_READLINE to correctly handle the case@ where a carriage return is not immediately followed by a linefeed.= The following changes from V2.0A are also included:: 1 NETLIB_READLINE has been changed to read data= in chunks no larger than 1,024 bytes, to prevent> EXQUOTA and INSFMEM errors when using CMU TCP/IP.A 1-1   Updates in V2.0C? 2 Some typos in $QIO calls in the UCX interface have been fixed.; 3 Some typos in $CANTIM calls in the UCX and CMU( interfaces have been fixed.< 4 Some V1-compatibility problems have been fixed.: 5 A NETLIB_READLINE parsing bug has been fixed.@ 6 The MUTEX-wait (running out of TQEs) problem in the* CMU interface has been fixed. 1-2  A _______________________________________________________ 2 New Features; This c hapter describes the features new to NETLIB V2.0.L __________________________________________________________________ 2.1 Major Changes= NETLIB V2.0 is a complete rewrite, from scratch, of the entire library. New Implementation? It has been rewritten in C, and now includes a fully-> documented programming interface. The V1 programming? interface continues to be supported for compatibility: with older NETLIB-based applications, but is not9 documented. All new applications should use the" documented V2 interface.# New Programming Interface< The new programming interface for V2.0 is oriented< toward socket-style programming. All routines that@ perform network I/O can be called either synchronously9 or asynchronously, with asynchronous completion; signaled by delivery of an AST. Specifying a non-: zero AST address on a NETLIB call indicates that- asynchronous completion is desired.$ Support for Forked Servers9 Since all TCP/IP packages now include a "master< server" process that can fork off server processes< on a per-port basis, NETLIB now includes a NETLIB_@ SERVER_SETUP routine for use when writing servers that; should be invoked from a package's master server.A 2-1   New Features Documentation< The installation kit now includes documentation in> PostScript, plain ASCII, and BookReader formats. All: files are installed in the NETLIB_DIR directory.L __________________________________________________________________7 2.2 Support Discontinued for Some TCP/IP Packages= With the V2.0 release, support has been dropped for; CMU-Tek TCP/IP V6.4 and DEC VM  NETLIB020.ArA "[NETLIB]NETLIB020.RELEASE_NOTES;10L?ϔS/ULTRIX Connection? (UCX) V1.x. Users of these packages should upgrade to more recent releases.L __________________________________________________________________1 2.3 Support Discontinued for VMS V5.0, V5.1: NETLIB V2.0 requires VAX/VMS V5.2 or later. This; change was necessary because some NETLIB routines; supporting DEC TCP/IP Services call routines that@ were not added to the VAX C Run-Time Library until VMS V5.2. 2-2  A _______________________________________________________" 3 Known Bugs, Restrictions? There are no known bugs in NETLIB. Known restrictions< are documented in the programmer's guide, with the following exception:; o You may only have one call to NETLIB_WRITELINE= outstanding at a time, in order to ensure proper@ ordering of outgoing data with all TCP/IP packages.A 3-1