home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / ckc197.zip / ckvbwr.txt < prev    next >
Text File  |  2000-02-27  |  51KB  |  1,145 lines

  1. CKVBWR.TXT          "Beware File" for C-Kermit Version 7.0        -*- text -*-
  2.  
  3.             (Open)VMS VERSION FOR DEC VAX AND ALPHA
  4.  
  5. Applies to C-Kermit 7.0.197
  6. Last update: 8 February 2000
  7.  
  8. Authors: Frank da Cruz and Christine M. Gianone (Columbia University, NYC);
  9.          Terry Kennedy (Saint Peters College, Jersey City, NJ).
  10.  
  11.   Copyright (C) 1985, 2000,
  12.     Trustees of Columbia University in the City of New York.
  13.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  14.     copyright text in the ckcmai.c module for disclaimer and permissions.
  15.  
  16.  
  17. CONTENTS
  18.  
  19.   1. INTRODUCTION
  20.   1.1. Documentation
  21.   1.2. Technical Support
  22.   1.3. Other Sources of Information
  23.  
  24.   2. THE C-KERMIT COMMAND PARSER
  25.   2.1. Running C-Kermit in DCL Command Procedures
  26.   2.2. Running C-Kermit from ALL-IN-1
  27.   2.3. Running C-Kermit under DECIntact
  28.  
  29.   3. COMMUNICATIONS
  30.   3.1. Serial and LAT Communications
  31.   3.1.1. Dialing
  32.   3.1.2. Speed
  33.   3.1.3. Echoing
  34.   3.1.4. Modem Signals
  35.   3.1.4.1. The SET CARRIER-WATCH Command
  36.   3.1.4.2. The SHOW COMMUNICATIONS Command
  37.   3.1.4.3. The WAIT Command
  38.   3.1.4.4. The HANGUP Command
  39.   3.1.5. Buffering and Flow Control
  40.   3.1.6. LAT
  41.   3.2. Network Communications
  42.   3.2.1. X.25
  43.   3.2.2. TCP/IP
  44.  
  45.   4. GENERAL FAILURES
  46.   5. LOCAL FILE OPERATIONS
  47.  
  48.   6. FILE TRANSFER
  49.   6.1. Automatic Transfer Mode
  50.   6.2. Oddball File Formats
  51.   6.3. Disk Quotas
  52.   6.4. Control-Character (Un)Prefixing
  53.   6.5. External Protocols
  54.   6.6. Miscellaneous
  55.  
  56.   7. OTHER TOPICS
  57.   7.1. Non-DEC Terminal Types
  58.  
  59.  
  60. 1. INTRODUCTION
  61.  
  62. This is the "beware file" for VMS C-Kermit 7.0.  It contains hints and tips
  63. specific to the VMS version of C-Kermit not necessarily found in the manual,
  64. or which developed since the manual was published (Section 1.1 below).
  65. CKCBWR.TXT, contains similar material that applies to all C-Kermit versions:
  66. UNIX, VMS, VOS, etc.  The CKERMIT2.TXT file contains documentation for
  67. features that were added to C-Kermit since the second edition of "Using
  68. C-Kermit" (which corresponded with version 6.0) was published.
  69.  
  70. VMS C-Kermit installation instructions are in the file CKVINS.TXT.  Please
  71. be sure you have read that file before concluding that C-Kermit isn't working
  72. right on VMS.
  73.  
  74. 1.0. TERMINOLOGY
  75.  
  76. "VMS" as used in this document refers to both VMS and OpenVMS on VAX
  77. processors and OpenVMS on Alpha (formerly known as AXP) processors.  Most of
  78. the words in the previous sentence are trademarks (TM) of Digital Equipment
  79. Corporation and/or Compaq Computer Corporation.
  80.  
  81. "DEC" is the way most people refer to Digital Equipment Corporation.
  82.  
  83. Digital Equipment Corporation was acquired in 1998 by Compaq Computer
  84. Corporation, and thus references to Digital Equipment Corporation or DEC
  85. should be interpreted accordingly in light of the evolving integration,
  86. transfer of copyrights and licenses, product renaming, etc.  In this document
  87. we stick with the traditional and familiar nomenclature.
  88.  
  89. There might be contradictory bits of advice in this file (and in the
  90. CKVBWR.TXT file), since much of the information was culled from different
  91. sources at different times.
  92.  
  93. 1.1. DOCUMENTATION
  94.  
  95.   Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Second Edition,
  96.   1997, Digital Press / Butterworth-Heinemann, Woburn, MA, ISBN 1-55558-164-1
  97.   US single-copy price: $44.95; quantity discounts available.  Available in
  98.   computer bookstores or directly from Columbia University:
  99.  
  100.     The Kermit Project
  101.     Columbia University
  102.     612 West 115th Street
  103.     New York NY  10025-7799  USA
  104.     Telephone: +1 (212) 854-3703
  105.     Email: kermit-orders@columbia.edu
  106.     Web: http://www.columbia.edu/kermit/
  107.  
  108.   The CKERMIT2.TXT file contains supplementary info for C-Kermit 7.0 to be
  109.   used until the 3rd edition of the manual is ready.
  110.  
  111. The various supporting online text files were renamed in C-Kermit 7.0 for
  112. better operation with Windows-based Web browsers, which assume that .DOC
  113. files are Microsoft Word documents, etc:
  114.  
  115.  Old Name            New Name
  116.   CKERMIT2.UPD        CKERMIT2.TXT
  117.   CKVKER.BWR          CKVBWR.TXT   (this file)
  118.   CKVINS.DOC          CKVINS.TXT
  119.   etc etc...
  120.  
  121. 1.2. TECHNICAL SUPPORT
  122.  
  123. Please consult the documentation listed above, plus the CKCBWR.TXT file and
  124. this file itself, before submitting questions, reporting problems, etc, to:
  125.  
  126. Email: kermit-support@columbia.edu
  127.  
  128.  News: comp.protocols.kermit.announce          <-- Announcements, moderated
  129.        comp.protocols.kermit.misc              <-- Discussion, unmoderated
  130.  
  131.   Web: http://www.columbia.edu/kermit/         <-- Kermit Project Home Page
  132.        http://www.kermit-project.org/          <-- Alternative Web address
  133.        http://www.columbia.edu/kermit/faq.html <-- Frequently Asked Questions
  134.  
  135.  Post: The Kermit Project
  136.        Columbia University
  137.        612 West 115th Street
  138.        New York NY  10025-7799
  139.        USA
  140.  
  141.  Fax: +1 (212) 663-8202
  142.   or: +1 (212) 662-6442
  143.  
  144. Telephone support also available:
  145.  
  146.   USA Only:  +1 (900) 555-5595, cost: $2.50 per minute
  147.   Anywhere:  +1 (212) 854-5126, cost: $25.00 per call, payable via Visa or MC.
  148.  
  149. 1.3. OTHER SOURCES OF INFORMATION
  150.  
  151. The OpenVMS Frequently Asked Questions (FAQ) document is available at various
  152. sites on the Internet, including:
  153.  
  154.   ftp://ftp.digital.com/pub/Digital/dec-faq/vms
  155.   ftp://rtfm.mit.edu/pub/usenet/news.answers/dec-faq/vms
  156.   http://www.openvms.digital.com/wizard/openvms_faq.txt
  157.  
  158. The following newsgroup is dedicated to discussion of VMS-related topics:
  159.  
  160.   comp.os.vms
  161.  
  162. And this one to more general DEC-related topics:
  163.  
  164.   comp.sys.dec
  165.  
  166.  
  167. 2. THE C-KERMIT COMMAND PARSER
  168.  
  169. VMS-style command-line editing (arrow keys, etc) is not supported.  Kermit
  170. does not use the VMS F$PARSE facility -- it has its own command parser that
  171. lacks certain features of F$PARSE (arrow-key editing, etc) but has many other
  172. features that F$PARSE lacks: context-sensitive "?"-help and file lists,
  173. keyword and filename completion, filename menus, variables, macros, etc.
  174. C-Kermit does, however, support command recall via Ctrl-B and Ctrl-N.
  175.  
  176. If you write a DCL command file that starts Kermit with a command-file name
  177. as its first command-line argument, e.g.:
  178.  
  179.   $ kermit oofa.ksc
  180.  
  181. and then SUBMIT this DCL command file as a batch job, be aware that the
  182. batch job is executed out of your login directory, so if the command file
  183. (OOFA.KSC in this case) is not in your login directory, you must either SET
  184. DEFAULT to the directory it is in, or else give a fully qualified filename:
  185.  
  186.   $ set default [mydir.mysubdir]
  187.   $ kermit oofa.ksc
  188.  
  189. or:
  190.  
  191.   $ kermit [mydir.mysubdir]oofa.ksc
  192.  
  193. Contrary to expectations of VMS users, the MSEND command does NOT use
  194. commas to separate file specifications.  E.g. say this:
  195.  
  196.   C-Kermit>msend ckc*.% cku*.% ckv*.%
  197.  
  198. not this:
  199.  
  200.   C-Kermit>msend ckc*.%, cku*.%, ckv*.%
  201.  
  202. CD (Change Directory) to a DECnet node does not work in VMS C-Kermit.
  203.  
  204. The VMS 6.1 and 6.2 C Run Time Libraries (CRTL) have bugs in them that prevent
  205. the CD command from working totally right when given no argument, which is
  206. supposed to put you back in your login directory, when SYS$LOGIN indicates a
  207. search list and/or hidden directories.  C-Kermit tries to work around this bug
  208. (technical explanation: use CRTL chdir(), which is supposed to do all the
  209. right things; if it fails then use the VMS sys$setddir() system service, which
  210. works in cases where VMS 6.1/6.2 CRTL doesn't, but which applies to your whole
  211. job rather than to Kermit's process tree only, and then when Kermit exits, it
  212. tries to use sys$setddir() again to restore your startup directory -- but if
  213. C-Kermit is interrupted or terminated abnormally this won't work, etc etc.)
  214. If you have trouble with all this, then CD to the desired device:directory
  215. explicitly or define a macro to do this.  (The problem, if it occurs, is in
  216. the library that C-Kermit was linked with, not the one on your VMS system, so
  217. installing ECOs, etc, would not help.)
  218.  
  219. OPEN !WRITE does not work in VMS C-Kermit.
  220.  
  221. VMS C-Kermit does NOT provide program status codes in the normal VMS manner.
  222. Rather, it returns the codes described on pp. 323-324 of "Using C-Kermit", by
  223. assigning them to the symbol CKERMIT_STATUS.  For example, if a RECEIVE
  224. operation failed:
  225.  
  226.   $ show symbol ckermit_status
  227.     CKERMIT_STATUS == "4"
  228.   $
  229.  
  230. Arguments supplied to the EXIT (or QUIT) commands take precedence:
  231.  
  232.   C-Kermit>exit 1234
  233.   $ show symbol ckermit_status
  234.     CKERMIT_STATUS == "1234"
  235.   $
  236.  
  237. If C-Kermit encounters no execution errors, and EXIT (QUIT) is given without
  238. an operand, then:
  239.  
  240.   C-Kermit>exit
  241.   $ show symbol ckermit_status
  242.     CKERMIT_STATUS == "0"
  243.   $
  244.  
  245. You can use the CKERMIT_STATUS symbol as in this DCL example:
  246.  
  247.   $ kermit -s oofa.txt
  248.   $ if ckermit_status .eq. 0 then goto ok
  249.  
  250.  
  251. 2.1. RUNNING C-KERMIT IN DCL COMMAND PROCEDURES
  252.  
  253. It is often desirable to wrap C-Kermit in a DCL command procedure.  Such
  254. a procedure, for example OOFA.COM, can be run either directly on your job's
  255. controlling terminal by:
  256.  
  257.   $ @OOFA [ parameters ]
  258.  
  259. or as a batch job via:
  260.  
  261.   $ SUBMIT OOFA [ switches ]
  262.  
  263. When you are writing a DCL command procedure that runs C-Kermit, you
  264. must make a choice:
  265.  
  266.  1. If you want to be able to include Kermit commands in the DCL procedure as
  267.     "image data" (i.e. lines that don't start with $), then you can NOT
  268.     include any Kermit commands that would require access to the real console
  269.     terminal's keyboard and screen, such as CONNECT.  That is, the person who
  270.     runs the DCL procedure can NOT interact directly with a remote computer.
  271.     This type of DCL command procedure can be run either on a terminal via @,
  272.     or as a batch job via SUBMIT.
  273.  
  274.  2. If you want the user to be able to interact directly with the remote
  275.     computer through Kermit's CONNECT command, then:
  276.  
  277.     (a) The DCL procedure can be run only with @, not with SUBMIT.  That is,
  278.         it cannot be a batch job; it must have access to the console terminal.
  279.  
  280.     (b) You must include the following DCL command in the DCL procedure
  281.         immediately before starting Kermit:
  282.  
  283.         $ DEFINE /USER SYS$INPUT SYS$COMMAND
  284.  
  285.     (c) You can not include Kermit commands as "image data" in the DCL command
  286.         procedure.  Instead, you must create a separate Kermit command file,
  287.         and use command-line arguments to instruct Kermit to execute it; for
  288.         example:
  289.  
  290.         $ define /user/nolog sys$input sys$command
  291.         $! Execute oofa.ksc instead of normal initialization file.
  292.         $ kermit -y oofa.ksc
  293.  
  294.         or:
  295.  
  296.         $ define /user sys$input sys$command
  297.         $! Execute oofa.ksc after executing normal initialization file.
  298.         $ kermit "-C" "take oofa.ksc"
  299.  
  300. Here is a sample DCL command procedure of the first type, which can be run
  301. either on the controlling terminal or as a batch procedure, and requires no
  302. interaction from the user.  Lines beginning with dollar sign ($) are DCL
  303. commands, other lines are fed to the application program (Kermit).
  304.  
  305.   1. $ write sys$output "Hello from DCL"
  306.   2. $ set default [myuserid.mysubdirectory]
  307.   3. $ kermit
  308.   4. set background off
  309.   5. echo Hello from C-Kermit
  310.   6. @ write sys$output "Hello from DCL from inside C-Kermit"
  311.   7. take oofa.ksc
  312.   8. exit
  313.   9. $ write sys$output "All done."
  314.  
  315. (The numbers are not part of the file.)  Lines 1-3 are DCL commands.  Line 3
  316. starts C-Kermit.  Lines 4-8 are C-Kermit commands.
  317.  
  318. Line 4 causes Kermit prompts and commands read as image data from the
  319. remainder of the .COM file to be echoed to the batch log.  Normally this is
  320. not done, and the only material that goes into the batch log is output from
  321. Kermit commands like ECHO (next item).   The SET BACKGROUND OFF command
  322. tells Kermit that even though it is running in batch, it should issue its
  323. prompt and echo its commands.  You can accomplish the same thing by starting
  324. Kermit the "-z" command-line option (line 3 would be "$ kermit -z").
  325.  
  326. Line 5 shows how to enter messages in the batch log.  Line 6 shows
  327. how to run DCL commands from within Kermit (you can use @ (at-sign), !
  328. (exclamation mark), or the word RUN -- all of them are synonyms, followed by
  329. a DCL command).  Line 8 exits from C-Kermit back to DCL.
  330.  
  331. In line 7, C-Kermit is told to execute a script program from another file,
  332. OOFA.KSC.  Script programs to be run during the batch session are best kept in
  333. separate C-Kermit command files because certain commands, notably GOTO, FOR,
  334. WHILE, and XIF, do not work when entered in the interactive command stream.
  335. Here is a sample command file:
  336.  
  337. set take echo on        ; Make Kermit commands appear in the batch log
  338. set take error on       ; This stops execution automatically upon error
  339. set input echo on       ; This makes INPUT material appear in the batch log
  340. set host blah           ; Make a network connection to host "blah"
  341. set file display serial ; Use SERIAL or NONE for the batch log, not FULL or CRT
  342. input 5 login:          ; Wait for a login prompt
  343. output myuserid\13      ; Send my user ID and a carriage return
  344. input 5 Password:       ; Wait for password prompt
  345. output \$(P1)\13        ; Send my password (see below) and a carriage return
  346. input 20 \13\10$\32     ; Wait for system prompt
  347. output kermit\13        ; Start Kermit on host "blah"
  348. input 5 Kermit>         ; Wait for Kermit> prompt
  349. output server\13        ; Put remote Kermit in server mode
  350. in 5 READY TO SERVE...  ; Wait for READY message
  351. get oofa.txt            ; Get a file from the remote server
  352. bye                     ; Terminate the remote session
  353. end                     ; Return to local C-Kermit prompt
  354.  
  355. Note that the commands from a TAKE file are not echoed to the batch log
  356. unless you include SET TAKE ECHO ON.
  357.  
  358. VERY IMPORTANT: Batched login scripts are inherently insecure because the
  359. passwords are visible in plaintext, either in a file or else in the batch
  360. queue entry.  VMS presently offers no secure way that we know of to enter a
  361. password into a batch job.
  362.  
  363. Two very insecure methods can be used:
  364.  
  365.   1. Put the password in the Kermit script file.  The risk here is that
  366.      anybody who gains access to the file, or to the system backup tapes, can
  367.      learn your password on the remote system.
  368.  
  369.   2. Give the password as a parameter to the SUBMIT command when starting the
  370.      batch job, for example:
  371.  
  372.      $ SUBMIT OOFA /NOTIFY /PARAM=("mypassword")
  373.  
  374.      (This sets the DCL parameter P1 to your password on the remote host (for
  375.      further information, give the DCL command "help submit /param").
  376.      Quotation marks are necessary to preserve lowercase letters (important
  377.      when logging in to UNIX hosts).  DCL parameters may be referenced in
  378.      Kermit commands as \$(P1), \$(P2), etc.)  The disadvantage here is that
  379.      the VMS SHOW ENTRY/FULL command displays the parameters from your SUBMIT
  380.      command, making the password visible to (at least) the system operator,
  381.      and (most likely) also to other users, such as members of your group
  382.      (batch queues are, by default, read-accessible by all members of their
  383.      group).
  384.  
  385. Both methods can be made somewhat safer by adjusting the protections on the
  386. files and/or batch queues that will contain sensitive information, but there
  387. can be no guarantees.  Therefore: EXERCISE EXTREME CAUTION with passwords in
  388. login scripts and batch jobs.
  389.  
  390. And please note further that passwords passed in plain text -- as they still
  391. must be in most cases, particularly those involving dialup access -- are
  392. subject to discovery by various other means, including, but not limited to,
  393. wire tapping, Ethernet packet tracing, etc.
  394.  
  395. 2.2. RUNNING C-KERMIT FROM ALL-IN-1
  396.  
  397.   Dr. David Kelly, Australian Environmental Protection Authority
  398.   kellyd@airmoon.epa.nsw.gov.au
  399.  
  400. ALL-IN-1 uses mailboxes (MBX) devices, rather than terminals.  TT: is
  401. reassigned from the user's controlling terminal to a mailbox device.  C-Kermit
  402. uses TT: as its default line device and so doesn't work straight off under
  403. ALL-IN-1.  SYS$INPUT is reassigned to something else again.  SYS$OUTPUT
  404. remains assigned to the user's original terminal line so it can be used to
  405. specify the line device for C-Kermit when called from within ALL-IN-1.  Below
  406. is a script which can be run from ALL-IN-1 which calls C-Kermit to receive a
  407. file.  SYS$OUTPUT is temporarily redefined to stop some guff showing on the
  408. screen.
  409.  
  410. $! RECEIVE_FROM_PC.COM
  411. $!
  412. $! Transfer file from PC into ALL-IN-1 using KERMIT
  413. $! Invoked by TRANSFER_PC_TO_A1.SCP, which is in turn called by the RF
  414. $! option on DT menu.
  415. $!
  416. $ set noon
  417. $ on control_y then goto exit
  418. $
  419. $       tt1=f$trnlnm("sys$output")
  420. $       kermit :== $epa__system:Ckermit
  421. $       define/user sys$input sys$command
  422. $       define sys$output sys$login:del.txt
  423. $       kermit -l 'tt1' -b 9600 -r -a a1file.a1f -q -i
  424. $       deassign sys$output
  425. $       del sys$login:del.txt;
  426. $exit:
  427. $ exit
  428.  
  429. Similarly a file can be sent :
  430.  
  431. $! SEND_TO_PC.COM
  432. $! Transfer document from ALL-IN-1 to the PC
  433. $! invoked by TRANSFER_A1_TO_PC.SCP which is, in turn, called by the
  434. $! SF option on the DT menu
  435. $!
  436. $ set noon
  437. $ on control_y then goto exit
  438. $!
  439. $       write oamailbox "OA GET #CURDOC_FILENAM"
  440. $       @dclmailbox:
  441. $       a1file = "''result'"
  442. $       vmsfile = "A1FILE.A1F"
  443. $       copy/nolog/noconfirm 'a1file' 'vmsfile'
  444. $       kermit :== $epa__system:Ckermit
  445. $       define/user sys$input sys$command
  446. $       tt1=f$trnlnm("sys$output")
  447. $       define sys$output sys$login:del.txt
  448. $       kermit -l 'tt1' -b 9600 -s A1FILE.A1F -q -i
  449. $       deassign sys$output
  450. $       del sys$login:del.txt;
  451. $       if $severity .le. 1 then goto exit
  452. $! if an error occurs, tell ALL-IN-1
  453. $       write oamailbox "OA GET $PC_KERMIT_STATUS=0"
  454. $       @dclmailbox:
  455. $exit:
  456. $ deletex/nolog a1file.a1f;*
  457. $ exit
  458.  
  459. 2.3. RUNNING C-KERMIT UNDER DECINTACT
  460.  
  461. To use C-Kermit in remote mode under DECIntact, you must:
  462.  
  463.  (a) Have C-Kermit 6.1 or later, and:
  464.  (b) Tell it to "set line /share tt:".
  465.  
  466. This might also work with ALL-IN-1 (Section 2.2).
  467.  
  468.  
  469. 3. COMMUNICATIONS
  470.  
  471. (Also see Section V of CKVINS.TXT: "Using Modems" by Richard B. Gilbert.)
  472.  
  473. 3.1. SERIAL AND LAT COMMUNICATIONS
  474.  
  475. If you are experiencing very poor performance on serial connections, use the
  476. VMS command SHOW TERMINAL to make sure that the terminal device has the DMA
  477. (Direct Memory Access) characteristic.  If it does not, try setting it (or
  478. get your system manager to, in case privilege is required):
  479.  
  480.   $ SET TERMINAL device_name /PERMANENT/DMA
  481.  
  482. On some slower VAX models with built-in serial ports, such as the VAXstation
  483. 3100 or MicroVAX-II, receiving files on serial ports at (say) 19200 bps
  484. results in high CPU utilization, slowing down the system for other processes.
  485. This is because on certain systems, such as the VS3100, serial ports interrupt
  486. the CPU every time a character arrives.  Most VMS systems nowadays, however,
  487. support either DMA for serial port i/o, or have their users coming in through
  488. terminal servers.
  489.  
  490. 3.1.1. Dialing
  491.  
  492. If dialing out a serial port does not work at all -- modem ignores commands
  493. sent to it, etc -- make sure the terminal port has the /MODEM characteristic,
  494. e.g.:
  495.  
  496.   $ SET TERMINAL TTA0 /MODEM /PERM
  497.  
  498. Dialing is possible only on LAT devices and on serial ports that have that
  499. have the /MODEM attribute (e.g. "set term tta0 /modem /altypahd /perm").
  500. The modem must be configured for "DSR tracks CD" -- that is, it must not
  501. turn on its DSR signal before the connection is made; otherwise VMS will
  502. hang up on it during the dialing process.  C-Kermit 7.0 and later include
  503. "&S1" in the initialization string for modems that use the AT command set.
  504. If you are modifying init strings or defining your own modem type, be sure
  505. to include this command or the equivalent.
  506.  
  507. If a DIAL or SET SPEED command gives the error:
  508.  
  509.   ?ttbin: sys$qiow: %SYSTEM-F-NOLOG_IO, operation requires LOG_IO privilege
  510.  
  511. then either the user must be given LOG_IO privilege or else the device must be
  512. given the SET_SPEED attribute.  However, note that under certain versions of
  513. VMS the TT2$M_SETSPEED bit in TTY_DEFCHAR2 is not properly propogated to LAT
  514. devices.  It is best to issue the command SET TERM/PERM/SET_SPEED LTA31: at
  515. startup when the LTA31 device is initially created (which, of course, would be
  516. done by a sufficiently privileged account).
  517.  
  518. "How do I dial with C-Kermit and then exit, leaving the connection open so I
  519. can use it from another application?"  Prior to starting Kermit, tell VMS to
  520. set the device to /NOMODEM.  Another possibility is to allocate the line
  521. BEFORE you run C-Kermit.  Ownership is defined as either having a channel
  522. assigned to the device or having allocated the device.  All the channels get
  523. closed when the image exits, but allocation persists.
  524.  
  525. 3.1.2. Speed
  526.  
  527. Prior to C-Kermit 6.0, there was no way to select a serial communications
  528. speed higher than 38400 bps.  In version 6.0, it is possible to SET SPEED
  529. 57600, 76800, and 115200, since these speeds are supported in VMS 6.x and
  530. later.  However, the fact that you can set a particular speed doesn't mean
  531. this will work.  The device might not support it.  In some cases, the device
  532. will actually use the low-order bits of the speed value, because its speed
  533. register is smaller than the codes used for the new higher speeds.
  534.  
  535. 3.1.3. Echoing
  536.  
  537. If you CONNECT to a modem or other device, and see a neverending stream of
  538. messages, the terminal device probably has the /LOCAL_ECHO characteristic.
  539. As of edit 189, C-Kermit attempts to turn off this characteristic
  540. automatically as part of the SET LINE procedure.
  541.  
  542. 3.1.4. Modem Signals
  543.  
  544. A VMS serial communication device has either the /MODEM or else the
  545. /NOMODEM characteristic.  You can view a device's configuration with the
  546. VMS SHOW TERMINAL command, for example:
  547.  
  548.   $ SHOW TERMINAL TTA0:
  549.  
  550. and you can change it with SET TERMINAL, e.g.:
  551.  
  552.   $ SET TERMINAL TTA0: /MODEM
  553.  
  554. When a /MODEM device is opened (e.g. with C-Kermit's SET LINE command), VMS
  555. asserts the DTR signal (assuming the interface and cable support modem
  556. signals), and allows I/O with the device even if the device is not asserting
  557. the CD signal.  However, once the device does assert CD (or, perhaps more
  558. accurately, whenever the phone is "off hook"), VMS requires CD to stay up for
  559. further I/O; if the CD signal goes off, VMS returns a hangup (SS$_HANGUP)
  560. indication.
  561.  
  562. When a /NOMODEM device is opened, VMS does not assert any modem signals,
  563. including DTR, and does not require or test for any modem signals from the
  564. device.  Thus the /NOMODEM is of little use with any kind of data
  565. communication equipment (e.g. modems, terminal servers, multiplexers) that
  566. require DTR (some modems can be configured to ignore DTR, e.g. with AT&D0).
  567.  
  568. On the other hand, /NOMODEM is probably necessary for VMS serial ports that
  569. do not support modem signaling (such as the one on the VAXstation 3100), or
  570. cables that do not contain all the needed wires (such as DEC's MMJ
  571. connector; looks like an RJ45 modular jack, but with an offset tab).  If you
  572. use a /NOMODEM port, the device it is connected to must be configured to
  573. operate without seeing DTR, and in any case C-Kermit will not be able to
  574. detect connection loss.
  575.  
  576. Setting /MODEM or /NOMODEM on a LAT device has no effect on the LAT port
  577. itself, nor, evidently, on VMS -- reportedly, SS$_HANGUP is still reported
  578. when the LAT device hangs up, even when set to /NOMODEM.
  579.  
  580. Although it is within the power of an application such as C-Kermit to switch
  581. the device between /MODEM and /NOMODEM, it is not practical because doing
  582. so hangs up the device.  Thus C-Kermit lets the VMS terminal driver control
  583. the modem signals, and interprets and reacts to indications about modem
  584. signals from VMS as best it can, according to your preferences.
  585.  
  586. 3.1.4.1. The SET CARRIER-WATCH Command
  587.  
  588.   The behavior described below is new to C-Kermit 6.1 Alpha.11.
  589.  
  590. When CARRIER-WATCH is ON or AUTO, C-Kermit checks for carrier at the
  591. beginning of any communications-related command (CONNECT, SEND, GET, FINISH,
  592. INPUT, OUTPUT, etc), and each of these commands fails at any time during its
  593. execution if VMS reports a "data set hangup" (SS$_HANGUP).  Thus, it is
  594. not possible to CONNECT to a modem and type AT commands before the modem has
  595. made a connection if CARRIER-WATCH is ON or AUTO.
  596.  
  597. When CARRIER-WATCH is OFF, the aforementioned checks are not made, and any
  598. SS$_HANGUP errors that occur are ignored.
  599.  
  600. If the device is set to /NOMODEM, all checks for carrier will fail, and the
  601. device will be unusable unless CARRIER-WATCH is OFF.
  602.  
  603. On LAT devices, the initial checks are never made since LAT devices do not
  604. reveal their modem signals to VMS.  SS$_HANGUP errors, however, are treated
  605. as they are for real serial ports.
  606.  
  607. 3.1.4.2. The SHOW COMMUNICATIONS Command
  608.  
  609. As of C-Kermit 6.1 Alpha.10, SHOW COMMUNICATIONS should display modem
  610. signals on both VAX and Alpha when the SET LINE device is a local serial-port
  611. device.  Modem signals are not displayed for LAT devices.
  612.  
  613. 3.1.4.3. The WAIT Command
  614.  
  615. As of C-Kermit 6.1 Alpha.10, the WAIT command (which waits a specified
  616. amount of time for a given set of modem signals to appear on the current SET
  617. LINE device) should work on both VAX and Alpha serial port devices.  It does
  618. not work on LAT devices.
  619.  
  620. 3.1.4.4. The HANGUP Command
  621.  
  622. When used on a serial communication device, the HANGUP command (as well as
  623. the CONNECT-mode escape command, H, and the hangup done by the DIAL command
  624. when DIAL HANGUP is ON) takes at least 3 (three) seconds; perhaps as many as
  625. six.  This is a feature of VMS.
  626.  
  627. If you use the HANGUP command on a /NOMODEM device that is, nevertheless,
  628. connected to a modem, be sure that Kermit has been told to:
  629.  
  630.   SET MODEM HANGUP-METHOD MODEM-COMMAND
  631.  
  632. 3.1.5. Buffering and Flow Control
  633.  
  634. During terminal connection (SET LINE) and file transfer over a serial device,
  635. buffer-overrun or BYTLM-quota-exceeded messages might appear.  It is essential
  636. that any VMS system that needs to use Kermit or any other program to transfer
  637. files over serial devices, especially when long packets or sliding windows are
  638. to be used, be SYSGEN'd with large typeahead buffers, and that user accounts
  639. be given large BYTLM quotas.  See CKVINS.TXT.
  640.  
  641.   Note that LATmaster software (optional as of VMS V5.4-1, mandatory as of
  642.   VMS V5.5) requires a minimum Alt-Typeahead buffer of 2064 bytes.  Thus, you
  643.   may already have increased the size.
  644.  
  645. To get around problems on systems where users have small BYTLM quotas, the
  646. txbufr() routine in CKVTIO.C has been limited to reading 512-byte chunks at a
  647. time from the communication device.  This does not appear to have an adverse
  648. affect on performance.  If it does, a quick fix is to recompile CKVTIO.C,
  649. defining CKV_IO_SIZE to be something bigger, e.g.
  650.  
  651.   /define=("CKV_IO_SIZE=8192")
  652.  
  653. or whatever.  A better fix might be to have txbufr() check the user's
  654. remaining BYTLM quota before doing each read.  But the overhead in doing this
  655. might cancel out the advantage of doing it.
  656.  
  657. The SET FLOW RTS/CTS command is not supported in the VMS version of C-Kermit.
  658. VMS versions prior to 7.0 do not support RTS/CTS (hardware) flow control.
  659. However, RTS/CTS flow control can still be used on LAT ports that support it.
  660.  
  661. VMS flow control is governed by two SET TERMINAL parameters: /TTSYNC and
  662. /HOSTSYNC.  TTSYNC lets the terminal control the flow of data from the host
  663. and HOSTSYNC lets the host control the flow of data from the terminal.  In
  664. general, these are implemented as Xon/Xoff flow control in each direction, but
  665. on LAT and TCP/IP connections, they can also affect the internal networking
  666. protocol, and they can be implemented on the LAT server's serial interface
  667. with any flow control method at all - Xon/Xoff, RTS/CTS, etc.
  668.  
  669. In VMS C-Kermit, SET FLOW XON/XOFF is equivalent to $ SET TERM /HOSTSYNC
  670. /TTSYNC.  There should never be a reason to SET FLOW NONE in VMS -- in fact,
  671. it is almost always a bad idea (see File Transfer section).
  672.  
  673. When C-Kermit is in "remote mode", i.e. it is on the far end of a connection,
  674. and is not establishing a connection itself, it uses your current VMS SET
  675. TERMINAL parameters for flow control during command processing.  During packet
  676. mode, however, it obeys your C-Kermit SET FLOW-CONTROL setting to ensure the
  677. chances of lost data are minimal.
  678.  
  679. When C-Kermit is in "local mode", i.e. it is being used to establish a
  680. connection with SET LINE or TELNET, there are two components to your
  681. connection: the part between your terminal and C-Kermit (call this "Part A"),
  682. and the part between C-Kermit and the remote computer or service that you have
  683. connected to ("Part B").  At all times, the flow control used on Part A is
  684. governed by your VMS SET TERMINAL parameters, and the flow control used on
  685. Part B is always governed by C-Kermit's SET FLOW-CONTROL command.
  686.  
  687. If you are using C-Kermit in local mode to access a remote host to use the
  688. EMACS editor, you might find that the Ctrl-S (Search) and Ctrl-Q (Quote)
  689. commands don't work -- your screen and keyboard "freeze" when you type Ctrl-S,
  690. and Ctrl-Q seems to have no effect (except unfreezing your session after
  691. Ctrl-S).  This means that your VMS command terminal has the /TTSYNC
  692. characteristic; Ctrl-S and Ctrl-Q are being used for flow control between your
  693. terminal and the VMS system -- the remote system and EMACS never see them.
  694. There are two ways around this problem:
  695.  
  696.  1. Tell VMS to SET TERM /NOTTSYNC before starting C-Kermit.  In this case,
  697.     you are in danger of losing data on the connection, particularly if your
  698.     connection to VMS is through a LAT device.
  699.  
  700.  2. Leave the /TTSYNC characteristic in force and use the long forms for the
  701.     EMACS commands: ESC-X Search-Forward and ESC-X Quoted-Insert.  Or assign
  702.     these functions to other EMACS keys in your EMACS initialization file.
  703.  
  704. 3.1.6. LAT
  705.  
  706. It is possible to SET LINE to an LTA (LAT) device, but correct operation is
  707. reportedly dependent on the version of DECserver code and the VMS version, and
  708. which patches have been applied, and of course the way the whole setup is
  709. configured.  More about LAT configuration in CKVINS.TXT.
  710.  
  711. If you use C-Kermit to SET LINE to an LTA device and receive a hangup message
  712. immediately:
  713.  
  714.   contti: ttiosb.status: %SYSTEM-F-HANGUP, data set hang-up
  715.  
  716. then:
  717.  
  718.  . Perhaps the line is already being used on another system that is
  719.    connected to the same terminal server (in this case SET HOST /DTE will
  720.    fail the same way).  Unfortunately LAT has no way to signal this
  721.    condition.
  722.  
  723.  . Make sure you've created an LTA port on your VMS system which is
  724.    mapped to the DECserver port that the modem is connected to.
  725.  
  726.  . Can you use the VMS SET HOST/DTE command to connect to that line?  If you
  727.    get the same error (which you should) there's a configuration problem in
  728.    the DECserver setup for that port, or the devices protection, or your
  729.    privileges or quotas, or somesuch.
  730.  
  731.  . In order for VMS to connect to the dial-out modem, it needs to see the
  732.    carrier detect signal asserted.  If that signal isn't asserted, the server
  733.    will return a "hangup" error on the first character sent to the port.
  734.    C-Kermit's SET CARRIER command has no effect in VMS.
  735.  
  736.  . Additionally, some modems want to see various settings on RTS/CTS and
  737.    DSR/DTR before they will accept input.  If you have a breakout box and
  738.    someone who is skilled at using it, you can usually resolve these problems.
  739.  
  740. C-Kermit puts LAT terminal servers into PASSTHRU mode, which disables their
  741. forward/backward session switch characters.
  742.  
  743. Reportedly, if you have CONNECTed out through a LAT device, the CONNECT-mode
  744. escape command to hang up (<esc-char>U) does not work.  Reason: unknown.
  745. Cure: unknown (The LAT programming interface is very poorly documented).
  746. Workaround: SET LINE <cr> or CLOSE <cr> to close the SET LINE device.
  747.  
  748. Reportedly, although Kermit can SET LINE to a LAT device and work OK, the
  749. same can't be said for a "LAT group" (whatever that is).  The user who
  750. submitted this report said that this problem could be worked around by telling
  751. VMS to SET TERM <blah> /NOALTYPEAHD before starting Kermit (take this one
  752. with a grain of salt).
  753.  
  754. Reportedly, to use C-Kermit with a LAT device under LATmaster, the associated
  755. terminal device must be set /NOREADSYNC.
  756.  
  757. Reportedly, when transferring files TO a VMS system over a LAT connection (for
  758. example, from a PC equipped with PATHWORKS or SuperLAT and MS-DOS Kermit),
  759. packet sizes greater than 255 (some reports say 70!) cannot be used,
  760. irrespective of the VMS SYSGEN parameters regarding MAXBUF, etc.  The problem
  761. seems to lay in the LAT protocol itself, or the particular implementation of
  762. it, whereby applications are not informed of -- and cannot find out -- limits
  763. on transmission.  (And yet, others say they have no problems with file
  764. transfers over LAT connections, even with packet sizes greater than 1000.)
  765.  
  766. 3.2. NETWORK COMMUNICATIONS
  767.  
  768. There is (as yet) no support for initiating connections over DECnet, nor for
  769. VAX/PSI.  Certain types of TCP/IP are supported (including DEC TCP/IP (UCX),
  770. CMU-OpenVMS/IP ("CMU/Tek"), TGV MultiNet, Wollongong WIN/TCP or PathWay,
  771. Process Software TCPware); other types: not yet (e.g. Fusion).
  772.  
  773. 3.2.1. X.25
  774.  
  775. Poor performance has been observed when C-Kermit is receiving files on a
  776. VAX/PSI (X.25) system, attached to a certain X.25 network (Autonet), but not
  777. others, attached via a DSW42 interface: huge numbers of I/O requests drive the
  778. load way up.  Reportedly, "this is due to a VAX PSI feature called
  779. Synchronized Echo Protocol (SEP), which is supposed to coordinate echo by the
  780. X.25 PAD, e.g. when typing ahead.  When disabling this feature, the file
  781. transfers proceed fast and efficient.  This feature is a network-specific X.25
  782. 1"facility" negotiated at call-setup time, not an X.3 parameter (standard or
  783. otherwise) -- Facility Number 66 (decimal, or 42 hex).  It could not even be
  784. set or viewed by the user or the VAX administrator.  It had to be disabled by
  785. the network provider.  I think that most X.25 networks do not even implement
  786. this feature and thus is it not common issue.  In any case, in our situation,
  787. I asked the X.25 network provider to disable this feature, and now C-Kermit is
  788. performing efficiently, but now, of course, echoing (e.g. of material that is
  789. typed ahead) is no longer synchronized."
  790.  
  791. 3.2.2. TCP/IP
  792.  
  793. Reportedly CMU/IP support in C-Kermit 6.1 does not work at all.
  794. Cause and cure unknown.
  795.  
  796. The TCPware version works correctly with TCPware versions 4.1-2 or later;
  797. earlier versions, such 3.1-3, have a bug that can result in failure of
  798. C-Kermit to make network connections, with a message like:
  799.  
  800.  ?contti: network sys$qio: %SYSTEM-F-IVCHAN, invalid I/O channel
  801.  
  802. Process Software recommends upgrading to the current TCPware release.
  803.  
  804. DEC TCP/IP (UCX) 2.0C and earlier, which runs only on VAXes, has a bug that
  805. prevents TCP port lookup by name from working as expected, so if you tell
  806. C-Kermit to "telnet blah" or "set host blah", you'll get a "Connection
  807. refused" error.  If you don't specify a port, Kermit substitutes the service
  808. name "telnet" and then asks UCX to look it up; UCX finds it but erroneously
  809. returns a port number with its bytes swapped (e.g. 5888 instead of 23), and
  810. then Kermit tries to connect to port 5888 on the host; most hosts will refuse
  811. the connection; if they don't, you probably didn't reach a Telnet port anyway.
  812. The workaround is to include a port number (not name) in your command.  Any of
  813. the following will work:
  814.  
  815.   set host blah:23
  816.   set host blah 23
  817.   telnet blah:23
  818.   telnet blah 23
  819.  
  820. A patch was issued after C-Kermit 6.0.192 was released, adding the following
  821. command to VMS C-Kermit versions built on VAXes with UCX:
  822.  
  823.   SET TCP UCX-PORT-BUG { ON, OFF }
  824.  
  825. If you have UCX 2.0C or earlier, and C-Kermit won't make Telnet connections,
  826. tell it to:
  827.  
  828.   SET TCP UCX-PORT-BUG ON
  829.  
  830. In case your version of C-Kermit 6.0 does not have this patch, then use
  831. the workaround of specifying a port number.
  832.  
  833. The previous hint also applies when running UCX versions of C-Kermit under
  834. Wollongong or other TCP/IP products that have a UCX compatibility mode.  If
  835. you get "connection refused", then include the port number in the TELNET or
  836. SET HOST command.
  837.  
  838. The UCX version of Kermit works on MultiNet systems too, because MultiNet
  839. automatically goes into "UCX compatibility mode" when a UCX application is
  840. run.
  841.  
  842. You can also use the non-network version of C-Kermit on a MultiNet system to
  843. make TCP/IP connections as follows:
  844.  
  845. $ telnet/create foo.bar.baz.com
  846. Trying...
  847. TELNET session now connected to _NTY5:
  848. %DCL-I-ALLOC, _$4$NTY5: allocated
  849.  
  850. $ kermit
  851. C-Kermit 6.0.192, OpenVMS AXP
  852. Type ? or HELP for help
  853. C-Kermit>set line telnet_nty
  854. C-Kermit>connect
  855. etc...
  856.  
  857. If you enter the VAX from elsewhere through a TELNET connection, and the VAX
  858. is running CMU-OpenVMS/IP, Fusion, or an early version of DEC TCP/IP (UCX),
  859. you might notice that file transfers into the VAX fail almost immediately.  If
  860. this happens, it is most likely the result of small VMS typeahead buffers.
  861. See CKVINS.TXT for how to increase typeahead buffer sizes, or work around the
  862. problem by telling VMS C-Kermit to ask for smaller packets, for example:
  863.  
  864.   C-Kermit>set receive packet-length 65  ; (Use the longest length that works)
  865.  
  866. When using the CMU-OpenVMS/IP TCP/IP transport, assign the system logical
  867. INET$SERVICE_TELNET_TCP to the telnet port as follows:
  868.  
  869.     $ DEFINE /SYSTEM INET$SERVICE_TELNET_TCP 23
  870.  
  871. This is only required if the -j option is used without specifying a port to use
  872. (e.g. -j host).  If this logical assignment is not made using `-j host' option
  873. will fail with the error:
  874.  
  875.   %CKERMIT-E-FATAL, can't open host connection
  876.  
  877. The default port, hardcoded in C-Kermit, is 23.  Another port may be specified
  878. using the -j option as `-j host:port'.
  879.  
  880. SET INPUT ECHO OFF seems to have no effect when given to VMS C-Kermit and
  881. the INPUT command is reading from the console terminal.
  882.  
  883. 4. GENERAL FAILURES
  884.  
  885. ...can occur for many reasons beyond Kermit's control, many of them related to
  886. VMS system parameters or limits on the user or process: disk quotas, user
  887. pagefile quotas (AUTHORIZE parameter PGFLQUO), system pagefile space filling
  888. up, etc.  See CKVINS.TXT (installation instructions) for details.
  889.  
  890. To increase a user's pagefile quota, tell AUTHORIZE to MODIFY
  891. username/PGFLQUO=number.  The system itself might be running out of pagefile
  892. space, which would cause the system to grind to a halt and eventually crash.
  893. You can check the system pagefiles with SHOW MEMORY/FILE: add up the "Free"
  894. numbers for the [*]*PAGEFILE.SYS files and see if the total is big enough
  895. (there should normally be at least 100K free pages on an active system).  If
  896. not, the system manager would use the procedure @SYS$UPDATE:SWAPFILES to
  897. resize the files.
  898.  
  899. VMS C-Kermit can hang or crash with an "access violation" under certain
  900. conditions when trying to hang up a modem-controlled device that is already
  901. hung up; investigation shows that the hang or crash happens in VMS kernel
  902. space, not in Kermit.
  903.  
  904. Reportedly, on certain VMS configurations (but not others), the following
  905. sequence can cause C-Kermit to crash:
  906.  
  907.   set host somewhere
  908.   connect
  909.   (escape back)
  910.   receive
  911.   Ctrl-C
  912.   connect
  913.  
  914. The problem appears to be in the VMS C library's implementation of signal
  915. handling and longjumps.
  916.  
  917. "Zombie" process can be left behind under certain conditions when a VMS
  918. Kermit server has been sent a BYE command, particularly over a TCP/IP
  919. connection (connection disappears before VMS has a chance to print its
  920. "logged out" message, and now there is nothing to print it on).
  921.  
  922. One user reported "massive failures" when transferring files with VMS C-Kermit
  923. through a particular kind of terminal server.  She had followed all the
  924. directions in the manual, the CKVINS.TXT file, and the CKVBWR.TXT files (as it
  925. was before this item was added).  The terminal server, an Equinox ELG48, uses
  926. TELNET protocol to a DECstation 3000 Model 600 running VMS 6.1 and TGV
  927. MultiNet 3.3.  Later, she reported: "It turned out that upgrading the software
  928. on our terminal server has fixed the problem.  It's so odd that the problem
  929. only occured after we upgraded from VMS V5.5-2 to V6.1, since the terminal
  930. server worked fine before the upgrade.  It's also weird that this terminal
  931. server has always worked fine for our Suns, also.  Here's the details of the
  932. terminal server if you want to keep these details on file: Equinox PBX 20 with
  933. ELG 48 board.  The ELG 48 rev was 2.30.  After upgrading it to V2.33,
  934. everything works fine."
  935.  
  936. 5. LOCAL FILE OPERATIONS
  937.  
  938. As of edit 190, VMS C-Kermit supports append operations: the various logs
  939. (packet, debug, transaction, etc) can be opened in append mode by including
  940. the APPEND keyword after the filename, e.g.:
  941.  
  942.   LOG TRANSACTIONS TRANSACT.LOG APPEND
  943.  
  944. An arbitrary file can be opened for output in append mode:
  945.  
  946.   OPEN APPEND OOFA.TXT
  947.  
  948. and the SET FILE COLLISION APPEND option now works during file transfer.
  949.  
  950. When using append operations:
  951.  
  952.  . Be careful not to append files of different types together, such as a text
  953.    file to an indexed file, or a fixed-record binary file to a text file, etc.
  954.    The result will generally be unusable.
  955.  
  956.  . SET FILE COLLISION APPEND does not work when the FILE TYPE is LABELED.
  957.    This is deliberate: labeled transfers are designed to give you an exact
  958.    copy of the file, including attributes.
  959.  
  960. There is no facility in C-Kermit to distinguish between "overwriting" and
  961. "versioning".  SET FILE COLLISION OVERWRITE always creates a new version in
  962. VMS.
  963.  
  964. BUG: As of this writing, APPEND operations do not use the RMS "first free
  965. byte", and so start on a new block boundary.
  966.  
  967. 6. FILE TRANSFER
  968.  
  969. Remember that VMS file formats are substantially different from those on
  970. UNIX, DOS, Windows, etc.  Be sure to consult the VMS Appendix of "Using
  971. C-Kermit" on this topic, and to find out the special commands and procedures
  972. that apply to VMS.
  973.  
  974. C-Kermit 6.1 Beta has the following problems, which we hope can be resolved
  975. before the final release:
  976.  
  977.  . LABELED mode lacks relative pathname option; directory-tree transfers
  978.    don't work between two VMS systems because they go into LABELED mode
  979.    automatically (THIS ONE SHOULD BE FIXED AS OF BETA.05).
  980.  . Confusion about SET TRANSFER MODE { AUTOMATIC, MANUAL } vs FILE TYPE IMAGE
  981.    (should AUTOMATIC unset IMAGE?  Should IMAGE set MANUAL? ...)
  982.  . Need better error message for failure to receive a file in text mode that
  983.    has lines longer than 32K, or else a way to recover when this happens,
  984.    e.g. by breaking the long line.
  985.  
  986. C-Kermit 6.1 also enables proper transfer of fixed-length-record files with
  987. odd record lengths, and fixes problems with overstrike records in Fortran
  988. Carriage Control files.  These fixes should go a long way towards eradicating
  989. the complaints about files that Kermit-32 could transfer correctly, but
  990. C-Kermit could not.
  991.  
  992. 6.1. Automatic Transfer Mode
  993.  
  994. File transfer modes (TEXT vs BINARY) are set automatically for each file when
  995. sending.  The SET FILE TYPE BINARY and SET FILE TYPE TEXT commands are ignored
  996. when sending files.  So (in C-Kermit 6.1) are filename patterns (SET FILE
  997. PATTERNS).  To force binary-mode transmission, use SET FILE TYPE IMAGE.  See
  998. the VMS appendix of "Using C-Kermit".
  999.  
  1000. One notable consequence of this fact is that if you send a file from VMS
  1001. C-Kermit in IMAGE mode (because it would not be transferred in binary mode
  1002. without this setting), then any attempt to RESEND or REGET it must also be
  1003. done with VMS C-Kermit in IMAGE mode.
  1004.  
  1005. The other aspect of automatic transfer mode is that VMS-to-VMS transfers shift
  1006. automatically into LABELED mode (again, see the manual).  One consequence of
  1007. this is that any "as-name" that you give for the file is ignored.  To defeat
  1008. this, use "set transfer mode manual".
  1009.  
  1010. DEC PATHWORKS file services normally create files in stream mode,  but
  1011. this can be overridden when the file service is created:
  1012.  
  1013.   $ ADMIN/PCSA
  1014.   PCSA> SET FILE_SERVER SERVICE service-name/ATTRIBUTES=SEQUENTIAL_FIXED
  1015.  
  1016. The normal stream files will be treated as TEXT by Kermit.  To transfer
  1017. PATHWORKS files that are really binary, such as executables, use IMAGE mode.
  1018.  
  1019. 6.2. Oddball File Formats
  1020.  
  1021. When sending binary files that have an odd record length, please note that
  1022. these files are actually stored with an even record length on disk.  For
  1023. example, suppose DIR/FULL X.VDM says "fixed-length records, record length 17".
  1024. On disk, the file really has 18-byte records; each 17-byte record is padded
  1025. with a NUL (0) byte to make its length even; this is revealed by DUMP.
  1026. Prior to version 6.1, C-Kermit sent the raw records, INCLUDING THE PADDING.
  1027. In 6.1 and later, odd-length records are sent without padding.
  1028.  
  1029. If a text file is accidentally sent to VMS C-Kermit in binary mode, you can
  1030. fix it afterwards (in recent VMS versions) with a DCL command like:
  1031.  
  1032.  $ SET FILE/ATTRIBUTES=(RFM:STM,LRL:0,MRS:0) filename
  1033.  
  1034. Transfer of VFC (Variable with Fixed Control) files, such as those created
  1035. by DCL, is problematic, since the meaning of the control bytes is defined by
  1036. the application.
  1037.  
  1038. VMS MAIL messages: If you want to download mail messages to a PC (or other
  1039. non-VMS system), select the message of interest using the SELECT and DIRECTORY
  1040. commands within VMS MAIL, then EXTRACT/ALL to extract all the selected
  1041. messages to a normal text file, then use Kermit to SEND this file.  Don't even
  1042. think about trying to transfer your mail file as-is to a non-VMS system; it is
  1043. a complicated indexed file, possibly containing pointers to other files, etc.
  1044.  
  1045. ZIP files: If you have trouble transferring ZIP files into or out of VMS
  1046. using BINARY mode, use IMAGE mode instead (SET FILE TYPE IMAGE).  The same
  1047. applies to binary files created by VMS UNZIP.
  1048.  
  1049. 6.3. Disk Quotas
  1050.  
  1051. Incoming files are rejected if the available space on the disk device is less
  1052. than the size of the file.  However, the user's disk quota is not checked.
  1053. Quota checking could erroneously report that a user couldn't store a file for
  1054. a number of reasons: for example, the user has the EXQUOTA privilege, C-Kermit
  1055. is installed with EXQUOTA privilege (not recommended!), overdraft, etc.
  1056. Because of the large potential for denying a transfer that would fit, the file
  1057. is accepted regardless of the disk quota.  This is consistent with the way
  1058. other VMS utilities work.
  1059.  
  1060. 6.4. Control-Character (Un)Prefixing
  1061.  
  1062. Exercise caution when sending files to VMS when C-Kermit is in remote mode.
  1063. Aside from all the buffering limitations of LAT and VMS (see below), please
  1064. note the following:
  1065.  
  1066.  . On most VMS systems, the controlling terminal MUST have the /TTSYNC
  1067.    and /HOSTSYNC characteristics, even on Telnet connections, or else
  1068.    massive amounts of data can be lost.
  1069.  
  1070.  . There are evidently certain control characters that can not be safely
  1071.    unprefixed when sending to VMS, no matter how far C-Kermit goes to put
  1072.    the job's controlling terminal in "passthrough" mode.  These include:
  1073.  
  1074.       Ctrl-Q  XOFF  17
  1075.       Ctrl-S  XON   19
  1076.       Ctrl-C  ETX    3
  1077.       Ctrl-N  SO    14
  1078.       Ctrl-O  SI    15
  1079.       Ctrl-X  CAN   24
  1080.       Ctrl-Y  EM    25
  1081.  
  1082. As well as 141, 145, 147 (CR, XOFF, XON with their high bits set).  If you
  1083. find file transfers into VMS stalling, it is very likely because one or more
  1084. of the these characters is unprefixed.
  1085.  
  1086. On a related note, Carriage Return (13) and IAC (255) must be prefixed on
  1087. Telnet connections, and Kermit's start-of-packet character (normally SOH,
  1088. ASCII 1) should also be prefixed.  NUL (0) should be prefixed too.
  1089.  
  1090. 6.5. External Protocols
  1091.  
  1092. You can use the ZMODEM SZ and RZ commands as "external protocols" over a
  1093. connection you have established with C-Kermit, to a host or service that
  1094. does not support Kermit protocol.  Start the file transfer on the remote
  1095. end, escape back to C-Kermit, give the SPAWN command, and then (for example):
  1096.  
  1097.   $ define tt xxx:
  1098.   $ rz
  1099.  
  1100. where xxx is the designation of the terminal device (TT or LTA) that you have
  1101. dialed out on.  When the transfer is complete, LOGOUT from the SPAWN'd
  1102. subprocess and you'll be back at the C-Kermit prompt.
  1103.  
  1104. 6.6. Miscellaneous
  1105.  
  1106. The file size shown in the file transfer display when sending a file might
  1107. be incorrect under certain conditions (but the file is still transferred
  1108. correctly).
  1109.  
  1110. Incoming files, if accepted, are always stored as a new file with the next
  1111. highest version number, even when FILE COLLISION is set to OVERWRITE or
  1112. RENAME.
  1113.  
  1114. When you send a BYE command to a VMS C-Kermit server, it does not guarantee
  1115. that the VMS job will be logged out.  If C-Kermit was SPAWN'd from another
  1116. process, only C-Kermit itself disappears in this case.  Even if the whole VMS
  1117. session ends, if the user came in through a LAT terminal server, they will be
  1118. back at the "Local>" prompt and the phone line won't be disconnected.
  1119.  
  1120. When transferring files in LABELED mode, the file transfer display will show
  1121. the name the file was sent as, not the "true" name within the labeled file.
  1122. Also, note that a transfer may fail with an obscure error (can't create output
  1123. file) if there is something incorrect with the label information (for example,
  1124. if you specified that the file should be restored to the original directory
  1125. and you don't have privilege to write to that directory on this system).
  1126.  
  1127. Reportedly, when VMS C-Kermit is in local mode and transferring a file (file
  1128. transfer display is showing) over a MultiNet TCP/IP connection and a broadcast
  1129. from a completing batch job (SUBMIT/NOTIFY) arrives, it crashes C-Kermit with
  1130. %SYSTEM-F-ACCVIO, access violation.  The stack dump shows this occurs in the
  1131. netinc() routine while reading a packet (rpack).
  1132.  
  1133.  
  1134. 7. OTHER TOPICS
  1135.  
  1136. 7.1. Non-DEC Terminal Types
  1137.  
  1138. Non-DEC terminal types are not well supported under VMS.  While it might be
  1139. possible to install a definition for a non-DEC terminal (such as the IBM 3151)
  1140. in the SMG database, very few applications actually use this information.
  1141. Also, although C-Kermit 5x and 6.x used SMG, C-Kermit 7.0 bypasses it entirely
  1142. due to problems discovered during the development cycle.
  1143.  
  1144. (End of CKVBWR.TXT)
  1145.