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

  1. @Part(TSOKERMIT,root="kuser")
  2. @string(-tsoversion="4.3.0")
  3. @string(-tsodate="93/9/30")
  4. @Chapter<IBM MVS/TSO KERMIT>
  5. @Begin<Description,Leftmargin +15,Indent -15,spread 0>
  6. @i(Program:)@\John Chandler (Harvard/Smithsonian Center for
  7. Astrophysics); contributions from
  8. Va@ccd()e Kundak@ccd()i and
  9. Daphne Tzoar (Columbia U),
  10. Bob Shields (U. Maryland),
  11. Greg Small (UC Berkeley),
  12. Bob Bolch and Steve Blankinship (Triangle), Ron Rusnak
  13. (U. Chicago), Charles Painter (U. Toronto),
  14. Roger Fajman and Dale Wright (NIH),
  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(-tsoversion) (@value<-tsodate>)
  22.  
  23. @i(Date: )@\1993 September
  24. @end<Description>
  25.  
  26. @Index(TSO)
  27. @subheading<Kermit-TSO Capabilities At A Glance:>
  28. @begin<format,leftmargin +2,above 1,below 1>
  29. @tabclear()@tabset(3.5inches,4.0inches)
  30. Local operation:@\No
  31. Remote operation:@\Yes
  32. Transfers text files:@\Yes
  33. Transfers binary files:@\Yes
  34. Wildcard send:@\Yes
  35. @q(^X/^Z) interruption:@\Yes (through micro)
  36. Filename collision avoidance:@\Yes
  37. Can time out:@\Yes (line mode only)
  38. 8th-bit prefixing:@\Yes
  39. Repeat count prefixing:@\Yes
  40. Alternate block checks:@\Yes
  41. Terminal emulation:@\No
  42. Communication settings:@\No
  43. Transmit BREAK:@\No
  44. Packet logging:@\Yes
  45. Transaction logging:@\Yes
  46. Session logging:@\No
  47. Raw transmit:@\Yes (no prompts)
  48. Sliding window:@\No
  49. Long packets:@\Yes
  50. Act as server:@\Yes
  51. Talk to server:@\Yes
  52. Advanced server functions:@\Yes
  53. Advanced commands for servers:@\Yes
  54. Local file management:@\Yes
  55. Handle Attribute Packets:@\Yes
  56. Command/init files:@\Yes
  57. Command macros:@\No
  58. @end<format>
  59.  
  60. @subheading<TSO Specifics of Kermit-370:>
  61. @begin<format,leftmargin +2,above 1,below 1>
  62. @tabclear()@tabset(3.5inches,4.0inches)
  63. @Index(Initialization files)@Index(Log files)@Index(LRECL)
  64. Global INIT file:@\@q('SYS1.KERMINI')
  65. User INIT file:@\@q(KERMINI)
  66. Debug packet log:@\@q(KER.LOG)
  67. Server reply log:@\@q(KER.REPLY)
  68. Mail command:@\@q[KERMAIL @i<filespec> LIST(@i<users>)]
  69. Print command:@\@q[KERMPRT @i<filespec> OPTIONS(@i<options>)]
  70. Submit command:@\@q[KERMSUB @i<filespec> OPTIONS(@i<options>)]
  71. Maximum packet size:@\1913 (SERIES1), 1024 (TTY)
  72. Maximum disk LRECL:@\32760
  73. @end<format>
  74.  
  75. @Index(IBM)
  76. @Index(MVS/TSO)@Index(TTY)@Index(Series/1)
  77. Kermit-TSO is a member of the generic Kermit-370 family and shares most
  78. of the features and capabilities of the group.
  79. As its name implies, Kermit-TSO is the
  80. variant of Kermit-370 that runs under the MVS/TSO operating system.
  81. The primary documentation for Kermit-TSO is actually
  82. the chapter on Kermit-370 (entitled IBM 370 Kermit), which
  83. describes general properties; the present chapter assumes the
  84. reader is familiar with that material.  Only the details specific to
  85. TSO operation will be discussed here, @i<e.g.>, command syntax
  86. relating to the TSO file system or commands not offered in general
  87. by Kermit-370.
  88.  
  89.  
  90. @Section<The MVS/TSO File System>
  91.  
  92. The features of the TSO file system of greatest interest to Kermit
  93. users are the format of file specifications (@i<filespecs>)
  94. and the concept of
  95. records.  The latter is described in the Kermit-370 chapter.
  96.  
  97. @Index(Qualifier)
  98. The MVS/TSO @i<filespec> (called the data set name or DSN) takes the form
  99. of tokens (known as qualifiers) of up to 8 alphanumeric characters each,
  100. separated by periods.  Each qualifier must begin with an alphabetic or
  101. national character.  The total length must be no
  102. more than 44 characters, including periods.
  103. To be precise, a DSN may contain uppercase letters, digits, and
  104. the special characters @qq<$> (dollar sign), @qq<#> (number sign),
  105. @qq<@@> (at sign), and @qq<-> (hyphen) in addition to the separating
  106. periods.  Other characters must not be included.
  107.  
  108. @Index(Catalog)
  109. There is another, structural restriction on
  110. data set names from the fact that TSO data sets are all cataloged.
  111. In a standard
  112. MVS catalog, each qualifier of each DSN is associated with an
  113. index of the same name.  The index is a hierarchical
  114. catalog component which points downward either to a list of next-level
  115. indices or to a data set, but never to both.  Consequently, a
  116. cataloged DSN is a chain of indices corresponding one-for-one with
  117. DSN qualifers, and the last index is a pointer to the data set itself.
  118. While there may be many indices with the same name, no two such
  119. duplicates may both be chained to the same next-higher-level index,
  120. so that, if DSN's are considered as strings of qualifiers (not of
  121. characters),
  122. no DSN can be a major substring of any other.
  123. For example, if the name @q<'A.BB.C'> exists in the
  124. catalog, then @q<'A.BB'> and @q<'A.BB.C.X'> are illegal, but @q<'A.B'>,
  125. @q<'A.BB.Y'>, @q<'A.BBB'>, and @q<'A.BB.BB'> are all legal.
  126. Although there is a newer form of catalog, known as IFC, which removes
  127. this substring restriction, it is still good practice to avoid violating
  128. it because there are still sites that use the older form.
  129.  
  130. A DSN given in its entirety (as in the foregoing examples)
  131. is called "fully qualified" and must be enclosed in single
  132. quotes when entered in TSO.  However, by convention (and by definition)
  133. the first qualifier of each data set
  134. belonging to a given user must be the user's logon ID, and, by
  135. default, that ID is the assumed prefix in TSO when a DSN is @i(not)
  136. enclosed in quotes.  In practice, then, names are abbreviated by
  137. omitting the quotes and the prefix.  The most common type of name, in
  138. fact, consists of the prefix plus two more qualifiers giving the
  139. data set's name and type, respectively, so that many files have DSN's
  140. that correspond exactly to the canonical Kermit representation of a
  141. @i(filespec).  For instance, @q<TEST.FORT> is the
  142. source of a Fortran program named TEST, and its fully qualified DSN
  143. would be @q<'@i(userid).TEST.FORT'>, where @i(userid) is the owner's
  144. logon ID.
  145.  
  146. @Index(Partitioned data set)
  147. @Index(Generation data group)
  148. While this description is complete as far as it goes, it omits two
  149. important features widely used in organizing files under MVS
  150. and TSO, namely, the partitioned data set (PDS) and the generation
  151. data group (GDG).  A PDS is a data set
  152. like any other, except that it has members, each of which can
  153. usually be treated as a file in its own right.  In fact, with QSAM
  154. (the file access method employed by Kermit and many other applications),
  155. only members, and not the whole PDS, may be read or written.  Thus,
  156. the term "file", as used in this chapter and the Kermit-370 chapter, may
  157. refer to either a PDS member or an ordinary data set, but not to a PDS.
  158. The notation for a PDS member consists of the member name enclosed
  159. in parentheses and appended to the DSN (and the whole enclosed in
  160. quotes if the DSN is fully qualified).  For example, if the Fortran
  161. program @q<TEST> were copied into a PDS called @q<DEBUG.FORT>, it
  162. would then be known as
  163. @example<DEBUG.FORT(TEST)>
  164. Although the member name is written together with the DSN, it and the
  165. surrounding parentheses are not really part of the DSN and are not
  166. counted toward the 44-character limit.  Still,
  167. a member name must conform to the rules for a DSN qualifier and, in
  168. addition, must not contain any hyphens.
  169.  
  170. A generation data group is a collection of related data sets with
  171. similar names (distinguished by a serial number in the last qualifier).
  172. This organization is designed for data sets that are updated from time
  173. to time and which must be available in several versions at once.  There
  174. is a notation, similar to that for PDS members, for describing GDG
  175. members relative to the current version, rather than by supplying the
  176. explicit DSN with imbedded serial number.  The last qualifier is omitted,
  177. and a relative generation number in parentheses is appended.  That number
  178. must be a zero or a signed integer
  179. ("0" refers to the current version, "-1" the
  180. next most recent, and so on).  For creating a new version, the number
  181. "+1" is used.  Kermit-TSO supports both relative and absolute numbering
  182. for GDG members.
  183.  
  184. All these properties of DSN's come into play when a file
  185. is being received by Kermit-TSO because a valid DSN must be generated
  186. for the new data set.  For example,
  187. any invalid character in the supplied @i(filespec) is replaced by
  188. a number sign (or converted to uppercase if it is a lowercase letter).
  189. Also, each qualifier (and the member name, if any)
  190. is prefixed with a number sign (if it does not already
  191. begin with an alphabetic or national character) and then
  192. shortened, if necessary, to eight characters.  If
  193. no @i(filespec) is supplied,
  194. Kermit-TSO creates a default DSN of @qq($.$).
  195. The DSN is expanded to
  196. its fully qualified form and then truncated at 44 characters, if need be.
  197.  
  198. The DSN prefix, which defaults to the user's logon ID, is similar
  199. to a device specification on microcomputer systems: it selects an
  200. area of disk storage, and it usually need not be specified.
  201. In some ways, the prefix is also like
  202. a disk directory designator, since the file system structure is
  203. hierarchical.  For this reason, the Kermit
  204. concept of the "working
  205. directory" is equated with a particular DSN prefix under
  206. Kermit-TSO.  The current "working directory" is the
  207. collection of all data sets whose names begin with the current prefix,
  208. and file transfers take place
  209. to and from that area unless a fully qualified DSN is given.
  210.  
  211. To provide compatibility with other operating systems, when Kermit-TSO
  212. sends a file, it ordinarily makes a file header with
  213. only the last two qualifiers of the full DSN (or only the member name
  214. plus the last qualifier in
  215. the case of a PDS member).  On the other hand, extra information
  216. may be added by way of the SET FOREIGN subcommand.
  217.  
  218. Although TSO data sets are cataloged, MVS allows uncataloged data sets
  219. @Index(Uncataloged data sets) as well, and Kermit-TSO can download
  220. such files, as long as the user specifies the proper disk volume
  221. via the SET FILE VOLUME subcommand.  In principle, uncataloged
  222. data sets may have names with illegal characters or qualifiers longer
  223. than 8 characters, but such names are not recognized by Kermit-TSO.
  224.  
  225. @Index(Wildcards)
  226. Kermit-TSO allows a group of files to be specified in a single
  227. @i(filespec) by including the special
  228. "wildcard" character @qq<*>, which
  229. matches any string of characters (even a null
  230. string) anywhere either in the DSN proper or in the member name, if any.
  231. Only one @q(*) may be used in
  232. a @i(filespec).
  233. Here are some examples:
  234.  
  235. @Begin(Description,spread 0.5,leftmargin +18, indent -16)
  236. @q<*.COBOL>@\All files of type @q<COBOL> (all COBOL source files) in
  237. the current working directory.
  238.  
  239. @q<BATCH*H.FORT>@\All files in the current directory which begin
  240. with @q(BATCH) and which end with @q(H.FORT).  This would
  241. not include @q(BATCH.FORT), however.
  242. @End(Description)
  243.  
  244. TSO files, like those in other IBM 370 systems, are record-oriented
  245. (see the introduction to the Kermit-370 chapter).
  246. In particular, TSO files are characterized by record
  247. format (RECFM), which may be fixed-length,
  248. varying-length, or undefined-length;
  249. by maximum record length (LRECL); and
  250. by maximum block size (BLKSIZE).  Fixed-length
  251. and varying-length records
  252. can be (and, under Kermit, always are) combined into
  253. blocks, but undefined-length records cannot.  Indeed, by convention,
  254. they have no logical record length, only a maximum block size.
  255. Records (and blocks) in TSO files may be up to 32760 bytes
  256. long, but varying-length record blocks
  257. use four bytes to specify the block length
  258. and, therefore, place an effective limit of 32756 on the records.
  259. Indeed, the data portion of such records is limited to 32752 bytes.
  260.  
  261. When sending files, Kermit-TSO includes a date/time attribute if
  262. available.  However, any date attribute of a file
  263. received into TSO is merely checked for validity and then discarded.
  264. Unlike many operating systems, MVS does not provide a time along with
  265. the date of creation of modification.  Further, although partitioned
  266. data sets can store any amount of information regarding the individual
  267. members, there is no universal convention for saving a date for each
  268. member.  ISPF is one system that supports both date and time tags for
  269. PDS members, and Kermit-TSO uses those whenever possible.
  270.  
  271. Another file system feature of occasional interest is the means of
  272. reporting errors.  When Kermit-TSO encounters a disk error, it attempts
  273. to prepare an explanatory message for inclusion in the @q(STATUS)
  274. report.  The primary method is the standard @q(SYNADAF) macro.
  275.  
  276. MVS/TSO allows, but does not encourage, the use of passwords
  277. @Index(Passwords) to protect individual data sets.  When a password
  278. is needed for file access, it is entered immediately after the
  279. @i(filespec), separated only by a slash (@qq</>).  In the case of a
  280. fully-qualified DSN, the password must be after the closing quotation
  281. mark.
  282.  
  283. @Section<Program Operation>
  284.  
  285. @Index(Initialization files)
  286. At startup time, Kermit-TSO looks for two initialization
  287. files, @q('SYS1.KERMINI') and @q(')@i(userid)@q(.KERMINI')
  288. (where, as before, @i(userid) is the user's
  289. logon ID).  The latter file would also be known as just @q(KERMINI).
  290. The file @q('SYS1.KERMINI') would be maintained
  291. by a systems programmer, but
  292. @q(KERMINI) would be maintained by the user.
  293.  
  294. @Index(User profile)
  295. Three parameters in the user's profile (the character delete and line
  296. delete and intercom) are disabled
  297. during protocol mode
  298. (and restored afterwards) to prevent any conflict in case either of
  299. these characters has been defined to be printable.
  300. The settings in effect when Kermit starts up are saved as a sort of
  301. "normal" status snapshot (as opposed to the "protocol" status just
  302. described).  The protocol status is selected whenever
  303. Kermit enters protocol mode, and the normal status is selected when
  304. Kermit leaves protocol mode.  Note: if Kermit is
  305. interrupted in the midst of a transfer or while in server mode, these
  306. parameters will be left with peculiar settings (namely, the protocol
  307. status), and they may need
  308. to be restored by hand.
  309.  
  310. Although TSO does not allow an application program to take control of
  311. terminal synchronization on @qq(TTY) lines, the various full-screen
  312. emulation front ends
  313. are quite a different matter.  The standard IBM handshake (XON) is
  314. unnecessary, for example, with a 7171 or 4994 because the front end
  315. itself turns the line around with essentially no delay in transparent
  316. mode.  Thus, handshaking should be suppressed for @qq(SERIES1) devices
  317. (the micro Kermit should have
  318. HANDSHAKE set OFF, and Kermit-TSO should have HANDSHAKE set to 0).
  319. Since the generic Kermit-370 default handshake (XON) is retained in
  320. Kermit-TSO, the subcommand @qq(SET HANDSHAKE 0) is a good candidate
  321. for inclusion the KERMINI file of any user who habitually uses
  322. @qq(SERIES1) lines.
  323.  
  324. @subheading(Interactive Operation:)
  325.  
  326. To run Kermit-TSO interactively, invoke the program from TSO by
  327. typing @q<KERMIT>.  When you see the prompt,
  328. @example(Kermit-TSO>)
  329. you may type a Kermit subcommand.  When the subcommand completes, Kermit
  330. issues another prompt.  The cycle repeats
  331. until you exit from the program.  For example:
  332. @Begin(Example)
  333. .@ux(KERMIT)
  334.  
  335. Kermit-TSO Version @value(-tsoversion) (@value<-tsodate>)
  336. Enter ? for a list of valid commands
  337.  
  338. Kermit-TSO>@ux(send foo.*)
  339.  
  340.   @i(Files beginning with FOO are sent)
  341.  
  342. Kermit-TSO>@ux(receive test.spss)
  343.  
  344.   @i(File is received and called TEST.SPSS)
  345.  
  346. Kermit-TSO>@ux(exit)
  347. @end(example)
  348.  
  349. @subheading(Command Line Invocation:)
  350.  
  351. Kermit-TSO may also be invoked with command line arguments from TSO.
  352. The arguments are interpreted as a subcommand to be executed
  353. by Kermit after completion of the initialization.
  354. For instance:
  355. @Begin(Example)
  356. .@ux(KERMIT send test.fort)
  357. @End(Example)
  358.  
  359. Kermit will exit and return to TSO after completing the specified
  360. subcommand.
  361.  
  362. @subheading(CLIST Operation:)
  363. @Index(CLIST)
  364.  
  365. Like other TSO programs, Kermit-TSO may be invoked from a CLIST.
  366. Subcommands can be passed to Kermit using the program input stack
  367. and/or command line arguments.  For example, to start up Kermit-TSO
  368. and have it act as a server, include the line:
  369. @Begin(Example)
  370. @ux(KERMIT server)
  371. @End(Example)
  372. To pass more than one subcommand, they must be stacked in the order in
  373. which they are to be executed.  To start up a Kermit-TSO server with a
  374. three character CRC, create and stack a file with the following:
  375. @Begin(Example)
  376. @ux(set block 3)
  377. @ux(server)
  378. @End(Example)
  379. and then invoke Kermit.  Like many utility programs, Kermit-TSO uses
  380. the GETLINE/PUTLINE
  381. service routines for terminal I/O, and the nominally
  382. interactive subcommands can thus be supplied under program control.
  383. Another way of setting up multiple subcommands would be to collect the
  384. subcommands into a TAKE file and then issue the TAKE subcommand via the
  385. command line.
  386. CLIST's may be executed from Kermit, either directly or from
  387. a TAKE file, and CLIST's in turn may freely issue Kermit subcommands.
  388. The subcommand KERMIT is especially useful in this context for
  389. distinguishing Kermit subcommands from TSO commands.
  390. After each subcommand completes, the &LASTCC variable is set
  391. according to the current status code (see Table @ref(-ikcodes))
  392. so that CLIST processing can take appropriate action if a transfer
  393. fails.
  394.  
  395. @subheading(Server mode:)
  396.  
  397. Command execution in server mode is different in several respects
  398. from normal operation.  First of all, some Kermit subcommands
  399. are not allowed (see the list of subcommands in the Kermit-370 chapter).
  400. Moreover, command errors
  401. always terminate any active TAKE file.
  402. @Index(User profile)
  403. Also, commands run in a
  404. special environment with the User Profile temporarily modified.
  405. Another difference is that Kermit intercepts
  406. terminal I/O as much as possible and transmits the data to the local
  407. Kermit as text packets.  The problem with this redirection is that
  408. some MVS/TSO commands issue terminal I/O directly, so
  409. that many messages never appear to the local Kermit (except, perhaps,
  410. as bad packets).
  411.  
  412. @Section<Kermit-TSO Subcommands>
  413.  
  414. Kermit-TSO supports all the subcommands
  415. described in the
  416. Kermit-370 chapter.  In addition, there is the system-specific
  417. subcommand @qq(TSO), which is just a synonym for
  418. the generic subcommand @qq(HOST).  @qq(TSO)
  419. can be issued as a remote Kermit command when Kermit-TSO
  420. is in server mode.  Also, the @qq(END) subcommand is available as a
  421. synonym for @qq(EXIT) and @qq(QUIT).
  422.  
  423. This section concentrates on
  424. the subcommands that have special form or meaning for Kermit-TSO.
  425. These are ordered alphabetically.
  426. See the chapter on Kermit-370 for further details.
  427.  
  428. @Heading(The CWD Subcommand)
  429. @Index(CWD)@Index(Prefix)
  430.  
  431. Syntax:@q< CWD [@i(string or PDSname)()]>
  432.  
  433. @Index(User profile)
  434. The CWD (Change Working Directory)
  435. subcommand establishes a new default DSN prefix or turns prefixing off.
  436. This facility is similar to, but not quite the same as, the prefix
  437. defined in the User Profile.  The
  438. @i(string), if specified, must consist of one or more DSN qualifiers,
  439. and the first must already be an index
  440. in the disk catalog.  Subsequent file transfers
  441. take place to and from the corresponding disk area whenever a fully
  442. qualified DSN (one enclosed in quotes) is not given.  The initial
  443. prefix is the user's logon ID, @i<i.e.>, the same as the default prefix
  444. in the User Profile.  If no prefix is given in this subcommand, then
  445. prefixing is no longer performed.  The user must be careful to
  446. remember the distinction between the prefix defined for Kermit and that
  447. for TSO.  Pure Kermit subcommands (like @q<SEND> and @q<TAKE>) always
  448. use the former, but TSO commands (and the TSO-related subcommand
  449. @q<TYPE>) use the latter.
  450.  
  451. An alternative form of the CWD subcommand allows specifying the full (but
  452. unquoted) name of a PDS followed by paired parentheses.  When such a
  453. "working directory" is in use, a @i(filespec) other than a fully
  454. qualified DSN is taken to be a member name within the PDS.  For
  455. that reason, this form should be used cautiously, since the Kermit-TSO
  456. log @i(filespecs) (such as @q<KER.LOG> and @q<KER.REPLY>) would be
  457. treated the same way.  In particular, it is advisable to turn on debug
  458. mode only when the Kermit prefix is a partially qualified DSN (once
  459. started, the log continues to the same data set regardless of what
  460. happens to the prefix).
  461.  
  462. @Heading(The DIRECTORY Subcommand)
  463. @Index(DIRECTORY)
  464.  
  465. Syntax:@q< DIRECTORY [@i(filespec)]>
  466.  
  467. The DIRECTORY subcommand uses the TSO LISTCAT command to display part
  468. of the data set catalog, @i<i.e.>, all data sets whose names begin
  469. with the
  470. qualifiers in the Kermit prefix (if any) concatenated with the given
  471. @i(filespec) (if any).  Note: wildcards may not be used, and no options
  472. are allowed.  If you require the LISTCAT options, you
  473. must issue a TSO LISTCAT command directly.
  474.  
  475. @Heading(The HELP Subcommand)
  476. @Index(HELP)
  477.  
  478. Syntax:@q< HELP [@i(subcommand)]>
  479.  
  480. The HELP subcommand uses TSO HELP facilities to display part or all
  481. of the Kermit help file.  It follows the same syntax.
  482.  
  483. @Heading<The RECEIVE Subcommand>
  484.  
  485. @Index(RECEIVE)
  486. Syntax:@q< RECEIVE [@i(filespec)]>
  487.  
  488. The RECEIVE subcommand tells Kermit to receive a file or file group
  489. from the other system.  You must issue the corresponding
  490. SEND subcommand to the
  491. other Kermit.
  492.  
  493. A @i(filespec) in the subcommand indicates what name the incoming file
  494. should be given.  Wildcards may not be used.
  495. If the @i(filespec) is invalid, Kermit-TSO will suppress the transfer.
  496. If the optional @i(filespec) is omitted (and, in any case, for all files
  497. after the first in a group) Kermit-TSO will use the
  498. name(s) provided by the other Kermit.  If a name is not a legal
  499. DSN, Kermit-TSO will delete excess characters, change illegal
  500. characters to number signs, and so on, to create a legal name.
  501.  
  502. For the purposes of folding and truncation, the maximum record
  503. length, @i(i.e.), the limit on the length of data in each record,
  504. is "LRECL" if RECFM is F, "LRECL"-4 if RECFM is V, and "BLKSIZE"
  505. if RECFM is U.
  506. @Index(Truncation)@Index(Folding)
  507.  
  508. @Index(Filename collision)
  509. If the incoming file has the same name as an existing file
  510. (either a data set or a PDS member), the action taken
  511. depends on the FILE COLLISION setting.  The possible settings
  512. and their meanings are given in the Kermit-370 chapter.  Two of the
  513. settings (BACKUP and RENAME) require that
  514. Kermit-TSO change the incoming name
  515. so as not to obliterate the pre-@|existing file.  It attempts to find
  516. a unique name by successively modifying the original and checking for
  517. the existence of such a file at each step.  The procedure operates on
  518. the second qualifier of the full DSN (or the member
  519. name in the case of a PDS member) and
  520. begins by truncating it
  521. to seven characters, if necessary, and
  522. then appends @qq(0).  If a file by that name exists,
  523. Kermit then replaces the @qq(0) with a @qq(1).
  524. It continues in this manner up to @qq(9), and if an unused name cannot
  525. be found, the transfer fails.
  526. If FILE COLLISION has not been set, but the obsolete option WARNING
  527. has been set ON, however, Kermit-TSO will protect an existing
  528. file in a different way when the @i(filespec) is entered with the
  529. RECEIVE subcommand.  In that case,
  530. Kermit will prompt the user for permission to overwrite
  531. the file.
  532.  
  533. @Heading<The SEND Subcommand>
  534. @Index(SEND)
  535.  
  536. Syntax:@q{ SEND [@i(filespec)[<@i(options)>] [@i(foreign-filespec)]][, ...]}
  537.  
  538. The SEND subcommand causes a file or file group to be sent from TSO
  539. to the Kermit on the other system.  DSN prefixing is done on the
  540. @i(filespec) in the usual way
  541. (see also the CWD subcommand).  For details on the @i(options), see the
  542. chapter on Kermit-370.  Note that a @i(filespec) may have both a
  543. password and options -- in that case, the options must be at the
  544. very end.  Blanks may not appear anywhere in the string.
  545.  
  546. @Index(Wildcards)
  547. The @i(filespec) may contain a wildcard @qq<*>.  If it does,
  548. then all matching files will
  549. be sent, up to 711 files in all (possibly more in the case of PDS
  550. members).
  551.  
  552. The @i(foreign-filespec), if any, is used for the file header of the
  553. outgoing file, replacing the usual name.type derived from the
  554. MVS/TSO @i(filespec).
  555. Normally, this form of the SEND subcommand is used only for single files
  556. because the @i(foreign-filespec) is used only for the first file of a
  557. group (subsequent files having default headers).
  558. If both @i(filespecs) are omitted for this subcommand, Kermit will
  559. prompt separately for each, and the respective syntaxes are exactly
  560. as described above.
  561. This prompting mode is especially useful when more than one file
  562. (or file group) is to be sent, since the command line is limited
  563. to 130 characters.
  564.  
  565. @Indexsecondary(primary="Blanks",secondary="preserving trailing")
  566. Trailing blanks in a text file with RECFM=F are deemed superfluous and
  567. are stripped off when Kermit-TSO downloads the file.  In order to treat
  568. such blanks as significant, you must convert the record format to V,
  569. for example, by using TSO COPY with the "RECFM V" option.
  570.  
  571. @Heading<The SET Subcommand>
  572. @Index(SET)
  573.  
  574. Syntax:@q< SET @i(parameter) [@i(value)]>
  575.  
  576. The SET subcommand establishes or modifies various parameters controlling
  577. file transfers.
  578. The following SET
  579. parameters are available in
  580. Kermit-TSO, but not in Kermit-370 in general:
  581. @Begin(Format,spread 0)
  582. @tabclear()@tabset(2.0inches)
  583. DELIM@\Line delimiter for entering multiple commands.
  584. FILE
  585.   BLKSIZE@\Block size for incoming file.
  586.   LRECL@\Logical Record length for incoming file.
  587.   RECFM@\Record format for incoming files.
  588.   SPACE@\Allocation unit (in tracks) for incoming files.
  589.   UNIT@\Device type for incoming files.
  590.   VOLUME@\Disk pack for incoming files.
  591. PREFIX@\Default disk area.
  592. @End(format)
  593.  
  594. @Subheading(SET DELIM)@Index(Line delimiter)
  595.  
  596. Syntax:@q< SET DELIM [@i(letter)]>
  597.  
  598. This sets (or clears) a command line delimiter for interactive
  599. Kermit subcommands.  Each occurrence of the delimiter character in
  600. the command buffer read from the terminal is treated as the start of
  601. a new subcommand.  The initial value is a blank, @i<i.e.>, no delimiter,
  602. but it can be set in one of the initialization
  603. files and thereby be used in parsing the initial command-line
  604. arguments.
  605.  
  606. @Subheading(SET FILE BLKSIZE)
  607. @Indexentry(key="DCB",entry="DCB.  @i<See> File attributes")
  608. @Indexentry(key="Data set",entry="Data set.  @i<See> File")
  609.  
  610. Syntax:@q< SET FILE BLKSIZE @i(number)>
  611.  
  612. This sets the block size for incoming files to a @i(number)
  613. from 1 to 32760.  In the case of fixed-format files, this number is just
  614. an upper bound; the actual block size is taken to be the largest
  615. multiple of the LRECL which does not exceed this limit.
  616. The default is 6233.
  617.  
  618. @Subheading(SET FILE LRECL)
  619.  
  620. Syntax:@q< SET FILE LRECL @i(number)>
  621.  
  622. This sets the effective logical record length for incoming files to a
  623. @i(number) from 1 to 32760.  This parameter is not used for files of
  624. undefined record format.
  625. The default is 80.
  626.  
  627. @Subheading<SET FILE RECFM>
  628.  
  629. Syntax:@q< SET FILE RECFM @i(option)>
  630.  
  631. This sets the record format to use for incoming files.  Valid
  632. @i<options> are
  633. "Fixed", "Varying" (the default), and "Undefined".
  634. This parameter is thus limited to a subset of the range of
  635. possibilities for the MVS/TSO RECFM.  In Kermit-TSO, all incoming files
  636. of fixed or varying format are automatically blocked according to the
  637. current block size.
  638.  
  639. Note: the most common files with RECFM=U, load modules, cannot be
  640. transported directly using Kermit, since they contain disk-location
  641. pointers.  Such files can be "unloaded" using IEHMOVE and then
  642. transmitted freely.
  643. @Index(Load modules)
  644.  
  645. @Subheading<SET FILE SPACE>
  646.  
  647. Syntax:@q< SET FILE SPACE @i(number)>
  648.  
  649. This sets the track allocation unit for incoming files to a number from
  650. 1 to 32760.  The default is 5.  Since data sets are allowed as many as
  651. 15 extents, this default provides for files up to 75 tracks.
  652.  
  653. @Subheading<SET FILE UNIT>
  654.  
  655. Syntax:@q< SET FILE UNIT @i(type)>
  656.  
  657. This sets the device type or group for incoming files.  Valid
  658. @i<types> are installation-dependent.  The default is blank, which
  659. signifies the default UNIT group found in the User Attribute Data Set.
  660. This parameter should generally be left blank unless the user wishes to
  661. create files on a specific disk volume not included in the default
  662. group (for example, a private volume).
  663.  
  664. @Subheading<SET FILE VOLUME>
  665.  
  666. Syntax:@q< SET FILE VOLUME @i(name)>
  667.  
  668. This sets the disk volume for incoming files.  Valid @i<names> are
  669. installation-dependent, but are, in any case, no more than six
  670. alphanumeric characters.  The default is blank (none); in that
  671. case, the system chooses one of the available volumes of the
  672. current UNIT type.
  673.  
  674. @Subheading<SET PREFIX>
  675. @Index(Prefix)
  676.  
  677. Syntax:@q< SET PREFIX [@i(string)]>
  678.  
  679. This subcommand is equivalent to the CWD subcommand (@i<q.v.>).
  680.  
  681. @Heading<The TAKE Subcommand>
  682. @Index(TAKE)@Index(GIVE)
  683.  
  684. Syntax:@q< TAKE @i(filespec)>
  685.  
  686. Execute Kermit subcommands from the specified file.  The default
  687. DSN extension is @qq(TAKE), so that datasets with names of the
  688. form @i(prefix.name).@q(TAKE) can be executed by typing merely
  689. @ux(TAKE @i<name>).  Names that end with @q(.TAKE) or @q(.KERMINI) are
  690. accepted as entered (aside from prefixing), and names in quotes are, of
  691. course, accepted exactly as entered,
  692. but all others are assumed to have a DSN
  693. extension of @q(.TAKE) for the purposes of the TAKE (and GIVE)
  694. subcommands.
  695.  
  696. @Heading(The TSO Subcommand)
  697.  
  698. Syntax:@q< TSO @i(text of command)>
  699.  
  700. Although Kermit-TSO does not have a full set of its own
  701. subcommands for managing
  702. TSO files, it provides those services through the operating system.
  703. You can issue any TSO command, @i<e.g.>, to
  704. list, type, rename or
  705. delete files, send messages, and so on.
  706. The @q(TSO) subcommand under Kermit is
  707. synonymous with the @q(HOST) subcommand.
  708.  
  709. @Section<How to build an executable Kermit-TSO>
  710.  
  711. Before attempting to build Kermit-TSO, look in the
  712. Kermit distribution under IKTKER for an
  713. installation document, as well as "beware", help, and update files, and
  714. read them first.  They will probably contain information that is more
  715. current than what you see here.
  716.  
  717. Kermit-TSO consists at present of a large assembly
  718. (KERMIT.ASM, containing the Kermit program) and a small
  719. one (DYNALC.ASM, containing a subroutine for allocating data sets).
  720. Although DYNALC is a single file in the Kermit distribution, the
  721. source for Kermit itself is in many pieces, some generic for Kermit-370
  722. and some specific to TSO.  All the necessary pieces are sequenced in
  723. columns 73-80 so that the numbers form a strictly increasing
  724. sequence when the pieces are correctly "pasted" together.
  725. It is important to preserve the original sequence numbers so that
  726. updates, if any, can be applied to the source.
  727.  
  728. To create a runnable version (the hard way):
  729.  
  730. @begin(enumerate,spread 0.5)
  731. Combine the following @qq(ASM) files from the Kermit distribution into
  732. a single file with @q<RECFM=F(B)> and @q<LRECL=80>: IK0DOC, IK0MAC,
  733. IKTMAC, IK0DEF, IK0MAI, IK0COM, IK0CMD, IKTUTL, and IK0PRO.
  734. The resulting file is the composite source for Kermit-TSO, called
  735. KERMIT.ASM.  This source must retain the original sequence numbers
  736. in columns 73-80 (in other words, be sure not to resequence the source
  737. accidentally by using the editor!)
  738.  
  739. Copy or rename IKTDYN.ASM from the Kermit distribution
  740. to a file called
  741. DYNALC.ASM with @q<RECFM=F(B)> and @q<LRECL=80>.
  742.  
  743. Assemble the source file(s).
  744.  
  745. Create the executable load module @q<KERMIT> using the linkage editor.
  746. Be sure to specify the REUS option.
  747. Kermit is designed to run as a command processor, and so it must be
  748. placed in SYS1.CMDLIB or in a PDS concatenated to SYS1.CMDLIB (for
  749. example, via the STEPLIB command).
  750.  
  751. @end(enumerate)
  752. To create a runnable version the easy way, extract the batch job from
  753. the installation document, supply a proper JOB card, and submit it.
  754.  
  755. @Index(Initialization files)@Index(Translation tables)
  756. If your site's ASCII/EBCDIC translation table
  757. for TTY lines does not conform
  758. to the one listed in the appendix (which in turn conforms to the
  759. one given in the IBM System/370 Reference Summary), then enter
  760. the appropriate SET ATOE/ETOA/TATOE/TETOA
  761. subcommands into @q('SYS1.KERMINI').
  762. @i<NOTE:> If the ASCII/EBCDIC translation is not invertible,
  763. Kermit will not and cannot work.
  764.  
  765. In order to verify the operation of a new version of Kermit-TSO, you may
  766. run it under TEST using the CP parameter.
  767.  
  768. @Section<What's New>
  769. Below is a list of the TSO-specific features in Version
  770. @value(-tsoversion) of Kermit-TSO added since the previous major
  771. release, Version 4.2 in March of 1990.
  772. For the list of generic additions, see the chapter on Kermit-370.
  773.  
  774. @begin(enumerate,spread 0.5)
  775. ISPF modification dates are used on
  776. downloads, where available.  Suppression of invalid dates.
  777.  
  778. Proper selection of default disk unit group for received files.
  779.  
  780. Support for relative GDG numbers.
  781.  
  782. Multiple Kermit subcommands specifiable on TSO command line if the
  783. INIT file defines a delimiter.
  784.  
  785. Kermit status code available to CLIST after each subcommand completes.
  786.  
  787. Small bug fixes.
  788.  
  789. @end(enumerate)
  790.  
  791. @Section(What's Missing)
  792.  
  793. Work on Kermit-TSO will continue.  Features that need to be
  794. improved or added include:
  795. @begin(itemize)
  796. Intercept ABEND's in TSO commands executed under Kermit.
  797.  
  798. Implement file archiving.
  799.  
  800. Add a SET REPEAT subcommand.
  801.  
  802. Finish SET LINE, so that Kermit-TSO can be used as a local
  803. Kermit, connecting to a remote host over an alternate
  804. communication port.  Add a CONNECT subcommand.
  805.  
  806. Compute file size for outgoing A-packets and implement the SPACE
  807. subcommand.
  808.  
  809. Reject files known (via A-packets) to be too big for available storage.
  810.  
  811. Intercept @i(all) terminal output during protocol mode.
  812.  
  813. @end(itemize)
  814.  
  815. Anyone interested in working on these or other improvements should first
  816. get in touch with the Center for Computing Activities at Columbia
  817. University to find out if someone else has already begun a similar
  818. project (and, if so, who).
  819.