home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibm370 / ik0ker.mss < prev    next >
Text File  |  2020-01-01  |  113KB  |  2,605 lines

  1. @Part(I370KERMIT,root="kuser")
  2. @string(-ikvrsn="4.3")
  3. @Chapter<IBM 370 KERMIT>
  4. @Begin<Description,Leftmargin +15,Indent -15,spread 0>
  5. @i(Program:)@\John Chandler (Harvard/Smithsonian Center for
  6. Astrophysics); contributions from
  7. Va@ccd()e Kundak@ccd()i and
  8. Daphne Tzoar (Columbia U),
  9. Bob Shields (U. Maryland),
  10. Greg Small (UC Berkeley), Clark Frazier (Harvard
  11. Bus. Sch.), Bob Bolch and Steve Blankinship (Triangle), Ron Rusnak
  12. (U. Chicago), Roger Fajman and Dale Wright (NIH),
  13. Andr@eac() Pirard (U. Li@egr()ge), Pierre Goyette (McGill U.)
  14.  
  15. @i(Language:)@\IBM 370 Assembler
  16.  
  17. @i(Documentation:)@\John Chandler (CfA)
  18.  
  19. @i(Version:)@\@value(-ikvrsn)
  20.  
  21. @i(Date:)@\1993 September
  22. @end<Description>
  23.  
  24. @Index(IBM)
  25. @Index(TTY)@Index(Series/1)@Index(SNA)
  26. Kermit-370 is a family of programs
  27. implementing the KERMIT file transfer
  28. protocol for IBM 370-series mainframes (System/370, 303x, 43xx, 308x,
  29. 3090, @i<etc.>) under a variety of operating systems.
  30. Kermit-370 operates over asynchronous ASCII communication
  31. lines attached to a 3705-style or protocol enveloping 3708
  32. @Index(Front end)
  33. front end (@qq<TTY> or line-mode devices),
  34. to a Series/1 or 4994 running the
  35. Yale ASCII Terminal Communication System or
  36. the IBM 7171 ASCII Device Control Unit or a 9370 with ASCII subsystem
  37. (@qq<SERIES1> devices), to the IBM 3174 protocol converter at level B2.0
  38. @Index(3174)
  39. or higher (@qq<AEA> devices), or
  40. to front-ends with graphics pass-through mode, such as the
  41. Datastream/Leedata 8010 and PCI 1076
  42. (@qq<GRAPHICS> devices).  As of this writing, the pending
  43. implementation of full(er) 7171 compatibility in the program product
  44. SIM3278 has not been completed.  The non-line-mode devices are often
  45. called full-screen devices.
  46. For more details on front ends, see the section SET CONTROLLER.
  47.  
  48. The source is coded in IBM 370 assembly language and is
  49. compatible with the F, VS, and H assemblers.  The code is
  50. divided into sections, some generic and some
  51. specific to an individual operating system.  While the details of
  52. file-system and supervisor interaction vary widely among the systems
  53. available for IBM 370's, the basic features are essentially the same.
  54. This chapter describes the features common to all variants of
  55. Kermit-370, and a separate chapter will deal with the system-specific
  56. details for each variant.
  57.  
  58. IBM 370 systems have some peculiarities that users should be aware
  59. of.  First, these systems are essentially half-duplex;
  60. the communication line must "turn
  61. around" before any data can be sent.
  62. The @qq<TTY> devices are strictly half-duplex,
  63. and even the @qq<SERIES1>, @qq<GRAPHICS>, and @qq<AEA>
  64. devices, although they maintain full-duplex communication with the
  65. terminal, must transmit a block at a time to the mainframe.
  66. The fact that a packet has
  67. been received from the IBM system through a @qq<TTY> device
  68. is no guarantee that it is ready for
  69. a reply; generally, the true indicator of readiness is the
  70. line turnaround character (XON), which the operating system sends
  71. immediately before issuing a read request.  On some systems, however,
  72. it is possible for Kermit to do away with the system-supplied
  73. turnaround and schedule read requests immediately after the
  74. corresponding writes.
  75. It is up to the user to tell the other Kermit how it must conform to
  76. the requirements of the IBM mainframe.
  77.  
  78. @Index(Binary files)@Index(Translation)
  79. A second distinction is that disk files are encoded using
  80. the EBCDIC character set.  Consequently, there are three layers of
  81. character translation on packets exchanged on a @qq(TTY) device.  For
  82. an incoming packet, the outer layer is provided by the
  83. operating system, which translates all characters
  84. from ASCII to EBCDIC.  Kermit-370 must then translate
  85. the packets back to ASCII (the middle layer)
  86. in order to calculate and verify
  87. the checksum.  Data arriving through
  88. a @qq(SERIES1), @qq(GRAPHICS), or @qq(AEA) device are still in
  89. ASCII and therefore bypass the two outer layers.
  90. In any case, Kermit-370 translates text files finally into EBCDIC
  91. (the inner layer)
  92. before storing on disk.
  93. When Kermit-370 sends a file, the opposite translations occur.
  94. The middle-layer tables used by Kermit must be the inverses of the
  95. corresponding outer-layer ones used by the host operating system if
  96. file transfers are to work at all.  If necessary, the system programmer
  97. should add the appropriate SET TATOE/TETOA/TTABLE subcommands (@i<q.v.>)
  98. @Index(Initialization files)
  99. to the global INIT file.  Indeed,
  100. it is usually a good idea to set TTABLE ON in the global INIT
  101. file to force using different built-in sets of tables for the
  102. inner and middle layers whenever the system has @qq(TTY) devices.
  103. The standard 7-bit ASCII-to-EBCDIC translations can be
  104. found in the Appendix or the IBM System/370 Reference Card.
  105. See the section "Translation Tables" for more details.
  106.  
  107. Another distinction of IBM 370's is that they store and retrieve files
  108. as records rather than byte streams.  Records may be either
  109. fixed-length with some sort of padding (as needed) or varying-length
  110. with some sort of (generally hidden) delimiters.  Thus,
  111. Kermit-370 must assemble incoming
  112. data packets into records by stripping off carriage return-linefeed
  113. pairs (CRLF's) and padding with blanks or truncating as needed
  114. @Indexentry(key="Trailing blanks",entry="Trailing blanks.  @i<See> Blanks")
  115. @Indexentry(key="Stripping blanks",entry="Stripping blanks.  @i<See> Blanks")
  116. @Indexsecondary(primary="Blanks",secondary="trailing")
  117. @Indexsecondary(primary="Blanks",secondary="stripping")
  118. and must strip trailing blanks and append CRLF's to
  119. outgoing records.
  120. @Index(Records)@Index(CRLF)@Index(LRECL)@Index(RECFM)
  121. (See the SET FILE TYPE subcommand.)
  122. Further, disk files typically have the records combined into blocks
  123. for efficiency.  One consequence of this form of storage is that files
  124. @Index(File attributes)
  125. @Indexentry(key="Attributes",entry="Attributes.  @i<See> File attributes")
  126. have attributes describing the component records: maximum record
  127. length (LRECL), record format (RECFM), and sometimes block size
  128. @Index(BLKSIZE)
  129. (BLKSIZE).
  130.  
  131. As mentioned before, Kermit-370 is a family of programs.  At present,
  132. only the CMS, TSO, MUSIC, ROSCOE, and CICS variants are operational.
  133. Variants for DOS-4
  134. @Index(DOS-4)
  135. and MTS
  136. @Index(MTS)
  137. have at least reached the "drawing board,"
  138. but no others have even been started as of this writing.
  139. Volunteers are always
  140. welcome to port Kermit-370 to other operating systems or add new
  141. features to the existing family.  Anyone interested should first get
  142. in touch with the Center for Computing Activities at Columbia
  143. University to find out what projects of a similar nature are already
  144. pending (and thereby prevent unnecessary duplication of effort).
  145. There are supplemental files in the Kermit distribution with
  146. explanations of how to go about porting Kermit-370 and how to add
  147. support for new terminal controller types.  For details, refer
  148. to the installation
  149. guide for the variant of your choice.
  150.  
  151. @Section<Translation Tables>
  152.  
  153. Traditionally, IBM mainframe Kermits have translated
  154. 7-bit ASCII characters to 8-bit EBCDIC characters and ignored the
  155. "parity" bit in the process.  Similarly, the 8-bit EBCDIC characters
  156. have been mapped onto 7-bit ASCII, thereby producing many ambiguities
  157. in translating the ASCII files back to EBCDIC.  These ambiguities fall
  158. into two categories: EBCDIC characters not representable in ASCII
  159. have been rendered as ASCII nulls,
  160. and alternate EBCDIC representations of characters such
  161. as the ASCII backslash have been mapped together,
  162. but at least no two 7-bit ASCII characters
  163. are translated into the same EBCDIC character.
  164. The ambiguities
  165. were tolerable in environments where the traditionally non-printable
  166. characters never occurred in text files, but text processing has
  167. increasingly tended to include such characters for mathematical
  168. formulas or for languages other than English.  Ultimately, the
  169. translation tables must become completely invertible, lest information
  170. be lost in the transfer.  There has long been
  171. an option to replace parts of the translation tables via commands from
  172. the user (or imbedded in the INIT files), but such replacements
  173. were always supported locally and were, therefore, basically
  174. non-standard.
  175.  
  176. The concept of standard translations is currently in a state of flux
  177. because of the proliferation of 8-bit code pages and the countervailing
  178. efforts at standardization among groups such as the ISO and Kermit
  179. developers.
  180. In particular, Kermit-370 now supports a
  181. set of EBCDIC and "extended ASCII" code pages with built-in
  182. translation tables and automatic identification of the "ASCII"
  183. transfer character set via Attribute packets.
  184. This facility supports
  185. @Index(Code pages)@Index(Character sets)
  186. @seealso(primary="Code pages",other="Character sets")
  187. files stored using numerous IBM Country Extended Code Pages and permits
  188. transfers using character sets ASCII, ARABIC, CYRILLIC, GREEK, HEBREW,
  189. JAPAN-EUC, KATAKANA, LATIN1, LATIN2, LATIN3, and
  190. THAI.  See Table @ref(-ikchars) for a display of the allowed
  191. combinations of character sets.
  192. @Index<Arabic>@Index<Thai>
  193. @Index<Kanji>@Index<Greek>@Index<Cyrillic>@Index<Hebrew>@Index<Katakana>
  194. See also file ISOK7.TXT in the Kermit distribution
  195. for a somewhat outdated description of the protocol extensions.
  196. Kermit-370 currently supports text files in the following
  197. languages:
  198. @Index(Languages)
  199. Afrikaans, Albanian, Arabic, Bulgarian, Byelorussian, Catalan, Czech, Croatian,
  200. Danish, Dutch, English, Esperanto, Faeroese, Finnish, French, Gaelic,
  201. Galician, German, Greek, Hebrew, Hungarian, Icelandic, Italian, Japanese
  202. (Katakana and Kanji), Lao, Latin, Macedonian,
  203. Maltese, Norwegian, Polish, Portuguese,
  204. Quechua, Romanian, Russian, Serbian, Slovak,
  205. Slovene, Spanish, Swahili, Swedish, Thai, Turkish,
  206. Ukrainian, and Volap@uum()k.
  207. Visual representations of the characters sets may be found in the ISO
  208. register (for transfer) and in various IBM documents, such as S544-3156
  209. "About Type" (for files).
  210.  
  211. Kermit itself normally operates in English, but there are versions
  212. with the interactive messages translated into other languages.  The
  213. currently available languages are Czech, Dutch, Finnish, French,
  214. German, Italian, Polish, Portuguese, Russian, and Spanish.  Special
  215. thanks to Petr Adelsberger, Mauricio Alvarenga, Lorenzo Beltrame,
  216. Janusz Bien, Jose Eduardo de Lucca, Richard Gatersleben, Kauko
  217. Haumalainen, Jaroslaw Kurowski, Roberto Magana, Alberto Rio, Christian
  218. Robert, Gisbert Selke, Karel Smuk, Rob van der Wal, Konstantin
  219. Vinogradov, and Joachim Wlodarz for preparing these translations.  See
  220. the installation guide for details on the alternate-language versions.  There
  221. are no translations yet of the help files, nor of this document.
  222.  
  223. @begin<table,use format>
  224. @tabclear()
  225. @tabset(0.9in,1.5in,2.1in,2.6in,3.2in,3.7in,4.3in,5.0in,5.4in,5.7in,6.0in,6.5in)
  226. @bar()
  227. @blankspace(1)
  228.          @\ @\ @\    @u<Transfer character set>
  229. @blankspace(1)
  230. @=@u<Local>@=ASCII@=ARAB.@=CYR.@=GREEK@=HEB.@=JAPAN@=KATAK.@=L1@=L2@=L3@=THAI@=
  231. @blankspace(1)
  232. @=CP037 @=*@=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  233. @=CP273 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  234. @=CP275 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  235. @=CP277 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  236. @=CP278 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  237. @=CP280 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  238. @=CP281 @= @=  @=  @=  @=  @=*@=  @=**@=  @=  @=  @=
  239. @=CP282 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  240. @=CP284 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  241. @=CP285 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  242. @=CP290 @= @=  @=  @=  @=  @=*@=**@=  @=  @=  @=  @=
  243. @=CP297 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  244. @=CP420 @= @=**@=  @=  @=  @= @=  @=  @=  @=  @=  @=
  245. @=CP424 @= @=  @=  @=  @=**@= @=  @=  @=  @=  @=  @=
  246. @=CP500 @=*@=  @=  @=  @=  @=*@=  @=**@=  @=  @=  @=
  247. @=CP838 @= @=  @=  @=  @=  @= @=  @=  @=  @=  @=**@=
  248. @=CP870 @= @=  @=  @=  @=  @= @=  @=  @=**@=  @=  @=
  249. @=CP871 @= @=  @=  @=  @=  @= @=  @=**@=  @=  @=  @=
  250. @=CP875 @= @=  @=  @=**@=  @= @=  @=  @=  @=  @=  @=
  251. @=CP880 @=*@=  @=**@=  @=  @= @=  @=  @=  @=  @=  @=
  252. @=CP905 @= @=  @=  @=  @=  @= @=  @=  @=  @=**@=  @=
  253. @=CZECH @= @=  @=  @=  @=  @= @=  @=  @=*@=   @=  @=
  254. @=DKOI  @=*@=  @=***@= @=  @= @=  @=  @=  @=  @=  @=
  255. @=EBCDIC@=*@=  *@= @=  @=  @= @= @=***@=  @=  @=  @=
  256. @=H-EBCD@= @=  @=  @=  @=  @=*@=*@=   @= @=   @=  @=
  257. @=KANJI @= @=  @=  @=  @=  @=*@=  @=  @= @=   @=  @=
  258. @caption<Allowed character set combinations in Kermit-370>
  259. @tag<-ikchars>
  260. @begin<text,fill>
  261. @Index<Arabic>@Index<Thai>
  262. @Index<Kanji>@Index<Greek>@Index<Cyrillic>@Index<Hebrew>@Index<Katakana>
  263. All allowed combinations are marked with asterisks, and the preferred
  264. combination in each row or column is the one with the most asterisks.
  265. Whenever a character set is specified, either directly or through an
  266. Attribute packet, the other category of character set is checked to see
  267. if it makes up an allowed combination.  If not, it is forced to the
  268. preferred character set.
  269. @end<text>
  270. @blankspace(1)
  271. @bar()
  272. @end<table>
  273.  
  274. @Index(Translation tables)
  275. As nearly as possible, the tables in
  276. Kermit-370 are
  277. invertible, but all of the character sets reserve many (typically 65)
  278. code points for control characters and leave them officially undefined
  279. and unprintable.  This applies both to IBM code pages and ISO standard
  280. 8-bit character sets.  Although 33 of the controls have widely accepted
  281. mappings, the others do not, and Kermit-370 currently uses those given
  282. in an appendix of IBM's VS/Fortran Reference Manual.  Needless to say,
  283. such translations are arbitrary and may be invalidated by future
  284. decisions at IBM or ISO.  Still, most of the translations are likely
  285. to be stable in the long run.  Table @ref(-ikatoe) shows the current
  286. translation from LATIN1 to EBCDIC, which is likely to be the most
  287. often used.  Other translations, including the reverse ones, may be
  288. displayed using the TDUMP subcommand of Kermit-370.
  289.  
  290. @begin<table,use format>
  291. @tabclear()@tabset(0.6in,0.9in,1.2in,1.5in,1.8in,2.1in,2.4in,2.7in,
  292. 3.0in,3.3in,3.6in,3.9in,4.2in,4.5in,4.8in,5.1in,5.4in)
  293. @bar()
  294. @blankspace(1)
  295. @=  @=-0@=-1@=-2@=-3@=-4@=-5@=-6@=-7@=-8@=-9@=-A@=-B@=-C@=-D@=-E@=-F@=
  296. @blankspace(1)
  297. @=0-@=00@=01@=02@=03@=37@=2D@=2E@=2F@=16@=05@=25@=0B@=0C@=0D@=0E@=0F@=
  298. @=1-@=10@=11@=12@=13@=3C@=3D@=32@=26@=18@=19@=3F@=27@=1C@=1D@=1E@=1F@=
  299. @=2-@=40@=5A@=7F@=7B@=5B@=6C@=50@=7D@=4D@=5D@=5C@=4E@=6B@=60@=4B@=61@=
  300. @=3-@=F0@=F1@=F2@=F3@=F4@=F5@=F6@=F7@=F8@=F9@=7A@=5E@=4C@=7E@=6E@=6F@=
  301. @=4-@=7C@=C1@=C2@=C3@=C4@=C5@=C6@=C7@=C8@=C9@=D1@=D2@=D3@=D4@=D5@=D6@=
  302. @=5-@=D7@=D8@=D9@=E2@=E3@=E4@=E5@=E6@=E7@=E8@=E9@=AD@=E0@=BD@=5F@=6D@=
  303. @=6-@=79@=81@=82@=83@=84@=85@=86@=87@=88@=89@=91@=92@=93@=94@=95@=96@=
  304. @=7-@=97@=98@=99@=A2@=A3@=A4@=A5@=A6@=A7@=A8@=A9@=C0@=4F@=D0@=A1@=07@=
  305. @=8-@=20@=21@=22@=23@=24@=15@=06@=17@=28@=29@=2A@=2B@=2C@=09@=0A@=1B@=
  306. @=9-@=30@=31@=1A@=33@=34@=35@=36@=08@=38@=39@=3A@=3B@=04@=14@=3E@=FF@=
  307. @=A-@=41@=AA@=4A@=B1@=9F@=B2@=6A@=B5@=BB@=B4@=9A@=8A@=B0@=CA@=AF@=BC@=
  308. @=B-@=90@=8F@=EA@=FA@=BE@=A0@=B6@=B3@=9D@=DA@=9B@=8B@=B7@=B8@=B9@=AB@=
  309. @=C-@=64@=65@=62@=66@=63@=67@=9E@=68@=74@=71@=72@=73@=78@=75@=76@=77@=
  310. @=D-@=AC@=69@=ED@=EE@=EB@=EF@=EC@=BF@=80@=FD@=FE@=FB@=FC@=BA@=AE@=59@=
  311. @=E-@=44@=45@=42@=46@=43@=47@=9C@=48@=54@=51@=52@=53@=58@=55@=56@=57@=
  312. @=F-@=8C@=49@=CD@=CE@=CB@=CF@=CC@=E1@=70@=DD@=DE@=DB@=DC@=8D@=8E@=DF@=
  313. @blankspace(1)
  314. @caption<EBCDIC (hexadecimal) code points for LATIN1>
  315. @tag<-ikatoe>
  316. @begin<text,fill>
  317. This table shows the values of the EBCDIC equivalents for the
  318. code points in the LATIN1 character set.  The values are arranged in
  319. LATIN1 collating sequence, and the rows and columns are labeled with
  320. the first and second digits, respectively, of the LATIN1 code points.
  321. For example, LATIN1 code 41 (hex) is upper-case "A", and
  322. the intersection of row "4-" and column "-1" has the value C1 (hex),
  323. which is the EBCDIC code for "A".  Rows "0-", "1-", "8-", and "9-" are
  324. officially undefined in ISO 8859-1 and so, in principle, could be
  325. changed at some future time, especially "8-" and "9-".  Note that
  326. this table uses a format close to that of the TDUMP subcommand and
  327. of the Kermit code itself, but
  328. character-set tables are often displayed with the rows and columns
  329. interchanged.
  330. @end<text>
  331. @blankspace(1)
  332. @bar()
  333. @end<table>
  334.  
  335. Besides converting files for transmission, Kermit-370 must also
  336. @Index(Translation) compensate for the EBCDIC/ASCII translation
  337. performed by some front ends and must, therefore, be able to apply the
  338. exact reverse translations on both input and output.  This is the
  339. "middle layer" of translation described earlier for @qq(TTY) devices.
  340. Consider the fate of a Left Square Bracket character in an inbound
  341. packet on a @qq(TTY) line.  It begins as ASCII code x'5B' (91
  342. decimal), but the front end translates it to EBCDIC before presenting
  343. it to Kermit-370.  In this example, suppose it becomes EBCDIC code
  344. x'4A' (74 decimal) instead of the standard x'AD' (173 decimal).  Then,
  345. Kermit must be primed with a @q(SET TETOA 74 91) so that, when
  346. reconstructing the original ASCII packet, the character becomes x'5B'
  347. again.  Otherwise, the packet checksum will appear invalid.  Kermit
  348. comes with a pair of default tables, but it may be necessary to
  349. customize them, as this example shows.  The following procedure will
  350. reveal any changes needed.  The procedure has two stages: the first is
  351. for any line-mode front end, and the second only for front ends capable
  352. of full 8-bit data transfer.  Note that, although the discussion
  353. refers to hexadecimal values, the Kermit-370 SET subcommands require
  354. decimal numeric arguments.  Also, note that this procedure assumes you
  355. will run Kermit with TTABLE set on; hence, the references to
  356. Kermit-370 tables are to TATOE and TETOA.  If you choose to define
  357. Kermit's file translation to match that of the front end, you should
  358. leave TTABLE set off and remove the T's from the SET subcommands
  359. described below.  This will also turn off the automatic switching of
  360. translation tables according to the Attribute packets received from
  361. the other Kermit.  Under CMS, you must issue a @q(CMS SET INPUT) and
  362. a @q(CMS SET OUTPUT) before starting this procedure.
  363.  
  364. @begin(enumerate,spread 0.5)
  365. Create a file containing all the non-control EBCDIC characters (hex
  366. codes 40-FF) and display the file on any available ASCII terminal
  367. hooked up to the line-mode front end in question.
  368.  
  369. If any printable ASCII character is missing from the display, Kermit
  370. cannot work through this front end (unless you modify the tables in
  371. the front end itself).
  372.  
  373. If any ASCII character appears twice, there is no cause for alarm.
  374.  
  375. If any ASCII character does not appear where it should, according to
  376. Table @ref(-iketoa), a SET TATOE must be added to the system
  377. INIT file.
  378. For example, if EBCDIC code 5F (Not Sign, according to the
  379. Appendix) appears as an ASCII Tilde (7E), but EBCDIC A1 (Tilde)
  380. does not, a SET TATOE 126 95 is required.  Warning: characters
  381. considered unprintable by the front end are likely to be filtered
  382. out entirely when you display the file; do not expect the display
  383. to line up just like Table @ref(-iketoa).
  384.  
  385. Create a file on the mainframe
  386. using an ASCII terminal for input, and enter all 95
  387. printable ASCII characters in collating
  388. sequence.  You can presumably save time by skipping the 52 upper-
  389. and lower-case letters and the 10 digits.
  390.  
  391. Display the file from the previous
  392. step in hexadecimal or other binary form.
  393.  
  394. If any duplicates appear among the 95 characters (or 33, if you have
  395. taken the short cut), Kermit
  396. cannot work through this front end (unless you modify the tables in
  397. the front end).
  398.  
  399. Compare the hexadecimal codes with rows 2-7 of Table @ref(-ikatoe).
  400. If a discrepancy appears, a SET TETOA must be added to the system INIT
  401. file.  For example, if ASCII Left Bracket (5B) appears as EBCDIC
  402. 4A, a SET TETOA 74 91 is needed.  At this point, the first stage is
  403. complete.
  404.  
  405. If 8-bit line-mode file transfer is desired, you must now verify the
  406. extended character set.
  407. Display the file of EBCDIC codes again, this time using a terminal with
  408. extended character set display, or capture the session with a micro
  409. Kermit and display the resulting file in hexadecimal.  If any
  410. code in the range A0-FE does not appear, the front end will
  411. not allow 8-bit Kermit data transfers.  Generate SET TATOE entries
  412. for the entire range, as needed,
  413. just as in the example given for 7-bit codes.
  414. If the front end's translation tables are documented, it may be easier
  415. to work from the manual, but you must be sure that you have tables for
  416. all of the translations that occur on the data path.
  417.  
  418. Create a file of the 95 extended ASCII codes A0-FE, if possible, by
  419. using a terminal capable of transmitting those codes or transmitting
  420. a pre-made file "raw".  If necessary, use the appropriate table(s) in
  421. the manual(s) instead.
  422.  
  423. Again, if any duplicates appear, this front end is incapable of 8-bit
  424. file transfers.  Otherwise, generate SET TETOA entries as before.
  425.  
  426. @end<enumerate>
  427.  
  428. @begin<table,use format>
  429. @tabclear()@tabset(0.6in,0.9in,1.2in,1.5in,1.8in,2.1in,2.4in,2.7in,
  430. 3.0in,3.3in,3.6in,3.9in,4.2in,4.5in,4.8in,5.1in,5.4in)
  431. @bar()
  432. @blankspace(1)
  433. @=  @=0@=1@=2@=3@=4@=5@=6@=7@=8@=9@=A@=B@=C@=D@=E@=F@=
  434. @blankspace(1)
  435. @=4-@= @= @= @= @= @= @= @= @= @= @= @=.@=<@=(@=+@=|@=
  436. @=5-@=&@= @= @= @= @= @= @= @= @= @=!@=$@=*@=)@=;@=^@=
  437. @=6-@=-@=/@= @= @= @= @= @= @= @= @= @=,@=%@=_@=>@=?@=
  438. @=7-@= @= @= @= @= @= @= @= @= @=@q(`)@=:@=#@=@@@=@q(')@==@="@=
  439. @=8-@= @=a@=b@=c@=d@=e@=f@=g@=h@=i@= @= @= @= @= @= @=
  440. @=9-@= @=j@=k@=l@=m@=n@=o@=p@=q@=r@= @= @= @= @= @= @=
  441. @=A-@= @=~@=s@=t@=u@=v@=w@=x@=y@=z@= @= @= @=[@= @= @=
  442. @=B-@= @= @= @= @= @= @= @= @= @= @= @= @= @=]@= @= @=
  443. @=C-@={@=A@=B@=C@=D@=E@=F@=G@=H@=I@= @= @= @= @= @= @=
  444. @=D-@=}@=J@=K@=L@=M@=N@=O@=P@=Q@=R@= @= @= @= @= @= @=
  445. @=E-@=\@= @=S@=T@=U@=V@=W@=X@=Y@=Z@= @= @= @= @= @= @=
  446. @=F-@=0@=1@=2@=3@=4@=5@=6@=7@=8@=9@= @= @= @= @= @= @=
  447. @blankspace(1)
  448. @caption<Character graphics for EBCDIC codes>
  449. @tag<-iketoa>
  450. @begin<text,fill>
  451. This table shows the representations of the EBCDIC codes
  452. arranged in
  453. EBCDIC collating sequence, row by row.
  454. Codes that do not correspond to
  455. ISO 646 characters (7-bit ASCII), have been left blank.  One
  456. special case is the EBCDIC code 5F, which represents a Not Sign in
  457. IBM's CP037, but which is traditionally mapped to the ASCII
  458. Circumflex, as shown here.  WARNING: this manual may have been printed
  459. on a device that maps characters differently.  Consult the Appendix to
  460. verify.
  461. @end<text>
  462. @blankspace(1)
  463. @bar()
  464. @end<table>
  465.  
  466. @Section<File Attributes>
  467.  
  468. Kermit-370 attempts to send and receive file attributes along with
  469. the files themselves.  Before Kermit
  470. receives a file, it compares the Length attribute (if available)
  471. with the amount of disk space available (if known) so that
  472. the file can be rejected if it will not fit.  In addition, the Type,
  473. Access, Encoding, Disposition, and Format attributes, if any, are
  474. interpreted in order to match the received file to the original as
  475. nearly as possible.  All
  476. other attributes (including Date) are simply ignored.
  477. For Type, Kermit recognizes text and binary
  478. specifications; for Access, it recognizes append, normal, and
  479. supersede; for Encoding, it recognizes ASCII, extended, and EBCDIC
  480. (which it treats as binary); for Disposition, it recognizes mail,
  481. print, and job; and for Format, it recognizes text, D-binary,
  482. V-binary, binary, and LRECL.  Any other values are rejected.
  483.  
  484. On sending a file, if the other Kermit is willing to accept
  485. Attribute packets, Kermit-370 sends the Type, Encoding, Format,
  486. Date, and Length attributes (unless some or all of them have
  487. been disabled -- see the SET ATTRIBUTE subcommand).
  488.  
  489. Unfortunately, the set of file attributes defined in the Kermit
  490. protocol is not well matched to the needs of IBM 370 file systems,
  491. so that much of the machinery for creating and interpreting of
  492. Attribute packets is useless.  For example, the "Format"
  493. attribute, which should logically specify the record format of the
  494. received file, gives only the format of the file in transmission
  495. and cannot distinguish between fixed-length and varying-length
  496. records for text files.  This limitation is partly due to the
  497. fact that other Kermits do not generally support the same attributes.
  498. In short, even if the protocol made it possible, some of the
  499. important attributes would never be specified anyway.  Nonetheless,
  500. efforts are being made to extend the protocol to be more
  501. comprehensive.
  502.  
  503. @Section<Program Operation>
  504.  
  505. Kermit-370 can be invoked directly or from a command procedure.
  506. In either case, it reads and executes subcommands sequentially until
  507. directed to quit, and then returns.
  508. A subcommand consists of one or more fields (words) separated by spaces
  509. or commas.
  510.  
  511. @Index(Initialization files)
  512. Upon startup, the program looks for two (optional)
  513. initialization files, one system-wide and a second specific to the
  514. user.  Both @i<filespecs>
  515. are, of course, system-dependent.
  516. The purpose of these files is to allow Kermit to be customized for a
  517. particular system and for a user's specific settings without changing
  518. the source code.
  519. The system-wide file, which is maintained by a systems programmer,
  520. should contain Kermit subcommands
  521. that all users would need to issue in order for
  522. Kermit to run on the system, such as subcommands to modify the
  523. ASCII/EBCDIC tables used by Kermit-370.  The
  524. user-specific file, if any,
  525. should contain subcommands that the user generally
  526. issues every time Kermit is run.  Kermit-370 executes any subcommands
  527. found in these files as though they were typed at the terminal.
  528. Here is a sample INIT file:
  529. @begin(example)
  530. * Asterisk in column one is a comment.
  531. set transfer character-set latin1
  532. set file collision rename
  533. set block 3
  534. @end(example)
  535.  
  536. During interactive execution,
  537. you may use the built-in help feature while typing
  538. Kermit-370 subcommands.  A question mark ("?") typed at almost any point
  539. in a subcommand, followed by a carriage return, produces a brief
  540. description of what is expected or possible at that point.  Moreover,
  541. mistyping a subcommand will generally produce a helpful error message or
  542. a list of possible options at the point of error.  Keywords in such
  543. lists are displayed with the minimum-length abbreviation in upper case
  544. and the remainder, if any, in lower case.  In entering Kermit
  545. subcommands, any keyword may be shortened to any substring that contains
  546. the minimum abbreviation.
  547.  
  548. Besides knowing the mechanics of entering Kermit subcommands and
  549. interpreting responses, the user must understand
  550. which subcommands are necessary.  The
  551. default values for Kermit-370 options have, in some cases, been
  552. constrained by a desire for continuity, so that some of the default
  553. behavior is distinctly "suboptimal."  An example of this is the
  554. traditional 80-byte default RECEIVE packet size, which generally gives
  555. much slower transmission than a size of 1000 or more.
  556. @Index(Initialization files)
  557. Such options are flagged in this chapter with a notation that they
  558. perhaps ought to be set in the INIT files.
  559. Note, however, that the interplay of Kermit protocol sometimes
  560. provides a performance upgrade with no special action required from
  561. the Kermit-370 user.  An example of this is the SEND packet-size,
  562. which is always under the control of the other Kermit.  Kermit-370
  563. always sends packets as long as the other Kermit allows, unless the
  564. frequency of transmission errors indicates that shorter packets
  565. would be more efficient (see the subcommand SET SPEED).
  566.  
  567. Kermit-370 also attempts to produce optimal results by adapting to
  568. the file attributes sent by the other Kermit along with
  569. the files, such as TYPE and LRECL.  Such attributes, when sent by
  570. the other Kermit, temporarily override the current settings in
  571. Kermit-370 during the reception of the associated file.  Potentially
  572. even more importantly, Kermit-370 automatically recognizes the
  573. character set used for the file transfer and chooses, if necessary,
  574. a compatible character set for file storage.  Table @ref(-ikchars)
  575. shows the currently supported list of character sets.  As with
  576. any automatic operation, Kermit's honoring of the transmitted
  577. attributes may need to be suppressed in part or altogether, and the
  578. SET ATTRIBUTE subcommand provides this capability.
  579.  
  580. Another attribute that Kermit-370 supports is file disposition,
  581. @Index(File disposition)@Index(Electronic mail)@Index(Mail)
  582. which allows files to be received and immediately retransmitted
  583. as electronic mail, sent to a printer, or submitted as a
  584. @Index(Printing files)@Index(Submitting jobs)@Index(Batch jobs)
  585. @seealso(primary="Submitting jobs",other="Batch jobs")
  586. @seealso(primary="Mail",other="Electronic mail")
  587. batch job.  These three options are highly site-specific and are
  588. implemented as a set of three host commands with
  589. similar calling sequences.  In each case, the command is invoked
  590. in two different ways in the process of processing the file.  It
  591. is called without any @i(filespec)
  592. or other options as soon as the corresponding attribute is
  593. recognized by Kermit-370.  If the command is not implemented or
  594. for some reason returns a non-zero completion code (such a code
  595. should be negative, if at all possible), Kermit-370
  596. rejects the file using the normal attribute exchange mechanism.
  597. Otherwise, the file is received as usual, and the command is
  598. invoked again at the end-of-file.  The second time, the command is
  599. given the name of the received file and the options received from
  600. the sending Kermit (such as the list of recipients for electronic
  601. mail).  The command is then responsible for disposing of the file (and
  602. deleting it, if desired).  If, for any reason, the file cannot be
  603. sent as required, the command should return a negative completion
  604. code (or non-zero, at any rate), and Kermit-370 will send back an
  605. error message to the sending Kermit.  The command itself should
  606. refrain from issuing any messages of its own or permitting commands that
  607. it invokes to issue messages.
  608. See the beginning of the chapter on the
  609. system-specific variant of Kermit-370 for the exact command
  610. syntax.  Some sample implementations of such commands may be
  611. available in the Kermit distribution -- refer to the system-specific
  612. installation guide for a list of samples.
  613.  
  614. @Section<Kermit-370 Subcommands>
  615.  
  616. The following is a summary of Kermit subcommands.  The starred
  617. subcommands can be issued as
  618. remote Kermit commands to Kermit-370 when it is in
  619. server mode.  System-specific subcommands are omitted from this list.
  620. @Begin(Format,spread 0)
  621. @tabclear()@tabset(1.25inches,1.4inches,1.65inches)
  622. @>BYE@\ @\  logs out other Kermit server.
  623. @>CWD@\*@\  establishes a new working directory.
  624. @>DIRECTORY@\ @\  displays all or part of the disk directory.
  625. @>ECHO@\ @\  a line back to the user.
  626. @>EXIT@\ @\  from Kermit-370.
  627. @>FINISH@\ @\  other Kermit server.
  628. @>GET@\ @\  file(s) from a Kermit server.
  629. @>GIVE@\*@\  creates a TAKE file snapshot of a table.
  630. @>HELP@\ @\  about Kermit-370.
  631. @>HOST@\*@\  executes a system command.
  632. @>KERMIT@\*@\  executes a Kermit subcommand.
  633. @>QUIT@\ @\  from Kermit-370.
  634. @>RECEIVE@\ @\  file(s) from other Kermit.
  635. @>SEND@\ @\  file(s) to other Kermit.
  636. @>SERVER@\ @\  mode of remote operation.
  637. @>SET@\*@\  various parameters.
  638. @>SHOW@\*@\  various parameters.
  639. @>SPACE@\*@\  displays disk storage allocation.
  640. @>STATUS@\*@\  inquiry.
  641. @>STOP@\ @\  easy escape from protocol mode.
  642. @>TAKE@\*@\  subcommands from file.
  643. @>TDUMP@\*@\  dumps the contents of a table.
  644. @>TYPE@\*@\  a file.
  645. @>VERSION@\*@\  of Kermit-370.
  646. @>XECHO@\ @\  echoes a line (transparently).
  647. @>XTYPE@\ @\  displays a file (transparently).
  648. @End(format)
  649.  
  650. @Index(Remote)@Index(Local)
  651. Although Kermit-370 is generally a remote Kermit, it has
  652. the capability of communicating with another Kermit in server mode.
  653. @Indexentry(key="Prefix",entry="Prefix.  @i<See> Command, Eighth-bit, Foreign")
  654. @Indexentry(key="Subcommand prefix",
  655.  entry="Subcommand prefix.  @i<See> Command prefix")
  656. In that situation, the
  657. @Index(Command prefix)
  658. subcommand prefixes REMOTE and LOCAL refer to the Kermit server and
  659. Kermit-370, respectively, even when Kermit-370 is, strictly speaking,
  660. the remote Kermit.  To help avoid confusion, this chapter will often
  661. @Index(Foreign)
  662. use the term "foreign" to apply to the Kermit at the other end from
  663. Kermit-370.  All the above subcommands may be preceded by the
  664. LOCAL prefix, but only certain ones are valid with REMOTE, including
  665. some not shown here.  See the description of the SERVER subcommand
  666. for details.  Any text replies Kermit-370 gets from the foreign
  667. Kermit server are added to a disk file (whose @i<filespec> is,
  668. of course, system-dependent).
  669. Such a transaction can be carried out, for example, under control of
  670. a TAKE file if Kermit-370 is not operating locally.
  671. If the local Kermit has a "magic" character sequence that switches it
  672. from terminal emulation to server mode, then an entire session
  673. could be controlled from the mainframe, possibly in response to a
  674. single command issued by a naive user.  For example,
  675. @Begin(example)
  676. .@ux(grab)
  677.  
  678.      @i(Kermit-370 is invoked and executes the following TAKE file)
  679.  
  680. ECHO Serve Me!        @i(the local Kermit switches to server mode)
  681. GET file.a            @i(the server uploads file.a)
  682. FINISH                @i(the server switches back to terminal mode)
  683. @End(example)
  684.  
  685. The remainder of this section describes
  686. subcommands with special meaning or use in Kermit-370, except
  687. the highly system-dependent ones.  For the latter, refer to the
  688. appropriate chapter.  Subcommands are
  689. listed in alphabetical order.
  690.  
  691. @Heading(The ECHO and XECHO Subcommands)
  692. @Index(ECHO)@Index(XECHO)
  693.  
  694. Syntax:@q< [X]ECHO @i(line)>
  695.  
  696. These subcommands type the @i(line) back at the user.
  697. The @i(line) may contain control characters or any desired
  698. text, including upper or lower case.  These
  699. subcommands may be used, for example, to test the ASCII/EBCDIC translate
  700. tables or to issue coded commands to the user's terminal.
  701. XECHO differs from ECHO primarily in that it sends the text as a
  702. @Index(Raw transmission)raw transmission according to the current
  703. CONTROLLER setting.  Thus, XECHO will, if necessary, break the text
  704. into pieces no larger than the current SEND PACKET-SIZE and will
  705. use transparent mode if CONTROLLER is
  706. @Index(Transparent mode)
  707. SERIES1, GRAPHICS or AEA.  It also offers its own
  708. brand of control-character quoting, using the @qq<^> character to
  709. indicate that only the five low-order bits of the ASCII codes are
  710. to be used.
  711. Thus, @qq(^a), @qq(^A), and @qq(^!) are all translated to SOH (CTRL-A),
  712. while @qq(^[) becomes ESC.  However, there must be one exception for
  713. @qq(^) itself: @qq(^>) and @qq(^~) are both translated to RS
  714. (CTRL-@q<^>), but @qq(^^) becomes just @qq(^).  XECHO also decodes
  715. 8th-bit quoting, just as in Kermit protocol, and this feature can be
  716. disabled by setting 8th-bit quoting off.  For example, if the 8th-bit
  717. quote character is @qq(&), entering the subcommand @qq(XECHO &A) will
  718. transmit a code x'C1', but the same subcommand with quoting off will
  719. transmit two bytes: x'2641'.
  720.  
  721. @Heading<The GET Subcommand>
  722.  
  723. @Index(GET)
  724. @Index(SEND)@Index(RECEIVE)
  725. Syntax:@q< GET [@i(foreign-filespec) [@i(filespec)]]>
  726.  
  727. The GET subcommand tells Kermit to request a file or file group
  728. from the other system, which must have a Kermit running in server mode.
  729. Provided the other Kermit complies, the effect is the same as if
  730. SEND @i(foreign-filespec) had been issued directly to the other Kermit
  731. and RECEIVE [@i(filespec)] to Kermit-370.
  732. If this subcommand is issued without any arguments,
  733. Kermit-370 will prompt the user for both foreign and native
  734. @i<filespecs> (and will insist on getting the former, but will do
  735. without the latter).  See the respective SEND and RECEIVE
  736. subcommands for a description of the each @i<filespec>.
  737.  
  738. @Heading(The GIVE Subcommand)
  739. @Index(GIVE)@Index(Translation tables)
  740.  
  741. Syntax:@q< GIVE @i(table-name) @i(filespec)>
  742.  
  743. This
  744. compares the named translation or selection
  745.  table with its current default values and
  746. saves the differences
  747. in the form of a TAKE file consisting of SET subcommands that would
  748. convert the default into the current arrangement.
  749. ATOE, ETOA, TATOE, and TETOA are the available
  750. translation tables, and CONTROL-CHAR is the selection table.
  751. The details of the @i<filespec> are system-dependent, but those details
  752. will, in general, be the same as for the TAKE subcommand (@i<q.v.>).
  753. In the case of tables ATOE and ETOA, the current defaults are the
  754. values from the most recent character-set definition, if any, but the
  755. defaults for TATOE and TETOA always remain at the initial values.
  756. See the SET FILE CHARACTER-SET and SET TRANSFER CHARACTER-SET
  757. subcommands for more details.
  758.  
  759. @Heading(The HINTS Subcommand)
  760.  
  761. Syntax:@q< HINTS>
  762.  
  763. This subcommand produces a screenful of suggestions for Kermit operation,
  764. including warnings about any current settings that may be undesirable.
  765.  
  766. @Heading(The HOST Subcommand)
  767. @Index(Host commands)
  768.  
  769. Syntax:@q< HOST @i(text of command)>
  770.  
  771. This issues a command to the host operating system from Kermit-370.
  772. When a command returns a non-zero completion code, the
  773. code will be displayed.
  774. Generally, the name of the system (@i<e.g.>, CMS)
  775. is treated as a synonym for the HOST subcommand.
  776.  
  777. When Kermit-370 is in (non-local) server mode, you must avoid
  778. sending it any HOST commands that trigger full-screen terminal I/O,
  779. since the server-client interface does not provide any full-screen
  780. @Index(Full screen)
  781. terminal emulation, nor is Kermit-370 usually able to intercept such
  782. I/O in any case.
  783.  
  784. @Heading(The KERMIT Subcommand)
  785.  
  786. Syntax:@q< KERMIT @i(text of subcommand)>
  787.  
  788. This is provided for redundancy as the counterpart of the
  789. HOST subcommand.  Kermit-370 executes the specified text as a Kermit
  790. subcommand just as if the LOCAL prefix had been entered.  Note, however,
  791. that the specified text must not begin with a second KERMIT prefix.
  792. @Index(Command prefix)
  793.  
  794. @Heading<The RECEIVE Subcommand>
  795.  
  796. @Index(RECEIVE)
  797. Syntax:@q< RECEIVE [@i(filespec)]>
  798.  
  799. The RECEIVE subcommand tells Kermit-370 to accept a file or file group.
  800. The user must issue the corresponding
  801. SEND subcommand to the other Kermit.
  802. When files
  803. are received, their names are recorded in a transaction log in
  804. @Index(Transaction log)
  805. memory and may be viewed later
  806. via the TDUMP NAMES subcommand.  The log contains the names along
  807. with the file sizes and any relevant error messages.
  808. Another form of log may be provided through an accounting exit routine,
  809. which is called at the end of every RECEIVE session.  Such an accounting
  810. log may contain elapsed time and numbers of bytes sent, received, and
  811. transferred to/from disk.
  812. @Index(Incomplete files)
  813. If an error occurs during the file transfer, as much of the file as
  814. was received is saved on disk.  If, however, the sending of a file is
  815. cancelled by the user of the foreign system, Kermit-370 will discard
  816. whatever had arrived, unless FILE COLLISION is APPEND
  817. or INCOMPLETE is KEEP.
  818.  
  819. Kermit-370 has a context-dependent
  820. maximum record length, and received records
  821. longer than that will be folded or
  822. truncated to the proper length; when this happens, Kermit may or may
  823. not stop, depending on the FILE subparameter LONGLINE.  If truncation
  824. does occur, Kermit will later note the fact
  825. as an error (unless something more serious happens in the meantime).
  826. In addition, when a fixed record length is specified, received records
  827. are padded to the correct length.  The padding character is a blank
  828. for text files and a null for binary files.
  829. @Index(Binary files)
  830. Received binary (but not V-binary or D-binary) files are treated as
  831. byte streams and broken up into records all of the logical record
  832. length, @i<i.e.>, folded.
  833. For more details on the RECEIVE
  834. subcommand syntax and operation,
  835. see the chapter on the desired system-specific variant of Kermit-370
  836. under both RECEIVE and SET FILE.
  837. See also (in this chapter) the SET FILE LONGLINE subcommand for details
  838. on record truncation and folding.
  839. @Index(Truncation)@Index(Folding)
  840.  
  841. @Heading<The SEND Subcommand>
  842. @Index(SEND)@Index(Long packets)
  843.  
  844. Syntax:@q{ SEND [@i(filespec)[<@i(options)>] [@i(foreign-filespec)]][, ...]}
  845.  
  846. The SEND subcommand tells Kermit-370 to send a file or file group to the
  847. other (foreign)
  848. Kermit.  If no such file exists, Kermit-370 simply displays an
  849. error message and issues another prompt.
  850. @Index(Transaction log)
  851. Like RECEIVE, SEND keeps a transaction log of all files transferred
  852. in a group and calls the accounting exit routine
  853. at the end of the session.
  854. If this subcommand is issued without any arguments,
  855. Kermit-370 will prompt the user for both native and foreign
  856. @i<filespec>s (and will insist on getting the former, but will do
  857. without the latter).  Either with or without prompting, SEND allows
  858. specifying a list of up to 13 files (or file groups)
  859. separated by commas.
  860. (By ending the command line or subsequent response with a comma, the
  861. user ensures further prompting.)
  862. In this syntax, the @i<options> enclosed in angle brackets may be
  863. regarded as part of the native @i<filespec>.  There must be no
  864. intervening blanks.  At present, the only supported option is a
  865. range of line numbers within the file to be sent.  The range
  866. takes the form [@i(n)][-[@i(m)]], where @i(n) is the number of the
  867. first line to send (counting from 1), and @i(m) is the last.  Omitting
  868. either number implies the corresponding limit is the physical
  869. beginning or end of the file.
  870. This same option syntax may be used in some
  871. commands issued to the foreign Kermit, namely, those involving
  872. @i<filespec>s in 370 form.  In particular,
  873. GET and REMOTE TYPE can use this syntax.
  874. @Index(Type)
  875. Note that a trailing @qq(>) is used by some other Kermits, such as
  876. MS-Kermit, to indicate redirection of the output from REMOTE
  877. commands to disk.  In order to transmit the @qq(>) and also prevent the
  878. redirection to disk, it would be necessary to add an explicit
  879. redirection to the terminal, as in
  880. @example(REM TYPE @i<filespec><@i<n>-@i<m>> > CON)
  881.  
  882. @Index(Cancelling a file transfer)
  883. Although file transfers cannot be cancelled from the 370 side,
  884. Kermit-370 is capable of responding to
  885. "cancel file" or "cancel batch"
  886. signals from the local Kermit;  these are typically entered by typing
  887. CTRL-X or CTRL-Z, respectively.
  888.  
  889. When Kermit-370 sends files using long packets (longer than 94), the
  890. throughput is especially sensitive to the level of noise on the line
  891. because retries are so time-consuming.  Therefore, Kermit-370
  892. imposes an
  893. extra, heuristic size limit on packets when retries have been found
  894. necessary.  When that is the case, after every 15 packets, Kermit
  895. computes the packet size
  896. @Index(Packet size)@Index(Optimum packet size)
  897. for maximum throughput assuming that the
  898. transmission errors were due to sparse, Poisson-distributed noise
  899. bursts.  The result of this calculation is then used as another limit on
  900. the size of outgoing packets besides the one specified by the other
  901. Kermit.  If no retries are required, then Kermit-370 assumes the line to
  902. be noiseless and sends packets of the maximum length the
  903. other Kermit allows.  The algorithm is explained in @i(Kermit News)
  904. V. 3 #1.
  905. For more details on the SEND
  906. subcommand syntax and operation,
  907. see the chapter on the desired system-specific variant of Kermit-370.
  908.  
  909. @Heading<The SERVER Subcommand>
  910. @Index(SERVER)
  911.  
  912. Kermit-370 is capable of acting as a server.  In server mode,
  913. Kermit-370 can send and receive files, execute host commands,
  914. execute a restricted set of Kermit subcommands, and perform a variety of
  915. generic Kermit functions.  The following list shows the typical local
  916. Kermit commands along with the server functions they elicit.
  917. When Kermit-370 is talking to another Kermit running in server mode,
  918. these same subcommands may be used in the other direction.
  919. @begin(format,spread 0)
  920. @tabclear()@tabset(2.0inches)
  921. BYE@\log out the Kermit server.
  922. FINISH@\server mode.
  923. GET@\a file or files from the server.
  924. REMOTE
  925.   COPY@\a file or files.
  926.   CWD@\set new working directory.
  927.   DELETE@\a file or files.
  928.   DIRECTORY@\display file attributes.
  929.   HELP@\display a command summary, such as this.
  930.   HOST@\execute a system command.
  931.   KERMIT@\execute a Kermit-370 subcommand.
  932.   PRINT@\send a file to be printed by the server.
  933.   RENAME@\a file or files.
  934.   SPACE@\display disk space.
  935.   TYPE@\a file.
  936. SEND@\a file or files to the server.
  937. @end(format)
  938.  
  939. If your local Kermit does not support the REMOTE KERMIT command,
  940. you may need to issue SET
  941. subcommands to select various options before typing the SERVER
  942. subcommand.  Once in server mode,
  943. Kermit-370 will await all further instructions from the client Kermit
  944. on the other end of the connection until a FINISH or BYE command is
  945. given.
  946.  
  947. Command execution in server mode is different in some respects
  948. from normal operation.  First of all, some Kermit subcommands
  949. are not allowed (see the list at the beginning of this section).
  950. Moreover, command errors
  951. always terminate any active TAKE file.
  952. Also, all commands will be run in the
  953. special environment that Kermit sets up during protocol transfers.
  954. Among other things, Kermit intercepts all
  955. terminal I/O (if possible) in this environment in order to
  956. transmit the data to the local
  957. Kermit as text packets.
  958.  
  959. Note that some operations can be requested by several different
  960. commands.  If for example, the IBM 370 system has a command @qq(PRT) for
  961. displaying a file, a user interacting with a Kermit-370 server
  962. can choose to display a file by issuing any
  963. @Index(Type)
  964. of the commands: REMOTE TYPE, REMOTE HOST PRT, REMOTE KERMIT TYPE,
  965. REMOTE KERMIT HOST PRT, or (if SYSCMD has been set ON) REMOTE KERMIT
  966. PRT.  The first form simply transfers the
  967. requested file as text, but the others invoke the @qq(PRT) command
  968. with any specified options, intercept the terminal output,
  969. and return the results to the local Kermit.
  970. The first form is also distinguished by the fact that the line range
  971. may be specified in the same manner as in the SEND subcommand.  The
  972. syntax of the others is system-dependent.
  973.  
  974. @Heading<The SET Subcommand>
  975. @Index(SET)
  976.  
  977. Syntax:@q< SET @i(parameter) [@i(value)]>
  978.  
  979. The SET subcommand establishes or modifies various parameters
  980. controlling file transfers.  The values can, in turn, be
  981. examined with the SHOW subcommand.
  982. Some parameters have two levels.  In particular, there are two
  983. matching lists of SEND and RECEIVE sub-parameters corresponding to
  984. the values exchanged by Kermits in the Send-Init/ACK sequence.
  985. For each of these SEND/RECEIVE pairs one element is encoded in
  986. outgoing parameter packets, and the other is decoded from incoming ones.
  987. Setting the latter by hand may be needed to establish contact and also
  988. has the effect of redefining the default value for decoding from
  989. subsequent parameter packets.
  990. Generally, the distinction between SEND and RECEIVE parameters is
  991. unambiguous, the only exception being TIMEOUT (@i<q.v.>).
  992. The following SET
  993. subcommands are available in Kermit-370:
  994. @Begin(Format,spread 0)
  995. @tabclear()@tabset(2.0inches)
  996. ATOE@\Modify the Kermit-370 ASCII-to-EBCDIC table.
  997. ATTRIBUTE@\Determine A-packet generation.
  998. BLOCK-CHECK@\Level of error checking for file transfer.
  999. CONTROLLER@\Indicate type of terminal connection.
  1000. CONTROL-CHAR@\Set prefixing state.
  1001. DEBUG@\Log packet traffic during file transfer.
  1002. DELAY@\Length of pause before a SEND subcommand.
  1003. EOF@\Text file truncation at CTRL-Z.
  1004. ETOA@\Modify the Kermit-370 EBCDIC-to-ASCII table.
  1005. FILE@\Attributes for incoming or outgoing files...
  1006.   CHARACTER-SET@\... for 370 storage.
  1007.   COLLISION@\... treatment for duplicate names.
  1008.   LONGLINE@\... treatment of too-long records.
  1009.   OVERWRITE@\... treatment of attributes.
  1010.   TYPE@\... text or binary.
  1011.   @i(other)@\... system-specific attributes.
  1012. FOREIGN@\Strings added to outgoing filespec...
  1013.   PREFIX
  1014.   SUFFIX
  1015. INCOMPLETE@\Determine the action on an aborted file transfer.
  1016. LINE@\Specify alternate communication line.
  1017. MARGIN@\for sending files...
  1018.   LEFT
  1019.   RIGHT
  1020. PROMPT@\For Kermit-370 subcommands.
  1021. RETRY@\Maximum retry count...
  1022.   INIT@\... for initial packet exchange.
  1023.   PACKET@\... per packet for ongoing transfer.
  1024. SERVER-TIMEOUT@\Spacing between server NAK's.
  1025. SPEED@\Line speed for packet-size calculations.
  1026. SYSCMD@\Try apparently invalid Kermit subcommands on host system.
  1027. TABS-EXPAND@\Determine tab-to-space conversion on reception.
  1028. TAKE
  1029.   ECHO@\Echo subcommands read from TAKE files.
  1030.   ERROR-ACTION@\Exit from TAKE file on command error.
  1031. TEST@\Facilitate testing of Kermit.
  1032. TATOE@\Modify the Kermit-370 ASCII-to-EBCDIC table.
  1033. TETOA@\Modify the Kermit-370 EBCDIC-to-ASCII table.
  1034. TRANSFER@\Options for transmission...
  1035.   CHARACTER-SET@\... of text files.
  1036.   LOCKING-SHIFT@\... protocol extension.
  1037. TTABLE@\Determine which tables undo the terminal translation.
  1038. 8-BIT-QUOTE@\Determine state of 8th-bit prefixing.
  1039. SEND or RECEIVE
  1040.   END-OF-LINE@\Packet terminator.
  1041.   PACKET-SIZE@\Maximum packet size.
  1042.   PAD-CHAR@\Character to insert before each packet.
  1043.   PADDING@\Number of pad characters to insert.
  1044.   PARITY@\Indicate if 7-bit or 8-bit data.
  1045.   QUOTE@\Use to quote control characters in packets.
  1046.   START-OF-PACKET@\Packet beginning marker.
  1047.   TIMEOUT@\Time limit for response.
  1048. @End(format)
  1049.  
  1050. @Subheading<SET ATOE etc.>
  1051. @Index(ASCII-to-EBCDIC)@Index(EBCDIC-to-ASCII)
  1052.  
  1053. Syntax:@q< SET @i(table) [@i(num1) @i(num2)]>
  1054.  
  1055. This modifies one of the ASCII/EBCDIC translation tables
  1056. used by Kermit-370 (for example,
  1057. to conform to your system).  The valid table names are ATOE, ETOA,
  1058. TATOE, and TETOA.  The arguments are, respectively,
  1059. the offset within the named table and
  1060. the new value for that offset.  If the arguments are omitted, the table
  1061. is restored to its initial arrangement.
  1062. Both @i(num1) and @i(num2) should be in the range 0-255 (decimal).
  1063. For example, in ATOE or TATOE, the offset is the
  1064. ASCII character code, and the new value is the new EBCDIC result code.
  1065. Initially, ATOE and TATOE each
  1066. contain two identical copies of the 7-bit ASCII character table.
  1067. Helpful hint: if you have files that make use of extended (8-bit) ASCII
  1068. codes and wish to upload them via Kermit-370, be sure to define unique
  1069. EBCDIC equivalents of all the needed 8-bit ASCII codes or else treat
  1070. such files as binary data.
  1071. @Index(Extended ASCII)
  1072. Any time you use the SET ATOE or SET ETOA subcommands, that has a
  1073. side effect equivalent to SET ATTRIBUTE ENCODING OFF (@i<q.v.>).
  1074. If the extended ASCII character set is one of those supported for file
  1075. transfer in Kermit-370, you need only issue a SET TRANSFER
  1076. CHARACTER-SET (@i<q.v.>).
  1077.  
  1078. Note: the meaning of the tables depends on the TTABLE setting -- if
  1079. TTABLE is OFF, the TATOE and TETOA tables are not used.
  1080.  
  1081. @Subheading<SET ATTRIBUTE>
  1082. @Index(File attributes)
  1083.  
  1084. Syntax:@q< SET ATTRIBUTE [@i(attribute)] ON @i(or) OFF>
  1085.  
  1086. The individual @i(attribute)s are
  1087. LENGTH, TYPE, DATE, CREATOR, ACCOUNT, AREA, PASSWORD, BLOCKSIZE, ACCESS,
  1088. ENCODING, DISPOSITION, PROTECT, ORIGIN, FORMAT, SYS-INFO, and
  1089. BYTE-LENGTH.  Kermit-370 distinguishes between the two forms of this
  1090. subcommand by counting "words".  In order to see the list of supported
  1091. attributes, you must enter @qq(SET ATTR ? ?); if you enter just
  1092. @qq(SET ATTR ?), Kermit will list just the alternatives ON and OFF.
  1093.  
  1094. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1095. ON@\The
  1096. specified attribute is to be processed, or
  1097. attribute packets are generated for all outgoing files, provided
  1098. the other Kermit indicates the ability to accept them.
  1099. (Default).
  1100.  
  1101. OFF@\The specified attribute
  1102. is to be ignored and not generated, or
  1103. attribute packets are never generated.
  1104. @End(Description)
  1105.  
  1106. @Subheading<SET BLOCK-CHECK>
  1107. @Index(Block check)
  1108.  
  1109. Syntax:@q< SET BLOCK-CHECK @i(type)>
  1110.  
  1111. This determines the type of block check used during file transfer,
  1112. provided the other Kermit agrees.  Valid options for @i(type) are:
  1113. 1-byte (for a one-character checksum), 2-byte (for a two-character
  1114. checksum), 3-byte (for a three-character CRC), and Blank-free-2 (for a
  1115. shifted two-character checksum that avoids using blanks.  This is one
  1116. of only two Send-Init parameters that cannot be SET separately for
  1117. SEND and RECEIVE.
  1118.  
  1119. @Subheading<SET CONTROLLER>
  1120. @Index(Series/1)@Index(TTY)@Index(SNA)@Index(Controller)
  1121.  
  1122. Syntax:@q< SET CONTROLLER @i(type)>
  1123.  
  1124. The @i(type) may be TTY, SERIES1, GRAPHICS, AEA, FULLSCREEN, VTAMTTY, or NONE.
  1125. Kermit-370 automatically determines whether you are connected via a
  1126. Series/1 (or similar) emulation controller
  1127. or a TTY line.  In some circumstances, such as when the connection is
  1128. through a non-graphics-capable 3174 port,
  1129. @Index(3174)
  1130. Kermit will set CONTROLLER to NONE, which has the effect
  1131. of disabling file transfers.  This subcommand is provided, though, to
  1132. allow the automatic choice to be superseded, and because Kermit may
  1133. not be able to distinguish between Series/1-type and other
  1134. 3270-emulation controllers.  In particular, there is no way to
  1135. distinguish between FULLSCREEN and GRAPHICS from within Kermit.  When
  1136. CONTROLLER is set to SERIES1, GRAPHICS, or AEA, Kermit disables the
  1137. 3270 protocol conversion function by putting the terminal controller
  1138. into "transparent mode", which allows Kermit packets to pass through
  1139. intact.  Note: an incorrect CONTROLLER setting may lock up or wipe out
  1140. your session when you try to transfer files.
  1141.  
  1142. Kermit operation is possible through an IBM
  1143. @Index(3708)
  1144. 3708 front end, but only in a rather specific
  1145. configuration.  See the installation guide for your variant of
  1146. Kermit-370 for the details of that and other hardware-related
  1147. restrictions and configurations.
  1148.  
  1149. @Subheading<SET CONTROL-CHAR>
  1150. @Index(Control characters)@Index<Prefixing>
  1151.  
  1152. Syntax:@q< SET CONTROL-CHAR @i(mode) [@i(number)]>
  1153.  
  1154. The @i(mode) may be PREFIXED (normal Kermit protocol for control
  1155. characters) or UNPREFIXED.  In the latter case,  the specified control
  1156. character (given as a decimal number in the range 0-31 or 128-159) is
  1157. transmitted "as is".  If the @i(number) is omitted,
  1158. then all control characters are set accordingly.  Kermit-370 automatically
  1159. overrides the user's settings for certain characters used for Kermit
  1160. protocol: the start-of-packet, the end-of-packet, the handshake (if
  1161. set), and XOFF (not really used, but too dangerous to send).  Sending
  1162. control characters without prefixes can speed up transfers of binary
  1163. files.
  1164.  
  1165. The status of prefixing is initially
  1166. "PREFIXED" for all control characters.  It can be displayed by the
  1167. TDUMP CONTROL subcommand, or saved in the form of a TAKE file by the
  1168. GIVE CONTROL subcommand (@i<q.v.>).
  1169.  
  1170. @Subheading<SET DEBUG>
  1171. @Index(Debugging)
  1172.  
  1173. Syntax:@q< SET DEBUG OFF @i(or) ON [RAW] [I/O] [SAVE] [LONG] [TIME]>
  1174.  
  1175. Note: any combination, in any order, of RAW, I/O, SAVE, and TIME may follow
  1176. or replace ON.  Each of the three implies ON.
  1177. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1178. ON@\Keep a journal of all packets sent and received in a log file on
  1179. disk.  If the file already exists, it is erased and overwritten.  The
  1180. @i<filespec> of the log is, of course, system-dependent.  All packets
  1181. are logged in EBCDIC for legibility, even when CONTROLLER is set to
  1182. SERIES1, GRAPHICS, or AEA.
  1183.  
  1184. RAW@\The same as ON, but packets are logged in the form that is passed
  1185. to or from
  1186. the operating system, @i<i.e.>, EBCDIC for TTY or VTAMTTY
  1187. terminals, and ASCII for
  1188. SERIES1, GRAPHICS, and AEA terminals.  This option is generally not
  1189. recommended; I/O is preferable.
  1190.  
  1191. I/O@\The same as ON, but
  1192. the log includes
  1193. additional transmission status information, such as the AID returned
  1194. by a full-screen device.  See below for a summary of the log formats.
  1195.  
  1196. SAVE@\The same as ON, but the log file is closed after each entry is
  1197. added, so that, if the session is abnormally terminated, the log file
  1198. will be complete and readable.
  1199.  
  1200. LONG@\The same as I/O, but the additional information is not
  1201. truncated to 36 bytes.
  1202.  
  1203. TIME@\Used only with I/O or LONG.  The lines of hexadecimal dump are
  1204. tagged with the time of day from the CPU clock, truncated to the
  1205. nearest second.
  1206.  
  1207. OFF@\Stop logging packets and close the the log file.
  1208. (Default.)
  1209. @End(Description)
  1210.  
  1211. Often, problems with Kermit file transfers or server-mode operations can
  1212. be diagnosed by setting DEBUG on in one or both Kermits, regardless of
  1213. where the problems actually lie.  For Kermit-370, the maximum amount of
  1214. information can generally be obtained by setting DEBUG to I/O or LONG,
  1215. but the
  1216. format of the log depends somewhat on which variant of Kermit-370 is
  1217. involved.  Before examining the log, you should set DEBUG OFF either
  1218. explicitly or by exiting from Kermit-370.
  1219.  
  1220. @Index(Dumping storage)
  1221. There is an optional feature for logging dumps of storage blocks
  1222. at selected points in the execution.  By default, this feature is
  1223. disabled (at assembly time) by having the variable symbol &KTRACE set
  1224. to NO and also by virtue of the fact that no calls to the dump routine
  1225. are present in the distribution code.
  1226. Further, the dumps are suppressed unless both DEBUG and TEST
  1227. (@i<q.v.>) are set on.  To select when and what blocks to dump, it is
  1228. necessary to insert calls to KHDMP at appropriate points in the source
  1229. before assembling.  Each such call generates a dump each time it is
  1230. executed, provided that DEBUG and TEST are set, and the contents of all
  1231. registers are preserved.  The
  1232. call specifies the starting address, the length, and a short title for
  1233. the block.  Only eight characters of the title will be used.  Some
  1234. examples:
  1235.  
  1236. @Begin(Description,spread 0.5,leftmargin +26, indent -14)
  1237. @q<KHDMP ATOE+128,128,'ATOEhigh'>@\Dump the 2nd half of the ATOE table.
  1238.  
  1239. @q<KHDMP KHDSAV,20,'R14 - R2'>@\Dump registers 14-2.
  1240.  
  1241. @q<KHDMP 32(,13),40,'**R3-R12'>@\Dump registers 3-12.
  1242.  
  1243. @q<KHDMP (3),(0),'**QBLOCK'>@\Dump block addressed by R3 with length
  1244. specified in R0.
  1245. @End(Description)
  1246.  
  1247. @Index(Tracing execution)
  1248. There is another debugging facility that is enabled by the variable
  1249. symbol &KTRACE along with the dump option, namely, an execution
  1250. trace.  There is a circular buffer of trace elements in Kermit's
  1251. working storage, and a new element is written each time a Kermit
  1252. subroutine is called or returns.  The elements contain the subroutine
  1253. name plus (on entry) a sequence number and the contents of registers
  1254. 0 and 1 or (on exit) the character @qq(>) and the contents of registers
  1255. 15 and 1.  There is also a mechanism for tracing extra events by
  1256. inserting KTRACE calls into the source.  For example,
  1257.  
  1258. @Begin(Description,spread 0.5,leftmargin +26, indent -14)
  1259. @q<KTRACE 0(5),REGS=5>@\Trace eight bytes pointed to by R5 and R5
  1260. itself.
  1261.  
  1262. @q<KTRACE FOOBAR>@\Trace eight bytes at label FOOBAR.
  1263.  
  1264. @q<KTRACE 'Found it',REGS=(1,7)>@\Trace "Found it", R1, and R7.
  1265. @End(Description)
  1266.  
  1267. The trace table is simply updated in storage, eating its own tail.  It
  1268. can be found in a memory dump by locating the "eye-catcher" that says
  1269. @qq(KTRACE:), which precedes the start, current, and end pointers for
  1270. the table.  The table is also accessible interactively via the TDUMP
  1271. subcommand (@i<q.v.>).
  1272.  
  1273. Each line in the debug log begins with a one-letter tag and a colon and
  1274. contains information according to the tag.  The following tags are
  1275. defined.
  1276.  
  1277. @Begin(Description,leftmargin +4,indent -4,spread 0.5)
  1278. S:@\The text of a packet sent.  Normally, it will be encoded in EBCDIC
  1279. for convenience, but if DEBUG is set to RAW, the packet will appear
  1280. exactly as passed to or from the system, i.e., in EBCDIC for TTY or
  1281. VTAMTTY lines and in ASCII for full-screen lines.
  1282.  
  1283. R:@\The text of a packet received.  The same encoding applies.
  1284.  
  1285. A:@\The AID and buffer address returned by a full-screen device along
  1286. with a read operation (three characters in all).  The values should
  1287. all be printable EBCDIC.  This obsolete tag was
  1288. used by TSO and MUSIC Kermits
  1289. and appeared only when DEBUG was set to I/O.
  1290.  
  1291. *:@\Data dumped by the optional KHDMP routine.
  1292. @End(Description)
  1293.  
  1294. The following tags appear only when
  1295. DEBUG is set to I/O or LONG.  All values are in hexadecimal.  The
  1296. meanings differ slightly according to the operating system.  For CMS,
  1297. @Index(CMS)the I/O parameter list is a channel command;
  1298. for TSO or ROSCOE,
  1299. @Index(TSO)@Index(ROSCOE)
  1300. the SVC 93
  1301. (TPUT/TGET)
  1302. @Index(TPUT)@Index(TGET)
  1303. parameters; for CICS, an intermediate string similar to
  1304. channel commands.  Similarly, the status data consist of the stored
  1305. CSW@Index(CSW) plus an attention interrupt indicator for CMS, but the
  1306. return code from the I/O operation for TSO, ROSCOE, CICS, and MUSIC.
  1307. @Index(CICS)@Index(MUSIC)
  1308.  
  1309. @Begin(Description,leftmargin +4,indent -4,spread 0.5)
  1310. a:@\Channel and device status after an unexpected attention interrupt.
  1311.  
  1312. b:@\I/O parameter list for recovering from a CP break-in on screen.
  1313.  
  1314. c:@\I/O parameter list for resuming normal screen operation.
  1315.  
  1316. d:@\Data transferred on the previously indicated I/O operation.
  1317.  
  1318. e:@\Status data after an I/O command has completed with an error.
  1319.  
  1320. g:@\I/O parameter list for reading from the screen buffer.
  1321.  
  1322. i:@\Status data after an I/O command has completed normally.
  1323.  
  1324. m:@\I/O parameter list for displaying text on the screen.
  1325.  
  1326. o:@\I/O parameter list for initializing the screen for transfers.
  1327.  
  1328. r:@\I/O parameter list for reading from the terminal.
  1329.  
  1330. w:@\I/O parameter list for a transparent write.
  1331.  
  1332. ?:@\I/O parameter list for some other operation, such as clearing the
  1333. screen.
  1334. @End(Description)
  1335.  
  1336. @Subheading<SET DELAY>
  1337. @Index(SEND delay)
  1338.  
  1339. Syntax:@q< SET DELAY @i(number)>
  1340.  
  1341. Normally, Kermit-370 waits 10 seconds after the SEND subcommand before
  1342. starting the transfer, but this delay may be set to any non-negative
  1343. value.  Two DELAY values have special meaning.  When DELAY is 1, the
  1344. usual two-line greeting displayed during protocol mode is
  1345. abbreviated to a short message (the default
  1346. Kermit prompt with three dots...),
  1347. and when DELAY is 0, the greeting is suppressed entirely, along with
  1348. the extra one-second pause for subcommands like
  1349. RECEIVE, SERVER, REMOTE, and the like.
  1350.  
  1351. @Subheading<SET EOF>
  1352. @Index(File truncation)@Index(End of file)
  1353. @seealso(primary="Truncation",other="File truncation")
  1354.  
  1355. Syntax:@q< SET EOF ON @i(or) OFF>
  1356. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1357. ON@\Scan each incoming TEXT file for the first
  1358. occurrence of CTRL-Z and ignore the remainder of the file (but
  1359. continue decoding up to the actual end of the file).  BINARY files
  1360. are not affected.
  1361.  
  1362. OFF@\Accept incoming files in their entirety.
  1363. (Default.)
  1364. @End(Description)
  1365.  
  1366. @Subheading<SET FILE CHARACTER-SET>
  1367. @Index(Character sets)
  1368.  
  1369. Syntax:@q< SET FILE CHARACTER-SET @i(name)>
  1370.  
  1371. Specifies the name of the character set used in files stored on disk.
  1372. This setting may be superseded by an Attribute packet of an incoming
  1373. file.  Currently, the available names are CP037, CP273, CP275, CP277,
  1374. CP278, CP280, CP281, CP282, CP284, CP285, CP290, CP297, CP420, CP424, CP500,
  1375. CP838, CP870, CP871, CP875, CP880, CP905, CP1047, CZECH, DKOI, EBCDIC,
  1376. H-EBCDIK-DASH, and KANJI (or FUJITSU-KANJI, HITACHI-KANJI, or
  1377. IBM-KANJI).  The names beginning with CP refer to IBM code pages,
  1378. @Index<Kanji>@Index<Cyrillic>
  1379. while DKOI is the Cyrillic standard GOST 19768-87 used in the USSR,
  1380. CZECH is a character set sometimes used in Czechoslovakia, and EBCDIC
  1381. (the default) is the traditional @i<de facto> standard EBCDIC
  1382. character set.  A character set other than the default may be required
  1383. by local conventions and, if so, should be specified in the system or
  1384. user INIT files.  See Table @ref<-ikchars> for the allowed
  1385. combinations of transfer and file character sets.  Explicitly setting
  1386. this option has a side effect equivalent to issuing SET ATTRIBUTE
  1387. ENCODING ON (@i<q.v.>).
  1388.  
  1389. The name KANJI is actually just an alias for the local preferred
  1390. proprietary Kanji code (Fujitsu, Hitachi, or IBM).  The various Kanji
  1391. character sets have two-byte codes (DBCS), but are used with one-byte
  1392. code pages (SBCS) as well.  It is normally necessary to issue two SET
  1393. FILE CHARACTER-SET SUBCOMMANDS in order to set up for a DBCS: first,
  1394. selecting a compatible SBCS, and, second, selecting the DBCS itself.
  1395. If the current SBCS is incompatible with the selected DBCS, a default
  1396. will be chosen.  This default, along with the choice of the particular
  1397. proprietary character set associated with the alias KANJI, is
  1398. chosen by the installer.
  1399.  
  1400. @Subheading<SET FILE COLLISION>
  1401. @Index(Filename collision)
  1402. @Indexentry(key="Collision",entry="Collision.  @i<See> Filename collision")
  1403.  
  1404. Syntax:@q< SET FILE COLLISION @i(action)>
  1405.  
  1406. Specifies the action to take when an
  1407. incoming file has the same name as an existing one.  Two of the options
  1408. involve choosing an alternative, unique name similar to the one in
  1409. conflict, but the details of choosing are system-specific.  Typically,
  1410. the method involves adding digits to the existing name.
  1411. @Index(File renaming)@Index(Renaming files)
  1412. @seealso(primary="Renaming files",other="File renaming")
  1413.  
  1414. @Begin(Description,leftmargin +13,indent -13,spread 0.5)
  1415. APPEND@\The new file is appended to the old one.  This option has the
  1416. the same effect as the old subcommand SET APPEND ON.
  1417. @Index(Appending)
  1418.  
  1419. BACKUP@\The existing file is renamed, and the new file is given the
  1420. desired name as if no conflict had occurred.
  1421.  
  1422. @Index(Discarding files)
  1423. @seealso(primary="Discarding files",other="DELETE")
  1424. DISCARD@\The incoming file is rejected by returning a "cancel file"
  1425. indication on any Data packets.
  1426.  
  1427. OVERWRITE@\The existing file is overwritten with
  1428. the incoming file.
  1429. @Index(Initialization files)
  1430. This is the default for the CMS, TSO, ROSCOE, and MUSIC
  1431. variants.  Changing this default is a good candidate for INIT
  1432. files.
  1433. @Index(CMS)@Index(TSO)@Index(ROSCOE)@Index(MUSIC)
  1434. When COLLISION is set to OVERWRITE, the attributes of the new file are
  1435. determined by the current setting of FILE OVERWRITE (@i<q.v.>).
  1436.  
  1437. @Index(RENAME)
  1438. RENAME@\The incoming file is renamed so
  1439. as not to destroy (overwrite) the pre-@|existing one, and the new
  1440. name is returned to the sending Kermit for information purposes.  This
  1441. has the same effect as the old subcommand
  1442. SET WARNING ON.
  1443. @Index(Warning)
  1444. This is the default for the CICS variant.
  1445. @Index(CICS)
  1446. @End(Description)
  1447.  
  1448. @Subheading(SET FILE LONGLINE)
  1449.  
  1450. Syntax:@q< SET FILE LONGLINE FOLD @i(or) TRUNCATE @i(or) HALT>
  1451. @Index(Truncation)@Index(Folding)
  1452.  
  1453. This specifies the action to take when a received line is longer than
  1454. the current maximum record length.  That length is determined by the
  1455. context in a system-specific way.  Refer to the description of the
  1456. RECEIVE subcommand in the appropriate chapter for details.
  1457.  
  1458. @Begin(Description,leftmargin +12,indent -12,spread 0.5)
  1459. FOLD@\Specifies that long lines
  1460. are to be split into two or more records as needed, all
  1461. but the last being of the maximum length.  No null records are
  1462. created when the received line is an exact multiple of the record
  1463. length.  BINARY files are always considered, by definition, as a single
  1464. line and, therefore, are @i(always) folded, regardless of the setting of
  1465. this parameter.
  1466. @Index(Binary files)
  1467. V-BINARY and D-BINARY
  1468. files, on the other hand, are
  1469. reconstructed by folding at points determined by the context within
  1470. the received file, and cannot be folded further to fit the current
  1471. maximum length.  Any such records that are too long will be truncated.
  1472.  
  1473. TRUNCATE@\Specifies that long lines
  1474. are to be truncated at the maximum length.
  1475. (Default.)
  1476. Kermit-370 takes note of the number of such truncations performed on
  1477. a file and reports it in the STATUS message and also treats the fact
  1478. of truncation as an error when the file transfer is complete.  The file
  1479. will have been transferred, but obviously not quite intact.
  1480. However, this option can be useful for some tasks, such as stripping
  1481. sequence numbers from card images.  The process is similar to that
  1482. provided by the SET MARGIN RIGHT subcommand for sending files.
  1483.  
  1484. HALT@\Specifies that a file transfer is to halt immediately if a
  1485. received line is too long.  Kermit-370
  1486. then issues an error packet and stops the transfer.
  1487. @End(Description)
  1488.  
  1489. @Subheading(SET FILE OVERWRITE)
  1490.  
  1491. Syntax:@q< SET FILE OVERWRITE DEFAULT @i(or) PRESERVE>
  1492. @Index(Overwriting files)
  1493. @seealso(primary="Overwriting files",other="Filename collision")
  1494. @Begin(Description,leftmargin +11,indent -11,spread 0.5)
  1495. DEFAULT@\Specifies that the current file attribute settings are to be
  1496. used for the new file.  The result is roughly the same as if
  1497. the old file, if any, were completely erased before the new file is
  1498. received.  (Default.)
  1499.  
  1500. PRESERVE@\Specifies that the attributes of the file being
  1501. overwritten are to be retained and used for the new file.  The result
  1502. is roughly the same as if the old files contents were deleted, and the
  1503. new file were appended to the empty stub.
  1504. @End(Description)
  1505.  
  1506. @Subheading(SET FILE TYPE)
  1507. @Index(Binary files)@Index(CRLF)
  1508.  
  1509. Syntax:@q< SET FILE TYPE @i(type)>
  1510.  
  1511. Specifies the type of data comprising files to be sent or received.
  1512. This setting may be temporarily superseded by the Attribute packets
  1513. for a file being received.
  1514.  
  1515. @Begin(Description,leftmargin +11,indent -11,spread 0.5)
  1516. TEXT@\Specifies ordinary text.  ASCII-to-EBCDIC
  1517. or EBCDIC-to-ASCII translation is performed on the data.  Trailing
  1518. blanks are removed, and CRLF's
  1519. are appended to outgoing records. CRLF's are used, in turn, to
  1520. determine the end of incoming records, which are padded with blanks
  1521. if necessary to fill buffers.
  1522. @Indexsecondary(primary="Blanks",secondary="preserving trailing")
  1523. @Indexsecondary(primary="Blanks",secondary="stripping")
  1524. (Default.)  Note: trailing blanks are removed from outgoing,
  1525. varying-length
  1526. records only if they consist of a single blank each, or if there is a
  1527. right margin specified (@i<q.v.>).  Further note: a given file is
  1528. intrinsically
  1529. categorized as fixed-length or varying-length
  1530. (or undefined-length) by the file system and
  1531. cannot be changed simply by setting the FILE RECFM parameter in Kermit.
  1532. Conversion between formats is a system-specific function; see the
  1533. system documentation or consult your local support staff for details
  1534. on conversion techniques.
  1535.  
  1536. @Index(LRECL)
  1537. BINARY@\Specifies bit-stream data.  No translation is performed,
  1538. no CRLF's are added to outgoing records, and blanks are neither added
  1539. nor removed.  Incoming bytes are added successively to
  1540. the current record buffer, which is written out when the current
  1541. LRECL is reached.  Padding, if necessary, is done with nulls.
  1542.  
  1543. V-BINARY@\Specifies varying-length-record binary data.  This type is
  1544. like BINARY, except that a
  1545. two-byte binary prefix is added to each outgoing record
  1546. giving the number of data bytes, and incoming records are set off by
  1547. (and stripped of) their prefixes on receipt.
  1548.  
  1549. D-BINARY@\Is like V-BINARY except that the length prefixes are five-byte
  1550. ASCII-encoded decimal (right-justified with leading zeroes).
  1551. @End(Description)
  1552.  
  1553. @Subheading(SET FOREIGN)
  1554. @Index(Foreign)
  1555.  
  1556. Syntax:@q< SET FOREIGN PREFIX @i(string)>
  1557.  
  1558. This defines a prefix string to be added to the outgoing
  1559. @i(filespec) generated by the SEND subcommand.  For example, the string
  1560. might be set to @qq(B:) to specify output to the B disk drive on the
  1561. other Kermit's system.  The default is a null string.  There is also a
  1562. FOREIGN SUFFIX handled in the same manner.
  1563.  
  1564. @Subheading(SET HANDSHAKE)
  1565. @Index(Handshake)
  1566.  
  1567. Syntax:@q< SET HANDSHAKE @i(number)>
  1568.  
  1569. This defines the character, if any, that Kermit-370 should
  1570. send (or cause to be sent) immediately
  1571. before reading each packet.  The character is given as the decimal
  1572. of an ASCII control character, or as zero if no handshake is to be
  1573. sent.
  1574. The default is 17 (XON), and any value in the range
  1575. 0-31 is valid, but 13 (CR) should not be used because it is generally
  1576. the end-of-packet character.  When Kermit-370 is running through a
  1577. full-duplex connection (such as a @qq<SERIES1>), the traditional IBM
  1578. handshaking is not necessary, and HANDSHAKE should be set to 0
  1579. (as long as the other Kermit can be
  1580. instructed not to expect a handshake).
  1581. Note the distinction between @q(SET
  1582. HANDSHAKE) in Kermit-370 (where it defines a character to be sent) and
  1583. in many micro Kermits (where it defines a character to be expected).
  1584.  
  1585. @Subheading(SET INCOMPLETE)
  1586. @Index(Incomplete files)
  1587. @Index(Discarding files)
  1588.  
  1589. Syntax:@q< SET INCOMPLETE DISCARD @i(or) KEEP>
  1590.  
  1591. @Begin(Description,leftmargin +10,indent -10,spread 0.5)
  1592. DISCARD@\Specifies that incomplete files (that is, files partially
  1593. received in a transfer cancelled by the other Kermit)
  1594. are to be erased.  This is
  1595. the default.  Note that when FILE COLLISION is APPEND,
  1596. incomplete files are never
  1597. erased, lest pre-existing data be lost.
  1598.  
  1599. KEEP@\Specifies that incomplete files are to be kept.
  1600. @End(Description)
  1601.  
  1602. @Subheading(SET LINE)
  1603. @Index(Alternate lines)
  1604.  
  1605. Syntax:@q< SET LINE [@i(name)]>
  1606.  
  1607. This specifies an alternate communication line for file
  1608. transfers.  If the @i(name) is omitted, the default line (the user's
  1609. terminal) is used.  The format of @i(name) is, of course,
  1610. system-dependent, and some variants of Kermit-370 do not support any
  1611. alternate lines.  No variant currently allows Kermit-370 to CONNECT
  1612. over an alternate line.
  1613.  
  1614. @Subheading(SET MARGIN)
  1615. @Index(Margins)
  1616.  
  1617. Syntax:@q< SET MARGIN @i(side) @i(column)>
  1618.  
  1619. When Kermit-370 sends a text file, each line may be truncated on the
  1620. left or right (or both) at fixed column numbers.  Only the text from
  1621. the left margin to the right margin (inclusive) will be sent, and any
  1622. @Indexsecondary(primary="Blanks",secondary="trailing")
  1623. @Indexsecondary(primary="Blanks",secondary="stripping")
  1624. trailing blanks in the truncated lines will be stripped.  A value of
  1625. zero for either margin disables truncation on that side.
  1626.  
  1627. @Subheading(SET PROMPT)
  1628. @Index(Prompt)
  1629.  
  1630. Syntax:@q< SET PROMPT [@i(string)]>
  1631.  
  1632. This defines the character string that Kermit-370 displays
  1633. when asking for a subcommand.  The prompt may be any string of up to 20
  1634. characters.  The default is the name of the system-specific variant of
  1635. Kermit-370 followed by a ">" sign, @i<e.g.>, @q(Kermit-CMS>).
  1636. If the @i(string) is omitted, normal system prompting will occur.
  1637.  
  1638. @Subheading(SET RETRY)
  1639.  
  1640. Syntax:@q< SET RETRY  INITIAL @i(or) PACKETS  @i(number)>
  1641.  
  1642. Kermit-370 resends its last packet after receiving a NAK or bad packet,
  1643. but it eventually gives up after repeated failures on the same
  1644. packet.  The limit on retries
  1645. can be set separately for the initial
  1646. packet exchange (Send-Init or server-mode command) and for ordinary
  1647. packets.  The default for INITIAL
  1648. is 16 and for PACKETS, 5.  Either limit can be set to any positive
  1649. value.
  1650.  
  1651. @Subheading(SET SERVER-TIMEOUT)
  1652. @Index(Timeout)
  1653.  
  1654. Syntax:@q< SET SERVER-TIMEOUT @i(time)>
  1655.  
  1656. This defines the @i(time) in seconds that Kermit-370 in server mode
  1657. should wait for a command before sending a NAK packet.  The default is
  1658. 120.  A value of 0 means that Kermit should wait indefinitely, not
  1659. only in the server loop, but in all transfers, regardless of the
  1660. timeout value specified by the other Kermit.  Some variants are unable
  1661. to time out in any case.  Also, timeouts are not implemented for any of
  1662. the full-screen terminal controllers.
  1663.  
  1664. @Subheading<SET SPEED>
  1665. @Index(Optimum packet size)
  1666.  
  1667. Syntax:@q< SET SPEED @i(number)>
  1668.  
  1669. This determines the communication line speed assumed by Kermit-370
  1670. in calculating the optimum packet size.  If the value is zero, such
  1671. calculations are suppressed.  This option is purely informative and
  1672. has no effect on actual line speed.
  1673. (Default 1200.)
  1674.  
  1675. @Subheading<SET SYSCMD>
  1676. @Index(Host commands)
  1677.  
  1678. Syntax:@q< SET SYSCMD ON @i(or) OFF>
  1679.  
  1680. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1681. ON@\If the user enters a command string which is not a valid
  1682. Kermit subcommand, Kermit-370 will pass the string along to the host
  1683. operating system for execution.  If the string is rejected by the system
  1684. as well, Kermit will report it as an invalid @i(Kermit) subcommand.
  1685. Otherwise, Kermit will assume the string was intended as a host command
  1686. and will simply report the completion code if non-zero.
  1687.  
  1688. OFF@\Invalid Kermit subcommands are simply rejected as such.  System
  1689. commands may be executed, of course, but only by specifying the
  1690. generic prefix @qq(HOST) or the appropriate system-specific prefix,
  1691. such as CMS or TSO.
  1692. @Index(Command prefix)
  1693. (Default.)
  1694. @End(Description)
  1695.  
  1696. @Subheading<SET TABS-EXPAND>
  1697.  
  1698. Syntax:@q< SET TABS-EXPAND ON [@i(list)] @i(or) OFF>
  1699. @Index(Tabs)
  1700. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1701. ON@\Tab characters in incoming TEXT files are replaced by one or more
  1702. blanks to bring the record size up to the next higher multiple of eight
  1703. for each tab.  If tab settings other than columns 1, 9, 17, @i<etc.> are
  1704. desired, they may be specified explicitly in a list following the
  1705. keyword @qq(ON).  Items in the list may be separated by spaces or
  1706. commas and must be in strictly increasing order.
  1707.  
  1708. OFF@\Incoming tabs are retained.
  1709. (Default.)
  1710. @End(Description)
  1711.  
  1712. @Subheading<SET TAKE ECHO>
  1713. @Index(Command echoing)
  1714. @seealso(primary="Echo",other="Command echoing")
  1715.  
  1716. Syntax:@q< SET TAKE ECHO ON @i(or) OFF>
  1717.  
  1718. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1719. ON@\Subcommands are echoed to the terminal as they are executed from
  1720. a TAKE file.
  1721.  
  1722. OFF@\Subcommands from a TAKE file are executed "silently."
  1723. (Default.)
  1724. @End(Description)
  1725.  
  1726. @Subheading<SET TAKE ERROR-ACTION>
  1727.  
  1728. Syntax:@q< SET TAKE ERROR-ACTION CONTINUE @i(or) HALT>
  1729.  
  1730. @Begin(Description,leftmargin +11,indent -11,spread 0.5)
  1731. CONTINUE@\Execution continues in a TAKE file regardless of illegal
  1732. commands, except in server mode.  (This is the default.)
  1733.  
  1734. HALT@\A command error in a TAKE file causes immediate exit to Kermit
  1735. subcommand level.
  1736. @End(Description)
  1737.  
  1738. @Subheading<SET TEST>
  1739. @Index(TEST)
  1740.  
  1741. Syntax:@q< SET TEST ON @i(or) OFF>
  1742.  
  1743. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1744. ON@\Allow setting the START-OF-PACKET and other special characters
  1745. to any value, and suppress type 1
  1746. checksum testing on received packets.
  1747.  
  1748. OFF@\Normal operation.
  1749. (Default.)
  1750. @End(Description)
  1751.  
  1752. @Subheading<SET TRANSFER CHARACTER-SET>
  1753. @Index(Character sets)
  1754.  
  1755. Syntax:@q< SET TRANSFER CHARACTER-SET @i(name)>
  1756.  
  1757. @Index<Kanji>@Index<Greek>@Index<Cyrillic>@Index<Hebrew>@Index<Katakana>
  1758. @Index<Arabic>
  1759. Specifies the name of the character set used in sending or receiving
  1760. files.  This setting may be superseded by an Attribute packet of an
  1761. incoming file.  Currently, the available names are ASCII (the
  1762. default), ARABIC, CYRILLIC, GREEK, HEBREW, JAPAN-EUC, KATAKANA, LATIN1,
  1763. LATIN2, LATIN3, THAI, and TRANSPARENT.  There are also special aliases
  1764. L1, L2, and L3 for the LATINx names.  All but JAPAN-EUC, TRANSPARENT,
  1765. and ASCII represent 8-bit codes composed of a pair of 94- or
  1766. 96-character sets from the ISO registry combined with normal
  1767. definitions for the so-called C0 and C1 characters.  JAPAN-EUC is a
  1768. DBCS for encoding Kanji characters, plus Roman, Greek, and Cyrillic.
  1769. ASCII is the traditional character set supported by Kermit,
  1770. but one of the newer, 8-bit sets would be preferable for most users.
  1771. This option is, therefore, a good candidate for
  1772. @Index(Initialization files)
  1773. inclusion in the system INIT file.
  1774. See Table @ref<-ikchars> for the allowed combinations of transfer and
  1775. file character sets.
  1776. Explicitly setting this option has a side effect equivalent to issuing
  1777. SET ATTRIBUTE ENCODING ON (@i<q.v.>).  There is one exception, namely,
  1778. TRANSPARENT, which sets ENCODING OFF and replaces both translation
  1779. tables with null operations, regardless of the current nominal file
  1780. character set.
  1781.  
  1782. @Index(Translation tables)
  1783. The biggest drawback of the built-in tables
  1784. for the various character sets is that neither the ISO registry
  1785. nor IBM defines any mapping between the C1 characters (hex 80-9F in
  1786. ISO arrangements) and the characters of EBCDIC code pages.  Thus, the
  1787. mappings in Kermit-370 tables are somewhat arbitrary, and future
  1788. pronouncements may suddenly invalidate some or all of those 32 mappings.
  1789.  
  1790. @Subheading<SET TRANSFER LOCKING-SHIFT>
  1791. @Index(Character sets)
  1792.  
  1793. Syntax:@q< SET TRANSFER LOCKING-SHIFT ON @i(or) OFF @i(or) FORCED>
  1794.  
  1795. @Begin(Description,leftmargin +9,indent -9,spread 0.5)
  1796. ON@\The Kermit locking-shift protocol is to be used in transfers to or
  1797. from cooperating partners, provided that 8th-bit quoting is enabled.
  1798.  
  1799. OFF@\The Kermit locking-shift protocol is not to be used.
  1800.  
  1801. FORCED@\The Kermit locking-shift protocol is to be used, regardless of the
  1802. cooperation of the other Kermit.  The encoding uses only the locking shifts,
  1803. to the exclusion of 8th-bit quoting.
  1804.  
  1805. @End(Description)
  1806.  
  1807. @Subheading<SET TTABLE>
  1808. @Index(Translation)
  1809.  
  1810. Syntax:@q< SET TTABLE ON @i(or) OFF @i(or) KP>
  1811.  
  1812. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1813. ON@\The translation that undoes the terminal controller's
  1814. ASCII/EBCDIC conversion comes from the TATOE and TETOA tables, rather
  1815. than the ATOE and ETOA tables (which are used only for translating
  1816. disk files).  This option has no effect when there is no translation
  1817. built into the controller, @i<i.e.>, with SERIES1,
  1818. GRAPHICS, and AEA connections.
  1819.  
  1820. OFF@\The ATOE and ETOA tables are used for all translations by
  1821. Kermit-370.  (Default.)
  1822.  
  1823. KP@\Same as ON, but also establishes values in the TATOE and TETOA
  1824. tables based on IBM's corporate standard ASCII/EBCDIC translation
  1825. (distinct from the internationally accepted @i<de facto> standard).
  1826. @End(Description)
  1827.  
  1828. @Subheading<SET 8-BIT-QUOTE>
  1829. @Index(Eighth-bit prefix)
  1830. @Indexentry(key="Quote",entry="Quote.  @i<See> Prefix")
  1831.  
  1832. Syntax:@q< SET 8-BIT-QUOTE @i(char) @i(or) ON @i(or) OFF>
  1833.  
  1834. This controls whether eighth-bit prefixing is done and can be
  1835. used to specify the character to be used.  This is
  1836. one of only two
  1837. Send-Init parameters that cannot be SET separately for SEND
  1838. and RECEIVE.
  1839. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  1840. char@\Eighth-bit prefixing will be done using @i(char), provided the
  1841. other Kermit agrees.  The default value is an ampersand.
  1842.  
  1843. ON@\Eighth-bit prefixing will be done, provided the other Kermit
  1844. explicitly requests it (and specifies the character).
  1845.  
  1846. OFF@\Eighth-bit prefixing will not be done.
  1847. @End(Description)
  1848.  
  1849. @Subheading(SET SEND/RECEIVE)
  1850.  
  1851. The following parameters can be set either as SEND or RECEIVE options.
  1852. As a rule, in each pair, one is the operational value, and the other
  1853. is used to change the default for Send-Init packets received from the
  1854. other Kermit and to set up parameter values as if the other Kermit
  1855. had specified them on the previous exchange.
  1856. When both values are described, the operational one will be first.
  1857. For all parameters besides QUOTE, the operational value is the RECEIVE.
  1858. After a transfer, the operational values will be unchanged, but the
  1859. others (as displayed by SHOW) will reflect the parameters specified
  1860. by the other Kermit.  The underlying defaults established by previous
  1861. SET subcommands will still be in effect.
  1862. In the syntax descriptions, @i(mode) is SEND or RECEIVE.
  1863.  
  1864. @Subheading(END-OF-LINE)
  1865.  
  1866. Syntax:@q< SET @i(mode) END-OF-LINE @i(number)>
  1867.  
  1868. RECEIVE should not be changed.
  1869.  
  1870. SEND may be needed to establish contact.
  1871. If the other system needs packets to be terminated
  1872. by anything other than carriage return, specify the
  1873. decimal value of the desired ASCII character.
  1874. @i(number) must be in the range 0-31 (decimal).  The default is 13
  1875. (CR).
  1876.  
  1877. @Subheading(PACKET-SIZE)
  1878. @Index(Packet size)
  1879.  
  1880. Syntax:@q< SET @i(mode) PACKET-SIZE @i(number)>
  1881.  
  1882. RECEIVE defines @i(number) as the maximum length for incoming
  1883. packets.  The valid range is 26-9024, but 94 is the limit for normal
  1884. short-packet protocol.  The default is 80.
  1885. @Index(Long packets)
  1886. Specifying a value greater than 94 is necessary and sufficient to
  1887. enable the long-packet protocol for transfers to Kermit-370
  1888. (provided the other Kermit is willing).  Kermit-370 will actually
  1889. accept long packets in any case, but the protocol requires that the
  1890. other Kermit not
  1891. send them unless Kermit-370 asks.
  1892. @Index(Initialization files)
  1893. Raising this value from the
  1894. default is a good candidate for inclusion in INIT
  1895. files.
  1896. In practice, the packet size may be limited by hardware and programming
  1897. considerations.  See the system-specific chapters for details.
  1898.  
  1899. SEND might be needed for sending files to a minimal Kermit that
  1900. neither specifies a buffer size in the Send-Init sequence nor can
  1901. accept the default (80).  It may also be used to specify the packet
  1902. size for a "raw" download via the XTYPE subcommand.
  1903. This parameter has no other function and is completely irrelevant to
  1904. long packets.  If the other Kermit asks for long
  1905. packets, Kermit-370 will always comply.
  1906.  
  1907. @Subheading(PAD-CHAR)
  1908.  
  1909. Syntax:@q< SET @i(mode) PAD-CHAR @i(number)>
  1910.  
  1911. RECEIVE defines @i(number) as the character to be used by the other
  1912. Kermit for padding
  1913. packets.  The character must be an ASCII control
  1914. character (in the range 0-31).  The default is 0 (NULL).
  1915. This option is seldom useful.
  1916.  
  1917. SEND may be needed to establish contact if the other Kermit
  1918. (or the transmission line) needs padded packets.
  1919.  
  1920. @Subheading(PADDING)
  1921.  
  1922. Syntax:@q< SET @i(mode) PADDING @i(number)>
  1923.  
  1924. RECEIVE defines the @i(number) of pad characters to be used for padding
  1925. packets from the other Kermit.  This number may be anywhere from 0 to
  1926. 94.  The default is 0.  This option is seldom useful.
  1927.  
  1928. SEND may be needed to establish contact if the other Kermit
  1929. (or the transmission line) needs padded packets.
  1930.  
  1931. @Subheading(PARITY)
  1932. @Index(Parity)
  1933.  
  1934. Syntax:@q< SET @i(mode) PARITY MARK @i(or) NONE>
  1935.  
  1936. RECEIVE specifies the parity expected in the
  1937. transparent-mode ASCII data received by the mainframe from a
  1938. full-screen device.  Such data will
  1939. typically have either all Mark parity (seven data bits with the eighth
  1940. bit set) or no parity (eight data bits).  This is typically not the
  1941. same as the parity used in communications between the protocol
  1942. convertor and the terminal.  Kermit-370 must know which
  1943. kind of parity to expect in order to calculate checksums properly.
  1944. Since Kermit-370 does not actually verify parity, the other possible
  1945. variants (ODD, EVEN, and SPACE) are lumped together with MARK parity
  1946. for the purpose of this subcommand, which merely chooses between 7-bit
  1947. and 8-bit data transfer.  The default is MARK.
  1948.  
  1949. SEND is also an operational value, specifying the parity to be used in
  1950. constructing outgoing data packets on full-screen
  1951. devices.  NONE is the default and is
  1952. generally preferable, in that it permits binary transfers without the
  1953. need for eighth-bit prefixing, but MARK may be required in some
  1954. configurations.
  1955. @Index(Eighth-bit prefix)
  1956.  
  1957. @Subheading(QUOTE)
  1958.  
  1959. Syntax:@q< SET @i(mode) QUOTE @i(char)>
  1960.  
  1961. SEND indicates a printable character for prefixing (quoting) control
  1962. characters and other prefix characters.
  1963. The only good reason to change this would be for sending a file
  1964. that contains many @qq(#) characters (the
  1965. normal control prefix) as data.  It must be a single character with
  1966. ASCII value 33-62 or 96-126 (decimal).
  1967.  
  1968. RECEIVE would be needed only for talking to a crippled Kermit that
  1969. uses a non-standard quoting character, but does not admit it.
  1970.  
  1971. @Subheading(START-OF-PACKET)
  1972.  
  1973. Syntax:@q< SET @i(mode) START-OF-PACKET @i(number)>
  1974.  
  1975. RECEIVE defines @i(number) as the character to be expected to mark the
  1976. start of packets from the other Kermit.  The character must be an
  1977. ASCII control
  1978. character (in the range 0-31).  The default is 1 (SOH).  This may
  1979. need to be changed to establish contact.
  1980.  
  1981. SEND may also need to be changed to establish contact.
  1982. It defines @i(number) as the character to be used to mark outgoing
  1983. packets.
  1984.  
  1985. @Subheading(TIMEOUT)
  1986. @Index(Timeout)
  1987.  
  1988. Syntax:@q< SET @i(mode) TIMEOUT @i(time)>
  1989.  
  1990. RECEIVE defines the @i(time) in seconds the other Kermit is to wait for
  1991. a response from Kermit-370 before resending a packet.  The default is 5.
  1992. A value of 0 means the other Kermit should wait indefinitely.
  1993.  
  1994. SEND may be needed to
  1995. define the @i(time) in seconds Kermit-370 is to wait for a
  1996. response from the other Kermit in the initial packet exchange, although
  1997. the default value 0 (indefinite wait) is probably satisfactory,
  1998. especially since Kermit-370 in many cases cannot time out anyway.
  1999. Specifying a non-zero value will prevent the other Kermit from ever
  2000. requesting infinite "patience" from Kermit-370.
  2001.  
  2002. @Heading(The SHOW Subcommand)
  2003. @Index(SHOW)
  2004.  
  2005. Syntax:@q< SHOW [@i(option)]>
  2006.  
  2007. The SHOW subcommand displays the values of all
  2008. parameters that can be changed with
  2009. the SET subcommand, except CONTROL-CHAR, ATOE, ETOA, TATOE, and TETOA
  2010. (for those, see the TDUMP subcommand).  If specified,
  2011. @i(option) can be a particular parameter or the keyword @qq<ALL>
  2012. (the default).
  2013. Groups of parameters, such as SEND, can be displayed by requesting
  2014. the group name, or individual sub-parameters can be displayed
  2015. by specifying the complete name.  For example,
  2016. @example(SHOW RECEIVE EOL)
  2017. will display the decimal value of the packet terminator that Kermit-370
  2018. currently expects, @i<i.e.>, 13.  Similarly,
  2019. @example(SHOW FOREIGN)
  2020. will display the character strings currently in use for prefix and
  2021. suffix on each outgoing @i(filespec).  When @qq(ALL) is specified
  2022. or implied, all parameters other than the attribute switches are
  2023. displayed.
  2024. @Index(File attributes)
  2025.  
  2026. @Heading(The STATUS Subcommand)
  2027. @Index(STATUS)
  2028.  
  2029. Syntax:@q< STATUS>
  2030.  
  2031. This subcommand displays information about the previously executed
  2032. subcommand.
  2033. The response will include either the appropriate error message or
  2034. the message @qq<No errors>.
  2035. The initial status is @qq(No file transfers yet).
  2036. If the status reflects an error condition, the name of the last file
  2037. used (excluding TAKE files) will be displayed as well.  If
  2038. the error was detected by the other Kermit, the message will be
  2039. @qq(Micro aborted) followed by the text from the Error packet.
  2040. Conversely, if Kermit-370 detected the error, the text of the status
  2041. message will have constituted the error packet sent out.
  2042. In any case, if the last file transfer was cancelled (by virtue of an
  2043. attribute mismatch or manual intervention), the reason for
  2044. cancellation is displayed.  Also, if the error occurred in disk I/O,
  2045. any available explanatory information is displayed.
  2046. Normally, the error status is altered only when a transfer-initiating
  2047. subcommand (SEND or RECEIVE) is executed, but
  2048. there are several exceptions.  If an invalid subcommand is entered, the
  2049. status becomes @qq(Kermit command error), and the next subcommand
  2050. entered will reset the status.  Also, in server mode @i(every)
  2051. subcommand is received through a transfer from the other Kermit and
  2052. may affect the status (except the STATUS subcommand itself, of course).
  2053.  
  2054. Other information is also included.  When Kermit-370
  2055. has been forced to truncate one or more records in the last
  2056. RECEIVE operation (because of the current maximum record length), the
  2057. number of records truncated is reported.
  2058. The status display also includes throughput statistics for the last
  2059. transfer: number of files sent, duration, number of packets, number of
  2060. retries, and averages of bytes/packet and
  2061. bytes/second.  These last two quantities are calculated separately
  2062. for bytes sent and received on the communication line
  2063. (including padding, if
  2064. any), and the last quantity is also calculated on the basis of the
  2065. number of bytes read from or written to disk.
  2066. Further, if retries were
  2067. necessary, Kermit-370 computes the optimum packet size assuming the
  2068. retries to have been due to sparse, Poisson-distributed bursts
  2069. of noise.  @Index(Long packets)This is the
  2070. same heuristic optimum that Kermit-370 computes and uses as
  2071. an alternative packet-size limit when sending long packets.  If TEST is
  2072. set on, Kermit also reports the maximum size attained by its storage
  2073. stack since execution began.
  2074.  
  2075. @Heading(The STOP Subcommand)
  2076. @Index(STOP)
  2077.  
  2078. Syntax:@q< STOP>
  2079.  
  2080. This is not a subcommand in the usual sense.  Instead, it is a command
  2081. string that can be entered on the communication line
  2082. while Kermit-370 is in protocol mode and will
  2083. cause protocol mode to cease immediately.  This may be useful if the
  2084. other Kermit has crashed.  The word "stop" may be entered in either
  2085. upper or lower case, but it must be the only character
  2086. string in the "packet" in question.  If you are using a full-screen
  2087. terminal, and if other information appears on the screen, you must
  2088. clear that other text from the screen (using CLEAR EOF) before
  2089. pressing ENTER.
  2090.  
  2091. @Heading<The TAKE Subcommand>
  2092. @Index(TAKE)@Index(Command echoing)
  2093.  
  2094. Syntax:@q< TAKE @i(filespec)>
  2095.  
  2096. Execute Kermit subcommands from the specified file, usually called a
  2097. TAKE file.  The TAKE file may in turn include TAKE
  2098. subcommands, and the
  2099. nesting may continue to a depth of ten.  If a TAKE file includes the
  2100. subcommand SERVER, however, the nesting count is saved and
  2101. starts over again in
  2102. server mode in case the client Kermit should transmit a REMOTE KERMIT
  2103. TAKE command.  The user has the option of seeing
  2104. the subcommands echoed from the TAKE file as they are executed and also
  2105. the option of automatically exiting from a TAKE file on error.  See
  2106. the subcommand SET TAKE for details.
  2107.  
  2108. @Heading(The TDUMP Subcommand)
  2109. @Index(TDUMP)
  2110.  
  2111. Syntax:@q< TDUMP @i(table-name) @i(or) NAMES @i(or) TRACE>
  2112.  
  2113. This
  2114. displays the contents of @i(table-name).  The same table can be modified
  2115. using the SET subcommand.  The ATOE, ETOA, TATOE, and TETOA translation
  2116. tables and the CONTROL-CHAR prefixing selection table
  2117. @Index<Control characters>
  2118. can presently be displayed and changed.  The NAMES table is the
  2119. @Index(Transaction log)
  2120. transaction log for the last transfer, consisting of the
  2121. @i<filespec> of each file sent or received, along with the size (in
  2122. Kbytes) and any error messages.
  2123. If the Kermit TRACE facility is enabled, the TRACE table may be
  2124. displayed (and destroyed in the process).  This table contains
  2125. entries for subroutine calls and returns during program execution, but
  2126. Kermit normally does not have the facility enabled.  See SET DEBUG for
  2127. more details on execution tracing.
  2128. @Index(Tracing execution)
  2129.  
  2130. @Heading(The TYPE and XTYPE Subcommands)
  2131.  
  2132. Syntax:@q< [X]TYPE @i(filespec)>
  2133.  
  2134. These subcommands display the named file.
  2135. TYPE is effectively a synonym for (and allows the same options as) the
  2136. host system command for displaying files at the terminal, but XTYPE
  2137. performs a raw file transfer on the current communication line
  2138. @Index(Raw transmission)
  2139. (which need not be the terminal) according to the current CONTROLLER
  2140. setting.  Thus, XTYPE
  2141. uses transparent mode if CONTROLLER is
  2142. @Index(Transparent mode)
  2143. SERIES1, GRAPHICS, or AEA.  Also, it sends the data in bursts
  2144. no larger than the current SEND PACKET-SIZE.  Since XTYPE is basically
  2145. a modified SEND, the options allowed on the @i<filespec> for SEND are
  2146. also allowed for XTYPE.
  2147.  
  2148. @Heading(The VERSION Subcommand)
  2149.  
  2150. Syntax:@q< VERSION>
  2151.  
  2152. This subcommand displays the program version number and date.
  2153.  
  2154. @Section<Before Connecting to the Mainframe>
  2155.  
  2156. @Index(TTY)@Index(LOCAL-ECHO)@Index(Flow control)@Index(Handshake)
  2157. Several options must be set in the micro Kermit before
  2158. connecting to an IBM 370 system as a line-mode device.
  2159. You should set LOCAL-ECHO to ON (to indicate
  2160. half-duplex).  This is the norm but not true in absolutely
  2161. every case; if each
  2162. character appears twice on your terminal screen,
  2163. set LOCAL-ECHO to OFF.
  2164. FLOW-CONTROL should be set to NONE, and on some systems
  2165. HANDSHAKE should be set to XON.
  2166. The parity should be set according to the system's specifications.  On
  2167. some micro Kermits, all of the above is done in one step
  2168. using the DO IBM macro (or SET IBM ON).  Set the baud rate to
  2169. correspond to the line speed.
  2170.  
  2171. @Index(Full screen)@Index(PARITY)
  2172. Connecting through a
  2173. full-screen device also
  2174. requires that certain options be set
  2175. in the micro Kermit.  You should set LOCAL-ECHO to
  2176. OFF (to indicate full-duplex).  FLOW-CONTROL should be set to XON/XOFF,
  2177. and HANDSHAKE should be set to OFF.  For many systems,
  2178. the PARITY should be set to EVEN.  Set the baud rate to correspond to
  2179. the line speed.
  2180.  
  2181. One exception to these rules is the case where
  2182. the micro Kermit is attempting automated file transfer, @i<e.g.>,
  2183. downloading several separate files from Kermit-370 running in server
  2184. mode.  In fact, under those circumstances, handshaking is necessary
  2185. even with @qq(SERIES1) connections, and the two Kermits must be
  2186. instructed to adopt a common handshake character
  2187. (@i<e.g.>, by SET HANDSHAKE
  2188. 10 to Kermit-370 and SET HANDSHAKE LF to the micro).
  2189.  
  2190. @Index(Timeout)
  2191. In any case, you should make sure that either the micro Kermit or
  2192. Kermit-370 will provide timeouts during file transfers (if not
  2193. both).  Some variants of Kermit-370 (notably CMS) cannot provide
  2194. timeouts, and you may need to set the TIMER to ON in the micro.
  2195.  
  2196. When you are connecting through a protocol convertor,
  2197. it is useful to know the key sequence that causes the screen image to
  2198. be repainted
  2199. @Index(Screen refresh)
  2200. from the controller's memory.  In many cases, it is CTRL-V,
  2201. although CTRL-G and CTRL-C are also sometimes used.  In general, this
  2202. sequence should be typed whenever reconnecting to Kermit-370 after being
  2203. in Kermit protocol mode (and sometimes after merely escaping to the
  2204. local Kermit), since the local Kermit may have modified the screen.
  2205.  
  2206. @Section<Trouble-shooting Protocol Converters>
  2207.  
  2208. Many, but not all, protocol
  2209. converters have transparent modes that permit Kermit file transfers.  The
  2210. welter of competing and often incompatible communications devices would cause
  2211. a major headache, except for three circumstances.
  2212. First, Kermit-370 has routines for automatically detecting which kind of
  2213. front end is controlling the current session; second, the Kermit installer is
  2214. encouraged to tailor Kermit to force the correct choice of @q<CONTROLLER>
  2215. whenever those routines don't work properly; and, third, Kermit offers a
  2216. last-resort mode of operation that will work with almost any protocol
  2217. converter.  Because of the limitations in the catch-all mode (known as
  2218. @q<FULLSCREEN> mode), it is still best to take advantage of the transparency,
  2219. if any, in the protocol converter, and the automatic detection routines still
  2220. play an important role.  It will be instructive to outline what those
  2221. routines actually do and how they can go wrong.
  2222.  
  2223. @subheading(Recognizing a Series/1)
  2224.  
  2225. Although protocol converters are advertised as simulating the behavior of IBM
  2226. 3270-type terminals, there generally are differences which could be used to
  2227. distinguish each type of device from the others and from real 3270-type
  2228. terminals.  However, all that really matters to Kermit-370 is whether there
  2229. is a transparent mode available such that file transfers can be carried out.
  2230. To date, only three fundamentally different transparent modes have been
  2231. reported to Columbia, and it seems likely that no others have been (or,
  2232. perhaps, ever will be) implemented.  All are supported by Kermit.
  2233.  
  2234. Kermit-370 recognizes these front ends automatically by making two simple
  2235. tests.  The first takes advantage of one of the advanced features first
  2236. implemented in the Yale ASCII system and subsequently copied in many of the
  2237. devices that adopted the same transparent mode.  This feature is a special
  2238. 3270 data-stream order which requests a status report from the protocol
  2239. converter.  Kermit sends this order and then reads the "3270 screen".
  2240. If Kermit sees a valid status report, it sets @q<CONTROLLER> to @q<SERIES1>
  2241. and stops testing.
  2242.  
  2243. @subheading(Two catches)
  2244.  
  2245. Obviously, the Yale status order is not implemented in most other kinds of
  2246. hardware.  Thus, the order would be rejected by a non-Yale-type controller,
  2247. and that could have undesirable side effects on the hardware.  However,
  2248. hardware is generally designed to be robust -- the real drawback lies in the
  2249. side effects on certain communications software (notably VTAM/TSO), which may
  2250. respond badly while trying to protect the robust hardware from illegal
  2251. orders.  If it proves impossible to make the external software behave
  2252. properly, the only recourse is to modify Kermit-370 to skip the first test
  2253. altogether and possibly to force the @q<CONTROLLER> setting; this
  2254. modification is described in the relevant "Beware" file in a note dated
  2255. 89/2/27.
  2256.  
  2257. Catch Two is that the status order is not implemented in all of the devices
  2258. that support Yale-ASCII-style transparent mode.  This means that some devices
  2259. "fall through the cracks" in this procedure.  A site where such devices are
  2260. used may find it expedient to modify Kermit (following the same "Beware"
  2261. pattern) to force the procedure to set @q<CONTROLLER> to @q<SERIES1>
  2262. (assuming there are no other protocol converters also in use that support one
  2263. of the other transparent modes).  A list of such devices can be found in a
  2264. footnote in the Kermit distribution file @q<ik0aaa.hlp>.
  2265.  
  2266. @subheading(Recognizing a 3174)
  2267.  
  2268. The second diagnostic test uses a hardware command (Read Partition Query)
  2269. that is defined by IBM, but is not implemented on all 3270-type equipment.
  2270. There is, thus, the same danger as in the first test, but the danger appears
  2271. to be slight.  Indeed, both CMS and TSO allow a user program to know in
  2272. advance whether a Query is permitted.  The Query response consists of one or
  2273. more structured fields, and the 3174 AEA ASCII Graphics system (the only
  2274. device with the @q<AEA> style of transparency) is easily identified by the
  2275. appearance and content of a particular type of field.  In fact, it is
  2276. possible to tell from the Query data whether the particular 3174 line is
  2277. allowed to use the ASCII Graphics transparency.  Therefore, this test has
  2278. three possible outcomes: Kermit may detect a transparency-enabled 3174 line
  2279. (and set @q<CONTROLLER> to @q<AEA>); it may detect an incapable 3174 line
  2280. (and set @q<CONTROLLER> to @q<NONE>); or it may detect "none of the above"
  2281. (and set @q<CONTROLLER> to @q<GRAPHICS>).  Thus, aside from the exceptions
  2282. already noted, @q<GRAPHICS> simply means that the front end either supports
  2283. SAS-style transparency or none at all.
  2284.  
  2285. @subheading(Fallback positions)
  2286.  
  2287. What should you do when the automatic detection fails?  Obviously, the first
  2288. thing is Be Prepared.  Often, the misbehavior of VTAM can be halted by
  2289. pressing ENTER or PA1, so you should be sure to know how to generate a PA1
  2290. when trying out Kermit on an unfamiliar type of protocol converter.  Also,
  2291. you should know what kind of transparency to expect for the front end and
  2292. verify that Kermit-370 has, in fact, set @q<CONTROLLER> appropriately.  This
  2293. means checking the list of devices in the Kermit distribution file
  2294. @q<ik0aaa.hlp>.  If your configuration is listed as @i(un)supported, you may
  2295. be wasting your time, but the list is not necessarily up-to-date.  If your
  2296. configuration is not listed at all, you have the opportunity to be a pioneer
  2297. and report your findings back to Columbia for inclusion in future editions of
  2298. the list.  There are a few rules of thumb for quickly deducing the controller
  2299. type by reading the manuals for the device; the manuals may not be specific
  2300. enough, but this is clearly the easiest way of determining whether Kermit can
  2301. support a given device and which controller type is applicable.  The rules
  2302. are as follows (in order of simplicity and likelihood):
  2303.  
  2304. @begin(enumerate,spread 0.5)
  2305.  
  2306. GRAPHICS or SERIES1 may be implied when the device has a transparent or
  2307. graphics mode described as compatible with that of a supported device listed in
  2308. @q<ik0aaa.hlp>.
  2309.  
  2310. SERIES1 is implied when the device runs the "Yale ASCII Communication
  2311. System" or something with a similar name.
  2312.  
  2313. GRAPHICS is implied if the manual mentions the SAS Institute in the context
  2314. of ASCII graphics.
  2315.  
  2316. GRAPHICS is implied when output transparent data may be preceded by a WCC
  2317. (Write Control Character) and 70 (hex).
  2318.  
  2319. SERIES1 is implied when transparent data must be preceded by a WCC and either
  2320. 115D7F110005 (write-read) or 115D7F110000 (write-only).
  2321.  
  2322. GRAPHICS or SERIES1 may be implied when some of the manufacturer's other
  2323. products are listed in @q<ik0aaa.hlp>, and all are shown as being of one
  2324. type.
  2325.  
  2326. If none of the above rules apply, but the manuals describe a transparent mode
  2327. in detail, the device may be a totally new type.  The distribution file
  2328. @q<ik0con.hlp> has hints on implementing Kermit support for the new type.
  2329.  
  2330. If nothing else works, you can probably use FULLSCREEN mode, as long
  2331. as the micro Kermit supports it.
  2332.  
  2333. @end(enumerate)
  2334.  
  2335. If Kermit tries to transfer a file with the wrong @q<CONTROLLER> value, there
  2336. is a distressing possibility for the session to lock or, at least, appear to
  2337. lock.  When and if this happens, be sure to connect back to the mainframe,
  2338. type @qq<STOP>, and press ENTER several times (perhaps as many as 15 times)
  2339. before taking any drastic steps like breaking the connection.  @qq<STOP> is a
  2340. special escape mechanism for getting out of Kermit protocol mode quickly.
  2341. Kermit-370 recognizes such a request in most situations where terminal I/O is
  2342. not entirely frozen.  Sometimes, apparent lock-ups are due to something as
  2343. simple as incorrect parity settings in the micro Kermit, so always check the
  2344. basic communication settings and, if necessary, experiment before trying a
  2345. different @q<CONTROLLER> type.  Also, to avoid unnecessary confusion, check
  2346. for the existence of a Kermit initialization file (possibly created by the
  2347. installer) which could be re-setting @q<CONTROLLER> after the automatic
  2348. procedure has finished.  Such a re-setting is a poor idea in an
  2349. initialization file, even a personal one, unless there is absolutely only one
  2350. kind of communications equipment on your system.
  2351.  
  2352. If file transfers do not work at first, it is best to do the following
  2353. before trying again:
  2354. @begin(enumerate)
  2355. Reduce the packet size to no more than 80 at both ends.
  2356.  
  2357. Enable 8th-bit quoting at both ends.
  2358.  
  2359. Set @q<SEND PARITY MARK> in Kermit-370.
  2360. @end(enumerate)
  2361.  
  2362. If those changes do not make transfers work, the next remedial action depends
  2363. on the symptoms of failure.
  2364.  
  2365. @begin(itemize)
  2366.  
  2367. No packets exchanged and session locked up after reconnecting: change packet
  2368. characters in both directions.
  2369.  
  2370. No packets exchanged, but no lockup: change packet characters or parity.
  2371.  
  2372. Always multiple retries of third or fourth packet: reduce receiving packet
  2373. size.
  2374.  
  2375. Multiple retries after random number of packets: check hardware and cables.
  2376.  
  2377. Multiple retries after file-dependent number of packets: check for equipment
  2378. that intercepts one or more printable characters or reduce the packet size.
  2379.  
  2380. @end(itemize)
  2381.  
  2382. When all else fails, you should be ready to reset @q<CONTROLLER> by hand and
  2383. try again.  The change most likely to be necessary is from @q<GRAPHICS> to
  2384. @q<SERIES1>.  However, it is conceivable that the installer has modified
  2385. Kermit-370 at your location to force the @q<CONTROLLER> setting from the
  2386. start, in which case, you might need to go the other way.  Normally, Kermit's
  2387. diagnostic procedure at start-up takes one or two seconds (because of
  2388. programmed delays), so you should be suspicious if the Kermit prompt appears
  2389. immediately after you start the program.  The only initial @q<CONTROLLER>
  2390. setting that you should @i<not> change by hand is @q<NONE>, which means that
  2391. Kermit-370 has recognized a 3174 AEA line that is not configured for file
  2392. transfer (or else the Kermit installer has a warped sense of humor).
  2393.  
  2394. If no amount of experimenting gets a transparent mode to work, it is time to
  2395. recheck the list of supported devices and the age of your equipment.  If
  2396. yours is very old, it may require new microcode or some other software or
  2397. hardware upgrade.  In any case, if your results (whether positive or
  2398. negative) are not already shown in @q<ik0aaa.hlp>, you should report them to
  2399. Columbia so that others may profit by your experience.
  2400.  
  2401. @Section<After Returning from Kermit-370>
  2402.  
  2403. When Kermit-370 receives a QUIT or EXIT subcommand or finishes the
  2404. subcommand or subcommands
  2405. specified in the original command string that invoked
  2406. Kermit, control is returned to the caller.  Before returning,
  2407. Kermit-370 closes any active TAKE files (the EXIT or QUIT subcommand may
  2408. be issued from a TAKE file).  On return, the completion code is set
  2409. from the current error status according to the codes in Table
  2410. @ref(-ikcodes).
  2411. @Index(Error codes)@Index(Completion codes)
  2412. @seealso(primary="Completion codes",other="Error codes")
  2413.  
  2414. @begin<table,leftmargin +0,use format>
  2415. @tabclear()@tabset(0.6in,1.4in)
  2416. @bar()
  2417. @blankspace(1)
  2418. @u(Code)@\@u<Symbol>@\@ux<Error Message>
  2419.  0@\NOE@\No errors
  2420.  1@\NFT@\No file transfers yet
  2421.  2@\TRC@\Transfer cancelled
  2422.  3@\USC@\Invalid server command
  2423.  4@\TIE@\Terminal I/O error
  2424.  5@\BPC@\Bad packet count or chksum
  2425.  6@\IPS@\Invalid packet syntax
  2426.  7@\IPT@\Invalid packet type
  2427.  8@\MIS@\Lost a packet
  2428.  9@\NAK@\Micro sent a NAK
  2429. 10@\ABO@\Micro aborted
  2430. 11@\FNE@\Invalid file name
  2431. 12@\FNF@\File not found
  2432. 13@\FUL@\Disk or file is full
  2433. 14@\DIE@\Disk I/O error
  2434. 15@\MOP@\Missing operand
  2435. 16@\SYS@\Illegal system command
  2436. 17@\KCE@\Kermit command error
  2437. 18@\TIM@\No packet received
  2438. 19@\RTR@\Records truncated
  2439. 20@\COM@\Bad communication line
  2440. 21@\PTY@\8th-bit quote not set
  2441. 22@\FTS@\File too short
  2442. 23@\SOH@\Missing start-of-packet
  2443. 24@\OPT@\Option error on filespec
  2444. 25@\DSP@\Unable to dispose of file
  2445. @caption<Error messages and codes for Kermit-370>
  2446. @tag<-ikcodes>
  2447. @blankspace(1)
  2448. @bar()
  2449. @end<table>
  2450.  
  2451. The error codes in Table
  2452. @ref<-ikcodes> bear no relationship to the severity of the associated
  2453. error conditions, aside from the assignment of code 0.  The underlying
  2454. rationale is that the only current generic system
  2455. for the treatment of completion
  2456. codes is to take a non-zero code as an indication of error.
  2457. Indeed, Kermit
  2458. returns a completion code of 0 when "error" condition 1 holds.
  2459.  
  2460. @Section<What's New>
  2461. Below is a list of the changes in Version @value(-ikvrsn) of
  2462. Kermit-370.
  2463.  
  2464. @begin(enumerate,spread 0.5)
  2465. Compatibility with the (aging) F-level assembler.
  2466.  
  2467. Support for LATIN2, LATIN3, TRANSPARENT,
  2468. CP870, CP905, and CP880, as well as the
  2469. aliases L1, L2, and L3.  New alias CP1047 for EBCDIC.
  2470.  
  2471. Support for IBM 3174 ASCII Graphics mode.
  2472.  
  2473. Improved controller detection, including local customization options.
  2474.  
  2475. Support for new unprefixed transmission of selected control characters.
  2476.  
  2477. Support for REMOTE PRINT, REMOTE MAIL, and REMOTE SUBMIT.
  2478.  
  2479. Improved error message for bad packet-size, new alias PACKET-LENGTH
  2480. for PACKET-SIZE.
  2481.  
  2482. Correct observance of FILE COLLISION for all files in a group.
  2483.  
  2484. Ignoring spurious flow-control "packets" from (for example) MS-Kermit.
  2485.  
  2486. Support for new locking-shift Kermit protocol.
  2487.  
  2488. Support for Japanese Kanji file transfer and support for the Thai
  2489. and Arabic character sets.
  2490.  
  2491. New versions of Kermit with the interactive messages in languages
  2492. other than English.
  2493.  
  2494. New FULLSCREEN controller type.
  2495.  
  2496. New HINTS subcommand.
  2497.  
  2498. More graceful recovery from terminal I/O errors and exceptions.
  2499.  
  2500. Support for SNA LU1 3770-type devices and 8-bit, no-parity devices.
  2501.  
  2502. Optional conversion of EBCDIC printer carriage control into ASCII
  2503. control characters.
  2504.  
  2505. Support for STOP command on "dumb" 3270 terminals and PCI protocol converters.
  2506.  
  2507. New efficiency display in STATUS report, based on SPEED setting.
  2508.  
  2509. New, uniform messages upon entering protocol mode, in the
  2510. form "KERMIT READY TO SEND..." (or RECEIVE or SERVE).
  2511.  
  2512. 8-bit XECHO output.
  2513.  
  2514. Control prefixing for C1 controls.
  2515.  
  2516. New VERSION subcommand.
  2517.  
  2518. Improved debugging facilities.
  2519. @end(enumerate)
  2520.  
  2521. @Section(What's Missing)
  2522.  
  2523. Work on Kermit-370 will continue.  Features that need to be
  2524. improved or added include:
  2525. @begin(itemize)
  2526. Implement file archiving.
  2527.  
  2528. Implement file transfer checkpointing.
  2529.  
  2530. Add SET REPEAT subcommand.
  2531.  
  2532. Improve Kermit-370 operation as a local Kermit.
  2533.  
  2534. Implement public server mode.
  2535.  
  2536. Allow REMOTE KERMIT HELP, REMOTE KERMIT DIR, and REMOTE SET from a micro.
  2537.  
  2538. @Index(Discarding files)
  2539. Add new SET FILE LONGLINE DISCARD option to allow multi-file
  2540. transfer to proceed past a truncation problem.
  2541.  
  2542. System-specific upgrades; see the respective chapters for details.
  2543. @end(itemize)
  2544.  
  2545. Anyone interested in working on these or other improvements should first
  2546. get in touch with the Center for Computing Activities at Columbia
  2547. University to find out if someone else has already begun a similar
  2548. project (and, if so, who).
  2549.  
  2550. @Section<Further Reading>
  2551. Below is a list of references for some of the material in this chapter.
  2552.  
  2553. @begin(enumerate,spread 0.5)
  2554.  
  2555. @i<About Type: IBM's Technical Reference for 240-Pel Digitized Type>,
  2556. S544-3156-02 (1989).  This manual contains visual tables of many
  2557. EBCDIC code pages and a comprehensive list of character names and
  2558. acronyms.
  2559.  
  2560. @i<IBM System/370 Reference Summary>, GX20-1850-3 (1976).  This reference
  2561. card contains EBCDIC and ASCII character codes.
  2562.  
  2563. @i<IBM VS Fortran Application Programming: Language Reference>,
  2564. GC26-3986-1 (1982).  Appendix E contains a table of EBCDIC and
  2565. ASCII characters with an implied full 256-byte translation table.
  2566.  
  2567. @i<IBM 3174 Character Set Reference>,
  2568. GA27-3831-02 (1990).  Chapter 5 contains visual tables of many EBCDIC
  2569. code pages.
  2570.  
  2571. @i<Info-Kermit Digest> Vol. 11 #1 (1989).  This issue contains draft
  2572. specifications of some Kermit protocol extensions.
  2573.  
  2574. @i<ISO International Register of Coded Character Sets to be used with
  2575. Escape Sequences> (1989).  This (very large) document has complete
  2576. and unambiguous descriptions of standard coded character sets.  It
  2577. can be obtained from the ECMA.
  2578.  
  2579. @i<Kermit, A File Transfer Protocol> by Frank da Cruz; Digital Press
  2580. (1987).  This book contains a thorough description of the Kermit
  2581. protocol and services with copious examples.
  2582.  
  2583. Kermit distribution file ISOK7.TXT (1992).  This preliminary draft
  2584. describes the new transfer protocol, including the international
  2585. character-set support.
  2586.  
  2587. @i<Kermit News> Vol. 3 #1, p.5, "Dynamic Packet Size Control" (1988).
  2588. This article describes an algorithm for
  2589. optimizing Kermit throughput in the face of line noise.
  2590.  
  2591. @i<Kermit News> #4, p.16, "International Character Sets" (1990).
  2592. This article discusses the new transfer protocol.
  2593.  
  2594. @i<ASCII and EBCDIC Character Set and Code Issues in Systems
  2595. Applications Architecture>,
  2596. SHARE white paper by Edwin Hart (1989).  This document, available as
  2597. file SHARE REQUIRE from LISTSERV@@JHUVM, lays out general considerations
  2598. for character codes and translatability.
  2599.  
  2600. Kermit distribution file LSHIFT.TXT (1991).  This file describes the new
  2601. protocol extension for better compression of 8th-bit text on 7-bit
  2602. channels.
  2603.  
  2604. @end(enumerate)
  2605.