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

  1. @Part(CICSKERMIT,root="kuser")
  2. @string(-cicsversion="4.3.0")
  3. @string(-cicsdate="93/9/30")
  4. @Chapter<IBM CICS KERMIT>
  5. @Index(CICS)
  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. Brian Lesser (U. New Brunswick), Carrie Ledford (Miami U.), Jeff
  12. Huestis (Washington U.),
  13. Wayne Mery (Lehigh U.), ICSTI, Pierre Goyette (McGill U.),
  14. Clark Frazier (Harvard
  15. Bus. Sch.), Bob Bolch (Triangle), 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(-cicsversion) (@value<-cicsdate>)
  22.  
  23. @i(Date: )@\1993 September
  24. @end<Description>
  25.  
  26. @subheading<Kermit-CICS Capabilities At A Glance:>
  27. @begin<format,leftmargin +2,above 1,below 1>
  28. @tabclear()@tabset(3.2inches,3.7inches)
  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<CICS Specifics of Kermit-370:>
  60. @begin<format,leftmargin +2,above 1,below 1>
  61. @tabclear()@tabset(3.2inches,3.7inches)
  62. @Index(Initialization files)@Index(Log files)@Index(LRECL)
  63. Global INIT file:@\@q(KSYS.TD)
  64. User INIT file:@\@q(KINIT.TAKE)
  65. Debug packet log:@\@q(KLOG)@i(term)@q(.TS)
  66. Server reply log:@\@q(KREP)@i(term)@q(.TS)
  67. Mail command:@\@q[KERMAIL R(_...) @i<filespec> LIST(@i<users>)]
  68. Print command:@\@q[KERMPRT R(_...) @i<filespec> OPTIONS(@i<options>)]
  69. Submit command:@\@q[KERMSUB R(_...) @i<filespec> OPTIONS(@i<options>)]
  70. Maximum packet size:@\1913 (SERIES1), 1024 (TTY)
  71. Maximum disk LRECL:@\32767
  72. @end<format>
  73.  
  74. @Index(IBM)
  75. @Index(TTY)@Index(Series/1)@Index(CICS)
  76. Kermit-CICS 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-CICS is the
  79. variant of Kermit-370 that runs under CICS.  As much as possible, it is
  80. designed to be independent of the operating system that runs CICS, but
  81. only on IBM-370-compatible machines.
  82. The primary documentation for Kermit-CICS is actually
  83. the chapter on Kermit-370 (entitled IBM 370 Kermit), which
  84. describes general properties; the present chapter assumes the
  85. reader is familiar with that material.  Only the details specific to
  86. CICS operation will be discussed here, @i<e.g.>, command syntax
  87. relating to CICS data objects or commands not offered in general
  88. by Kermit-370.
  89.  
  90. @Section<CICS Data Objects>
  91.  
  92. Unlike other environments for Kermit-370,
  93. CICS is not really an operating system and does not have anything
  94. that can be called a file system.  Nonetheless, CICS supports a
  95. variety of data
  96. objects that can be called "files".  Moreover, Kermit-CICS
  97. itself maintains a Kermit-only collection of storage organized into
  98. user directories.  Furthermore, Kermit simulates a set of CICS
  99. file-maintenance commands: DIRECTORY, TYPE, COPY, and DELETE.  Thus,
  100. for the purposes of Kermit,
  101. we may speak of a "CICS file system".
  102. The features of the file system of greatest interest to Kermit
  103. users are the supported types of data object,
  104. the format of file specifications (or @i<filespecs>),
  105. and the concept of
  106. records.  The latter is described in the Kermit-370 chapter.
  107.  
  108. @seealso(primary="Queues",other="TD, TS")
  109. As of this writing, Kermit-CICS supports three different types of data
  110. object: temporary storage (TS) queues, transient data (TD) queues,
  111. and Kermit-managed directory members.  The first two are standard CICS
  112. objects while the third is a special kind of object designed for small,
  113. personalized, infrequently used, quasi-permanent
  114. files, such as on-line help files and
  115. individual Kermit initialization files.
  116. @Index(Initialization files)
  117. In principle, Kermit also supports three other types, but the support
  118. is provided through an interface to external programs, only one of which
  119. has yet been written.  These other types are non-TD pipes, spool files,
  120. and native OS data sets.  No external drivers are included in the
  121. standard distribution.
  122.  
  123. The CICS @i<filespec> takes one of two forms:
  124. @Begin(example,below 0.5)
  125. [fileclass/]filename[.filetype]
  126. @End(example)
  127. or
  128. @Begin(example,above 0.5)
  129. 'qualified.file.name
  130. @End(example)
  131. @Index(Qualified File Names)@Index(Fileclass)
  132. The first form represents a "normal" CICS data object while
  133. the second is the means of specifying a data object in the native
  134. operating system that supports CICS.
  135. In the first form, the optional fileclass is a string of up to eight
  136. characters.  The filename is the primary identifier
  137. for the file, but the formats of both the fileclass and the
  138. filename depend on the filetype.  The latter must
  139. be one of a small set of supported types: PGM, SPOOL, TAKE, TD, TS,
  140. TSAUX or TSMAIN.  The last two are alternates for TS and are intended
  141. for specifying the type of storage desired for a new TS queue.  The
  142. default is Auxiliary storage.  Any
  143. of the three types will serve equally well@Index(TS queues) to
  144. identify a queue that already exists.  With filetypes @qq<TD> and
  145. @qq<TQ>, the fileclass is meaningless but may be
  146. specified anyway.
  147.  
  148. Kermit-CICS supplies a default filetype of @qq<TS> for any
  149. received file if no filetype is
  150. provided by the remote system.  If no filename is supplied either,
  151. Kermit invents one by concatenating the letter @qq<K>, a three-digit
  152. number, and the user's four-character CICS terminal id.  In any case,
  153. Kermit forces the filename
  154. @Index(TD queues)
  155. to conform to CICS rules by truncating it, if necessary, to eight
  156. characters (four for a TD queue).  Also, Kermit converts any lower-case
  157. letters to upper case.
  158. Kermit-CICS supports a special file naming construct for TS queues.  If
  159. the string ";;;;" appears in the name given to Kermit, that is replaced
  160. by the terminal id of the current session.  This is useful for avoiding
  161. name conflicts when two or more users are running Kermit at the same
  162. time.  The special string may also be set to any other desired four-byte
  163. string, simply by changing the definition of variable symbol &KTRMS in the
  164. source code.  The string should not contain any reserved
  165. characters, such as Asterisk, Percent, Period, Slash, Less-than, Comma,
  166. or Blank, and should not begin with quasi-reserved characters such as
  167. Apostrophe or Question mark.
  168.  
  169. Filetype @qq<TD> refers to any kind of transient data queue.  TD queues
  170. are much like files in a true file system, except for two important
  171. features: TD queues are permanent data objects (despite the transience
  172. of the data), and there is no straightforward means of determining how
  173. much storage a given TD queue occupies.  These two features combine to
  174. defeat the provisions made by Kermit for handling filename collision
  175. @Index(Filename collision)
  176. (see SET FILE COLLISION in the Kermit-370
  177. chapter).  Intra-partition queues, at least, have an associated number
  178. of queued records, but output extra-partition queues do not and
  179. therefore must always be presumed to contain data, @i(i.e.), to exist in
  180. a real sense.  Of course, all TD queues exist insofar as they are
  181. pre-defined in the CICS DCT, but the intent of the default filename
  182. collision handling is to protect data from erasure.  Thus, Kermit-CICS
  183. will not normally write an uploaded file into an output extra-partition
  184. TD queue at all.  Because of the filename collision, the file would be
  185. written to a TS queue, according to the algorithm described under SET
  186. FILE COLLISION in this chapter.  The only way of uploading to a TD queue
  187. is to change the COLLISION setting to APPEND or OVERWRITE.  Another
  188. effect of the non-dynamic quality of TD queues is that Kermit, when
  189. presented with an undefined TD queue name for an uploaded file, cannot
  190. create the missing queue.  Thus, it must behave as if there were a
  191. filename collision and find an alternate place to store the file.
  192. However, if COLLISION were not set to RENAME, Kermit would not even
  193. check for collisions, but would simply attempt to write to the undefined
  194. queue and stop the file transfer because of the resulting I/O error.
  195.  
  196. Because TD queues are system-wide resources available to all users,
  197. data could be destroyed or confused if more than one user attempted
  198. to read or write the same queue at once.  To prevent that, Kermit-CICS
  199. uses the CICS ENQUEUE command with a resource name equal to the name
  200. of the TD queue and gives up if the resource is busy for three
  201. consecutive seconds of waiting.
  202.  
  203. @Index(Pipes)
  204. Filetype @qq<PGM> specifies a pipe
  205. managed by a CICS program whose name is
  206. the filename.  Such a program is invoked to open the pipe, then
  207. successively to read or write, and finally to close the pipe.  A single
  208. program can be written to manage both input and output, even
  209. perhaps both at
  210. the same time.  The optional fileclass in the @i(filespec) may be used
  211. by the program for any desired purpose.  See the installation guide for
  212. details about writing such a program.
  213.  
  214. @Index(Spool files)
  215. Filetype @qq<SPOOL> represents a special type
  216. of pipe.  The filename gives
  217. the name of the desired spool file, and the program to be invoked is
  218. IKXDYNAL.  The optional fileclass is the spool class.
  219. @Index(Fileclass)
  220.  
  221. @Index(Directories)@Index(Userids)@Index(TAKE files)@Index(TAKE)
  222. Filetype @qq<TAKE> denotes a Kermit-managed directory
  223. member.  Note that this
  224. filetype is not reserved for TAKE files, even though directory
  225. storage is the
  226. logical place to keep most TAKE files.  Throughout this chapter, as in
  227. the other chapters on Kermit-370, the term "TAKE file" will
  228. always mean a file containing Kermit subcommands suitable for execution
  229. via the TAKE subcommand, regardless of the filetype.  Data objects
  230. with filetype @qq<TAKE> will be called "directory members", regardless of
  231. the purpose of those objects.  The fileclass, if any,
  232. specifies the directory name (either @qq<0000> to select the common
  233. directory or a userid to select a personal directory).  The default
  234. directory name is @qq<*>, which represents the userid of the
  235. current session.  Userids
  236. in Kermit-CICS are determined according to an algorithm
  237. chosen as part of the installation process (@i<e.g.>, the CICS operator
  238. id).  The filename of a member
  239. specifies that member within the given directory.  Obviously, distinct
  240. members having the same filename may exist simultaneously in different
  241. directories.  In short, this Kermit-managed storage comes close to being
  242. a real file system, aside from the limitation to the single filetype
  243. @qq<TAKE>.  For this reason, the Kermit concept of the "working
  244. directory" is implemented in Kermit-CICS primarily
  245. as the current directory associated with filetype
  246. @qq<TAKE>.  However, there is an alternate
  247. use of the "working directory" concept, namely, to specify a default
  248. @Index(Qualified File Names)
  249. prefix for Qualified File Names (QFN's).  Selecting
  250. a "directory" name that
  251. begins with an apostrophe establishes that string as a QFN prefix for
  252. subsequent @i(filespecs) given to Kermit-CICS.  See the description of
  253. the CWD subcommand in this chapter for more details about "working
  254. directories".
  255.  
  256. @Index(Quotas)
  257. Despite the apparent convenience and privacy of Kermit directory
  258. members, these objects are not intended for routine file transfers,
  259. but only for small, quasi-permanent files.  The implementation makes use
  260. of a VSAM KSDS for storing the members and is geared entirely toward
  261. simplicity, rather than efficiency.  Thus, each record of a directory
  262. member is a separate record in the KSDS identified by a human-readable
  263. 17-byte key consisting of the directory name, the member name, and the
  264. record number.  Reading or writing a large member could tie up
  265. significant amounts of system resources.  To ensure that users respect
  266. the restriction on directory members, Kermit imposes a two-tiered quota
  267. on each directory.  If the first limit is exceeded, no further members
  268. may be created in the offending directory until
  269. enough space has been freed by deleting members.  If the second limit
  270. is exceeded, Kermit will stop writing to the new member immediately
  271. and will give a "disk full" error indication.  These limits apply
  272. equally to all directories.  The limits in the standard version of
  273. Kermit-CICS are 100,000 and 150,000 bytes, respectively, but each
  274. installation is free to establish its own limits.
  275.  
  276. To provide compatibility with other operating systems, when Kermit-CICS
  277. sends a file, it ordinarily makes a file header with
  278. only the filename and filetype.  However, extra information
  279. may be added by way of the SET FOREIGN subcommand.  In the case of a
  280. QFN, the last two tokens of the name are used for sending.
  281.  
  282. @Index(Wildcards)
  283. CICS allows a group of files to be specified in a single
  284. @i(filespec) by including the special
  285. "wildcard" characters @qq<*>
  286. and @qq<%>.  A @qq<*> matches any string of characters (even a null
  287. string) within the filename;
  288. a @qq<%> matches any single character.  Here are some examples:
  289.  
  290. @Begin(Description,spread 0.5,leftmargin +18, indent -16)
  291. @q<*.TS>@\All TS queues currently in CICS.
  292.  
  293. @q<F*.TD>@\All TD queues whose names start with F.
  294.  
  295. @q<0000/%%.TAKE>@\All system directory members with two-character names.
  296. @End(Description)
  297.  
  298. CICS files, like those in other IBM 370 systems, are record-oriented
  299. (see the introduction to the Kermit-370 chapter).
  300. In particular, CICS files are characterized by record
  301. format (RECFM), which may be fixed-length or varying-length,
  302. and by record
  303. length (LRECL).  Extra-partition TD queues are the only
  304. currently supported type of file that may have fixed-length
  305. records.  An important point to note is that records
  306. being written to a RECFM V data object are generally
  307. not limited in length by the current LRECL,
  308. but only by the CICS Kermit maximum (32767 bytes).  This is true of
  309. directory members and TS and
  310. intra-partition TD queues, but other limits may apply
  311. to other data objects.
  312.  
  313. When sending files, Kermit-CICS includes a date/time attribute if
  314. available.  However, any date attribute of a file
  315. received into CICS is merely checked for validity and then discarded.
  316.  
  317. Another file system feature of occasional interest is the means of
  318. reporting errors.  When Kermit-CICS encounters a file I/O
  319. error, it records
  320. @Index(Error codes)
  321. the function name and the error code from EIBRCODE
  322. for inclusion in the STATUS report.  The
  323. explanations of EIBRCODE can be found in Appendix A of the
  324. CICS command-level reference manual.  In some cases, however,
  325. Kermit will report
  326. an error code for an operation not directly performed by CICS.  These
  327. extra codes have not been defined, since they would result from
  328. operations on as-yet-unsupported filetypes.
  329.  
  330. @Section<Program Operation>
  331.  
  332. @Index(Initialization files)
  333. Kermit-CICS is a conversational transaction.  Thus, when it starts up,
  334. it allocates and initializes buffers and storage arrays.  In addition,
  335. to provide for site- and user-specific environments, it
  336. looks for two initialization
  337. files, @q(KSYS.TD) and @q(KINIT.TAKE).
  338. The file @q(KSYS.TD) is a read-only, extra-partition TD queue
  339. maintained by a systems programmer.  The file @q(KINIT.TAKE)
  340. resides in the user's Kermit directory and
  341. must be maintained by the user.  For example, the file could be changed
  342. by downloading it to a microcomputer, editing it there, and uploading
  343. it again (making sure to set FILE COLLISION to OVERWRITE).
  344. Alternatively, if tools exist for editing TS queues within CICS, the
  345. file could be copied to a TS queue, edited, and copied back.
  346.  
  347. Kermit-CICS cannot
  348. time out while waiting for a packet.  The only way to
  349. time out is from the other side:
  350. typing a carriage return to the local Kermit causing it to retransmit
  351. its last packet, or an automatic timeout as provided by many
  352. Kermits.
  353.  
  354. @Index(TTY)@Index(Handshake)
  355. CICS is different from some other IBM mainframe systems in that it allows
  356. a program to
  357. take control of prompting and synchronization on @qq<TTY> lines.
  358. Kermit-CICS takes advantage of this option, and
  359. it is not necessary to enable handshaking
  360. on the micro Kermit before
  361. connecting to CICS.  Thus,
  362. the micro Kermit should have
  363. HANDSHAKE set OFF, and Kermit-CICS should have HANDSHAKE set to 0.
  364. Since the generic Kermit-370 default handshake (XON) is retained in
  365. Kermit-CICS, the subcommand @qq<SET HANDSHAKE 0> is a good candidate
  366. for inclusion in @q(KSYS.TD).
  367. @Index(Initialization files)
  368.  
  369. @subheading(Interactive Operation:)
  370.  
  371. To run Kermit-CICS interactively, invoke the program from CICS by
  372. typing @q<KERMIT>.  When you see the prompt,
  373. @example(Kermit-CICS>)
  374. you may type a Kermit subcommand.  When the subcommand completes, Kermit
  375. issues another prompt.  The cycle repeats
  376. until you exit from the program.  For example:
  377. @Begin(Example)
  378. .@ux(KERMIT)
  379.  
  380. Kermit-CICS Version @value(-cicsversion) (@value<-cicsdate>)
  381. Enter ? for a list of valid commands
  382.  
  383. Kermit-CICS>@ux(send foo*.ts)
  384.  
  385.   @i(TS queues with names beginning FOO are sent)
  386.  
  387. Kermit-CICS>@ux(receive test.td)
  388.  
  389.   @i(File is received and stored in the TD queue called TEST)
  390.  
  391. Kermit-CICS>@ux(exit)
  392. @end(example)
  393.  
  394. In this example, which assumes a linemode session
  395. with a system prompt of @qq<.>, the text entered by the user is
  396. displayed along with messages and prompts.  The annotations are
  397. indented, but the distinction between user text and Kermit text
  398. may depend upon how this document is printed.  Normally,
  399. the text entered by the user is underscored, and the
  400. messages and prompts are not.
  401.  
  402. The prompt string from
  403. Kermit-CICS is truly interactive.  In other words, the prompt
  404. appears only when fresh
  405. input is needed from the terminal.  If, for example, multiple Kermit
  406. subcommands have been stacked up using the delimiter feature,
  407. the stack is read and
  408. executed before the next prompt appears.
  409.  
  410. @subheading(Command Line Invocation:)
  411.  
  412. Kermit-CICS may be invoked with command-line arguments from CICS.
  413. The arguments (taken to be the string beginning after the first blank
  414. after the four-letter transaction id @qq<KERM>)
  415. are interpreted as one or more subcommands to be executed
  416. by Kermit after completion of the initialization.  Thus, the command
  417. may be abbreviated as @qq<KERM> or @qq<KERMI> at the user's discretion.
  418. For instance:
  419. @Begin(Example)
  420. .@ux(KERMIT send test.take)
  421. @End(Example)
  422.  
  423. Kermit will exit and return to CICS after completing the specified
  424. subcommand.  A command line may contain up to
  425. 256 characters.  Note that the subcommand delimiter is initially
  426. disabled in Kermit-CICS, but it can be enabled in either of the
  427. initialization files and can then be used for entering
  428. multiple subcommands on the command line.
  429.  
  430. @subheading(Non-interactive Operation:)
  431.  
  432. @Index(Automatic operation)
  433. Kermit-CICS is both a CICS transaction named KERM
  434. and a CICS program named KERMIT.  As with any
  435. transaction, it may be started automatically as well as by hand, but it
  436. will then read the terminal expecting to find the command-line arguments
  437. (if any) for execution as a Kermit subcommand.  In addition, Kermit may
  438. be invoked via the CICS LINK and XCTL commands and (optionally)
  439. supplied with a COMMAREA.
  440.  
  441. If there is no COMMAREA, Kermit reads the terminal just as if
  442. it were invoked as a transaction.  If supplied, the COMMAREA is scanned,
  443. instead of a terminal buffer, for the command string.  Note that, if the
  444. COMMAREA does not begin with a blank, the first blank-delimited word
  445. will be ignored in the same way as the transaction name in a terminal
  446. buffer.  In both cases, the command-line arguments begin with the first
  447. non-blank character after the first blank.  Once the command line is
  448. established, execution proceeds the same as if Kermit had been started
  449. by hand; since Kermit exits as soon as it finishes the subcommand
  450. specified in the command string, there is no need to enter any
  451. subcommands at the terminal in this mode of operation.  Even so, Kermit
  452. should be given a terminal, since that provides the communication line
  453. for file transfer.
  454.  
  455. When Kermit exits, if the given COMMAREA is at least
  456. seven bytes long, Kermit sets a return or completion
  457. code in the COMMAREA according to
  458. the current status.  See the table of error codes in the Kermit-370
  459. chapter.  The return code takes the following form: the characters
  460. @qq<R(>, a four-byte signed binary integer, and the character @qq<)>.
  461. It is, thus, compatible with the convention described below under the
  462. CICS subcommand.
  463. @Index(Completion codes)
  464.  
  465. @subheading(Interface to mail, print, and batch)
  466.  
  467. @Index(Electronic mail)@Index(Printing files)@Index(Batch jobs)
  468. Unlike many other IBM/370 environments, CICS does not provide a standard
  469. means of returning a completion code from an invoked program.  As the
  470. previous paragraph indicates, Kermit-370 has adopted its own standard,
  471. using the COMMAREA, and this applies to the calling sequences for the
  472. commands that handle electronic mail, print files, and batch jobs.
  473. Thus, the @qq<R(_...)> shown in those sequences at the beginning of this
  474. chapter is not to be considered as an option, but as a required part of
  475. the COMMAREA to allow room for a return code.  Consequently, when
  476. Kermit-CICS calls one of those programs to verify the feasibility of
  477. that kind of file disposition, the COMMAREA consists of seven bytes,
  478. rather than none.  See below under the HOST subcommand for more details
  479. about invoking CICS programs from Kermit.
  480.  
  481. @subheading(Server mode:)
  482.  
  483. Command execution in server mode is different in three respects
  484. from normal operation.  First, some Kermit subcommands
  485. are not allowed (see the list of subcommands in the Kermit-370 chapter).
  486. Second, command errors
  487. always terminate any active TAKE file.
  488. Third, Kermit intercepts its terminal output
  489. and transmits the data to the local
  490. Kermit as text packets.  However, any other programs that wish to write
  491. to the terminal will do so, and
  492. such messages never appear to the local Kermit (except, perhaps,
  493. as bad packets).
  494.  
  495. @Section<Kermit-CICS Subcommands>
  496.  
  497. Kermit-CICS supports all the subcommands
  498. described in the
  499. Kermit-370 chapter.  In addition, there is the system-specific
  500. subcommand @qq<CICS>, which is a synonym for
  501. the generic subcommand @qq<HOST>.  @qq<CICS>
  502. can be issued as a remote Kermit command when Kermit-CICS
  503. is in server mode.
  504.  
  505. This section concentrates on
  506. the subcommands that have special form or meaning for Kermit-CICS.
  507. These are ordered alphabetically.
  508. See the chapter on Kermit-370 for further details.
  509.  
  510. @Heading(The CICS Subcommand)
  511. @Index(Host commands)
  512.  
  513. Syntax:@q< CICS  @i(text of command)>
  514.  
  515. @Index(File management)
  516. Kermit-CICS supports two kinds of "system" commands.  Both kinds are
  517. designated by the prefix @qq<CICS> or @qq<HOST>, even though neither
  518. kind can be invoked directly from a CICS session.  The first word of the
  519. command string is taken to be the name of the command.  Kermit first
  520. checks whether the name is in a list of simulated CICS functions (and
  521. their abbreviations).  If so, Kermit itself simulates the function.  The
  522. @Index(TYPE)@Index(DIRECTORY)
  523. available functions are DIRECTORY, TYPE, COPY, and
  524. DELETE.  DIRECTORY and TYPE are identical to the corresponding
  525. Kermit subcommands.
  526. COPY has a straightforward syntax (old @i<filespec> followed by new);
  527. DELETE is even simpler (just the desired @i<filespec>).  DELETE and
  528. DIRECTORY have no special options,
  529. but COPY and TYPE offer one: the source @i<filespec>
  530. may have a range of line numbers (in the same syntax as the SEND
  531. subcommand) to be copied/typed instead of the entire file.
  532. @Index(COPY)@Index(DELETE)
  533. All four functions are applicable to the same data objects
  534. as KERMIT SEND and RECEIVE, but none of the four recognize wildcards.
  535. No RENAME function is implemented,@Index(RENAME) although that
  536. command name is reserved.
  537. @Indexentry(key="Command level",
  538.  entry="Command level.  @i<See> CICS command level")
  539. If the command name is not found in the list of special functions,
  540. Kermit attempts to invoke a CICS program of that name with a COMMAREA
  541. consisting of the remainder of the command string.  The CICS
  542. commands used in @Index(CICS command level)command-level
  543. programming are not supported.  Kermit detects numeric return
  544. codes from co-operating invoked programs by examining the COMMAREA
  545. upon return.  If the first two bytes are the string @qq<R(>, the seventh
  546. byte is @qq<)>, and the third byte is the same as the fourth, the string
  547. of bytes three though six is taken to be a binary fullword return code.
  548. The conditions are sufficiently restrictive that "accidental" return
  549. codes are very rare (one chance in four billion, assuming totally
  550. random bytes, but probably less than that in practice).  A
  551. negative code is taken to mean that the host command was actually
  552. "illegal" in some sense, a zero code means that the command completed
  553. successfully, and a positive code means that the command encountered
  554. an error of some kind while executing.  Positive codes are reported to
  555. the user in the form @qq<R(number)>, where the numeric value is given
  556. in decimal.
  557.  
  558. @Heading(The CWD Subcommand)
  559. @Index(CWD)@Index(Directories)@Index(Fileclass)
  560.  
  561. Syntax:@q< CWD @i(directory) @i(or) '@i(prefix)>
  562.  
  563. The CWD (Change Working Directory)
  564. subcommand establishes a new default directory
  565. or specifies a
  566. default prefix for Qualified File Names.  The specified name is
  567. normally the four-character userid associated with a directory in
  568. Kermit-managed storage.  However, if
  569. the name is omitted, this resets the directory to @qq<*>, which is a
  570. synonym for
  571. the session userid.  If the name begins with an apostrophe, that
  572. establishes the use of Qualified File Names with the given string
  573. as prefix.  When a QFN prefix is established, any @i(filespec) given
  574. to Kermit-CICS without an explicit fileclass (directory) will be
  575. appended to the current prefix and interpreted as a QFN, rather than
  576. as a normal CICS data object name.
  577. @Index(Qualified File Names)
  578. When a fileclass is given explicitly, even if the fileclass is
  579. ignored (as in the case of TD and TS queues), that
  580. overrides the presumption of a QFN.  Thus, while the CWD subcommand
  581. allows the convenience of an abbreviated notation for both QFN's and
  582. normal data object names, the underlying syntax always permits the
  583. specification of any desired file by spelling out the @i(filespec) in
  584. full.  For example, if the current prefix is @qq<'AAA1234.>, the QFN
  585. @qq<'AAA1234.OLD.TAKE'> may be abbreviated as just @qq<OLD.TAKE>, but
  586. the system initialization file can still be specified (as
  587. @qq<*/KSYS.TD>).  Similarly, if the prefix is @qq<*>, @i(i.e.), the
  588. session default directory name, the same QFN must be spelled out in
  589. full, while the filespec @qq<OLD.TAKE> would refer to member @qq<OLD>
  590. in the user's directory.
  591.  
  592. @Heading(The DIRECTORY Subcommand)
  593. @Index(DIRECTORY)
  594.  
  595. Syntax:@q< DIRECTORY @i(filespec)>
  596.  
  597. The DIRECTORY subcommand displays attributes of one or more files
  598. (name, LRECL, RECFM, size, type, and date).
  599. The @i(filespec) may have wildcard characters if it refers to members
  600. of the current working directory or to TS or TD queues.
  601. For TD queues, the type is displayed as @qq<EXTRA>, @qq<INTRA>,
  602. @qq<REMOTE>, or @qq<INDIRECT>, and the type for all other data
  603. objects is @qq<OTHER>.  The size is displayed, where possible, in
  604. two forms, both the number of records and the total number of
  605. bytes (rounded to the nearest kilobyte).  If either of those
  606. sizes is shown as zero, it may simply mean that Kermit was unable
  607. to obtain the required information, @i(e.g.), for main-storage TS
  608. queues in CICS under MVS/ESA.  A value of zero for the LRECL means
  609. that the only limit is 32767.  Similarly, if the date is unavailable
  610. (often the case), it will simply be omitted.
  611.  
  612. @Heading(The GIVE Subcommand)
  613. @Index(GIVE)@Index(Translation tables)
  614.  
  615. Syntax:@q< GIVE @i(table-name) @i(filespec)>
  616.  
  617. This subcommand compares the named translation
  618. table with its default values and saves the differences
  619. in a TAKE file named @i(filespec).  The @i(filespec)
  620. has the usual format, except that the default
  621. filetype is @qq<TAKE>, rather than @qq<TS>.  See the Kermit-370 chapter
  622. for a fuller description of this subcommand.
  623.  
  624. @Heading(The HELP Subcommand)
  625. @Index(HELP)
  626.  
  627. Syntax:@q< HELP [@i(subcommand)]>
  628.  
  629. This subcommand
  630. displays a message that explains the specified Kermit-CICS subcommand.
  631. If no subcommand is given, the message explains the Kermit command
  632. itself.  These messages are stored in the Kermit-managed storage in
  633. the common directory.
  634.  
  635. @Heading<The RECEIVE Subcommand>
  636.  
  637. @Index(RECEIVE)
  638. Syntax:@q< RECEIVE [@i(filespec)]>
  639.  
  640. The RECEIVE subcommand tells Kermit to receive one or more files
  641. from the other system.  You must issue the corresponding
  642. SEND subcommand to the
  643. other Kermit.
  644.  
  645. If the optional @i(filespec) is omitted, Kermit-CICS will use the
  646. name(s) provided by the other Kermit.  If that name is not a legal
  647. CICS file name, Kermit-CICS will delete excess characters,
  648. if any.  If the filetype is illegal, however,
  649. Kermit will reject the file.  Wildcards may not be used.
  650. A @i(filespec) in the subcommand indicates what name the incoming file
  651. should be given.
  652. If the optional @i(filespec) is provided,
  653. but more than one file arrives, the
  654. first file will be stored under
  655. the given @i(filespec), and the remainder will be stored under
  656. their own names, as provided by the other Kermit.
  657.  
  658. For purposes of truncation and folding, the maximum record length for
  659. a received file depends on the file type and the filetype.  BINARY
  660. files are folded at the current LRECL, but TEXT files may have a
  661. maximum size of 32767 (TS queues and Kermit directory members do,
  662. as do TD queues with varying-length records).
  663. @Index(Truncation)@Index(Folding)
  664.  
  665. @Index(Filename collision)
  666. If the incoming file has the same name as an existing file, the action
  667. taken depends on the FILE COLLISION setting.  The possible settings
  668. and their meanings are given in the Kermit-370 chapter.  Two of the
  669. settings (BACKUP and RENAME) require that
  670. Kermit-CICS change the incoming name
  671. so as not to obliterate a pre-@|existing file.  It attempts to find
  672. a unique name by successively modifying the original and checking for
  673. the existence of such a file at each step.  The procedure begins by
  674. truncating the filename to six characters if necessary and then
  675. appending @qq<$0> and changing any filetype other than @qq<TAKE>
  676. to @qq<TS>.  If a file by that name exists,
  677. Kermit then replaces the @qq<0> with a @qq<1>.
  678. It continues in this manner up to @qq<9>, and if an unused name cannot
  679. be found, the transfer fails.  In Kermit-CICS, the default setting of
  680. FILE COLLISION is RENAME, which causes the new file to be stored under
  681. the modified name.  The BACKUP option is not supported by Kermit-CICS.
  682.  
  683. @Heading<The SEND Subcommand>
  684. @Index(SEND)
  685.  
  686. Syntax:@q{ SEND [@i(filespec)[<@i(options)>] [@i(foreign-filespec)]][, ...]}
  687.  
  688. The SEND subcommand causes one or more files to be sent from CICS
  689. to the other system.
  690. For details on the @i(options), see the description of
  691. SEND in the Kermit-370 chapter.  Note that no blanks may intervene
  692. between the CICS @i(filespec) and the @i(options).
  693.  
  694. @Index(Wildcards)
  695. If the filetype is @qq<TD>, @qq<TS>, or @qq<TAKE>,
  696. the filename may contain the wildcard characters @qq<*> or
  697. @qq<%>.  Wildcards are valid with @qq<TAKE> only for the current
  698. directory.  If wildcards are used, all eligible matching files will
  699. be sent.  Note that wildcard specification for TS queues cannot be
  700. guaranteed to work correctly, since CICS is a multi-user environment,
  701. and the system chain of queues can be modified dynamically while
  702. Kermit is following the chain looking for matches.  The result might
  703. be to skip one or more files, to send a file more than once, or to
  704. attempt sending a non-existant queue (cutting short the transfer with
  705. an I/O error message).
  706.  
  707. The @i(foreign-filespec), if any, is used for the file header of the
  708. outgoing file, replacing the usual @qq<name.type> copied from the
  709. CICS @i(filespec).
  710. Normally, this form of the SEND subcommand is used only
  711. when the @i(filespec) has no wildcards, since
  712. the @i(foreign-filespec) is used only for the first file of a
  713. group (subsequent files having default headers).
  714. If both @i(filespecs) are omitted for this subcommand, Kermit will
  715. prompt separately for each.
  716. This prompting mode is especially useful when more than one file
  717. (or file group) is to be sent, since the command line is limited
  718. to 130 characters.
  719.  
  720. @Indexsecondary(primary="Blanks",secondary="preserving trailing")
  721. Trailing blanks in a text file with RECFM F are deemed superfluous and
  722. are stripped off when Kermit-CICS downloads the file.  In order to treat
  723. such blanks as significant, you must convert the record format to V by
  724. using, for example, the Kermit HOST COPY subcommand to move the file
  725. to a TS queue.
  726.  
  727. @Heading<The SET Subcommand>
  728. @Index(SET)
  729.  
  730. Syntax:@q< SET @i(parameter) [@i(value)]>
  731.  
  732. The SET subcommand establishes or modifies various parameters controlling
  733. file transfers.
  734. The following SET parameters are available in Kermit-CICS, but not
  735. universally in Kermit-370:
  736. @Begin(Format,spread 0)
  737. @tabclear()@tabset(2.0inches)
  738. DELIMITER@\character for terminal input.
  739. FILE
  740.   LRECL@\Logical Record length for incoming file.
  741.   RECFM@\Record format for incoming files.
  742. PREFIX@\New directory.
  743. @End(format)
  744.  
  745. @Subheading<SET DELIMITER>
  746. @Index(Delimiter)
  747.  
  748. Syntax:@q< SET DELIMITER @i(character)>
  749.  
  750. This subcommand is
  751. defines a character to be interpreted as the logical end of an input
  752. command line (for the purpose of entering multiple commands on a
  753. single line).  This is used only for commands entered at the terminal
  754. and has no effect on commands contained in TAKE files.  The delimiter
  755. is initially undefined, but it can be set in one of the initialization
  756. files and thereby be used in parsing the initial command-line
  757. arguments.
  758.  
  759. @Subheading(SET FILE COLLISION)
  760.  
  761. Syntax:@q< SET FILE COLLISION @i(option)>
  762.  
  763. Unlike most other variants of Kermit-370, Kermit-CICS has RENAME as the
  764. default value for FILE COLLISION.  As a consequence, the usual mode of
  765. operation for receiving a file that already exists (or appears to
  766. exist, as extra-partition TD queues always do), is to assign a new and
  767. unique name and save the file as a TS queue.  If you really want to
  768. upload into an extra-partition TD queue, you must first SET FILE
  769. COLLISION OVERWRITE or APPEND, whichever is appropriate.  Actually, if
  770. the queue in question already exists but
  771. is closed, these two options have the
  772. same effect, which is to overwrite the queue.
  773. @Index(Filename collision)@Index(TD queues)
  774.  
  775. @Subheading(SET FILE LRECL)
  776.  
  777. Syntax:@q< SET FILE LRECL @i(number)>
  778.  
  779. This sets the logical record length for incoming files to a @i(number)
  780. from 1 to 32767 (32K-1).  This variable is used only for fixed-format
  781. and binary files.  However, the only
  782. currently supported type of fixed-format files is the extra-partition TD
  783. queue, which does not allow Kermit to alter the pre-defined LRECL.
  784. The default is 80.
  785.  
  786. @Subheading(SET FILE RECFM)
  787. @Index(RECFM)
  788.  
  789. Syntax:@q< SET FILE RECFM @i(option)>
  790.  
  791. This
  792. sets the record format to use for incoming files.  Valid @i<option>s are
  793. "Undefined", "Fixed", and "Variable" (the default).
  794. Fixed-format records are padded, folded,
  795. or truncated, as needed, to the current LRECL.  Most kinds of files,
  796. in fact, cannot be anything but variable.  There is no current use for
  797. this subcommand, since the only files that can have fixed-length
  798. records are not affected by the Kermit setting.  However, there may
  799. be future applications for as-yet-unsupported filetypes.
  800.  
  801. @Subheading<SET PREFIX>
  802.  
  803. Syntax:@q< SET PREFIX @i(string)>
  804.  
  805. This subcommand is equivalent to the CWD subcommand (@i<q.v.>).  Issuing
  806. @qq<SHOW PREFIX> will not reveal the name of the default directory,
  807. since that is called by its alias @qq<*>.  You must use the SPACE
  808. subcommand instead (@i<q.v.>).  There is no mechanism for displaying
  809. the list of all existing directories.
  810. @Index(Directories)
  811.  
  812. @Heading(The SPACE Subcommand)
  813. @Index(SPACE)
  814.  
  815. Syntax:@q< SPACE>
  816.  
  817. This subcommand displays the storage
  818. allocation in the current directory and the allowed quota.  If there
  819. is no current directory, @i(i.e.), if a QFN
  820. @Index(Qualified file names)
  821. prefix has been selected, the response is @qq<No directory defined>.
  822.  
  823. @Heading<The TAKE Subcommand>
  824. @Index(TAKE)
  825.  
  826. Syntax:@q< TAKE @i(filespec)>
  827.  
  828. Execute Kermit subcommands from the specified file.  The @i(filespec)
  829. has the usual format, except that the default
  830. filetype is @qq<TAKE>, rather than @qq<TS>.
  831.  
  832. @Section<How to build an executable Kermit-CICS>
  833.  
  834. Before attempting to build Kermit-CICS, look in the
  835. Kermit distribution under IKXKER for the
  836. installation document, as well as "beware", help, and update files, and
  837. read them first.  They will probably contain information that is more
  838. current than what you see here.  Indeed, the process of applying the
  839. updates is complicated enough that it cannot be adequately described
  840. here.  The installation document @q(IKXKER.INS)
  841. contains a full description of the process, including
  842. @Index(Batch jobs)
  843. batch jobs for carrying out the various steps.
  844. You will need to extract the JCL and submit it (suitably
  845. tailored to your local environment).  These jobs apply the updates, pass
  846. the source through the command-level translator and the assembler, and
  847. finally link the program into an executable phase or load module.
  848. @Index(CICS command level)
  849.  
  850. @Index(Initialization files)@Index(Translation tables)
  851. If your site's ASCII/EBCDIC translation table
  852. for TTY lines does not conform
  853. to the one listed in the appendix (which in turn conforms to the
  854. one given in the IBM System/370 Reference Summary), then enter
  855. the appropriate SET ATOE/ETOA/TATOE/TETOA
  856. subcommands in @q(KSYS.TD).  The generic Kermit-370 chapter includes
  857. an invertible 256-entry translation table and describes a procedure
  858. for determining what SET subcommands are needed.
  859. @i<NOTE:> If your site's ASCII/EBCDIC translation is not invertible for
  860. at least 96 entries, Kermit will not and cannot work.
  861.  
  862. @Section(What's New)
  863. Below is a list of the CICS-specific features in Version
  864. @value(-cicsversion) of Kermit-CICS added since the previous major
  865. release, Version 4.2 in March of 1990.
  866. For the list of generic additions, see the chapter on Kermit-370.
  867.  
  868. @begin(enumerate,spread 0.5)
  869. Termid substitution in filenames.
  870.  
  871. User id for Kermit storage expanded to 8 bytes.
  872.  
  873. Compatibility with CICS 3.1.
  874.  
  875. Prompt string padded with XON.
  876.  
  877. Serialized access to TD queues.
  878.  
  879. Small bug fixes.
  880.  
  881. @end(enumerate)
  882.  
  883. @Section(What's Missing)
  884.  
  885. Work on Kermit-CICS will continue.  Features that need to be
  886. improved or added include:
  887. @begin(itemize)
  888. IKXDYNAL for both CICS/VSE and CICS/MVS.  The former
  889. would probably support only
  890. spool files, but the latter should support both spool
  891. files and MVS data sets (QFN's).
  892.  
  893. Sample exit routines for supporting userid algorithms besides
  894. the OPID and TERM options.
  895.  
  896. Sample package of security exit routines.
  897.  
  898. Support for data objects on a remote CICS.
  899.  
  900. Cleaner performance of server-mode BYE function, dependent on local
  901. conventions.
  902.  
  903. Support for indirect TD queues.
  904.  
  905. Mechanism for flushing terminal output from Kermit (such as for the
  906. TYPE subcommand).
  907.  
  908. Mechanism for collecting "terminal" output from invoked programs.
  909.  
  910. Testing under CICS/VM.
  911.  
  912. SET REPEAT subcommand.
  913.  
  914. CONNECT subcommand.  This may be impossible.
  915. @end(itemize)
  916.  
  917. Anyone interested in working on these or other improvements should first
  918. get in touch with the Center for Computing Activities at Columbia
  919. University to find out if someone else has already begun a similar
  920. project (and, if so, who).
  921.