home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibm370 / ikcker.mss < prev    next >
Text File  |  2020-01-01  |  36KB  |  883 lines

  1. @Part(CMSKERMIT,root="kuser")
  2. @string(-cmsversion="4.3.0")
  3. @string(-cmsdate="93/9/30")
  4. @Chapter<IBM CMS KERMIT>
  5. @Index(CMS)
  6. @Begin<Description,Leftmargin +15,Indent -15,spread 0>
  7. @i(Program:)@\John Chandler (Harvard/Smithsonian Center for
  8. Astrophysics); contributions from
  9. Va@ccd()e Kundak@ccd()i and
  10. Daphne Tzoar (Columbia U),
  11. Bob Shields (U. Maryland),
  12. Greg Small (UC Berkeley), Clark Frazier (Harvard
  13. Bus. Sch.), Bob Bolch and Steve Blankinship (Triangle), Ron Rusnak
  14. (U. Chicago),
  15. Andr@eac() Pirard (U. Li@egr()ge)
  16.  
  17. @i(Language:)@\IBM/370 Assembler
  18.  
  19. @i(Documentation:)@\John Chandler (CfA)
  20.  
  21. @i(Version:)@\@value(-cmsversion) (@value<-cmsdate>)
  22.  
  23. @i(Date: )@\1993 September
  24. @end<Description>
  25.  
  26. @subheading<Kermit-CMS Capabilities At A Glance:>
  27. @begin<format,leftmargin +2,above 1,below 1>
  28. @tabclear()@tabset(3.5inches,4.0inches)
  29. Local operation:@\Yes
  30. Remote operation:@\Yes
  31. Transfers text files:@\Yes
  32. Transfers binary files:@\Yes
  33. Wildcard send:@\Yes
  34. @q(^X/^Z) interruption:@\Yes (through micro)
  35. Filename collision avoidance:@\Yes
  36. Can time out:@\No
  37. 8th-bit prefixing:@\Yes
  38. Repeat count prefixing:@\Yes
  39. Alternate block checks:@\Yes
  40. Terminal emulation:@\No
  41. Communication settings:@\No
  42. Transmit BREAK:@\No
  43. Packet logging:@\Yes
  44. Transaction logging:@\Yes
  45. Session logging:@\No
  46. Raw transmit:@\Yes (no prompts)
  47. Sliding window:@\No
  48. Long packets:@\Yes
  49. Act as server:@\Yes
  50. Talk to server:@\Yes
  51. Advanced server functions:@\Yes
  52. Advanced commands for servers:@\Yes
  53. Local file management:@\Yes
  54. Handle Attribute Packets:@\Yes
  55. Command/init files:@\Yes
  56. Command macros:@\No
  57. @end<format>
  58.  
  59. @subheading<CMS Specifics of Kermit-370:>
  60. @begin<format,leftmargin +2,above 1,below 1>
  61. @tabclear()@tabset(3.5inches,4.0inches)
  62. @Index(Initialization files)@Index(Log files)@Index(LRECL)
  63. Global INIT file:@\@q(SYSTEM KERMINI *)
  64. User INIT file:@\@q(@i<userid> KERMINI *)
  65. Debug packet log:@\@q(KER LOG A1)
  66. Server reply log:@\@q(KER REPLY A1)
  67. Mail command:@\@q[EXEC KERMAIL @i<filespec> ( @i<users>]
  68. Print command:@\@q[EXEC KERMPRT @i<filespec> ( @i<options>]
  69. Submit command:@\@q[EXEC KERMSUB @i<filespec> ( @i<options>]
  70. Maximum packet size:@\1913 (SERIES1), 2030 (TTY)
  71. Maximum disk LRECL:@\65535
  72. @end<format>
  73.  
  74. @Index(IBM)
  75. @Index(TTY)@Index(Series/1)@Index(CMS)
  76. Kermit-CMS is a member of the generic Kermit-370 family and shares most
  77. of the features and capabilities of the group.
  78. As its name implies, Kermit-CMS is the
  79. variant of Kermit-370 that runs under the CMS operating system.
  80. The primary documentation for Kermit-CMS is actually
  81. the chapter on Kermit-370 (entitled IBM 370 Kermit), which
  82. describes general properties; the present chapter assumes the
  83. reader is familiar with that material.  Only the details specific to
  84. CMS operation will be discussed here, @i<e.g.>, command syntax
  85. relating to the CMS file system or commands not offered in general
  86. by Kermit-370.
  87.  
  88. @Section<The CMS File System>
  89.  
  90. The features of the CMS file system of greatest interest to Kermit
  91. users are the format of file specifications (or @i<filespecs>)
  92. and the concept of
  93. records.  The latter is described in the Kermit-370 chapter.
  94.  
  95. The CMS @i<filespec> takes the form
  96. @example<filename filetype filemode>
  97. (often abbreviated FN FT FM).  The filename and filetype are one to eight
  98. characters each.  The filename is the primary identifier
  99. for the file, and the type is an indicator which, by convention, tells
  100. what kind of file it is.  For instance, @q<TEST FORTRAN> is the
  101. source of a Fortran program named TEST.  @q(MODULE) is the
  102. filetype for executable programs (as distinct from object code, which
  103. has a filetype of @q<TEXT>!).  Although some operating systems
  104. consider the filetype optional, CMS requires a type for each file.
  105. Therefore, Kermit-CMS supplies a default type of @qq($) for any
  106. received file if no type is
  107. provided by the remote system.  The same default is used for
  108. a missing filename.  At the same time, Kermit forces
  109. the FN and FT to conform to CMS rules in other respects.
  110. The FN and FT may contain, in any order, uppercase letters, digits, and
  111. the special characters @qq<$> (dollar sign), @qq<#> (number sign),
  112. @qq<@@> (at sign), @qq<+> (plus), @qq<-> (hyphen), @qq<:> (colon), and
  113. @qq<_> (underscore).  Any
  114. other character, if
  115. found in the FN or FT, is replaced by
  116. an underscore (or converted to uppercase if it is a lowercase letter).
  117. Also, both FN and FT are truncated, if necessary, to eight characters.
  118.  
  119. @Index(Home disk)
  120. The filemode, which consists of a letter and a number, is similar
  121. to a device specification on microcomputer systems: @w<@q(FN FT FM)>
  122. would translate to @q<FM:FN.FT> in CP/M or MS-DOS if the filemode
  123. number is ignored.  Indeed, the filemode number is more properly an
  124. attribute of a file than part of its name -- no two files can
  125. co-exist with names that match in all but the filemode number.  Even the
  126. filemode letter is not a fixed part of the @i(filespec) because the
  127. same mini-disk or Shared File System (SFS) directory
  128. could be accessed under a different mode letter.
  129. In some ways, the filemode letter is like
  130. a disk directory designator, even when it refers to a mini-disk,
  131. since many such mini-disks may reside
  132. on the same disk drive.  For this reason, the Kermit
  133. concept of the "working
  134. directory" is equated with a particular disk mode letter under
  135. Kermit-CMS.  The current "working directory" is, thus, the
  136. "home" filemode (normally @qq<A>, which is the primary
  137. user mini-disk under CMS), and file transfers take place preferentially
  138. to and from the "home" disk.
  139. If the filemode is
  140. omitted from a @i(filespec) when sending, the "home" disk
  141. is normally used, but there is an option for using a default of
  142. @qq(*) instead.
  143. @Index(Search order)
  144. In this case, the user's disks are scanned according to the search
  145. order and the first occurrence of the file is the one that is sent.
  146. If the filemode is omitted from a
  147. @i(filespec) when receiving, the "home"
  148. disk is used with a filemode number of @qq(1).
  149.  
  150. To provide compatibility with other operating systems, when Kermit-CMS
  151. sends a file, it ordinarily makes a file header with
  152. only the filename and filetype.  It also converts the
  153. intervening blank to a period.  However, extra information
  154. may be added by way of the SET FOREIGN subcommand.
  155.  
  156. @Index(Wildcard)
  157. CMS allows a group of files to be specified in a single
  158. @i(filespec) by including the special
  159. "wildcard" characters @qq<*>
  160. and @qq<%>.  A @qq<*> matches any string of characters (even a null
  161. string) from the
  162. current position to the end of the field;
  163. a @qq<%> matches any single character.  Here are some examples:
  164.  
  165. @Begin(Description,spread 0.5,leftmargin +14, indent -12)
  166. @q<* COBOL A>@\All files of type @q<COBOL> (all COBOL source files) on
  167. the A disk.
  168.  
  169. @q<F* * *>@\All files whose names start with F.
  170.  
  171. @q<% * B>@\All B-disk files with one-character FN's.
  172. @End(Description)
  173.  
  174. CMS files, like those in other IBM 370 systems, are record-oriented
  175. (see the introduction to the Kermit-370 chapter).
  176. In particular, CMS files are characterized by record
  177. format (RECFM), which may be fixed-length or varying-length,
  178. and by record
  179. length (LRECL).  The size of record blocks is irrelevant, however,
  180. because CMS performs the blocking and deblocking operations
  181. automatically and transparently, including the spanning of records
  182. across block boundaries.  An important point to note is that records
  183. being written to a RECFM V file are not limited in length by the LRECL,
  184. but only by the CMS maximum (65535 bytes).
  185.  
  186. Another file system feature of occasional interest is the means of
  187. reporting errors.  When Kermit-CMS encounters a disk error, it records
  188. @Index(Error codes)
  189. the function and error code for inclusion in the STATUS report.  The
  190. explanations can be found in the CMS reference manual under the FSREAD
  191. and FSWRITE macros (which correspond to the RDBUF and WRBUF functions).
  192. @Index(RDBUF)@Index(WRBUF)
  193.  
  194. @Section<Program Operation>
  195.  
  196. @Index(Initialization files)
  197. At startup time, Kermit-CMS looks for two initialization
  198. files, @qq(SYSTEM KERMINI) and @qq<@i(userid) KERMINI>
  199. (where @i(userid) is the user's
  200. logon ID).  If either of these files exists on more than one disk,
  201. it will be read and executed from the first copy in the search order.
  202. The file @qq(SYSTEM KERMINI) should be placed on a
  203. publicly accessible disk by a systems programmer, preferably the
  204. same disk where the Kermit executable module is kept.
  205. The file @qq<@i(userid) KERMINI> can be maintained by the user on any
  206. convenient disk.
  207.  
  208. One important distinction between Kermit-CMS and other Kermits is that
  209. a program running under CMS is unable to interrupt a read on
  210. its "console".  This means that the CMS variant of Kermit cannot
  211. time out after sending a packet.  The only way to
  212. time out is from the other side:
  213. typing a carriage return to the local Kermit causing it to retransmit
  214. its last packet, or an automatic timeout as provided by most other
  215. Kermits.
  216.  
  217. Five CP SET parameters (MSG, IMSG, WNG, ACNT, and TIMER)
  218. are set OFF during protocol mode
  219. (and restored afterwards) to prevent CP from
  220. interrupting any I/O in progress,
  221. LINEDIT is set OFF to ensure that all characters are taken literally,
  222. and RUN is set ON to
  223. ensure that Kermit can recover from accidental attention interrupts.
  224. Also, on a @q(TTY) line, the TERMINAL LINESIZE is set OFF
  225. to prevent CP from inserting
  226. carriage return-linefeed pairs into packets, TERMINAL SCROLL is set to
  227. CONT to prevent CP pauses,
  228. and the
  229. @Index(Translation tables)
  230. CMS user terminal translation tables (established via the CMS SET INPUT
  231. and OUTPUT commands) are temporarily suppressed for both short and long
  232. packet protocols.
  233. @Index(Long packets)
  234. The settings in effect when Kermit starts up are saved as a sort of
  235. "normal" status snapshot (as opposed to the "protocol" status just
  236. described).  The protocol status is selected whenever
  237. Kermit enters protocol mode and also after Kermit executes a CP command
  238. in server mode.  Similarly, normal status is selected when Kermit
  239. leaves protocol mode and before Kermit executes a CP command in server
  240. mode.
  241. Note: if Kermit is
  242. interrupted in the midst of a transfer or while in server mode, these
  243. parameters will be left with peculiar settings (namely, the protocol
  244. status), and they may need
  245. to be restored by hand.
  246.  
  247. @Index(Reconnecting)
  248. If, at some installation, Kermit can be run only on @qq(TTY)
  249. lines, users will often be forced to disconnect or log off ongoing
  250. sessions on fullscreen lines.  In general, users may operate through
  251. IBM 3270-type terminals and then disconnect in order to reconnect to
  252. a line that supports Kermit.  In cases like this, users should be
  253. warned that reconnecting to a session over a @qq(TTY) line is different
  254. from logging on initially over such a line.  In particular, the CMS
  255. SET parameters AUTOREAD and BLIP and the CP TERMINAL parameter LINESIZE
  256. may need to be reset after reconnecting.  AUTOREAD should be ON for
  257. @qq(TTY) lines and OFF for fullscreen lines; the other two parameters
  258. are a matter of taste.  A similar warning applies to reconnecting in
  259. the opposite direction.
  260.  
  261. @Index(TTY)@Index(Handshake)
  262. CMS is different from some other IBM mainframe systems in that it allows
  263. a program to
  264. take control of prompting and synchronization on @qq(TTY) lines.
  265. Kermit-CMS takes advantage of this option, and
  266. it is not, in general, necessary to enable handshaking
  267. on the micro Kermit before
  268. connecting to CMS.  In other words, handshaking
  269. should be suppressed for both @qq(TTY) and
  270. @Index(Series/1)@qq(SERIES1) devices (the micro Kermit should have
  271. HANDSHAKE set OFF, and Kermit-CMS should have HANDSHAKE set to 0).
  272. Since the generic Kermit-370 default handshake (XON) is retained in
  273. Kermit-CMS, the subcommand @qq(SET HANDSHAKE 0) is a good candidate
  274. for inclusion in @q(SYSTEM KERMINI).
  275. @Index(Initialization files)
  276.  
  277. @subheading(Kermit under VM/XA and beyond)
  278.  
  279. Recent evolution of IBM's VM operating system has been marked by
  280. @Index(VM/XA)
  281. sharp discontinuities caused by, among other things, the transition to
  282. Extended Architecture (XA) mode.  As a result, there are now two CMS
  283. variants of Kermit-370, one for the traditional systems and one for
  284. VM/XA.  The former is now XA-cognizant but not, in IBM's terminology,
  285. XA-tolerant.  In other words, it will run only in 370 mode or under
  286. VM/SP.  The latter variant is fully bimodal and will run in 370, XA,
  287. or ESA mode under a bimodal (5.5 or 7 or higher)
  288. CMS, but will not assemble or run
  289. under pre-5.5 releases of CMS.  The differences between the two
  290. variants are essentially invisible to the user, however, aside from the
  291. announcement of the release number when Kermit starts up.  Both variants
  292. carefully determine whether they are running under VM/XA and, if so,
  293. avoid setting the CP parameters ACNT and TIMER, which VM/XA SP 2 does
  294. not support.  Also, the traditional variant halts gracefully if it
  295. finds itself running in XA mode.
  296.  
  297. @subheading(Interactive Operation:)
  298.  
  299. To run Kermit-CMS interactively, invoke the program from CMS by
  300. typing @q<KERMIT>.  When you see the prompt,
  301. @example(Kermit-CMS>)
  302. you may type a Kermit subcommand.  When the subcommand completes, Kermit
  303. issues another prompt.  The cycle repeats
  304. until you exit from the program.  For example:
  305. @Begin(Example)
  306. .@ux(KERMIT)
  307.  
  308. Kermit-CMS Version @value(-cmsversion) (@value<-cmsdate>)
  309. Enter ? for a list of valid commands
  310.  
  311. Kermit-CMS>@ux(send foo *)
  312.  
  313.   @i(Files with fn FOO are sent)
  314.  
  315. Kermit-CMS>@ux(receive test spss)
  316.  
  317.   @i(File is received and called TEST SPSS A1)
  318.  
  319. Kermit-CMS>@ux(exit)
  320. @end(example)
  321.  
  322. The prompt string under CMS is truly interactive.  In other words, the
  323. string (without carriage return or linefeed) appears only when fresh
  324. input is needed from the terminal.  If, for example, Kermit is invoked
  325. after several subcommands have been stacked up, the stack is read and
  326. executed before the first prompt appears.
  327.  
  328. @subheading(Command Line Invocation:)
  329.  
  330. Kermit-CMS may also be invoked with command line arguments from CMS.
  331. The arguments are interpreted as one or more subcommands to be executed
  332. by Kermit after completion of the initialization.
  333. For instance:
  334. @Begin(Example,below 0.5)
  335. .@ux(KERMIT send test fortran)
  336. @End(Example)
  337. or
  338. @Begin(Example,above 0.5)
  339. .@ux(KERMIT set debug on # set file type binary # server)
  340. @End(Example)
  341.  
  342. Kermit will exit and return to CMS after completing the specified
  343. subcommand or subcommands.  Several subcommands may be given on
  344. the command line as long as they are separated by the LINEND character,
  345. which is number sign in this case.  Note that the LINEND delimiter
  346. @Index(Delimiter)
  347. is a function of
  348. CP, rather than Kermit, and applies only to commands entered from the
  349. terminal and only when LINEDIT is on or when talking to CP itself.
  350. A command line may contain up to
  351. 130 characters.
  352.  
  353. @subheading(EXEC Operation:)
  354.  
  355. @Index(EXEC operation)
  356. Like other CMS programs, Kermit-CMS may be invoked from a CMS EXEC.
  357. Subcommands can be passed to Kermit using the program stack
  358. and/or command line arguments.  For example, to start up Kermit-CMS
  359. and have it act as a server, include the line:
  360. @Begin(Example)
  361. @ux(KERMIT server)
  362. @End(Example)
  363. To pass more than one subcommand, they must be stacked in the order in
  364. which they are to be executed.  To start up a Kermit-CMS server with a
  365. three character CRC, include:
  366. @Begin(Example)
  367. @ux(&STACK set block 3)
  368. @ux(&STACK server)
  369. @ux(KERMIT)
  370. @End(Example)
  371. Another way of setting up multiple subcommands would be to collect the
  372. subcommands into a TAKE file and then issue the TAKE subcommand via the
  373. command line or program stack.
  374. EXEC's may be executed from Kermit, either directly or from a
  375. TAKE file, and Kermit subcommands, in turn, may be issued from EXEC's as
  376. long as Kermit is active.  See the TAKE subcommand for more details.
  377.  
  378. @subheading(Server mode:)
  379.  
  380. Command execution in server mode is different in several respects
  381. from normal operation.  First of all, some Kermit subcommands
  382. are not allowed (see the list of subcommands in the Kermit-370 chapter).
  383. Moreover, command errors
  384. always terminate any active TAKE file.
  385. Also, commands other than CP commands run in a
  386. special environment with RUN ON, TIMER OFF, and so forth.
  387. Another difference is that Kermit intercepts all SVC instructions
  388. in order to catch console I/O and transmit the data to the local
  389. Kermit as text packets.  However,
  390. some CMS system or user commands may issue console I/O directly to CP, so
  391. that some messages never appear to the local Kermit (except, perhaps,
  392. as bad packets).  For non-TTY terminals, such messages are stacked up
  393. in the console output queue and appear all at once when Kermit
  394. returns from server mode.
  395. However, some system configurations, especially those including VTAM,
  396. are incapable of resuming Kermit protocol transmission after
  397. interruption by direct console I/O, so such commands should
  398. generally be avoided.
  399.  
  400. @Section<Kermit-CMS Subcommands>
  401.  
  402. Kermit-CMS supports all the subcommands
  403. described in the
  404. Kermit-370 chapter.  In addition, there are two more, both of
  405. which can be issued as remote Kermit commands when Kermit-CMS
  406. is in server mode.  The first is @qq(CMS), which is just a synonym for
  407. the generic subcommand @qq(HOST).  The second is @qq(CP),
  408. which specifically
  409. issues a command to CP.  In most circumstances, the latter is not needed,
  410. since CMS will pass along CP commands to CP.
  411.  
  412. This section concentrates on
  413. the subcommands that have special form or meaning for Kermit-CMS.
  414. These are ordered alphabetically.
  415. See the chapter on Kermit-370 for further details.
  416.  
  417. @Heading(The CP and CMS Subcommands)
  418.  
  419. Syntax:@q< CP @i(or) CMS  @i(text of command)>
  420.  
  421. @Index(KERMBOOT)@Index(User area)@Index(File management)
  422. Although Kermit-CMS does not have a full set of its own
  423. subcommands for managing
  424. local files, it provides those services through the operating system.
  425. You can issue any CP or CMS command, but if Kermit-CMS has
  426. been invoked as a normal user-area program, rather than as a high-memory
  427. "resident" program or nucleus extension,
  428. other user-area CMS commands (such as COPYFILE) are illegal.  Even
  429. then, you can list, type, rename or
  430. delete files, send messages, and so on.
  431. The CMS subcommand under Kermit is
  432. synonymous with the HOST subcommand.
  433.  
  434. @Heading(The CWD Subcommand)
  435. @Index(Home disk)@Index(CWD)
  436.  
  437. Syntax:@q< CWD @i(letter)>
  438.  
  439. The CWD (Change Working Directory)
  440. subcommand establishes a new default ("home") CMS disk.  @i(letter) may
  441. be the mode letter of any accessed disk.  Subsequent file transfers
  442. take place preferentially to and from the default disk.  The initial
  443. home disk is @qq(A).  Note: setting the home disk in Kermit has no
  444. effect on the CMS search order.
  445. @Index(Search order)
  446.  
  447. @Heading(The DIRECTORY Subcommand)
  448. @Index(DIRECTORY)
  449.  
  450. Syntax:@q< DIRECTORY [@i(filespec)]>
  451.  
  452. Under Kermit-CMS,
  453. the DIRECTORY subcommand is identical to the CMS LISTFILE command.
  454.  
  455. @Heading<The GET Subcommand>
  456.  
  457. @Index(GET)
  458. Syntax:@q< GET [@i(foreign-filespec) [@i(filespec)]]>
  459.  
  460. The GET subcommand tells Kermit to request a file or file group
  461. from the other system, which must have a Kermit running in server mode.
  462. The syntax is complicated by the allowance of two forms for the
  463. @i(foreign-filespec), just as in the SEND subcommand.  Here the parsing
  464. is based on the number of "words" (blank-delimited strings) in the
  465. subcommand argument, which can be anything from one to five.  If the
  466. number is anything but four, the interpretation is unambiguous, but when
  467. there are four words, the first word plays the key role.  If it has more
  468. than eight characters or contains a @qq(.) or @qq(/), it is assumed to
  469. be the whole @i(foreign-filespec); otherwise, it is assumed to be the
  470. first of two words that, when joined by a @qq(.), make up the
  471. @i(filespec) on the other system.
  472. If this subcommand is issued without any arguments at all,
  473. Kermit-CMS will prompt the user for both foreign and native
  474. @i<filespecs>.
  475.  
  476. @Heading(The GIVE Subcommand)
  477. @Index(GIVE)@Index(Translation tables)
  478.  
  479. Syntax:@q< GIVE @i(table-name) @i(filespec)>
  480.  
  481. This subcommand compares the named translation
  482. table with its default values and saves the differences
  483. in a TAKE file named @i(filespec).  The format of @i(filespec) is
  484. @q(fn [ft [fm]]).  The default filetype is @qq(TAKE), and the default
  485. filemode is that of the "home" disk.  See the CWD subcommand.
  486.  
  487. @Heading(The HELP Subcommand)
  488. @Index(HELP)
  489.  
  490. Syntax:@q< HELP @i(subcom)>
  491.  
  492. This subcommand displays the relevant part of the Kermit help file
  493. when the latter is a partitioned data set.  Kermit verifies that the
  494. argument is a valid Kermit subcommand (or a non-ambiguous abbreviation)
  495. and then displays the corresponding member of the PDS.  For the SET
  496. subcommand, individual parameters may also be specified, as in
  497. @example<HELP SET BLOCK-CHECK>
  498. If no subcommand name is included, Kermit displays the member that gives an
  499. overview of Kermit operation.  Kermit looks for a help file with a filename
  500. matching the Kermit command itself, but will settle for one with a
  501. filename of KERMIT if necessary.  Thus, the response to the HELP
  502. subcommand may depend upon which Kermit module is invoked.
  503. The choice of whether to format the help file as a PDS is an option at
  504. installation time.  If the installer has chosen to leave it as an ordinary
  505. sequential file, or if no help file has been installed recently, Kermit
  506. will fall back on the old behavior of the HELP subcommand: it will issue
  507. the CMS HELP command for Kermit and therefore display the entire file.
  508. Since the help file is rather long, this
  509. subcommand is not recommended for users with line-mode terminals, unless
  510. the help file is installed as a PDS.  See the installation guide for more
  511. details about the help files.
  512.  
  513. @Heading<The RECEIVE Subcommand>
  514.  
  515. @Index(RECEIVE)
  516. Syntax:@q< RECEIVE [@i(filespec)]>
  517.  
  518. The RECEIVE subcommand tells Kermit to receive a file or file group
  519. from the other system.  You must issue the corresponding
  520. SEND subcommand to the
  521. other Kermit.
  522.  
  523. The format of @i(filespec) is:
  524. @example<filename filetype [filemode]>
  525.  
  526. If the optional @i(filespec) is omitted, Kermit-CMS will use the
  527. name(s) provided by the other Kermit.  If that name is not a legal
  528. CMS file name, Kermit-CMS will delete excess characters
  529. and will change illegal characters to underscores.
  530. A @i(filespec) in the subcommand indicates what name the incoming file
  531. should be given.  The @i(filespec) may include a
  532. filemode to designate the destination disk.  If none is provided,
  533. the file will be saved on the "home" disk with filemode number
  534. @qq(1).  If you want to use the same name
  535. but a different filemode, specify @w(@qq<= = FM>).  Wildcards may not
  536. be used.
  537. If the optional @i(filespec) is provided,
  538. but more than one file arrives, the
  539. first file will be stored under
  540. the given @i(filespec), and the remainder will be stored under
  541. their own names on the "home" disk.  If, however, @qq<= = FM>
  542. is used, all files will be placed onto the specified disk.
  543.  
  544. For purposes of truncation and folding, the maximum record length for
  545. a received file is 65535 if RECFM is V and "LRECL" if RECFM is F.
  546. @Index(Truncation)@Index(Folding)
  547.  
  548. @Index(Filename collision)
  549. If the incoming file has the same name as an existing file, the action
  550. taken depends on the FILE COLLISION setting.  The possible settings
  551. and their meanings are given in the Kermit-370 chapter.  Two of the
  552. settings (BACKUP and RENAME) require that
  553. Kermit-CMS change the incoming name
  554. so as not to obliterate a pre-@|existing file.  It attempts to find
  555. a unique name by successively modifying the original and checking for
  556. the existence of such a file at each step.  The procedure begins by
  557. truncating the filetype to six characters if necessary and then
  558. appending @qq($0).  If a file by that name exists,
  559. Kermit then replaces the @qq(0) with a @qq(1).
  560. It continues in this manner up to @qq(9), and if an unused name cannot
  561. be found, the transfer fails.
  562.  
  563. @Heading<The SEND Subcommand>
  564. @Index(SEND)
  565.  
  566. Syntax:@q{ SEND [@i(filespec)[<@i(options)>] [@i(foreign-filespec)]][, ...]}
  567.  
  568. The SEND subcommand causes a file or file group to be sent from CMS
  569. to the Kermit on the other system.  @i(filespec) takes the
  570. form:
  571. @example(filename filetype [filemode])
  572. or
  573. @example(fn.ft.[fm])
  574. but the filemode is optional only if the @i(foreign-filespec) is omitted.
  575. The "dotted" notation is interpreted by changing up to two dots into
  576. spaces, so only the normal CMS-style form is "real" as far as Kermit
  577. is concerned.  For details on the @i(options), see the description of
  578. SEND in the Kermit-370 chapter.  Note that no blanks may intervene
  579. between the CMS @i(filespec) and the @i(options), even though the
  580. @i(filespec) itself has imbedded blanks (either explicitly or
  581. implicitly through the "dotted" notation).
  582.  
  583. @Index(Wildcards)
  584. @Index(Search order)
  585. The @i(filespec) may contain the wildcard characters @qq<*> or
  586. @qq<%>.  If it does, then all matching files will
  587. be sent.  If, however, a file exists by the same name on more than one
  588. disk, only the first one Kermit-CMS encounters, according to the disk
  589. search order, is sent.  See also the CWD subcommand.
  590.  
  591. The @i(foreign-filespec), if any, is used for the file header of the
  592. outgoing file, replacing the usual filename.filetype copied from the
  593. CMS @i(filespec).  It may take one of two forms:
  594. @example(filename filetype)
  595. or
  596. @example(arbitrary-string)
  597. Normally, this form of the SEND subcommand is used only for single files
  598. because the @i(foreign-filespec) is used only for the first file of a
  599. group (subsequent files having default headers).  However, in the
  600. two-token form of the @i(foreign-filespec) either the name or type may
  601. be an Equals sign @qq(=) to signify that the corresponding CMS name
  602. or type is to be retained in the file header.  In that case, the
  603. partial renaming carries through an entire group of files.  It is
  604. the user's responsibility to prevent such partial renaming from
  605. sending duplicate file headers within a file group.
  606. If both @i(filespecs) are omitted for this subcommand, Kermit will
  607. prompt separately for each, and the respective syntaxes are exactly
  608. as described above, except the filemode is optional even if a
  609. @i(foreign-filespec) is to be supplied.
  610. This prompting mode is especially useful when more than one file
  611. (or file group) is to be sent, since the command line is limited
  612. to 130 characters.
  613.  
  614. @Indexsecondary(primary="Blanks",secondary="preserving trailing")
  615. Trailing blanks in a text file with RECFM F are deemed superfluous and
  616. are stripped off when Kermit-CMS downloads the file.  In order to treat
  617. such blanks as significant, you must convert the record format to V,
  618. for example, by using COPYFILE with the "RECFM V" option.  Note: you
  619. must not use XEDIT for such a conversion, since it also strips
  620. trailing blanks from files with RECFM V.
  621.  
  622. @Heading<The SET Subcommand>
  623. @Index(SET)
  624.  
  625. Syntax:@q< SET @i(parameter) [@i(value)]>
  626.  
  627. The SET subcommand establishes or modifies various parameters controlling
  628. file transfers.
  629. The following SET parameters are available in Kermit-CMS, but not in
  630. Kermit-370 in general:
  631. @Begin(Format,spread 0)
  632. @tabclear()@tabset(2.0inches)
  633. DESTINATION@\"Home" disk.
  634. FILE
  635.   LRECL@\Logical Record length for incoming file.
  636.   RECFM@\Record format for incoming files.
  637. SEARCH-ALL@\Determine the default disk search scope.
  638. @End(format)
  639.  
  640. @Subheading<SET DESTINATION>
  641. @Index(Home disk)
  642.  
  643. Syntax:@q< SET DESTINATION @i(letter)>
  644.  
  645. This subcommand is equivalent to the CWD subcommand (@i<q.v.>).
  646.  
  647. @Subheading(SET FILE LRECL)
  648.  
  649. Syntax:@q< SET FILE LRECL @i(number)>
  650.  
  651. This sets the logical record length for incoming files to a @i(number)
  652. from 1 to 65535 (64K-1).  This variable is used only for fixed-format
  653. and binary files.  The default is 80.
  654.  
  655. @Subheading(SET FILE RECFM)
  656.  
  657. Syntax:@q< SET FILE RECFM @i(option)>
  658.  
  659. This
  660. sets the record format to use for incoming files.  Valid @i<option>s are
  661. "Fixed" and "Variable" (the default).
  662. Fixed-format records are padded, folded,
  663. or truncated, as needed, to the current LRECL.
  664.  
  665. @Subheading(SET PROMPT)
  666.  
  667. Syntax:@q< SET PROMPT [@i(string)]>
  668.  
  669. This
  670. sets the prompt string, just as in other variants of Kermit-370,
  671. except that the string is padded with the current HANDSHAKE character,
  672. if any, unless the string is empty or already ends with that character.
  673.  
  674. @Subheading(SET SEARCH-ALL)
  675.  
  676. Syntax:@q< SET SEARCH-ALL ON @i(or) OFF>
  677.  
  678. @Begin(Description,leftmargin +8,indent -8,spread 0.5)
  679. ON@\If the user omits the filemode from a SEND subcommand
  680. (or a GET request via
  681. the other Kermit), Kermit-CMS will search all accessed disks for the
  682. named file or files.  The search follows the usual
  683. search order.
  684. @Index(Search order)
  685.  
  686. OFF@\If the filemode is not specified, only the "home" disk and its
  687. read-only extensions will be searched for matching files.  (Default.)
  688. @End(Description)
  689.  
  690. @Heading(The SPACE Subcommand)
  691. @Index(SPACE)
  692.  
  693. Syntax:@q< SPACE [@i(letter)]>
  694.  
  695. This subcommand displays the storage
  696. allocation on the specified CMS mini-disk or SFS directory.
  697. If @i(letter) is omitted, the default disk specified by the CWD
  698. subcommand is displayed.  Aside from this default, the subcommand is
  699. identical with CMS QUERY DISK.
  700.  
  701. @Heading<The TAKE Subcommand>
  702. @Index(TAKE)
  703.  
  704. Syntax:@q< TAKE @i(filespec)>
  705.  
  706. Execute Kermit subcommands from the specified file, where @i(filespec)
  707. has the format @q<fn [ft [fm]]>.  The default
  708. filetype is @qq(TAKE), and the default filemode is @qq(*).
  709.  
  710. @Index(EXEC)
  711. Kermit subcommands may also be executed from CMS EXEC's, so that the TAKE
  712. subcommand is, in a sense, superfluous under CMS.  In CMS terminology,
  713. Kermit establishes a Kermit subcommand environment, and EXEC's written in
  714. EXEC 2 or REXX may invoke subcommands within
  715. that environment.  For example,
  716. to display the current packet checksum type, an EXEC 2 would issue
  717. @Example(&SUBCOMMAND KERMIT SHOW BLOCK-CHECK)
  718. and a REXX macro would issue
  719. @Example(Address KERMIT 'SHOW BLOCK-CHECK')
  720. There is one important difference between executing a TAKE file and an
  721. EXEC: the former may issue a QUIT or EXIT subcommand, but the latter
  722. may not.  Also, a Kermit subcommand issued from an EXEC returns a
  723. completion code according to the current error status (see the table
  724. under "After Returning from Kermit-370"
  725. in the Kermit-370 chapter).  An EXEC
  726. could therefore be set up to react appropriately to file transmission
  727. errors or other unpredictable events.  A third difference is that,
  728. although an EXEC may issue a TAKE subcommand, the latter will not be
  729. executed until after the EXEC processor returns to Kermit.
  730.  
  731. @Section<How to build an executable Kermit-CMS>
  732.  
  733. Before attempting to build Kermit-CMS, look in the
  734. Kermit distribution under IKCKER for an
  735. installation document, as well as "beware", help, and update files, and
  736. read them first.  They will probably contain information that is more
  737. current than what you see here.  In fact, IKCKER INS contains an EXEC
  738. for installing Kermit nearly automatically.
  739.  
  740. Kermit-CMS consists at present of a large
  741. assembly and a small optional one.  The large
  742. assembly (KERMIT ASSEMBLE) contains the Kermit program, and the small
  743. one (KERMBOOT ASSEMBLE) is a bootstrap program for loading Kermit
  744. into high memory and running it.
  745. KERMBOOT can be useful under CMS/SP Release 3 and below, but is not
  746. needed under Release 4 and cannot be used at all under Release 5 and
  747. above.
  748. Although KERMBOOT is all in one file in the Kermit distribution, the
  749. source for Kermit itself is in many pieces, some generic for Kermit-370
  750. and some specific to CMS.  All the necessary pieces are sequenced in
  751. columns 73-80 so that the numbers form a strictly increasing
  752. sequence when the pieces are correctly "pasted" together.
  753. It is important to preserve the original sequence numbers so that
  754. updates, if any, can be applied to the source.
  755.  
  756. To create a runnable version (the hard way):
  757.  
  758. @begin(enumerate,spread 0.5)
  759. Combine the following @qq(ASM) files from the Kermit distribution into
  760. a single file with @qq<RECFM F> and @qq<LRECL 80>: IK0DOC, IK0MAC,
  761. IKCMAC, IK0DEF, IK0MAI, IK0COM, IK0CMD, (optional: IK0KAN),
  762. IKCUTL, and IK0PRO.
  763. The resulting file is the composite source for Kermit-CMS, called
  764. KERMIT ASSEMBLE.  This source must retain the original sequence numbers
  765. in columns 73-80 (in other words, be sure not to resequence the source
  766. accidentally using the editor!)
  767.  
  768. Copy or rename IKCBOO ASM from the Kermit distribution (if desired)
  769. to a file called
  770. KERMBOOT ASSEMBLE with @qq<RECFM F> and @qq<LRECL 80>.
  771.  
  772. @Index(MACLIB)
  773. GLOBAL the necessary MACLIBs.  Under VM/SP and VM/XA SP 2, these are
  774. DMSSP, CMSLIB, TSOMAC, and OSMACRO.  Under VM/XA SP 2.1, they are
  775. DMSOM, DMSGPI, and OSMACRO.
  776.  
  777. Assemble the source file(s).
  778.  
  779. Load one file into memory via: @qq<LOAD KERMIT> or @qq<LOAD KERMBOOT>.
  780. In the former case, the entire Kermit program is now loaded; in the
  781. latter, only a bootstrap program which expects to find the object
  782. file @qq<KERMIT TEXT> at run time.
  783. Under CMS/SP Release 4 and above, there is a third and better option,
  784. namely, @qq<LOAD KERMIT (RLDSAVE)>.
  785.  
  786. @Index(KERMBOOT)@Index(User area)
  787. Create the executable called @qq<KERMIT MODULE> via: @qq<GENMOD KERMIT>.
  788. Alternatively (under CMS/SP Release 3 and below),
  789. create both KERMIT and KERMBOOT modules to give the
  790. user a choice of user-area or high-memory execution.  Since
  791. Kermit-CMS is serially reusable, it can be reinvoked in the user
  792. area with the START command, but the high-memory version must be
  793. reloaded each time.
  794. If Kermit is loaded using the RLDSAVE option (Release 4 and above), the
  795. module can, in fact, be run either way; the command @qq<NUCXLOAD KERMIT>
  796. will load Kermit "permanently" as a nucleus extension
  797. for invocation at need.  Note: the nucleus extension can be removed by
  798. the command @qq<NUCXDROP KERMIT>.
  799. @end(enumerate)
  800.  
  801. To create a runnable version the easy way, extract IKCINS EXEC from
  802. IKCKER INS and run it.  When it is finished, you may perform any desired
  803. tests and then move the MODULE and HELP files to their permanent locations.
  804. It is useful for
  805. the Kermit module and help file to
  806. have the same filename and reside on the same mini-disk.
  807.  
  808. @Index(Initialization files)@Index(Translation tables)
  809. If your site's ASCII/EBCDIC translation table
  810. for TTY lines does not conform
  811. to the one listed in the appendix (which in turn conforms to the
  812. one given in the IBM System/370 Reference Summary), then enter
  813. the appropriate SET ATOE/ETOA/TATOE/TETOA
  814. subcommands in the SYSTEM KERMINI
  815. file, which should reside on the same disk as KERMIT MODULE (and
  816. KERMIT TEXT).  @i<NOTE:> If the ASCII/EBCDIC translation is not invertible,
  817. Kermit will not and cannot work.
  818.  
  819. @Section<What's New>
  820. Below is a list of the CMS-specific features in Version
  821. @value(-cmsversion) of Kermit-CMS added since the previous major
  822. release, Version 4.2, in March of 1990.
  823. For the list of generic additions, see the
  824. chapter on Kermit-370.
  825.  
  826. @begin(enumerate,spread 0.5)
  827. New, automated installation procedure collected as
  828. an EXEC contained in the installation guide.  This includes selection of
  829. XA support and SFS support as appropriate.
  830.  
  831. Help for individual Kermit subcommands from the HELP subcommand.
  832.  
  833. Improved recovery from I/O errors during file transfer.
  834.  
  835. Improved execution of CMS commands under Kermit with SYSCMD ON.
  836.  
  837. File names no longer considered to "collide" with files existing on
  838. read-only extensions.
  839.  
  840. Support for disk space check in advance of receiving a file into SFS
  841. and more accurate space check for ordinary mini-disks.
  842.  
  843. Improved SFS wildcard sending.
  844.  
  845. Small bug fixes.
  846.  
  847. @end(enumerate)
  848.  
  849. @Section(What's Missing)
  850.  
  851. Work on Kermit-CMS will continue.  Features that need to be
  852. improved or added include:
  853. @begin(itemize)
  854. Allow timeouts so Kermit-CMS does not wait forever if a packet does
  855. not arrive in a timely fashion.  This is not possible under CMS at
  856. present.
  857.  
  858. Implement file archiving.
  859.  
  860. Add a SET REPEAT subcommand.
  861.  
  862. Implement public server mode, allowing a disconnected virtual machine
  863. to provide Kermit services via CP DIAL.
  864.  
  865. Add a CONNECT subcommand.  This may be impossible.
  866.  
  867. Intercept CP messages during protocol mode, rather than just suppressing
  868. them.  Display the messages later or log them or send in packets as
  869. appropriate.
  870.  
  871. Define EXEC variables from Kermit by analogy with the XEDIT EXTRACT
  872. subcommand.
  873.  
  874. Set file date/time on received files from the information sent by the
  875. other Kermit.
  876.  
  877. @end(itemize)
  878.  
  879. Anyone interested in working on these or other improvements should first
  880. get in touch with the Center for Computing Activities at Columbia
  881. University to find out if someone else has already begun a similar
  882. project (and, if so, who).
  883.