(6 HGFTP031.B  HGFTP031.BVBACKUP/INTERCHANGE/BLOCK=8192 HG_KIT:[HGFTP.NETLIB]*.*;* HG_KIT:[HGFTP]HGFTP031.B/SAVE GOATHUNTER 90V7.2 _CAESAR:: _$1$DKA100: V7.2  '*[HGFTP.NETLIB]NETLIB023.RELEASE_NOTES;3+,Uj.$/ 4L$?-Gj0123KPWO56loHؐ7o/89GHJ  NETLIB Release Notes February, 2002= 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.5 or later;= OpenVMS Alpha V6.2 or- later4 Software Version: NETLIB V2.3D Matthew Madison MadGoat Software  " ________________________ 04 February 2002< 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 and TCPware are registered trademarks of' Process Software Corporation.? PathWay is a registered trademark of Attachmate, Inc. __________@ Copyright 2002 MadGoat Software. All Rights Reserved.  A _______________________________________________________ ContentsA _______________________________________________________A CHAPTER 1 UPDATE HISTORY 1-1A _________________________________________________A 1.1 UPDATES IN NETLIB V2.3D 1-1A _________________________________________________A 1.2 UPDATES IN V2.3C 1-1A _________________________________________________A 1.3 UPDATES IN V2.3B 1-2A _________________________________________________A 1.4 UPDATES IN V2.3A 1-2A _________________________________________________A 1.5 UPDATES IN V2.2G 1-2A _________________________________________________A 1.6 UPDATES IN V2.2F 1-3A _________________________________________________A 1.7 UPDATES IN V2.2E 1-3A _________________________________________________A 1.8 UPDATES IN V2.2D 1-3A _________________________________________________A 1.9 UPDATES IN V2.2C 1-3A _________________________________________________A 1.10 UPDATES IN V2.2B 1-4A _________________________________________________A 1.11 UPDATES IN V2.2A 1-4A iii   ContentsA _________________________________________________A 1.12 UPDATES IN V2.2 1-4A _________________________________________________A 1.13 UPDATES IN V2.1B 1-5A _________________________________________________A 1.14 UPDATES IN V2.1A 1-5A _________________________________________________A 1.15 UPDATES IN V2.1 1-6A _______________________________________________________A CHAPTER 2 KNOWN BUGS, RESTRICTIONS 2-1 iv  A _______________________________________________________ 1 Update History; This chapter describes the NETLIB update history.L __________________________________________________________________! 1.1 Updates in NETLIB V2.3D= NETLIB V2.3D is a maintenance release that includes the following fixes:: o The fix to NETLIB_STRTOADDR provided in V2.3C7 introduced another problem, which has been corrected.: o The retry count for DNS queries was not being3 initialized on a per-nameserver basis.L __________________________________________________________________ 1.2 Updates in V2.3C; V2.3C was a maintenance release that included the following fixes:: o NETLIB_STRTOADDR would successfully translateA strings containing a dotted-decimal address followed9 by extra characters; these are now rejected.A o A new logical name, NETLIB_DNS_QUERY_TIMEOUT, is now? supported for specifying the length of time NETLIB> will wait for a DNS query to time out. This is to? work around timeout problems that can occur when a> system's designated DNS servers are not local and< respond too slowly for the default timeout. The= logical name may be defined in the process, job,A group, or system logical name table, and should have@ a translation string that is a valid VMS delta time> (e.g., "0 00:00:15"). In addition the default DNSA 1-1   Update HistoryA query timeout has been raised to 10 seconds from its5 original 5 seconds in previous versions.L __________________________________________________________________ 1.3 Updates in V2.3B= V2.3B fixed the returned-length argument to NETLIB_: READLINE so that it returns the actual number of? characters copied to the returned string, rather than= the length of the line read from the TCP connection: (which could be greater than the number of bytes; copied if the descriptor for the string is fixed- length).L __________________________________________________________________ 1.4 Updates in V2.3A> V2.3A changed the installation procedure for NETLIB,? installing executable images, rather than linking the& images at installation time.? In addition, V2.3A contained changes to the DNS_QUERY> and DNS_MXLOOK routines to improve their handling of DNS error reply codes.L ____________________p L HGFTP031.BUjGj'[HGFTP.NETLIB]NETLIB023.RELEASE_NOTES;3L?$ ______________________________________________ 1.5 Updates in V2.2G: V2.2G is a maintenance release that includes the following fixes:? o Added more armor-plating in routines that could be= executed at both AST and non-AST level and touch$ shared data structures.? o Updated NETLIB_SRI.C to prevent conflicts with new% VMS IO$_XXX definitions.@ o Fixed the Bookreader library definition so that the6 appropriate text shows up in its display. 1-2  A Update HistoryL __________________________________________________________________ 1.6 Updates in V2.2F? V2.2F is a maintenance release which adds support for? Digital TCP/IP Services for OpenVMS V5.0 and includes the following fixes:= o NETLIB_DNS_EXPANDNAME has been fixed to properly$ expand the root domain.< o NETLIB_DNS_MXLOOK has been changed to ignore MX3 records that point to the root domain.; o The NETLIB_USER_INSTALL.COM procedure has been? updated to include the correct linker option files: when linking NETLIB images, so that the image@ identification and global section match information are correct.L __________________________________________________________________ 1.7 Updates in V2.2E; NETLIB V2.3D is a maintenance release which fixes; a problem with the NETLIB_ADDRESS_TO_NAME call on TCPware systems.L __________________________________________________________________ 1.8 Updates in V2.2D> NETLIB V2.2D was a maintenance release which fixes a> problem in the interpretation of DNS return codes in+ the NETLIB_DNS_MX_LOOKUP routine.L __________________________________________________________________ 1.9 Updates in V2.2C? NETLIB V2.2C was a maintenance release which included; a fix for an access violation that would occur in> the implementation of NETLIB_NAME_TO_ADDRESS for CMU TCP/IP.A 1-3   Update HistoryL __________________________________________________________________ 1.10 Updates in V2.2B> o The TCP/IP package check has been refined to deal; with the presence of an INET0 device in recent? versions of Digital's TCP/IP Services for OpenVMS.> o The installation procedure now performs a version> check and asks for confirmation before installing? an upgrade or downgrade to the currently installed version.< o On systems running PathWay, NETLIB_GET_HOSTNAME@ will now automatically attach the domain name (from@ the INET_DOMAIN_NAME logical name) to the host name? (from the gethostname() socket library call) if it, does not already contain a dot.L __________________________________________________________________ 1.11 Updates in V2.2A5 NETLIB V2.2A included the following change:< o NETLIB_ADDRESS_TO_NAME has been changed to work> around a bug in TCPware's UCX $QIO interface. The@ bug caused all address-to-name lookups to fail with! an ENDOFFILE status.L __________________________________________________________________ 1.12 Updates in V2.26 The following changes were included in V2.2:> o A new flag, NETLIB_M_FLUSH, has been added to theA NETLIB_READLINE routine, to provide a way of getting; at any data that may have been buffered by theA NETLIB_READLINE routine. Use this flag when you want? to use both NETLIB_READLINE and NETLIB_READ on theA same TCP input stream. For more information, see theA description of NETLIB_READLINE in the documentation. 1-4  A Update History> o A new routine, NETLIB_VERSION, has been added, to? allow for dynamic retrieval of the current version8 of NETLIB you have installed on the system.= o The "relaxed" form of NETLIB_READLINE (using the@ NETLIB_M_ALLOW_LF flag) has been further relaxed to@ better handle lines terminated with bare linefeeds.L __________________________________________________________________ 1.13 Updates in V2.1B5 The following change was included in V2.1B:8 o A bug in the processing of status codes was; inadvertently introduced in the V2.1A changes,; affecting UCX systems only, that would lead to8 incorrect status reports and potentially to" application failures.L __________________________________________________________________ 1.14 Updates in V2.1A7 The following changes were included in V2.1A:: o NETLIB's DNS resolver code would not properly< initialize on systems running PathWay. This has been fixed.< o Some potential race conditions were eliminated.> o If NETLIB_CLOSE was called on a socket that had a= pending timed I/O, the completion I/O status was? mistakenly reported as SS$_TIMEOUT instead of SS$_> CANCEL. Only genuine timeouts are now reported as SS$_TIMEOUT.A 1-5   Update HistoryL __________________________________________________________________ 1.15 Updates in V2.19 NETLIB V2.1 included the following changes from previous releases:? o The TCPware library now uses UCX emulation instead= of SRI emulation. If you developed a server withA NETLIB that is started by TCPware's "master" server,= you should use NETCU to change the protocol type6 from STREAM or DGRAM to BG_TCP or BG_UDP.? o The NETLIB_STARTUP.COM procedure has been enhanced= to automatically install all available NETLIB_*_< SHR images, and to automatically define NETLIB_> SHR at startup time based on which TCP/IP package7 is running. The startup procedure now also8 automatically adds the NETLIB documentation? directory to the DECwindows Bookreader search list logical name.A o There was a bug in the V2.0 DNS resolver code in the? creation of the list of domains used for searching; the DNS, causing it to pad expanded names with( nulls. This has been fixed. 1-6  A _______________________________________________________" 2 Known Bugs, Restrictions? There are no known bugs in NETLIB. Known restrictions3 are documented in the programmer's guide.A x HGFTP031.BUjGj'[HGFTP.NETLIB]NETLIB023.RELEASE_NOTES;3L?$  2-1**[HGFTP.NETLIB]NETLIB_GET_VERSION.AXP_EXE;1+,Zj./ 4-Gj0123 KPWO56py[7/89GHJ h(\Z0@p$H\ZNETLIB_GET_VERSIONV1.0A11-14$ $ $J$( 4 LIBRTL_0014& LIBOTS_001@]|ESYS$PUBLIC_VECTORS_0010  0P0( 0`$ NETLIB V2.1 or earlierNETLIB_OLD_V_TAGNETLIB_OLD_VERSIONNETLIB_SHRXFR NETLIB_VERSION#~`^ h^Cp~xG$G@c X~{#\D@}CC[TG@Zk0"3H8B0D C5v JP1v JuFX}G4GCZk#HX}0D`CX\=8K0CXCB BTG(b0FBR_ZkX=`C1?H @2vH2F\XCTG¦ B(b"B@_ZkG`]h]p}x4G#k#G~{#^ /cGh`;C/#@@cG] 0#k#tG^ [~G/({"aZkG] #kTXh0P  @LIBRTL@LIBOTS@SYS$PUBLIC_VECTORS8NETLIB_GET_VERSIONBLISS-32E V1.8-02838869pNETLIB_GET_VERSION'"'$'!'!JMMOROJRSQ[_a , HP P0GET_VERSION_ROUTINEPkkx `FIND_IMAGE_SYMBOL <+*[HGFTP.NETLIB]NETLIB_GET_VERSION.IA64_EXE;1+,^j./ 4-Gj0123 KPWO56)QxԢ7:/89GHJ ELF 2pHH8@``  `?#0pH@@!3B`f! 0B L !@H, P,#@b(" fHPX!&p (@@XVC`A!3B #`X@,aP,`Y `!X!2, `X `P! B@ A&0 `8`CXW?#@3B`b P$#(YQVP)YiP-XP! @ !#p c@C!`;Hf ȑ!`@p #Ё!HXYP,P`C!CHGfa!3B x   w?# # ~XqV!HY@,P@$ Uf `?# 0Bb 00B0La  0#  P, H$B`HX@(,HP , Ua % 0b $,Y`,PJ! ,@ x`&A<0(`` x&A<0(`` x&A<0(`` x &A<0(``NETLIB V2.1 or earlierNETLIB_OLD_V_TAG NETLIB_OLD_VERSION8NETLIB_SHRXFR TNETLIB_VERSIONlHP`P Aaj0": $,C= HGFTP031.B^jGj+[HGFTP.NETLIB]NETLIB_GET_VERSION.IA64_EXE;10$$d$$0X`o"5`oԢM`K` /`H1`3`=`?`A` `%`#`I``%`#`I``` E`@LIBRTLLIBOTSH p8pC( p  ppHoXXmlhmTPm84m m@odo0fIPF/VMSNETLIB_GET_VERSIONjIPF/VMSNETLIB_GET_VERSIONgIPF/VMSV1.0eIPF/VMSoԢhIPF/VMSLinker I01-57.shstrtab.strtab.note.dynstr! **[HGFTP.NETLIB]NETLIB_GET_VERSION.VAX_EXE;1+,bj./ 4-Gj0123 KPWO56b@y[7/89GHJ 0DX0205(ZhNETLIB_GET_VERSIONV1.0&Z05-05  ?! LIBRTL_001NETLIB V2.1 or earlierNETLIB_OLD_V_TAG NETLIB_OLD_VERSION8NETLIB_SHRXFR TNETLIB_VERSIONl@W^Џ@HL^fPVVLPVVH(HLVHV LHHgV LHHgPmݬ~^}~}~ݬ@@XdP  @LIBRTLNETLIB_GET_VERSIONNETLIB_GET_VERSION  &+!GET_VERSION_ROUTINE  j *FIND_IMAGE_SYMBOL  $PLIT$$CODE$#*[HGFTP.NETLIB]NETLIB_INSTALL.COM;84+,ej.$/ 4v$",-Gj0123KPWO#56HhSxԢ7 /89GHJ$! [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$!~ HGFTP031.BejGj#[HGFTP.NETLIB]NETLIB_INSTALL.COM;84v$ 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.7$! 08-JAN-1996 V1.5-2 Madison Fix for OEM kitting.@$! 17-FEB-1997 V1.6 Madison Set NETLIB_SHR at startup time.C$! 27-NOV-1997 V1.7 Madison Version info in separate OPT file.@$! 08-APR-1998 V1.7-1 Madison UCX can have an INET0 device.:$! 22-DEC-1998 V1.8 Madison Add support for UCX V5.0.2$! 26-DEC-2000 V2.0 Madison Remove link step.$!)$ 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 $ NETLIB_SAY := WRITE SYS$OUTPUT$!<$ OPEN/READ NETLIB_TMP VMI$KWD:NETLIB_INSTALLING_VERSION.DAT $ READ NETLIB_TMP NETLIB_VERSION$ CLOSE NETLIB_TMP$!$ NETLIB_SAY ""C$ VMI$CALLBACK MESSAGE I INSTALVERS "Installing ''NETLIB_VERSION'."$!&$ NETLIB_VERSION_FULL = NETLIB_VERSIONN$ NETLIB_VERSION = F$EDIT (NETLIB_VERSION - "NETLIB ", "TRIM,UPCASE,COMPRESS")1$ NETLIB_V_TAG = F$EXTRACT (0, 1, NETLIB_VERSION)4$ NETLIB_VERSION = F$EXTRACT (1, -1, NETLIB_VERSION)$!d$ IF F$TRNLNM ("NETLIB_SHRXFR") .NES. "" .AND. F$SEARCH (F$PARSE ("NETLIB_SHRXFR", ".EXE")) .NES. ""$ THEN-$ IF NETLIB_VAX THEN netlib_tmp = "VAX_EXE"-$ IF NETLIB_AXP THEN netlib_tmp = "AXP_EXE"/$ IF NETLIB_IA64 THEN netlib_tmp = "IA64_EXE" $ SET NOON$ DEFINE/USER SYS$OUTPUT _NL:$ DEFINE/USER SYS$ERROR _NL:/$ RUN VMI$KWD:NETLIB_GET_VERSION.'netlib_tmp' $ SET ON$ ENDIF$!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. ""C$ NETLIB_OEM_PRODUCT = F$TRNLNM("NETLIB_OEM_PRODUCT","LNM$PROCESS")I$ IF NETLIB_OEM_PRODUCT .EQS. "" THEN NETLIB_OEM_PRODUCT = "this product"$ NETLIB_REQD_VERSION = ""$ IF NETLIB_OEM_INSTALL THENO NETLIB_REQD_VERSION = F$TRNLNM("NETLIB_OEM_REQUIRED_VERSION","LNM$PROCESS")$!%$ IF "''NETLIB_OLD_VERSION'" .NES. ""$ THEN$ netlib_tmp = "YES"5$ IF NETLIB_VERSION .LTS. NETLIB_OLD_VERSION .OR. -a (NETLIB_VERSION .EQS. NETLIB_OLD_VERSION .AND. NETLIB_V_TAG .LES. NETLIB_OLD_V_TAG) THEN - netlib_tmp = "NO"$ NETLIB_SAY ""h$ NETLIB_SAY " NETLIB ", NETLIB_OLD_V_TAG, NETLIB_OLD_VERSION, " has been detected on your system."v$ IF NETLIB_OEM_INSTALL .AND. NETLIB_REQD_VERSION .NES. "" .AND. NETLIB_OLD_VERSION .LTS. NETLIB_REQD_VERSION THEN -m NETLIB_SAY " Installation of ''NETLIB_OEM_PRODUCT' requires NETLIB V''NETLIB_REQD_VERSION' or later."$ NETLIB_SAY ""`$ VMI$CALLBACK ASK NETLIB_OK "Do you want to install ''NETLIB_VERSION_FULL'" "''netlib_tmp'" BZ$ IF .NOT. NETLIB_OK .AND. NETLIB_OEM_INSTALL .AND. NETLIB_REQD_VERSION .NES. "" .AND. -5 NETLIB_OLD_VERSION .LTS. NETLIB_REQD_VERSION$ THEN$ NETLIB_SAY ""m$ NETLIB_SAY " Installation of ''NETLIB_OEM_PRODUCT' requires NETLIB V''NETLIB_REQD_VERSION' or later."V$ NETLIB_SAY " Skipping the NETLIB upgrade will cause the installation to fail."$ NETLIB_SAY ""H$ VMI$CALLBACK ASK NETLIB_OK "Install ''NETLIB_VERSION_FULL'" "YES" B.$ IF .NOT. NETLIB_OK THEN EXIT VMI$_FAILURE $ ENDIF$ IF .NOT. NETLIB_OK$ THENZ$ VMI$CALLBACK MESSAGE I SKIPINSTALL "Skipping installation of ''NETLIB_VERSION_FULL'."$ EXIT VMI$_SUCCESS $ ENDIF$ ENDIF$!$ NETLIB_VAX_SAVESET = "B"$ NETLIB_AXP_SAVESET = "C"$ NETLIB_IA64_SAVESET = "D"$ 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_TMP4$ NETLIB_TMP = F$TRNLNM("NETLIB_OEM_IA64_SAVESET")@$ IF NETLIB_TMP .NES. "" THEN NETLIB_IA64_SAVESET = NETLIB_TMP$ ENDIF$!-$ NETLIB_INSTALL_NODE = F$GETSYI ("NODENAME")$!$!%$! Build the tables for menu choices.$!$ IF NETLIB_VAX$ THEN$ NETLIB_TCP_NAMES = "?" +- ":CMU TCP/IP"+-! ":Digital TCP/IP Services"+- ":Process MultiNet"+- ":Process TCPware"+- ":Attachmate PathWay"-$ NETLIB_TCPS = "?:NETLIB_CMU:NETLIB_UCX"+-> ":NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ L32 = ".L32"$ ELSE$ NETLIB_TCP_NAMES = "?" +-! ":Digital TCP/IP Services"+- ":Process MultiNet"+- ":Process TCPware"+- ":Attachmate PathWay"N$ NETLIB_TCPS = "?:NETLIB_UCX:NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ NETLIB_CMU = ""$ 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$ ENDIFW$ IF (F$GETDVI ("UCX$DEVICE","EXISTS") .OR. F$GETDVI ("TCPIP$DEVICE","EXISTS")) .AND. -0 F$TRNLNM ("MULTINET_ROOT") .EQS. "" .AND. -* F$TRNLNM ("TWG$TCP") .EQS. "" .AND. -* F$TRNLNM ("TCPWARE") .EQS. "" .AND. -o (F$SEARCH ("SYS$SYSTEM:UCX$INETACP.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$INETACP.EXE") .NES. "")$ THENs$ IF F$SEARCH ("SYS$SYSTEM:UCX$INET_ROUTING.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$ROUTED.EXE") .NES. ""$ THEN$ NETLIB_UCX = "*" $ ENDIF$ ENDIF;$ IF NETLIB_UCX .NES. "*" .AND. 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_CHO}Zu HGFTP031.BejGj#[HGFTP.NETLIB]NETLIB_INSTALL.COM;84v$<ICE = 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_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$!$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$PARSE ("''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_SAVESETG$ IF NETLIB_IA64 THEN VMI$CALLBACK RESTORE_SAVESET 'NETLIB_IA64_SAVESET$!$SKIP_TIME_MESSAGE:$! /$ SET PROTECTION=W:RE VMI$KWD:NETLIB_SHRXFR.EXEH$ VMI$CALLBACK PROVIDE_IMAGE NETLIB_IMGOK NETLIB_SHRXFR.EXE 'NETLIB_DIR'$!$ 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. "*"$ THEN2$ 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:$!#$ CREATE VMI$KWD:NETLIB_STARTUP.COM4$ OPEN/APPEND NETLIB_STUP VMI$KWD:NETLIB_STARTUP.COM($ WRITE NETLIB_STUP "$ V = 'F$VERIFY(0)"7$ WRITE NETLIB_STUP "$! SYS$STARTUP:NETLIB_STARTUP.COM"O$ WRITE NETLIB_STUP "$! Startup command procedure for NETLIB library routines."$ WRITE NETLIB_STUP "$!""$ WRITE NETLIB_STUP "$ SET := SET";$ WRITE NETLIB_STUP "$ SET SYMBOL/SCOPE=(NOLOCAL,NOGLOBAL)"I$ WRITE NETLIB_STUP "$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_DIR ''NETLIB_DIR'"$ IF NETLIB_DO_DOC $ THENS$ WRITE NETLIB_STUP "$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_DOC_DIR ''NETLIB_DOC_DIR'"$ ELSEL$ netlib_tmp = F$TRNLNM ("NETLIB_DOC_DIR", "LNM$SYSTEM", "EXECUTIVE_MODE")E$ IF netlib_tmp .NES. "" .AND. F$PARSE (netlib_tmp) .NES. "" THEN -P WRITE NETLIB_STUP "$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_DOC_DIR ''netlib_tmp'"$ ENDIF$ CLOSE NETLIB_STUPG$ APPEND VMI$KWD:NETLIB_STARTUP_TEMPLATE.COM VMI$KWD:NETLIB_STARTUP.COMU$ 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_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$ D# HGFTP031.BejGj#[HGFTP.NETLIB]NETLIB_INSTALL.COM;84v$! IF F$INTEGER (F$GETSYI ("MAXBUF")) .LT. 2300$ THEN$ TYPE SYS$INPUT: -- WARNING --ND NETLIB support for CMU TCP/IP requires that the SYSGEN parameter# MAXBUF be set to at least 2300.eG$ NETLIB_SAY " MAXBUF is currently set to: ", F$GETSYI ("MAXBUF")N$ TYPE SYS$INPUT:F Please remember to change the value of MAXBUF before attempting to3 use a NETLIB-based application over CMU TCP/IP.1 $ ENDIF1$ ENDIF $ NETLIB_INSTALLED == "YES"7$!$ NETLIB_STATUS == VMI$_SUCCESSS$!$ EXIT 'NETLIB_STATUS2adison 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$!-*[HGFTP.NETLIB]NETLIB_INSTALLING_VERSION.DAT;3+,ij ./ 4 -Gj0123KPWO56qFؐ7Xv/89GHJ NETLIB V2.3D)*[HGFTP.NETLIB]NETLIB_LOGIN_TEMPLATE.COM;2+,kj ./ 4s>-Gj0123KPWO56o[çe7/89GHJ$!5$ DEFINE/NOLOG NETLIB_SHRXFR NETLIB_DIR:NETLIB_SHRXFR$ GOSUB Set_NETLIB_SHR$ EXIT 1+0*F$VERIFY(V)$Set_NETLIB_SHR:$ package = ""$ 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$ package = "CMU" $ ENDIF $ ENDIF$ ENDIFn$ IF package .EQS. "" .AND. (F$GETDVI ("UCX$DEVICE","EXISTS") .OR. F$GETDVI ("TCPIP$DEVICE","EXISTS")) .AND. -0 F$TRNLNM ("MULTINET_ROOT") .EQS. "" .AND. -* F$TRNLNM ("TWG$TCP") .EQS. "" .AND. -* F$TRNLNM ("TCPWARE") .EQS. "" .AND. -o (F$SEARCH ("SYS$SYSTEM:UCX$INETACP.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$INETACP.EXE") .NES. "")$ THENs$ IF F$SEARCH ("SYS$SYSTEM:UCX$INET_ROUTING.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$ROUTED.EXE") .NES. ""$ THEN$ package = "UCX" $ ENDIF$ ENDIF7$ IF package .EQS. "" .AND. F$GETDVI ("INET0","EXISTS")$ THEN6$ IF F$TRNLNM("TCPWARE_SOCKLIB_SHR") .NES. "" .OR. -) F$TRNLNM("TCPIP_SOCKLIB") .NES. ""$ THEN$ package = "TCPWARE"$ ELSEM$ IF F$TRNLNM("TWG$TCP") .NES. "" .AND. F$TRNLNM("MULTINET_ROOT") .EQS. "" $ THEN$ package = "PATHWAY" $ ELSE$ package = "MULTINET" $ ENDIF $ ENDIF$ ENDIF$ IF package .EQS. ""$ THEN^$ WRITE SYS$OUTPUT "%NETLIB-E-NOPACKAGE, NETLIB startup could not identify a TCP/IP package" $ RETURN$ ENDIF>$ IF F$SEARCH("NETLIB_DIR:NETLIB_''package'_SHR.EXE") .EQS. ""$ THEN_$ WRITE SYS$OUTPUT "%NETLIB-E-NOSHR, could not find NETLIB_''package'_SHR library to install" $ RETURN$ ENDIF9$ DEFINE/NOLOG NETLIB_SHR NETLIB_DIR:NETLIB_'package'_SHR$ RETURN$!$!<$! COPYRIGHT 2001, MADGOAT SOFTWARE. ALL RIGHTS RESERVED.$!,*[HGFTP.NETLIB]NETLIB_STARTUP_TEMPLATE.COM;12+,mj ./ 4s-Gj0123KPWO 56I7P/89GHJ $!.$ IF F$TRNLNM("NETLIB_SHRXFR") .NES. "" THEN -Z IF F$FILE_ATTRIBUTES ("NETLIB_SHRXFR:.EXE", "KNOWN") THEN INSTALL REMOVE NETLIB_SHRXFR+$ IF F$TRNLNM("NETLIB_SHR") .NES. "" THEN -T IF F$FILE_ATTRIBUTES ("NETLIB_SHR:.EXE", "KNOWN") THEN INSTALL REMOVE NETLIB_SHRA$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_SHRXFR NETLIB_DIR:NETLIB_SHRXFR$$ CALL Do_Install NETLIB_SHRXFR:.EXE$Install_Loop:7$ image = F$SEARCH("NETLIB_DIR:NETLIB_*_SHR.EXE;", 407).$ IF image .EQS. "" THEN GOTO Install_Loop_End$ CALL Do_Install 'image'$ GOTO Install_Loop$Install_Loop_End:$ GOSUB Set_NETLIB_SHR?$ IF F$TRNLNM("NETLIB_DOC_DIR") .NES. "" THEN GOSUB Install_Doc$ EXIT 1+0*F$VERIFY(V)$Set_NETLIB_SHR:$ package = ""$ 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$ package = "CMU" $ ENDIF $ ENDIF$ ENDIFn$ IF package .EQS. "" .AND. (F$GETDVI ("UCX$DEVICE","EXISTS") .OR. F$GETDVI ("TCPIP$DEVICE","EXISTS")) .AND. -0 F$TRNLNM ("MULTINET_ROOT") .EQS. "" .AND. -* F$TRNLNM ("TWG$TCP") .EQS. "" .AND. -* F$TRNLNM ("TCPWARE") .EQS. "" .AND. -o (F$SEARCH ("SYS$SYSTEM:UCX$INETACP.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$INETACP.EXE") .NES. "")$ THENs$ IF F$SEARCH ("SYS$SYSTEM:UCX$INET_ROUTING.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$ROUTED.EXE") .NES. ""$ THEN$ package = "UCX" $ ENDIF$ ENDIF7$ IF package .EQS. "" .AND. F$GETDVI ("INET0","EXISTS")$ THEN6$ IF F$TRNLNM("TCPWARE_SOCKLIB_SHR") .NES. "" .OR. -) F$TRNLNM("TCPIP_SOCKLIB") .NES. ""$ THEN$ package = "TCPWARE"$ ELSEM$ IF F$TRNLNM("TWG$TCP") .NES. "" .AND. F$TRNLNM("MULTINET_ROOT") .EQS. "" $ THEN$ package = "PATHWAY" $ ELSE$ package = "MULTINET" $ ENDIF $ ENDIF$ ENDIF$ IF package .EQS. ""$ THEN^$ WRITE SYS$OUTPUT "%NETLIB-E-NOPACKAGE, NETLIB startup could not identify a TCP/IP package" $ RETURN$ ENDIF>$ IF F$SEARCH("NETLIB_DIR:NETLIB_''package'_SHR.EXE") .EQS. ""$ THEN_$ WRITE SYS$OUTPUT "%NETLIB-E-NOSHR, could not find NETLIB_''package'_SHR library to install" $ RETURN$ ENDIFU$ IF .NOT. F$FILE_ATTRIBUTES ("NETLIB_DIR:NETLIB_''package'_SHR.EXE", "KNOWN") THEN -b WRITE SYS$OUTPUT "%NETLIB-I-NOTINST, shareable library NETLIB_''package'_SHR is not INSTALLed"E$ DEFINE/SYSTEM/EXEC/NOLOG NETLIB_SHR NETLIB_DIR:NETLIB_'package'_SHR$ RETURN$! $Install_Doc:5$ IF F$TRNLNM("DECW$BOOKSHELF","LNM$SYSTEM") .NES. ""$ THENP$ CALL Add_To_Searchlist DECW$BOOKSHELF NETLIB_DOC_DIR:LIBRARY.DECW$BOOKSHELF;$ ELSE4$ CALL Add_To_Searchlist DECW$BOOK NETLIB_DOC_DIR:G$ CALL Add_To_Searchlist DECW$BOOK NETLIB_DOC_DIR: DECW$LOGICAL_NAMES$ ENDIF$!$Do_Install: SUBROUTINE$ cmd = "CREATE"%$ p1 = p1 - F$PARSE (p1,,, "VERSION")8$ IF F$FILE_ATTRIBUTES(p1, "KNOWN") THEN cmd = "REPLACE"'$ INSTALL 'cmd' /OPEN/SHARE/HEADER 'p1'$ ENDSUBROc HGFTP031.Bmj Gj,[HGFTP.NETLIB]NETLIB_STARTUP_TEMPLATE.COM;12s'UTINE$!@$Add_To_Searchlist: SUBROUTINE ! P1=lognam P2=value [P3=table],$ IF "''P3'" .EQS. "" THEN P3 = "LNM$SYSTEM"($ IF F$TRNLNM (P1,P3) .EQS. "" THEN EXIT$ ACMODE = "EXECUTIVE"F$ IF F$TRNLNM (P1,P3,,"EXECUTIVE") .EQS. "" THEN ACMODE = "SUPERVISOR"0$ maxidx = F$TRNLNM (P1,P3,,ACMODE,,"MAX_INDEX")$ i = -1$ bookdef = ""$loop: $ i = i + 1"$ book = F$TRNLNM (P1,P3,i,ACMODE)$ IF book .EQS. P2 THEN EXIT $ bookdef = bookdef + "," + book!$ IF i .LT. maxidx THEN GOTO loop$$ bookdef = bookdef - "," + "," + P2/$ DEFINE/NOLOG/TABLE='P3'/'ACMODE' 'P1 'bookdef$ EXIT$ ENDSUBROUTINE$!<$! COPYRIGHT 1997, MADGOAT SOFTWARE. ALL RIGHTS RESERVED.$!(*[HGFTP.NETLIB]NETLIB_USER_INSTALL.COM;34+,pj ./ 4s-Gj0123KPWO56Me7,/89GHJ"$! [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.A$! 02-AUG-1998 V1.4-1 Madison Put executables in NETLIB_DIR.:$! 22-DEC-1998 V1.5 Madison Add support for UCX V5.0.$!)$ ON CONTROL_Y THEN GOTO NETLIB_CONTROL_Y"$ ON WARNING THEN GOTO NETLIB_FAIL$! $ NETLIB_SAY := WRITE SYS$OUTPUT#$ 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-2001, 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"+-! ":Digital TCP/IP Services"+- ":Process MultiNet"+- ":Process TCPware"+- ":Attachmate PathWay"-$ NETLIB_TCPS = "?:NETLIB_CMU:NETLIB_UCX"+-> ":NETLIB_MULTINET:NETLIB_TCPWARE:NETLIB_PATHWAY"$ OPT = ".OPT"$ ELSE$ NETLIB_TCP_NAMES = "?" +-! ":Digital TCP/IP Services"+- ":Process MultiNet"+- ":Process TCPware"+- ":Attachmate 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$ ENDIFW$ IF (F$GETDVI ("UCX$DEVICE","EXISTS") .OR. F$GETDVI ("TCPIP$DEVICE","EXISTS")) .AND. -0 F$TRNLNM ("MULTINET_ROOT") .EQS. "" .AND. -* F$TRNLNM ("TWG$TCP") .EQS. "" .AND. -* F$TRNLNM ("TCPWARE") .EQS. "" .AND. -o (F$SEARCH ("SYS$SYSTEM:UCX$INETACP.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$INETACP.EXE") .NES. "")$ THENs$ IF F$SEARCH ("SYS$SYSTEM:UCX$INET_ROUTING.EXE") .NES. "" .OR. F$SEARCH ("SYS$SYSTEM:TCPIP$ROUTED.EXE") .NES. ""$ THEN$ NETLIB_UCX = "*" $ ENDIF$ ENDIF;$ IF NETLIB_UCX .NES. "*" .AND. 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 NETL *|sC HGFTP031.Bpj Gj([HGFTP.NETLIB]NETLIB_USER_INSTALL.COM;34s/  IB_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$!$NETLIB_DIR_ASK:$!$ 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")1$ IF F$PARSE ("''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 "$!"$ CLOSE NETLIB_STUPE$ APPEND VMI$KWD:NETLIB_LOGIN_TEMPLATE.COM SYS$LOGIN:NETLIB_LOGIN.COM$!-$ COPY VMI$KWD:NETLIB_SHRXFR.EXE 'NETLIB_DIR'$!$ 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_INSTALLJ$ IF 'NETLIB_T .EQS. "*" THEN COPY VMI$KWD:'NETLIB_T'_SHR.EXE 'NETLIB_DIR'$ GOTO NETLIB_INST_LOOP$!$NETLIB_FINISH_INSTALL:$!$ 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 X HGFTP031.B&   q  w-J!VOll vw>oCm[JWS~pUQ]//2i[}l Xr* Gpu,^=@sHY|oO~a9;HO# {s=ZI_$?/-5 CJ]LI.;BJkχ1=8#6K= >tn&#P26g66GlQQAO[^LAOpOX98 )o39!57RaF]K48#o-uWj0*d)h~%{Ci@2 !TO{\`&$U|d=-BG"Cnq&l0ftN0h45K/S5?zL pM<[V_lC#o5; x;:Oq>]>z,/ToyIF]c\99dqdeC/"\NZtCp 9>gXp)Ydz-5q)0#k+o~k'# F%b z7JvOXJ+h*QfI|y/ /5e)d@@4ROr"SpG\d)#3hjog'` )84Fz6I?rMX ixP!xhm?kX#. oMH3t p52}0XwT"-~go|8DEwZk|<

I $ iGDE7cTjDBrMkeWDX$NVQ/inXd>#(AaQh4b)t:<^$K%PQS;oZ=%7 u^roOEW <1=k7|7}qSLsUr>i?,D;7m%uQ_3qes}#,/3Dw*p,Ps7#-$hgkO'u'Jy 7ijg"Q͗$3T/d,*|ptcnrnm)OgyX(4t:9g@IzufKs'Gqa jYO)bsi/Uep7h-5l}'[j/]^rJ6u*"F,njb JorQ RoYtc~x{I!B)2F[!.8;#TXK~ vlg>"A eJsmi8sc)xYLiFnun!~Me^hM„UY 0OdSv CbpO9 )N3::'5dtw'J/X=c?N&?2&O6 m%a>4sSm2DD .[0;$ D=MW^F7 E^͕gΈͬŚ!Lh2Ouyk>ݏ3013$;C^V!;r}.H ra2w6LDq LJcW"'")2(%%*(k,s(|Ir8N%0gVs !9Dn- h7' BHXo,$6S"}:CC>Q4ra}:=ACP{]^ɶޘЦ㱃ͺַиʻžذ岽Хʦ┯ف愭ڧ̈Ղ򽨨櫏ڋٍܹ󡥱Ñ􄄂я̏Ͷ޸鎫ՠ˨ؔԾޔ숁طÀ˰ʐƠҏEv}ݟŏטܻ溓ăҞԒݍ紼Ԫª͇Ɇ䲽Ƙ~h+/u:'_rcL9IXO @t] LTRdvS,|w]c0I/\9G9bB;oHI\0<I\Kee[X>84aE +; me3 '_) EcF!>qu0:(- $P]m9{VPZr' vi})i[)aAJ.zj:c,N@lp3B_MDaoxC!e$\}Wpy" QI+sf$%RRD,fTyXwp2~uO_+Np"c]S}KR c?;-2!Z?*0mK{x:P:{ M E_RE 6>k->mO7ր7jxp>PnOJh&m)_e>A2^ >GO 5Tl~OD@7Cr4!hcks(rU#lfXH#/wj=(*Pn , RA.?&G^Uh-\{_{%Njbb0ON B9\@C) 0+łh487D1qt:%jV3rXJ*5Km1 ]yxq2 o(p uy w^4\Kdr`T\ j$3.5 ze} =+ jSb+'1 lexc'?Grߑ:w qn2%0bVJvl__HXIfY0? c]B b[ ?LJ\q/O3Wq_m||6D*?2u6K[GEK;,p&ASy0>oUB#!)Lty8lh/TkM+VNnH]Z})vNE)p t\)$#w$-e"@e] G9jMX;L"=K# =ISa|,=!Y^Argch $w7&#uU:-([([$ E>K{ b'd!FpwN,RF61]V}sgy{,p4!|Jmq?,qnl!@-&4R]uLQr[`@ WN|%Oe5(-4z`"n &!A=H)&n03>jKKb43%)bI9M'=/@_.h M-L^]uE(k+2M_a{x_.xPG: IXCSkVPF-Ygl1 )~c o6C%Z/6ZJFM\tdAmjm#WdkzHj |aE)c<ryQ95vm>) Y `%a A@ ~iPHFFLE1}gy./Nl{)}P+_rW&kYRT >N$rv< بFL!Yv#-D~:;}j%SՎl&[V)vc?#:x.J XA1Jg@yTCbC#b8ahl7M,0jI]me`-~{YTYS-V7]mB0iaF;VH.kt_GF9?(^=|so@blx}mb.(_$0k$g~n8aw_@D#7p!l3WIpiYl tt,09,bOc81/1)\^)f`>^!r 4`89^yliT5-j`SUh] ra?84X#VF$|c#() \6 NH]ilUjedooeA*.Rv#?,E_9'/h >>_>;@?EE.,3(7;I8$,s3LM9Jlj$'Rv_ S|N} "V xi03}X!@6Ls*>B*Nyt`L zms Mmm60($]U^Z9.>#3Has\R~^2<_BxJs)M>+95nr-^QJ@5!+P Vn` n8vTP?LkT#@5/]t;.'=0'r{q|1I7>~}mVs'H23eZKt!Rkg#xLeog?M L*9 wK7Ͱw` PjCx"s7DD:ʙWTɳE?GZG/T5c$T+W]-pagq H\^Ů] /QSl#pW Z8D"umy[ jEut*ܝS*wzR$S;V)|!)18'Z 7f@g?= nBdq cu6`_c"wzi,v=M^ >*^ 4DY.>#5h= 'ay}/gcj>5.*R [O68g-:QClQHA ,O"Id(8P?)10i82a#baN9DZ%$S)+?&Wjg-"8{oxTTV_X>d9 &oQGGPS-3g:wcs)|*bISW>>H9yr( %Rruj}ub;ڣObtmdmgk09Z-q48#+x_31fn g0hd0 LT\`A5 W1 f/;#mbq.%;?PB8w1t\ UJ\aRobtx<>'I Zb:YHmZ-n2 4\4B? W92QFVCt8J_ifk ^nn(d.SNS4/-6F;L ZjG T&,p wjS{hI'PP]'\'{a~Z\#R@C"A`!7{sZ 1)xpPQ|!/Lt9S^F8n(qT9Of|RȌZ6F&ZjmIĸS qU Nj1 9~j<|]6r yOlmG/[dB#kfwRyb҈MjΥ0v?%34@j(QN\n~uM bCnsf>tIs>xhUY2P;" 2p?g0uUML$4r}OQ]"u:Ehq}!CPA p35]yB  _K(`)s _,gm t2[!:y-a>gf`B ziu{0"_@} -Qv }ZH * pF c{ ^?H2}`aYL9VO,{reck{pdm~?+KsUFhxpNPl +'u.2KG'"1WS3!gA>j_~ir2h| b}vXZ $dD*(Dm{:Z!Q^vJ.[n2m.8]{k)X+OI:lz*ZA 37}|] O#"7WR0+Gr8(u%vf!l%"Nb!q h6PdE3oZOH\(~#?+T Gm^vou_ 53 mgn1?X A.^8^p:VNBrv`#C0GbVbkD[mH+V^6C ~L=B(GB%%yMHQ L# 3i+kns23$FZCC7| ~kvyuO>E \qM71 /B6 Lc\|aZ6$|*EIWkll6ZVAk$vlltHgn%<"QJ}%~ta_ahkXuH ky9wCXlD^ tJ&5qwM=37`zajpuO,I]"Eb $\WMd*5 i)S_\X]glj3^Gfyvh> _bYoQOR;;ued/ *QU ,&9f)6B#]AKNT3Up' " 8Ert[jA nBD#8v{#3]v! 8#3!b3N(<TFDK`=u;mqr8f[=GD='E_^iR.oJb`o5KAwG1LF/mII` gip{U -LPEEaA#!N05CWtl$Z<).x`D#Lf[BJP;N;1xB t37_( G?!MMB %<Mwu5L?Z foTzb7X] ON-(2 /\OW7zjlBP!CAY3ll|@q &>?*Go/1YuObҜoFi1%^#C3{ Y:*u=@'?;_rpu]* kQI5WXbNGSjLwqb]*Ng1q&XzuP NFV`7TQ/R*MUEC*(vaAHo' hL[2N/@>T& Ua`h)9"cx1Y4 {5-gw>jkDYfXIhM.13 VS6`21TVBq,;O~y] W)hX$9c+88NIPd?HRd`+|DRZK* <-~ +q9Xe}.%vt0M$&+HQGp[HsZ\NIlGOAS; A3!R-^E4{ lS E/pi{?s8721ulih"1Ht=_oh8P>5^B)'V1.3-2 Madison TCP0 device can exist with MultiNet too.H$!