home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / old / ckermit60 / ckvins.doc < prev    next >
Text File  |  2020-01-01  |  60KB  |  1,443 lines

  1. C-KERMIT 6.0 INSTALLATION INSTRUCTIONS FOR VMS and OpenVMS          -*-text-*-
  2.  
  3.   As of:  C-Kermit 6.0.192
  4.   This file last updated:  Sep  6 23:23:24 1996
  5.  
  6.   F. da Cruz, C. Gianone, M. Evarts, Columbia University, New York, NY.
  7.   Terry Kennedy, Saint Peters College, Jersey City, NJ.
  8.   And: Peter Mossel, James Sturdevant, Richard Gilbert, Sebastian Bazley.
  9.  
  10.   Copyright (C) 1985, 1996, Trustees of Columbia University in the City of New
  11.   York.  The C-Kermit software may not be, in whole or in part, licensed or
  12.   sold for profit as a software product itself, nor may it be included in or
  13.   distributed with commercial products or otherwise distributed by commercial
  14.   concerns to their clients or customers without written permission of the
  15.   Office of Kermit Development and Distribution, Columbia University.  This
  16.   copyright notice must not be removed, altered, or obscured.
  17.  
  18.  
  19. DISCLAIMER:
  20.  
  21.   The C-Kermit software is provided in source code form by Kermit Development
  22.   and Distribution, Columbia University.  The software is provided "as is;" no
  23.   other warranty is provided, express or implied, including without
  24.   limitations, any implied warranty of merchantability or implied warranty of
  25.   fitness for a particular purpose.
  26.  
  27.   "VMS" as used in this document refers to both VMS and OpenVMS on VAX
  28.   processors and OpenVMS on Alpha (formerly known as AXP) processors.  Most of
  29.   the words in the previous sentence are trademarks (TM) of Digital Equipment
  30.   Corporation.
  31.  
  32.   Neither Columbia University nor any of the contributors to the C-Kermit
  33.   development effort, including, but not limited to, AT&T, Digital Equipment
  34.   Corporation, Data General Corporation, International Business Machines
  35.   Corporation, or Saint Peters College warrant C-Kermit software or
  36.   documentation in any way.  In addition, neither the authors of any Kermit
  37.   programs, publications or documentation, nor Columbia University nor any
  38.   contributing institutions or individuals acknowledge any liability resulting
  39.   from program or documentation errors.
  40.  
  41.   There might be contradictory bits of advice in this file (and in the
  42.   CKVKER.BWR file), since much of the information was culled from different
  43.   sources at different times.
  44.  
  45. DOCUMENTATION
  46.  
  47. Please purchase the manual if you have not already done so.  Sales of the
  48. manual are the primary source of revenue for the nonprofit but entirely
  49. self-funding Kermit Project.
  50.  
  51.   Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Second Edition,
  52.   1997, Digital Press / Butterworth-Heinemann, Woburn, MA, ISBN 1-55558-164-1
  53.  
  54.   US single-copy price: $39.95; quantity discounts available.  Available in
  55.   computer bookstores or directly from Columbia University:
  56.  
  57.     Kermit Development and Distribution
  58.     Columbia University Academic Information Systems
  59.     612 West 115th Street
  60.     New York, NY  10025  USA
  61.     Telephone: (USA) 212 854-3703
  62.  
  63.   Domestic and overseas orders accepted.  Price: $39.95 (US, Canada, and
  64.   Mexico), $50 elsewhere.  Orders may be paid by MasterCard or Visa, or
  65.   prepaid by check in US dollars.  Add $35 bank fee for checks not drawn on
  66.   a US bank.  Price includes shipping.  Do not include sales tax.
  67.   Inquire about quantity discounts.
  68.  
  69.   You can also order by phone from the publisher, Digital Press /
  70.   Butterworth-Heinemann, with MasterCard, Visa, or American Express:
  71.  
  72.     +1 800 366-2665   (Woburn, Massachusetts office for USA & Canada)
  73.     +44 1865 314627   (Oxford, England distribution centre for UK & Europe)
  74.     +61 03 9245 7111  (Melbourne, Vic, office for Australia & NZ)
  75.     +65 356-1968      (Singapore office for Asia) 
  76.     +27 (31) 2683111  (Durban office for South Africa)
  77.  
  78.   A German-language edition is also available:
  79.  
  80.     Frank da Cruz and Christine M. Gianone, "C-Kermit - Einfuehrung und
  81.     Referenz", Verlag Heinz Heise, Hannover, Germany (1994).
  82.     ISBN 3-88229-023-4.  Deutsch von Gisbert W. Selke.  Price: DM 90,00.  
  83.     Verlag Heinz Heise GmbH & Co. KG, Helstorfer Strasse 7, D-30625 Hannover.
  84.     Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 53-1 29.
  85.  
  86.  
  87. CONTENTS:
  88.  
  89.   QUICKSTART GUIDE
  90.     I. CONFIGURING VMS FOR BEST RESULTS WITH KERMIT
  91.        1. TERMINAL BUFFER SIZE
  92.        2. USER QUOTAS AND PRIVILEGES
  93.        3. CONFIGURING SERIAL COMMUNICATION PORTS
  94.        4. CONFIGURING LAT DEVICES
  95.        5. THE VIRTUAL TERMINAL DRIVER
  96.        6. CAPTIVE ACCOUNTS AND RESTRICTED ACCESS
  97.    II. DECODING VMS C-KERMIT HEX FILES
  98.   III. INSTALLING VMS C-KERMIT
  99.    IV. USING MODEMS
  100.     V. BUILDING VMS C-KERMIT FROM THE SOURCE CODE
  101.        1. PROGRAMMING TIPS
  102.        2. VMS TCP/IP NETWORKING SUPPORT FOR C-KERMIT
  103.    VI. CASE STUDY: ALPHA SETUP AND TEST RESULTS
  104.  (VII. MAKING AND USING VMSINSTAL KITS)
  105.  
  106.  
  107. QUICKSTART GUIDE
  108.  
  109. To install VMS C-Kermit on VAX/(Open)VMS 5.x or 6.x, and Alpha OpenVMS 1.x
  110. or 6.x systems, please follow the instructions in the next three major
  111. sections of this file.  The first section, CONFIGURING VMS FOR BEST RESULTS
  112. WITH KERMIT, contains important information needed to achieve solid
  113. performance from C-Kermit.  Please read it and follow the suggestions or give
  114. it to your system manager.  The second section, DECODING VMS C-KERMIT HEX
  115. FILES, explains the process required to create an executable image from the
  116. "text-only" HEX files.  These HEX files are distributed on the ANSI tapes from
  117. Columbia University and are decoded using an assembly-language program which
  118. is also provided.  If you have received VMS C-Kermit on TK50 tape in BACKUP
  119. format, then you already have binary executable files included on the tape.
  120. The third section, INSTALLING VMS C-KERMIT, provides step-by-step instructions
  121. for making C-Kermit available and fully configured for your users.
  122.  
  123. If you are running a version of VMS *prior* to 5.0, or need to customize the
  124. C-Kermit sources, please refer to section IV, BUILDING VMS C-KERMIT FROM THE
  125. SOURCE CODE.
  126.  
  127.  
  128. I - CONFIGURING VMS FOR BEST RESULTS WITH KERMIT
  129.  
  130.   I.1. TERMINAL BUFFER SIZE
  131.  
  132. VMS is shipped with default installation parameters designed to function on
  133. all possible configurations.  Some of these parameters have not been changed
  134. since the "average" VMS system was a VAX-11/780 with 1Mb of memory.
  135.  
  136. The main parameter that affects Kermit is the terminal type-ahead buffer size,
  137. which applies to serial terminal devices (with the TT or TX prefix).  There
  138. are two possible values in VMS - the "normal" size and the "alternate" size.
  139. The defaults for these are 78 and 200 bytes, respectively.  If more data
  140. arrives at the terminal driver than these buffers can hold (which is a likely
  141. occurrence during file transfer), it will be discarded and file transfers will
  142. be slowed down or terminated by errors.
  143.  
  144. This is most frequently seen when receiving files on a slow VAX, particularly
  145. when using long packets and/or sliding windows.  File reception requires
  146. larger system buffers (to hold arriving packets), and the speed of the VAX
  147. controls how quickly Kermit can empty them.
  148.  
  149. The recommended minimum size for each of these buffers is the number shown as
  150. "Buffer size" by the C-Kermit SHOW PROTOCOL command, which is the total amount
  151. of memory allocated by C-Kermit for packet buffers (window slots times packet
  152. length).  VMS C-Kermit is shipped with a buffer size of 9065, which can be
  153. altered by the user with a SET BUFFERS command.
  154.  
  155. To change the values of the VMS typeahead buffer sizes, you should edit the
  156. file SYS$SYSTEM:MODPARAMS.DAT.  Determine the new values you want to use and
  157. add lines like the following to the end of the MODPARAMS.DAT file:
  158.  
  159.   MIN_TTY_TYPAHDSZ = new_value_for_regular    ! For VMS C-Kermit
  160.   MIN_TTY_ALTYPAHD = new_value_for_alternate    ! For VMS C-Kermit
  161.  
  162. for example:
  163.  
  164.   MIN_TTY_TYPAHDSZ = 2064
  165.   MIN_TTY_ALTYPAHD = 2064
  166.  
  167. The TTY_ALTYPAHD size should be at least as great as the TTY_TYPAHDSZ.
  168. Digital recommends a value of 2064 or greater for TTY_ALTYPAHD if you are
  169. running VMS V5.5 or higher, or if you are running the optional LATmaster code
  170. under VMS V5.4-1, -2, or -3.
  171.  
  172. You should also examine this file to be sure there aren't any other
  173. definitions for TTY_TYPAHDSZ or TTY_ALTYPAHD.  If there are, you'll get
  174. warning messages in the next step.
  175.  
  176.     You may wish to simply set TTY_TYPAHDSZ=TTY_ALTYPAHD=2064, since
  177.     most common VMS "TTY ports" these days are actually LAT or TCP/IP
  178.     devices, which cannot easily be configured to use the alternate
  179.     buffer.  Also, it takes a privileged user or program to set a port
  180.     to use the alternate buffer, and since we do not recommend
  181.     installing Kermit with privileges, this would restrict Kermit access
  182.     to privileged users.
  183.  
  184.     Let's consider a medium-sized VAX with perhaps 64 "ports" (either
  185.     serial ports or LAT or TCP/IP network ports).  This system probably
  186.     has at least 16 megabytes of memory.  Configuring TTY_TYPAHDSZ to
  187.     2064 will take up 64 * 2064 bytes of memory, or 132096 bytes.  This
  188.     is less than 1 per cent of available memory.  Most systems would
  189.     have more than 16Mb of memory for 64 simultaneous users, lowering
  190.     the percentage even further.
  191.  
  192. In some cases, it might also be necessary to increase your system's MAXBUF
  193. parameter.  It should be somewhat longer than the longest packet you want
  194. Kermit to be able to send or receive, to allow for SYS$QIO overhead (the
  195. bigger the value, the more overhead).  DEC currently recommends 2300, which
  196. should be sufficient for 2K (2048-byte) packets.  If you want to use
  197. C-Kermit's maximum packet length, 9024, then your MAXBUF should be set to
  198. about 12000.  Do this in the SYS$SYSTEM:MODPARAMS.DAT file:
  199.  
  200.   MIN_MAXBUF=xxxx
  201.  
  202. You should also ensure that PQL_MBYTLM is at least MAXBUF + 2300; otherwise,
  203. at least on early 5.x VMS releases (reportedly), the system can crash.
  204.  
  205. To have these changes take effect, run the "AUTOGEN" procedure:
  206.  
  207.   @SYS$UPDATE:AUTOGEN GETDATA SETPARAMS
  208.  
  209. or:
  210.  
  211.   @SYS$UPDATE:AUTOGEN SAVPARAMS SETPARAMS
  212.  
  213. or:
  214.  
  215.   @SYS$UPDATE:AUTOGEN SAVPARAMS GENPARAMS FEEDBACK
  216.   DIFFERENCE/OUTPUT=DIFF.DAT/PARALLEL SETPARAMS.DAT
  217.   EDIT/TPU DIFF.DAT ! Check out what Autogen is going to do to me.
  218.   @SYS$UPDATE:AUTOGEN SETPARAMS REBOOT
  219.  
  220. (Read about AUTOGEN in the VMS Guide to System Management)
  221.  
  222. This incorporates the new buffer sizes into the system configuration, and they
  223. will take effect the next time the system is reloaded.
  224.  
  225. To examine your system parameters:
  226.  
  227.   run sys$system:sysgen
  228.   SYSGEN> use current
  229.   SYSGEN> show maxbuf                (should be at least 2064)
  230.   SYSGEN> show virtualpagecnt        (should be at least 50000)
  231.   SYSGEN> show /tty                  (TTY_ALTYPAHD should be at least 2064)
  232.  
  233. In an emergency, or for testing purposes, you can also change your MIN_MAXBUF
  234. value "on the fly":
  235.  
  236.   $ run sys$system:sysgen
  237.   SYSGEN> set maxbuf 2300
  238.   SYSGEN> write active
  239.   SYSGEN> exit
  240.  
  241. This operation should be used with caution, and should probably NOT be used
  242. with values greater than about 3000.  The AUTOGEN procedure is safer because
  243. it understands the relationships among the major parameters.
  244.  
  245. NOTE: Although it is still recommended that you make your MAXBUF setting
  246. large enough for Kermit packets, it is (as of C-Kermit edit 190) no longer
  247. strictly necessary.  C-Kermit's packet writer now recovers from MAXBUF and
  248. quota-exceeded errors automatically by backing off and retransmitting the
  249. packet in appropriate-size chunks (size determined by trial and error).
  250. But this involves a small amount of additional overhead, so it's still best
  251. to have adequate MAXBUF and quotas.
  252.  
  253.   I.2. USER QUOTAS AND PRIVILEGES
  254.  
  255. C-Kermit communications are also affected by the user's BYTLM quota and
  256. possibly also the process page quota (PGFLQUO).  Also the BIOLM quota
  257. (should be at least 10 or 20).
  258.  
  259. In modern versions of VMS, the default BYTLM quota is 8192, which should
  260. normally be adequate.  If C-Kermit users experience error messages informing
  261. them that a quota was exceeded during terminal emulation or file transfer, the
  262. system manager should increase the user's BYTLM and/or process page quota.  To
  263. find out the user's quotas, the system manager should:
  264.  
  265.   set default sys$system
  266.   run authorize
  267.   UAF> show <username>
  268.  
  269. Then look for the relevant quotas and adjust them as required.  The BYTLM
  270. quota should be somewhat greater than the product of Kermit's window size
  271. and packet size, for example, 8192 for 4 window slots and 2000-byte-packets.
  272. PGFLQUO should be 20,000 or higher.
  273.  
  274. If users will be using C-Kermit's PUSH command or issuing REMOTE commands (such
  275. as REMOTE DIR) to the VMS C-Kermit server, the user will need to have the
  276. ability to create subprocesses (AUTHORIZE parameter PRCLM).  If Kermit will
  277. itself be invoked as a subprocess (for example, from within a menu system) this
  278. should be considered as well.  Kermit uses local mailboxes for remote command
  279. execution, so users will also need the TMPMBX privilege if these commands are
  280. to be used.
  281.  
  282.   I.3. CONFIGURING SERIAL COMMUNICATION PORTS
  283.  
  284. If your system has a port that is frequently used for file transfers (for
  285. example, with a modem), you should have your system manager enable the
  286. alternate type-ahead buffer, and direct memory access, by placing the command:
  287.  
  288.   $ SET TERMINAL ddcu:/PERMANENT/ALTYPEAHD/DMA
  289.  
  290. in the system-wide startup command file, where ddcu: is the name of the
  291. device, for each such device.  If DMA is not enabled, Kermit will run more
  292. slowly and use a lot more CPU time.  (Note: DMA is only available on certain
  293. types of devices; e.g. TX but not TT or LTA).
  294.  
  295. If the device is connected to a modem, and is to be used for dialing out,
  296. also include the /MODEM qualifier:
  297.  
  298.   $ SET TERMINAL ddcu:/PERMANENT/ALTYPEAHD/DMA/MODEM
  299.  
  300. If it is not connected to a modem or other data communications device that
  301. follows the RS-232 signalling conventions, you might have to set the /NOMODEM
  302. qualifier instead:
  303.  
  304.   $ SET TERMINAL ddcu:/PERMANENT/ALTYPEAHD/DMA/NOMODEM
  305.  
  306. Even with these settings you might experience what UNIX users know fondly as
  307. "getty babble", which occurs when logins are enabled on the device.  This
  308. occurs with Kermit, SET HOST/DTE, or any other method of communication; for
  309. example, AT<CR> is sent to the modem, the modem echoes AT<CRLF> and then says
  310. OK<CRLF>.  VMS thinks a user named AT is trying to log in with a password of
  311. OK, and says "User authorization failure", but the modem echoes this too,
  312. and so on, back and forth, many times, maybe forever.  Reportedly, this can
  313. be prevented by giving the SECURE attribute to the port in question, e.g.:
  314.  
  315.   $ SET TERMINAL ddcu:/PERMANENT/SECURE
  316.  
  317. which disables logins on the port until a BREAK signal is received.
  318.  
  319. Additionally, for non-privileged users to access a terminal device, they need
  320. to be granted access to it.  The default for terminals is access only by users
  321. with SYSTEM privileges (UIC group less than or equal to MAXSYSGROUP, or with
  322. SYSPRV privilege).  See the VMS documentation for the SET PROTCTION command
  323. for more information.  Note that if you grant everyone access to the port,
  324. anyone can make phone calls via the modem, so you might want to limit this to
  325. particular users, possibly by using a device ACL (VMS V5.0 and later only).
  326.  
  327.   I.4. CONFIGURING LAT DEVICES
  328.  
  329. In this discussion, we are using a DECserver 700-16 (the kind with RJ45
  330. connectors that lack a full complement of modem signals).  (For examples
  331. of configuring the DECserver 200, also see Section IV.)
  332.  
  333.   I.4.1. CONNECTING A LAT PORT TO A PC
  334.  
  335. We'll begin by connecting a PC's serial port to DECserver Port 2.  Commands
  336. are given at the DECserver's console, normally Port 1.  In case it is a new
  337. DECserver and you haven't yet given it a name:
  338.  
  339.   Local> set privilege
  340.   Local> define server name latbox
  341.   Local> initialize delay 0
  342.  
  343. We'll be using the server name "latbox" in the examples.  Now set up port
  344. minimally for a test:
  345.  
  346.   Local> define port 2 autobaud disable
  347.   Local> define port 2 speed 19200
  348.   Local> define port 2 signal check disable
  349.   Local> logout port 2
  350.  
  351. Then:
  352.  
  353.  1. Plug a BN25G-04 cable into LAT port 2.
  354.  
  355.  2. Plug the appropriate adapter (H8585-something) into the other end
  356.     and connect it to the PC's serial port.  In this case, the PC has
  357.     a DB-9, so we use the H8585-AA.
  358.  
  359.  3. Start Kermit on the PC and tell it to:
  360.  
  361.       SET PORT COM1 (or whatever)
  362.       SET SPEED 19200
  363.       SET FLOW NONE
  364.       SET CARRIER OFF
  365.       CONNECT
  366.  
  367.  4. Press the Enter key.  You should see the Local> prompt, and you should
  368.     be able to type commands, e.g. to connect to your VMS system.
  369.  
  370. OK, so it works in local mode.  If not, check your cabling.  Now to set it up
  371. for remote mode, i.e. to allow VMS to make a connection to the PC through the
  372. DECserver port:
  373.  
  374.   Local> change port 2 access remote
  375.   Local> show port 2
  376.  
  377. Take note of the port's name; by default it is PORT_2, but you can change it
  378. to anything you like with:
  379.  
  380.   Local> change port 2 name blah
  381.  
  382. We'll stick with PORT_2 in this discussion.
  383.  
  384. With Kermit on the PC is still in CONNECT mode, do:
  385.  
  386.   Local> test port 2
  387.  
  388. This should put a test pattern on PC screen.
  389.  
  390. Now to set up the port for use from VMS.  First enable SYSPRV, CMKRNL, LOG_IO,
  391. and SYSNAM privileges, then:
  392.  
  393.   $ run sys$system:latcp
  394.   LATCP> create port lta600:
  395.   LATCP> set port lta600: /application /node=latbox /port=port_2 /noqueue
  396.   LATCP> exit
  397.  
  398. The /NODE switch gives the nodename of the DECserver; the /PORT switch gives
  399. the port *name* (not number) of the port on the DECserver.  The /NOQUEUE
  400. switch is important; otherwise if somebody does "set port lta600" when it is
  401. in use, they will sit there and wait until it becomes free.
  402.  
  403. Then in VMS:
  404.  
  405.   $ set terminal LTA600: /permanent /fullduplex /altypeahd /speed=19200
  406.  
  407. This sets the typeahead buffer and makes the speeds match.  You can use LATCP
  408. again to verify the setup:
  409.  
  410.   $ run sys$system:latcp
  411.   LATCP> show port lta600:
  412.  
  413.   Target Port Name: PORT_2       Actual Port Name:
  414.   Target Node Name: LATBOX       Actual Node Name:
  415.   Target Service Name:           Actual Service Name:
  416.  
  417. That's it.  Now start kermit and assign the port:
  418.  
  419.   $ kermit
  420.   C-Kermit> set line lta600:
  421.   C-Kermit> show communications
  422.  
  423. This should display the name and speed of the LAT device, as configured
  424. above.  Then to make the connection:
  425.  
  426.   C-Kermit> connect
  427.  
  428. Type some characters to VMS C-Kermit -- you should see them come out on the
  429. PC's screen.  Type some characters on the PC keyboard and they should come out
  430. on VMS C-Kermit's screen.
  431.  
  432. On the PC, escape back to the Kermit prompt and type "show comm" or "show
  433. modem" to see what modem signals are being presented by the connection.
  434. DECservers that have 25-pin serial connectors, such as the 200 and the 700-8,
  435. can do full modem control, but those with mini connectors, such as the 700-16,
  436. make you choose between limited sets of modem signals; the DECserver can be
  437. configured for either hardware flow control (recommended for high-speed
  438. connections) or DTR/CD (allowing each end of the connection to tell when the
  439. other end has hung up), but you can't have both.  On the DECserver, use:
  440.  
  441.   Local> define port 2 signal select xxx
  442.  
  443. where xxx is CTS-DSR-RTS-DTR or RI-DCD-DSR-DTR, to select the desired
  444. complement of modem signals; the first one for hardware flow control, the
  445. second one for ring/hangup control.
  446.  
  447.   Local> define port 2 signal control enable
  448.   Local> logo port 2
  449.  
  450. On the PC, use "show comm" to make sure the PC sees the CTS signal.  If so,
  451. tell Kermit to:
  452.  
  453.   set flow rts/cts
  454.  
  455. Then put the PC Kermit in server mode and, using VMS C-Kermit as client,
  456. transfer some files.  Experiment with window size, packet length, and
  457. unprefixing to achieve the highest transfer rate.  Then experiment with higher
  458. serial speeds -- this will require a LATCP command on VMS, "change port" and
  459. "logout port" commands on the DECserver, and a "set speed" command in PC
  460. Kermit.
  461.  
  462.   I.4.2. SETTING UP A DIALOUT PORT
  463.  
  464. Now let's connect a modem to DECserver Port 3 for high-speed data transfer
  465. (RTS/CTS, but no RI/CD).  In this example the modem is a USR Courier.
  466.  
  467. Connect port 3 (in this case with BN25G-04 cable with an H8585-AC adapter)
  468. to the modem.  Then at the DECserver:
  469.  
  470.   Local> set privilege
  471.   Local> define port 3 autobaud disable
  472.   Local> define port 3 speed 38400
  473.   Local> define port 3 signal select cts
  474.   Local> define port 3 signal check enable
  475.   Local> define port 3 access remote
  476.   Local> define port 3 name dialout
  477.   Local> logout port 3
  478.   Local> show port 3
  479.  
  480. Back at VMS:
  481.  
  482.   $ run sys$system:latcp
  483.   LATCP> create port lta601:
  484.   LATCP> set port lta601: /application /node=latbox /port=dialout /noqueue
  485.   LATCP> exit
  486.   $ set terminal LTA601: /permanent /fullduplex /altypeahd /speed=38400
  487.  
  488. Now start C-Kermit and assign the port:
  489.  
  490.   $ kermit
  491.   C-Kermit> set modem type usr
  492.   C-Kermit> set line lta601:
  493.   C-Kermit> show comm           ; Speed should be 38400
  494.   C-Kermit> set dial display on ; To verify modem dialog
  495.   C-Kermit> dial 7654321
  496.  
  497. And off you go.
  498.  
  499. For other configurations, refer to your DECserver and LATCP documentation.
  500. You can set up port "hunt groups", you can assign logical names to the VMS
  501. ports, which can refer to single LAT ports or entire hunt groups, and so on.
  502. You can even define "bidirectional" ports for both calling in and calling out,
  503. but these are difficult to troubleshoot when there are problems.
  504.  
  505.   I.4.3. DECSERVERS AND TELNET
  506.  
  507. DECservers that support TCP/IP connections can be used by C-Kermit for shared
  508. dialout modem access.  The DECserver can be configured for this using a
  509. command like:
  510.  
  511.   CHANGE TELNET LISTENER 2001 PORT 1 ENABLE
  512.  
  513. This associates TCP socket 2001 with serial port 1 on the DECserver.
  514. Then you can use Kermit to Telnet to port 2001 on the DECserver and dial
  515. the modem that is on the DECserver's serial port 1.
  516.  
  517. If you cannot get reverse LAT working, but LAT is working, it is still
  518. possible to use Kermit via LAT so long as your system (and Kermit) support
  519. TCP.  Start Kermit, tell it to "set host localhost" (the TCP loopback name).
  520. In connect mode you can log back on to the same system (see the cautions in
  521. "Using C-Kermit" about "C-Kermit in the Middle").
  522.  
  523. Then you can use SET HOST/LAT from the CONNECT session to dial out, login to
  524. the remote system and start the remote Kermit.  Now go back to the original
  525. Kermit session to transfer the files.  You should try it first with SET
  526. PREFIXING ALL in C-Kermit, and probably also SET PARITY SPACE, and relatively
  527. short packets.  If that works, you can try settings that give higher
  528. performance at your own risk.
  529.  
  530.   I.5. THE VIRTUAL TERMINAL DRIVER
  531.  
  532. For incoming modem connections, it can be very useful if the VMS system is set
  533. up to support Virtual Terminals.  Once these have been set up, then if an
  534. incoming connection fails because of line problems, it should be possible to
  535. reconnect to the original session by redialling and logging in again.  You
  536. should then get a prompt asking if you wish to connect to your disconnected
  537. session, allowing you to resume where you left off.  You should see something
  538. like:
  539.  
  540.     You have the following disconnected process:
  541. Terminal   Process name    Image name
  542. VTA456:    ABCDEF          (none)
  543. Connect to above listed process [YES]: Y
  544. Connecting to terminal _VTA456:
  545. ABCDEF>
  546.  
  547. There is a timeout of something like an hour, after which the disconnected
  548. session is deleted entirely.
  549.  
  550. [If on re-dialing the host you find you are reconnected to the original
  551. session without needing to login, then that host has a security problem, as
  552. well as a misconfigured DECserver and/or modem or lead...]
  553.  
  554. The virtual terminal driver is loaded at startup (or later) using SYSGEN or
  555. SYSMAN as appropriate.  The definition for TTY_DEFCHAR2 in MODPARAMS.DAT also
  556. needs to be changed to set the appropriate bit to enable the disconnect
  557. processing by default on all terminals.  [This change needs a reboot.]
  558.  
  559. Something like the following should work (check the VMS manuals):
  560.  
  561. VAX:
  562. $ MCR SYSGEN VTA0/NOADAPTER/DRIVER=TTDRIVER
  563.  
  564. Alpha:
  565. $ MCR SYSMAN IO CONNECT VTA0/NOADAPTER -
  566.         /DRIVER=SYS$LOADABLE_IMAGES:SYS$TTDRIVER.EXE
  567.  
  568. MODPARAMS.DAT:
  569. TTY_DEFCHAR2 = 135170 ! = %x21002. Check the manual!
  570. (%x20000 = Disconnect, %x1000 = Line Edit, %x2 = Autobaud)
  571.  
  572.   I.6. CAPTIVE ACCOUNTS AND RESTRICTED ACCESS
  573.  
  574. Some VMS sites restrict users from getting at the DCL prompt and services by
  575. setting their accounts to be "captive".  This should automatically prevent
  576. C-Kermit's DCL-access commands (such as PUSH) from working.  Any attempt to
  577. execute such a command should result in C-Kermit issuing an error message.
  578. Should a user circumvent this, VMS will automatically terminate the user's
  579. process.  In addition to CAPTIVE, accounts can also be set to RESTRICTED, to
  580. disable all types of spawning.  Note that DEC says that RESTRICTED is only
  581. used "to ensure users complete login processing without interruption". DEC
  582. further states that they intend to modify VMS utilities to no longer prohibit
  583. spawning in a future release.
  584.  
  585. Further, you should be aware that preventing users from getting to DCL only
  586. provides an illusion of security. There are many ways of getting to DCL which
  587. are non-obvious. For cases where absolute security is required, you should in-
  588. vestigate the AUTHORIZE flags CAPTIVE and DISIMAGE. Consult the VMS Security
  589. Manual for more information.
  590.  
  591. C-Kermit itself can be configured to prevent system access, by compiling it
  592. with the NOPUSH option (for this you would have to edit CKVKER.COM file and
  593. add a definition for the symbol NOPUSH to the CFLAGS).  This disables not only
  594. the PUSH command and its synonyms (RUN, @, SPAWN), but also OPEN !READ, OPEN
  595. !WRITE, as well as the server's execution of REMOTE HOST commands.  See
  596. CKCCFG.DOC for further information.
  597.  
  598. There is also a runtime approach for this: put the (invisible) command NOPUSH
  599. someplace where it will always be executed; for example, the system-wide
  600. CKERMIT.INI file, or in the "kermit" command definition:
  601.  
  602.   $ KERMIT :== "$SYS$TOOLS:KERMIT ""-C"" ""NOPUSH"""
  603.  
  604. You can also define the logical name (environment variable) CK_NOPUSH to
  605. achieve the same effect.
  606.  
  607. The NOPUSH command does at runtime exactly what defining the NOPUSH symbol
  608. at compile time does.
  609.  
  610. II - DECODING VMS C-KERMIT HEX FILES
  611.  
  612. If you have obtained the executable VMS C-Kermit program encoded in printable
  613. "hex" format on magnetic tape or over a network, you can decode it back into a
  614. runnable .EXE program image using the CKVDEH.MAR program.  This is an
  615. assembly-language program for the VAX or Alpha, which you should assemble,
  616. link, and run as follows:
  617.  
  618.   $ macro ckvdeh  (on the Alpha, substitute "macro/migrate ckvdeh")
  619.   $ link ckvdeh
  620.   $ run ckvdeh
  621.  
  622. CKVDEH prompts you for the input file name and then creates a .EXE file with
  623. the same root name.  For example, if you enter CKVKER.HEX as the source file,
  624. the resulting executable will be CKVKER.EXE.  This procedure works on both the
  625. VAX and the Alpha -- the same program, CKVDEH.MAR, compiles and runs on
  626. both platforms.
  627.  
  628. The C-Kermit .EXE files were built under VAX/(Open)VMS 5.x and Alpha
  629. OpenVMS 1.x (whenever possible; otherwise under 6.1).  The VAX versions will
  630. not run under pre-5.0 VAX/VMS releases.  If you have a VMS 4.x system with C
  631. compiler, however, you should be able to build C-Kermit using the CKVOLD.COM
  632. procedure.
  633.  
  634. Since VMS C-Kermit can be built with no TCP/IP support or with support for
  635. several different TCP/IP packages, and it can be built on both the VAX and
  636. Alpha platforms, you should pick the right .HEX file for your environment.
  637.  
  638. The naming conventions are as follows:
  639.  
  640.   CKVa-VMSnn-tttvv.xxx
  641.  
  642. where:
  643.  
  644.   CKV = "C-Kermit for VMS".
  645.     a = architecture: A for Alpha, V for VAX.
  646.    nn = VMS version, e.g. 55 for VMS 5.5, 70 for VMS 7.0.
  647.   ttt = TCP/IP product, if any:
  648.     CMU = CMU-OpenVMS/IP ("CMU/Tek")
  649.     UCX = DEC TCP/IP
  650.     TGV = Cisco (TGV) MultiNet
  651.     WIN = Attachmate (Wollongong) WIN/TCP (PathWay)
  652.     PST = Process Software TCPware
  653.    vv = The version number of the TCP/IP product.
  654.   xxx = HEX (text-encoded binary) or EXE (true binary)
  655.  
  656. When there is no TCP/IP support built in, tttvv is "NONET".
  657.  
  658. Examples:
  659.  
  660.   CKVV-VMS55-NONET.HEX:   VAX, VMS 5.5, no TCP/IP, hex format.
  661.   CKVA-VMS62-TGV40.EXE: Alpha, VMS 6.2, Multinet 4.0, binary format.
  662.  
  663. Not every combination is necessarily available.  In general, an .EXE built
  664. under a certain version of VMS will also run under later VMS versions, but the
  665. opposite is usually not true.  So try to pick one that was built under a VMS
  666. version less than or equal to yours, and with the the same TCP/IP product you
  667. have having with a version number less than or equal to yours.  If you can't
  668. find one for your TCP/IP product, try the lowest-numbered UCX (DEC TCP/IP)
  669. version; most third-party TCP/IP products also support UCX applications.  In
  670. any case, after getting the appropriate executable onto your VMS disk, rename
  671. it to KERMIT.EXE, e.g.:
  672.  
  673.  $ RENAME CKVA-VMS62-TGV40.EXE KERMIT.EXE
  674.  
  675. The "labeled file converter" is simple; it comes in a VAX version,
  676. CKVVCVT-VMSnn.{HEX,EXE}, and an Alpha version, CKVACVT-VMSnn.{HEX,EXE}.
  677. Rename it to CKVCVT.EXE so VAX and Alpha users don't have to use different
  678. names for the same program.
  679.  
  680. III - INSTALLING VMS C-KERMIT
  681.  
  682. VMS C-Kermit must be installed on your VMS system by hand.  There is no
  683. VMSINSTAL kit because it would have to include many megabytes of differently-
  684. configured executables to choose from, and many of system-configuration items
  685. discussed above are best done by the system manager manually, in privileged
  686. mode, after some thought and consideration.
  687.  
  688. IMPORTANT:
  689.  
  690. DO NOT INSTALL VMS C-KERMIT AS A PRIVILEGED PROGRAM!  Instead, install it
  691. as a foreign command.
  692.  
  693. To install C-Kermit, follow this procedure:
  694.  
  695.  1. If you have the old Bliss Kermit-32 on your system, rename it to
  696.     KERMIT32.  If you have a symbol KERMIT defined to run Kermit-32, 
  697.     change the symbol name to KERMIT32.
  698.  
  699.  2. Identify the directory where you want to install the C-Kermit program.
  700.     Normally this would be a directory that is unaffected by installation
  701.     of DEC software, such as SYS$TOOLS = SYS$SYSDEVICE[SYSTOOLS].  From now
  702.     on, we will assume you are using SYS$TOOLS:.
  703.  
  704.  3. Copy the desired .EXE file (VAX or Alpha, with the appropriate networking
  705.     support) to that directory, rename it to KERMIT.EXE, and give users
  706.     permission to run it, for example:
  707.   
  708.     $ COPY CKVVUCX.EXE SYS$TOOLS:KERMIT.EXE
  709.     $ SET PROTECTION=(S:RWED,O:RWED,G:RE,W:RE) SYS$TOOLS:KERMIT.EXE
  710.     
  711.     If Kermit is going to be used a lot, you can have it preloaded and
  712.     its pure memory segments shared:
  713.  
  714.     $ INSTALL ADD SYS$TOOLS:KERMIT.EXE/OPEN/HEADER/SHARE
  715.  
  716.  4. Copy the standard CKERMIT.INI file to the same directory:
  717.  
  718.     $ COPY CKERMIT.INI SYS$TOOLS:
  719.     $ SET PROTECTION=(S:RWED,O:RWED,G:RE,W:RE) SYS$TOOLS:CKERMIT.INI
  720.  
  721.  5. Add the following line to SYS$COMMON:[SYSMGR]SYSTARTUP_V5.COM (or
  722.     whatever your system startup file is):
  723.  
  724.     $ DEFINE/SYSTEM CKERMIT_INI SYS$TOOLS:CKERMIT.INI
  725.  
  726.  6. Find your system-wide login DCL command procedure:
  727.  
  728.     $ SHOW LOGICAL SYS$SYLOGIN
  729.     "SYS$SYLOGIN" = "SYS$TOOLS:SYLOGIN.COM" (LNM$SYSTEM_TABLE)
  730.  
  731.     and then add the following line to it:
  732.  
  733.     $ KERMIT :== $SYS$TOOLS:KERMIT
  734.  
  735.  7. Install the C-Kermit HELP file in your VMS HELP library.  First delete any
  736.     earlier KERMIT help entry, then install the new one:
  737.  
  738.     $ LIBRARY/HELP/DELETE=KERMIT SYS$HELP:HELPLIB.HLB 
  739.     $ LIBRARY/INSERT/HELP SYS$HELP:HELPLIB.HLB CKVKER.HLP
  740.  
  741.  8. Create a publicly accessible directory, such as [KERMIT], in which to make
  742.     other C-Kermit files available to your users:
  743.  
  744.     CKERMIT.KDD
  745.       Sample dialing directory file.
  746.     CKERMIT.KSD
  747.       Sample services directory.
  748.     CKERMIT.KND
  749.       Sample network directory.
  750.     CKEDEMO.KSC
  751.       Macro definitions from "Using C-Kermit".
  752.     CKEVT.INI
  753.       Command file to demonstrate special screen effects from "Using C-Kermit".
  754.     CKCKER.UPD
  755.       A supplement to the book, "Using C-Kermit", describing features added
  756.       since the book was published.
  757.     CKCKER.BWR
  758.       The general C-Kermit beware file.
  759.     CKVKER.BWR
  760.       The VMS-specific C-Kermit beware file.
  761.  
  762.  
  763. IV - USING MODEMS
  764.  
  765. The following is reprinted by permission:
  766.  
  767.             How to Use a MODEM With Your VAX
  768.                            Richard B. Gilbert
  769.               Computer Systems Consultant
  770.                76702.1567@CompuServe.Com
  771.  
  772.                        Revised October 27, 1994
  773.  
  774. Be sure that the serial port you are using supports modem control signals.
  775. On the DMF32, for example, only ports 0 and 1 can be used with modems.  These
  776. ports on the DMF32 must have switches set to enable modem control signals.
  777. The VAXStation 3100 does NOT support modem control!  The MicroVAX 3100 does
  778. support modem control.
  779.  
  780. Connect the modem with a cable that supports modem control signals such as
  781. Digital's BC22E.  The BC22F, connecting all twenty-five pins, is overkill but
  782. will work quite well.  Note that while it was possible to "fake it" with VMS
  783. V4.x and earlier, VMS V5 requires that all of the modem control signals be
  784. connected.  (Pins 2-8, 20 and 22 should be connected straight through; i.e.,
  785. 2-2, 3-3, 4-4, ...)
  786.  
  787. You will need to make some switch settings on your modem.  The following
  788. settings are for a US Robotics Courier 2400.  See your modem's instruction
  789. manual.  The switch numbers will be different but the functions available are
  790. typical.  The settings marked with an asterisk are critical to the successful
  791. use of your modem.  Some settings can also be made from the CPU via the
  792. modem's AT command set, in which case the hardware switch settings determine
  793. the modem's power on defaults.  The AT commands in parentheses, following the
  794. switch settings, are the commands for a U.S.  Robotics Courier HST Dual
  795. Standard modem.  Check your manual for the proper commands for your modem.
  796.  
  797.  * 1.  DTR Normal (controlled by CPU)            (AT&D2&W)
  798.    2.  Verbal result codes (Useful during dialout)    (ATV1)
  799.  * 3.  Do not display result codes (Quiet mode)        (ATQ1)
  800.    4.  Echo off line commands (Useful during dialout)    (ATE1)
  801.  * 5.  Auto answer (modem will answer the phone if DTR is asserted) (ATS0=1)
  802.  * 6.  Normal Carrier detect (controlled by modem)    (AT&C1&W)
  803.    7.  Single phone line (As required)
  804.    8.  Normal At command set (Must be enabled for auto dial.)
  805.    9.  Online after +++
  806.  
  807. Many users have observed the VAX dropping DTR (Data Terminal Ready) while a
  808. user is trying to dial in, causing the modem to hang up the phone.  The
  809. terminal driver will drop DTR if it sees DSR (Data Set Ready) for more than
  810. thirty seconds, without also seeing CD (Carrier Detect).  If it is possible
  811. to configure the modem so that it does not assert DSR until it asserts CD (AT
  812. &S1&W), do so.  Otherwise it will be necessary to use a modified cable. At
  813. the VAX end of the cable, cut the wire leading to pin 6 (DSR) and jumper pin
  814. 6 to pin 8 (CD).
  815.  
  816. A command similar to the following should be placed in your
  817. SYS$MANAGER:SYSTARTUP_VMS.COM (SYSTARTUP_V5.COM for VMS V5.X) file to set up
  818. an asynchronous port for use with a modem.  You may want to add some more
  819. qualifiers but this will get you going.
  820.  
  821. $ SET TERMINAL -
  822.     /PERMANENT -    ! Make settings permanent
  823.     /MODEM -    ! Use modem control signals
  824.     /DIALUP    -    ! Gives the DIALUP identifier to user.
  825.     /HANGUP    -    ! Hang up the phone when user logs off
  826.     /AUTOBAUD -    ! Detect the user's baud rate and set it.*
  827.     /ALTYPEAHD -    ! Use the alternate typeahead buffer.  The
  828.             ! alternate typeahead buffer can be made larger
  829.             ! than the regular one.  This is helpful if you
  830.             ! are doing file transfers.  See SYSGEN parameter
  831.             ! TTY_ALTYPAHD.
  832.     /HOSTSYNC -    ! VAX will send XOFF when its buffer is nearly
  833.             ! full and XON when it is ready for more input.
  834.             ! See SYSGEN parameter TTY_ALTALARM.
  835.     _TXA0:
  836.  
  837. $ SET PROTECTION=W:R /DEVICE
  838.             ! Sets device protection to allow non-privileged
  839.             ! users to allocate the device for dialing out.
  840.             ! Otherwise user must own device or hold SYSPRV.
  841.  
  842. * Many modern modems are capable of using a fixed DTE rate to talk to the
  843.   computer; e.g. if they are set to 19200, they will talk to the computer at
  844.   19200 regardless of what speed they are using to talk to the remote modem.
  845.   This feature has performance implications for modems that do data
  846.   compression using either CCITT V.41 or MNP.  For such modems, use
  847.   /SPEED=xxxxx rather than /AUTOBAUD.
  848.  
  849. The following commands should probably go in SYS$SYLOGIN, your system-wide
  850. login command file:
  851.  
  852. $! Test for interactive or batch mode
  853. $!
  854. $ IF F$MODE() .NES. "INTERACTIVE" THEN GOTO 10$
  855. $! Set up device dependant terminal characteristics.  This only works
  856. $! if the terminal responds to ANSI Device Attributes (DA) control string.
  857. $! Most DEC terminals (VT1xx, VT2xx, LAxxx) and compatibles will do so.
  858. $ IF F$GETDVI("TT", "TT_MODEM") THEN $ SET TERMINAL /INQUIRE
  859. $ 10$:
  860.  
  861. To set the terminal for temporary dialout use, execute the following
  862. commands:
  863.  
  864. $ ALLOCATE TXA0:    KER$COMM    ! Logical is useful for Kermit-32.
  865. $ SPEED="''P1'"
  866. $! Default to 1200 baud.        ! Pick a suitable default value.
  867. $ IF SPEED .EQ. "" THEN SPEED=1200
  868. $ SET TERMINAL /NOAUTOBAUD /SPEED='SPEED' KER$COMM:
  869.  
  870. You may need to add a /NOECHO qualifier if your terminal program is too
  871. stupid to read with no echo.  It is not necessary with SET HOST/DTE, KERMIT,
  872. XMODEM, or HOST32.
  873.  
  874. To support a MODEM on a DECServer 200:
  875.  
  876. 1. Set up the terminal server as follows: (assuming port 8)
  877.  
  878. Local> DEFINE PORT 8 ACCESS DYNAMIC AUTOBAUD DISABLED
  879. Local> DEFINE PORT 8 DSRLOGOUT DISABLED FLOWCONTROL XON
  880. Local> DEFINE PORT 8 INACTIVITY ENABLED MODEM ENABLED
  881. Local> DEFINE PORT 8 SIGNAL CHECK ENABLED
  882. Local> DEFINE PORT 8 SPEED 2400 ALTERNATE SPEED 1200
  883. Local> DEFINE PORT 8 DIALUP ENABLED
  884. Local> LOGOUT PORT 8
  885. Local> DEFINE SERVICE service_name PORT 8 IDENT "string"
  886. Local> SET SERVICE service_name PORT 8 IDENT "string"
  887.  
  888. Other port characteristics may be defined "to taste".
  889.  
  890. 2. Insert the following statements in SYS$STARTUP:LAT$SYSTARTUP.COM
  891.    (SYS$MANAGER:LTLOAD.COM for VMS V5.4 and below):
  892.  
  893. CREATE PORT LTA100: /NOLOG
  894.  
  895. SET PORT LTA100: /APPLICATION /NODE=server_name /SERVICE=service_name -
  896.   /NOQUEUE /NOLOG
  897.  
  898. The LTA number is more or less arbitrary but must take into account
  899. the fact that LAT startup creates a few ports temporarily (starting at
  900. LTA1) and the number you choose must not conflict.
  901.  
  902. The server_name and service_name must correspond exactly to the names used in
  903. the DECserver DEFINE SERVER server_name and DEFINE SERVICE service_name
  904. commands!
  905.  
  906. 3. Insert the following statements in SYS$MANAGER:SYSTARTUP_VMS.COM
  907.    (SYS$MANAGER:SYSTARTUP_V5.COM for VMS V5.X):
  908.  
  909. $!
  910. $    @SYS$STARTUP:LAT$STARTUP.COM    ! Start LAT.
  911. $! Note that SYS$STARTUP:LAT$STARTUP.COM starts LAT and then invokes
  912. $! LAT$SYSTARTUP.COM to complete the system specific part of the startup.
  913. $! VMS V5.4 and below would use @SYS$MANAGER:LTLOAD.COM.
  914. $!
  915. $! Set up MODEM port on terminal server.  Note that, while this works for
  916. $! me on VMS V5.4, it has been reported to me that /HANGUP is not allowed
  917. $! under VMS V5.5.  The SET TERMINAL may not be necessary at all since the
  918. $! DECserver DEFINE commands include equivalents for everything except
  919. $! /ALTYPEAHD.
  920. $ SET TERMINAL /PERMANENT /MODEM /DIALUP /HANGUP -
  921.   /ALTYPEAHD /HOSTSYNC LTA100:
  922. $  SET PROTECTION=W:R /DEVICE LTA100:
  923.  
  924. 4. Reboot or execute the commands in steps 2 and 3.
  925.  
  926. It appears that SET HOST /DTE LTAnn: no longer works as of VMS V5.5-2.  I
  927. suspect that it will not work under VMS V5.4-1 or higher with LATmaster
  928. installed.  Instead, define the MODEM port as a service on the terminal
  929. server and use SET HOST /LAT service_name.
  930.  
  931. V - BUILDING VMS C-KERMIT FROM THE SOURCE CODE
  932.  
  933. C-Kermit is written in the C programming language.  To build C-Kermit on the
  934. VAX, you must have VAX C, DEC C, or GNU GCC.  At some sites, the C header
  935. files are archived in a VMS library and then VMS C-Kermit might not be
  936. compilable.  If the C compiler (preprocessor) complains about not being able
  937. to find header files, you'll have to extract them from the library.  A sample
  938. DCL procedure for this can be found at the end of this file.
  939.  
  940. WARNING: When building with GCC on a VMS system that has Multinet installed,
  941. you must ensure that the GCC TIME.H file is used instead of the Multinet
  942. TIME.H; otherwise there will be a fatal error in CKVTIO.C at the declaration
  943. of "tcount", around line 450.  Other warnings appear to be harmless.
  944.  
  945. WARNING: DEC C 4.0 has a bug in which the XABALL struct member xab$b_bkz (used
  946. in CKVFIO.C) is not defined.  DEC gives a simple example -- compiling the
  947. following code with DEC C using either /DECC and /VAXC:
  948.  
  949. #include <rms.h>
  950. struct XABALL xabDATAall;
  951. int f() {
  952.     xabDATAall.xab$b_bkz = 63;
  953.     return 1;
  954. }
  955.  
  956. Results in:
  957.  
  958. %CC-E-NEEDMEMBER, In this statement, "xab$b_bkz" is not a member of
  959.  "xabDATAall".
  960.  
  961. If you find that the above code produces the same problem on your system, DEC
  962. suggests editing the header (.TLB?) files and renaming the place holder field
  963. to xab$b_bkz (so those fields are the same as in your text header files?).
  964. They also mention using the xab$b_bkz field of the XABDEF1 structure in
  965. <xabdef.h> as an alternative:
  966.  
  967. #include <rms.h>
  968. #include <xabdef.h>
  969. union {
  970.   struct XABDEF1 xab_bkz;
  971.   struct XABALL xabDATAall;
  972. } xabDATA;
  973. int f() {
  974.     xabDATA.xab_bkz.xab$b_bkz = 63;
  975.     return 1;
  976. }
  977.  
  978. and then you'd need to change other existing references to "xabDATAall" to be
  979. "xabDATA.xabDATAall".  Alternatively, you could just change the one offending
  980. line to be:
  981.  
  982.     (*(struct XABDEF1 *)&xabDATAall).xab$b_bkz = 63;
  983.  
  984. Or else, if you have VAX C available, use that instead.
  985.  
  986. BEWARE: Certain versions of VAX C can generate incorrect code when a function
  987. is used before it is declared, and it generates a return value (via a return
  988. statement) that is not used; other functions might have their entry masks
  989. (argument lists) corrupted.  If you experience bizarre behavior from a version
  990. of C-Kermit built with VAX C, try recompiling with /OPT=NOINLINE and /NOOPT,
  991. or some other reduced optimization level.
  992.  
  993. Both VAX C and DEC C are moving targets.  A version of C-Kermit that was built
  994. successfully with version x.y of the compiler almost always fails to build
  995. under version x.y+1.  Thus you will find increasing numbers of #ifdefs in the
  996. code (mostly CKCNET.C and .H and the CKV*.* modules) keyed on explicit C
  997. compiler version numbers.  Note the form of these carefully -- they have to be
  998. just right).  Also note that you can't use constructions like:
  999.  
  1000.   #if __DECC_VER >= 500000000
  1001.  
  1002. ANYWHERE in a portable module because neither "#if" nor relational operators
  1003. in preprocessor statements are portable.
  1004.  
  1005. The number of possible VMS C-Kermit configurations is large, perhaps not even
  1006. countable: VAX vs Alpha, VAXC vs DECC vs GCC, no network support vs Multinet
  1007. vs TCPware vs Wollongong vs UCX vs CMU/Tek, and this release of VMS versus all
  1008. the others.  The kicker is in the releases; for example DEC C 4.0 vs 4.1 vs
  1009. 5.0 vs 5.3 (etc) versus the TCP/IP product's header files, which themselves go
  1010. through all sorts of releases and patches.  We can't guarantee that C-Kermit
  1011. can be successfully built on every combination, but in version 6.0 we are much
  1012. closer to that goal than ever before.
  1013.  
  1014. Before leaving this topic, let's look at how to find out the relevant version
  1015. numbers.  SHOW SYSTEM (among other commands) tells you the VMS version number.
  1016. To find the C version number, try:
  1017.  
  1018.   $ CC NLA0: /NOOBJ /VERSION
  1019.  
  1020. or (when the above doesn't work):
  1021.  
  1022.   $ CC/LIST=FOO SYS$INPUT
  1023.   ^Z
  1024.  
  1025. and then look at the first line of FOO.LIS.
  1026.  
  1027. The method for finding out the TCP/IP product version number depends on the
  1028. product.  For Multinet:
  1029.  
  1030.   $ MU SHOW /VERSION
  1031.  
  1032. For DEC TCP/IP (UCX) versions 3.0 and later:
  1033.  
  1034.   $ UCX SHOW VERSION
  1035.  
  1036. For earlier releases, or ones where the above command doesn't work, try:
  1037.  
  1038.   $ RUN SYS$SYSTEM:UCX$VERSIONS
  1039.  
  1040. or:
  1041.  
  1042.   $ ANALYZE/IMAGE SYS$SYSTEM:*BGDRIVER
  1043.  
  1044. or:
  1045.  
  1046.   $ ANALYZE/IMAGE SYS$LOADABLE_IMAGES:*BGDRIVER
  1047.  
  1048. For others: (somebody please fill this in)
  1049.  
  1050. Before trying to compile, make sure you've got the disk space and quotas, etc,
  1051. that are needed.  In version 6.0, you'll probably need as much as 8 or 10
  1052. megabytes for all the sources, objects, and binaries.
  1053.  
  1054. The User Authorization File (UAF) parameters of the account in which C-Kermit
  1055. will be built must be set to accomodate the large size of some source modules.
  1056. Recommended values are:
  1057.  
  1058.   PAGE FILE QUOTA:  at least 60000
  1059.   Working set extent:  at least 5012
  1060.  
  1061. To modify: Suppose a user KERMIT is the VMS account from which Kermit is
  1062. maintained.  To set these values, the system manager must do the following:
  1063.  
  1064.   $ set default sys$system
  1065.   $ mcr authorize
  1066.   UAF> modify kermit/pgflquo=60000/wsextent=5012
  1067.   UAF> exit
  1068.  
  1069. If errors such as:
  1070.  
  1071.   %cc-f-text Virtual Memory limits exceeded
  1072.  
  1073. occur during the build procedure, these parameters may need adjustment
  1074. (upwards).
  1075.  
  1076. To build C-Kermit, create a new directory and make it your current directory:
  1077.  
  1078.   $ CREATE/DIR [.KERMIT]
  1079.   $ SET DEFAULT [.KERMIT]
  1080.  
  1081. and put the C-Kermit source files and build procedures there, for example by
  1082. copying them from the distribution tape or cartridge.
  1083.  
  1084. Two build procedures are provided for C-Kermit 6.0; one (CKVOLD.COM) for VMS
  1085. 4.x, the other (CKVKER.COM) for VMS 5.0 and later.  The two are equivalent
  1086. except for syntax, and should work everywhere.  No extra products (MAKE, MMS,
  1087. MMK, etc) are required (but MMS or MMK will be used if present).  The
  1088. auxilliary file CKVKER.MMS is used if MMS or MMK are present.  To build
  1089. C-Kermit:
  1090.  
  1091.    $ @CKVKER  (or @CKVOLD)
  1092.  
  1093. Please read the comments at the top of CKVKER.COM itself for further
  1094. instructions and information.
  1095.  
  1096. NOTE: if you get messages like this in the link step:
  1097.  
  1098.   %LINK-I-OPENIN, Error opening SYS$COMMON:[SYSLIB]VAXCRTLG.OLB; as input,
  1099.   %RMS-E-FNF, file not found
  1100.   %LINK-I-OPENIN, Error opening SYS$COMMON:[SYSLIB]VAXCRTL.OLB; as input,
  1101.   %RMS-E-FNF, file not found
  1102.  
  1103. it probably means you have a LNK$LIBRARY symbol defined in your job (or
  1104. system-wide) and the definition is inappropriate.  DEASSIGN it if possible.
  1105. If not, and if the LINK step produced no other error messages, and the
  1106. WERMIT.EXE binary seems to run OK, then you can ignore the error messages.
  1107.  
  1108.   V.1. PROGRAMMING TIPS
  1109.  
  1110. For testing the DEC C version number:
  1111.  
  1112.   #ifdef __DECC_VER
  1113.   #if (__DEC_VER >= 050100000)
  1114.   blah
  1115.   #endif
  1116.   #endif
  1117.  
  1118. Note: the version number is vvuuteeee; vv is the major version (like 5),
  1119. uu is the update number (like the "3" in 5.3), t is a code for field test,
  1120. real release, etc, and eeee is the edit suffix.  This is available only in
  1121. DECC 5.0 and later.  It also has a __VMS_VER...  Note #2: Remember not to
  1122. add a leading zero because that changes it to octal.
  1123.  
  1124.   V.2. VMS TCP/IP NETWORKING SUPPORT FOR C-KERMIT
  1125.  
  1126. VMS C-Kermit is capable of establishing TCP/IP TELNET connections and acting
  1127. as a TELNET program with built-in file transfer, script programming,
  1128. character-set translation, etc, if it is built appropriately.  If you have one
  1129. of the following products installed on your system, complete with libraries
  1130. and header files:
  1131.  
  1132.   1. DEC TCP/IP (UCX)
  1133.   2. TGV MultiNet TCP/IP
  1134.   3. Wollongong WIN/TCP or PathWay
  1135.   4. Process Software TCPware
  1136.   5. CMU-OpenVMS/IP with Mike O'Malley's sockets library
  1137.  
  1138. then you can include TCP/IP capability in your version of VMS C-Kermit.
  1139.  
  1140. The TCP/IP product is selected automatically by the build procedure based on
  1141. the presence or absence of certain files on your system.  To override the
  1142. automatic selection, define the symbol NET_OPTION in one of the following ways
  1143. before running the build procedure:
  1144.  
  1145.   $ NET_OPTION = "NONET"      ! Build with no TCP/IP networking support
  1146.   $ NET_OPTION = "CMU_TCPIP"  ! Build with CMU/Tek TCP/IP networking support
  1147.   $ NET_OPTION = "DEC_TCPIP"  ! Build with DEC TCP/IP (UCX) support
  1148.   $ NET_OPTION = "MULTINET"   ! Build with TGV MultiNet TCP/IP support
  1149.   $ NET_OPTION = "TCPWARE"    ! Build with Process Software TCPware support
  1150.   $ NET_OPTION = "WINTCP"     ! Build with WIN/TCP or PathWay support
  1151.  
  1152. That is, type one of the commands listed above at the DCL prompt (shown above
  1153. as "$") before running the build procedure.  You can also force a "NONET"
  1154. build with the CKVKER.COM "N" command-line option.
  1155.  
  1156. Note: If you are building a version with TCP/IP support, and you have the
  1157. required TCP/IP libraries and header files, but the #include files can't be
  1158. found at compile time, then maybe they were put into a text library, in which
  1159. case you need to unpack the include-file library into separate files using the
  1160. VMS LIBRARY command.
  1161.  
  1162.   V.2.1. DEC TCP/IP (UCX)
  1163.  
  1164. If the C-Kermit build procedure does not notice that you have DEC TCP/IP
  1165. installed when you really do, it is likely because the file
  1166. SYS$STARTUP:UCX$STARTUP.COM is read-protected (e.g. because your site
  1167. runs DECinspect).  Turn on READONLY privilege.
  1168.  
  1169. If the DEC TCP/IP version of KERMIT.EXE crashes immediately upon startup
  1170. with a message like:
  1171.  
  1172.   %LIB-E-ACTIMAGE, error activating image
  1173.    R4GRIE$DIA0:[SYS0.SYSCOMMON.][SYSLIB]UCX$IPC_SHR.EXE;1
  1174.   -SYSTEM-F-PRIVINSTALL
  1175.  
  1176. it means the system manager has to install the UCX sharable library:
  1177.  
  1178.   INSTALL ADD SYS$SHARE:UCX$IPC_SHR.EXE
  1179.  
  1180.   V.2.2. WOLLONGONG (now Attachmate) TCP/IP
  1181.  
  1182. Wollongong (now Attachmate) support should work for both new (PathWay) and
  1183. older (WIN/TCP) versions, and C-Kermit versions linked under older Wollongong
  1184. versions should still run under the newer version.  But note that the pieces
  1185. of the Wollongong package are now unbundled -- you have to buy the runtime,
  1186. access, API, etc, pieces separately, and (of course) you need the API to
  1187. compile C-Kermit with Wollongong TCP/IP support.
  1188.  
  1189. You can't build VMS C-Kermit with Wollongong TCP/IP support using GCC due to
  1190. the use of "noshare" in the Wollongong header files.
  1191.  
  1192. Reportedly, when building C-Kermit with WIN/TCP support with older versions
  1193. (5.1 and earlier?) of WIN/TCP, the symbol WIN$PERROR is undefined at link
  1194. time and the build fails.  Workaround: change the one reference to
  1195. win$perror(), which occurs in the contti() function in CKVTIO.C, to be
  1196. simply perror().
  1197.  
  1198.   V.2.3. TGV (now Cisco) MULTINET
  1199.  
  1200. If your VAX has the TGV MultiNet TCP/IP networking product, CKVKER.COM
  1201. automatically builds C-Kermit with MultiNet TCP/IP support included.  However:
  1202.  
  1203. . In older (pre-V3.1) MultiNet installations, the header files might not be
  1204.   installed.  Without these, C-Kermit will not build correctly.  The system
  1205.   manager can add Multinet 3.1 programming support by installing MNETLIB031
  1206.   from the Multinet distribution, if licensed to do so.
  1207.  
  1208. . Anyone building the VMS version with certain versions of TGV MultiNet
  1209.   support under VAX C 3.1 might get an error message about conficting
  1210.   definitions of "time_t".  This is because of a conflict between DEC's
  1211.   <types.h> and MultiNet's <types.h> caused because DEC changed the definition
  1212.   between VAX C 3.0 and 3.1.  Kermit can't do anything about this because
  1213.   CKVTIO.C #includes <time.h>, which itself includes <types.h>.  The warning
  1214.   is not fatal.
  1215.  
  1216.   V.2.4. CMU-OpenVMS/IP
  1217.  
  1218. CMU-OpenVMS/IP (CMUIP), originally CMU/Tek-TCP/IP, is a public domain TCP/IP
  1219. package originally developed at Carnegie-Mellon University (CMU) by Tektronix
  1220. (Tek).  CMUIP was released to the public trust in December 1992 as
  1221. CMU-OpenVMS/IP and is now maintained by a diligent group from around the
  1222. Internet.  Support is provided through the usenet group:
  1223.  
  1224.   vmsnet.networks.tcp-ip.cmu-tek
  1225.  
  1226. BSD socket support for C-Kermit is supported thanks to a new CMU-OpenVMS/IP
  1227. socket library written by Mike O'Malley of Digital Equipment Corporation.  If
  1228. you have this library installed on your VMS system, the build procedure will
  1229. find the file CMUIP_ROOT:[SYSLIB]LIBCMU.OLB and C-Kermit will be built
  1230. automatically with CMU-OpenVMS/IP support unless you define NET_OPTION to say
  1231. otherwise.  The LIBCMU socket library can be found on the kermit.columbia.edu
  1232. anonymous ftp server.
  1233.  
  1234.  
  1235. VI - CASE STUDY: ALPHA SETUP AND TEST RESULTS
  1236.  
  1237.   (by Peter Mossel)
  1238.  
  1239. Model number:  DEC3000/400, a workstation with 64MB of memory.
  1240. Ports used:    OPA1: (a MMJ connector for the alternate operator console)
  1241.                TTA1: (a 25-pin male D-connector on the back)
  1242. Operating System:  OpenVMS V1.0
  1243. Firmware:  V1.1
  1244.  
  1245. Upon power-up, the console displays something like:
  1246. ...
  1247. CPU   OK  KN15-BA V1.1-S11A IO20 sV1.0 DECchip 21064 P2.1
  1248. ...
  1249.  
  1250. Testing setup 1:  OPA1:
  1251.  
  1252. +-------+
  1253. |     MMJ--- DECconnect cable ---MMJ H8571-A--- modem cable to PC
  1254. +-------+                            (passive adapter)
  1255.  
  1256. In words, plug a DECconnect cable with MMJ plugs on both ends in the
  1257. alternate console port on the back of the DEC3000/400.  Make sure S3 is
  1258. in the "up" position.  The workstation screen is now the console (OPA0:)
  1259. and the extra port, OPA1:, is available for connecting a terminal or
  1260. printer.  This MMJ plug is the only MMJ plug on the back of this machine.
  1261.  
  1262. My other host for the test is a DECpc 466, a 66MHz i486 with DOS 5.0 and
  1263. MS-DOS Kermit 3.12.  The 466 has 2 serial ports, both 9-pin.  I attached a
  1264. standard 9-pin to 25-pin modem cable (the ones that came into existence with
  1265. the IBM PC/AT which originally had only a 9-pin serial port) to the serial
  1266. port on the 466.
  1267.  
  1268. Now we must join a 25-pin connector and a MMJ connector.  This is done with a
  1269. passive adapter (H8571-A) which converts the RS423 signalling standard
  1270. (balanced TX+ TX- RX+ RX-, DTR, DSR) to RS-232.  All this is fairly standard
  1271. for DEC sites.  Note that when connecting a modem to an MMJ connector, we have
  1272. only a subset of the required modem signals, so this is not supported via MMJ.
  1273. The other port (TTA1) has full modem control.  Note that the DECconnect cable
  1274. always reverses TX and RX, so it effectively functions as a NULL-modem cable.
  1275.  
  1276. Testing setup 2:  TTA1
  1277.  
  1278. +-------+
  1279. |     25-pin D connector --- NULL modem cable to PC
  1280. +-------+                            
  1281. Use the (only) 25-pin D-connector on the back.  Now we need a null modem
  1282. cable (see the Kermit book), and, because my PC has a 9-pin serial
  1283. port, I also need a 9-pin to 25-pin modem cable.
  1284.  
  1285. Testing setup 3:  LAT
  1286.  
  1287. Connect the PC with a standard cable to the terminal server, which speaks
  1288. LAT to my DEC3000/400.  The speed can be set up to 19200 baud with the
  1289. terminal server in use.
  1290.  
  1291. Test script for setup 1 and 2:
  1292.  
  1293. On DEC3000:
  1294. $ kermit
  1295. C-Kermit>set line xxx
  1296.    (where xxx is OPA1 or TTA1)
  1297. C-Kermit>set speed 19200
  1298.  
  1299. On the PC
  1300. C:\kermit
  1301. MS-Kermit>set port 1
  1302. MS-Kermit>set speed 19200
  1303. MS-Kermit>server
  1304.  
  1305. On the DEC3000:
  1306. C-Kermit>get test.fil
  1307. C-Kermit>finish
  1308.  
  1309. On the PC
  1310. MS-Kermit>quit
  1311.  
  1312. Test script for setup 3 (LAT):
  1313. On the PC
  1314. C:\kermit
  1315. MS-Kermit>set port 1
  1316. MS-Kermit>set speed 19200
  1317. MS-Kermit>connect
  1318.  
  1319. [ Now log into DEC3000 as host ]
  1320.  
  1321. $ kermit -x
  1322.  
  1323. [ back to the PC ]
  1324.  
  1325. MS-Kermit>get test.fil
  1326. MS-Kermit>bye
  1327.  
  1328. Results:
  1329.  
  1330. In all three cases, the data transfer speed is excellent.  Over 80% of the
  1331. bandwidth of the communication channel is used for the file transfer,
  1332. sometimes even more.  The DEC3000 is loaded with processes (MOTIF, Sybase
  1333. DBMS, NFS clients and servers,...) and heavy network activity (DECnet, LAT,
  1334. TCP/IP but no characters have ever been lost, even when the DBMS fires up.  No
  1335. special SYSGEN parameters, just configured for a normal workstation with
  1336. MOTIF.
  1337.  
  1338. Notes:
  1339.  
  1340. 1.  Device protection
  1341.  
  1342. In a system like this out of the box, the device protection on TTA1 and
  1343. OPA1 does not allow an unprivileged user to use these lines for DIAL-OUT
  1344. from Kermit.  Thus, the system manager must set every time the system is
  1345. rebooted:
  1346.  
  1347.   $ set protection=w:rwlp/device OPA1: 
  1348.   $ set protection=w:rwlp/device TTA1:
  1349.  
  1350. Without these special protections, a terminal connected to these ports 
  1351. will still be able to login and get the "Username:" prompt.
  1352.  
  1353. 2.  Console device speed
  1354.  
  1355. The Alpha VMS V1.0 cover letter mentions that the command
  1356.  
  1357.   $ set terminal/speed=nnnn/perm/opa1: 
  1358.  
  1359. will have no effect on the speed of OPA1.  In practice, there is no problem
  1360. with Kermit file transfers.  The data just get thru fine and file transfers
  1361. are OK.  The release notes also mention that setting the speed of OPA1 can
  1362. be accomplished by setting the console environment variable "tta1_baud" to the
  1363. desired speed.  See the hardware guide on how to do this.  The problem will be
  1364. fixed in a future release.
  1365.  
  1366. VII - MAKING AND USING VMSINSTAL KITS
  1367.  
  1368. (NOTE: This section is only for future reference, in case it becomes
  1369. practical to distribute VMSINSTAL kits for C-Kermit.  For now, please ignore.)
  1370.  
  1371. (The reason it isn't practical to build VMSINSTAL kits is that they would
  1372. be HUGE -- we have five networking options times two processors (VAX and
  1373. Alpha) times two choices of whether you want to build from the source code
  1374. or accept the included binary, and the resulting kit still would not solve
  1375. the many VMS configuration problems discussed above.)
  1376.  
  1377. After building C-Kermit using one of the procedures outlined above, execute
  1378. the DCL procedure CKVMSI.COM to create a VMSINSTAL kit.  This kit can be
  1379. created either with or without the source code.  In any case, it includes the
  1380. C-Kermit executable program, the C-Kermit help file (for installation in your
  1381. HELP library), plus a sample CKERMIT.INI (C-Kermit initialization) file, and
  1382. release notes.  You may now install C-Kermit using the command:
  1383.  
  1384.   @sys$update:vmsinstal kermit
  1385.  
  1386. It will prompt you for which components you want installed, and where to put
  1387. them.  CKVMSI and CKVKIT were written by Terry Kennedy of Saint Peters College.
  1388.  
  1389. SAMPLE HEADER-FILE EXTRACTION PROCEDURE
  1390.  
  1391. This one is for VAX C, and probably needs a few more files extracted from it
  1392. than are shown below.
  1393.  
  1394. $!
  1395. $! XTRACTHD.COM
  1396. $! By Robert Weiner, Programming PLUS, rweiner@watsun.cc.columbia.edu
  1397. $! FEB-1992
  1398. $! Use this Extract Header command script to extract the VAXC header files
  1399. $! from sys$library:vaxcdef into the current directory inorder to compile
  1400. $! ckermit if you don't have the include files already in sys$library:
  1401. $! You must also modify the CKVKER.COM procedure to include
  1402. $! "CCFLAGS = /INC=([])" for this to work, ie. search current directory too.
  1403. $!
  1404. $ write sys$output "Extracting CKERMIT Include Files into Local Directory..."
  1405. $!
  1406. $lib /log /extract=CTYPE    /output=CTYPE.h        sys$library:vaxcdef.tlb
  1407. $lib /log /extract=DCDEF    /output=DCDEF.h        sys$library:vaxcdef.tlb
  1408. $lib /log /extract=DESCRIP    /output=DESCRIP.h    sys$library:vaxcdef.tlb
  1409. $lib /log /extract=DEVDEF    /output=DEVDEF.h    sys$library:vaxcdef.tlb
  1410. $lib /log /extract=DVIDEF    /output=DVIDEF.h    sys$library:vaxcdef.tlb
  1411. $lib /log /extract=ERRNO    /output=ERRNO.h        sys$library:vaxcdef.tlb
  1412. $lib /log /extract=FILE        /output=FILE.h        sys$library:vaxcdef.tlb
  1413. $lib /log /extract=IN        /output=IN.h        sys$library:vaxcdef.tlb
  1414. $lib /log /extract=INET        /output=INET.h        sys$library:vaxcdef.tlb
  1415. $lib /log /extract=IODEF    /output=IODEF.h        sys$library:vaxcdef.tlb
  1416. $lib /log /extract=JPIDEF    /output=JPIDEF.h    sys$library:vaxcdef.tlb
  1417. $lib /log /extract=LIMITS    /output=LIMITS.h    sys$library:vaxcdef.tlb
  1418. $lib /log /extract=NETDB    /output=NETDB.h        sys$library:vaxcdef.tlb
  1419. $lib /log /extract=RMS        /output=RMS.h        sys$library:vaxcdef.tlb
  1420. $lib /log /extract=SETJMP    /output=SETJMP.h    sys$library:vaxcdef.tlb
  1421. $lib /log /extract=SIGNAL    /output=SIGNAL.h    sys$library:vaxcdef.tlb
  1422. $lib /log /extract=SOCKET    /output=SOCKET.h    sys$library:vaxcdef.tlb
  1423. $lib /log /extract=SSDEF    /output=SSDEF.h        sys$library:vaxcdef.tlb
  1424. $lib /log /extract=STARLET    /output=STARLET.h    sys$library:vaxcdef.tlb
  1425. $lib /log /extract=STAT        /output=STAT.h        sys$library:vaxcdef.tlb
  1426. $lib /log /extract=STDIO    /output=STDIO.h        sys$library:vaxcdef.tlb
  1427. $lib /log /extract=STDLIB    /output=STDLIB.h    sys$library:vaxcdef.tlb
  1428. $lib /log /extract=STRING    /output=STRING.h    sys$library:vaxcdef.tlb
  1429. $lib /log /extract=STSDEF    /output=STSDEF.h    sys$library:vaxcdef.tlb
  1430. $lib /log /extract=SYIDEF    /output=SYIDEF.h    sys$library:vaxcdef.tlb
  1431. $lib /log /extract=TIME        /output=TIME.h        sys$library:vaxcdef.tlb
  1432. $lib /log /extract=TIMEB    /output=TIMEB.h        sys$library:vaxcdef.tlb
  1433. $lib /log /extract=TT2DEF    /output=TT2DEF.h    sys$library:vaxcdef.tlb
  1434. $lib /log /extract=TTDEF    /output=TTDEF.h        sys$library:vaxcdef.tlb
  1435. $lib /log /extract=TYPES    /output=TYPES.h        sys$library:vaxcdef.tlb
  1436. $lib /log /extract=UAIDEF    /output=UAIDEF.h    sys$library:vaxcdef.tlb
  1437. $!
  1438. $! The end
  1439. $!
  1440.  
  1441. (End of file CKVINS.DOC)
  1442.  
  1443.