home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
ibm370.zip
/
ikcker.ins
< prev
next >
Wrap
Text File
|
2000-10-22
|
37KB
|
908 lines
IBM System/370 VM/CMS Kermit 4.3.n Installation Instructions
(1999 December)
The following instructions, aside from steps 1, 7, and 8, are collected
into an EXEC for ease of application. See the end of this file.
* * Installation Procedure * *
1) Get the necessary files from the Kermit distribution tape or from
BITNET KERMSRV or elsewhere onto your A disk. Be sure you have
plenty of disk space for the installation (required: about 10 MB,
including scratch space and the executables). Note that many of the
files are generic for Kermit-370 and may already be available from a
local MVS/TSO site. As distributed by Columbia, the files are named
as follows, all with prefix IKC or IK0 (I K Zero):
IKCAUX.CMD Sample EXEC's PC, KERMAIL, etc.
IKCBOO.ASM Assembler source for Kermit bootstrap program
IKCFIX.EXEC Repair kit for mail gateway damage
IKCKER.BWR A "beware" file, listing known bugs, problems, and fixes
IKCKER.DOC CMS Kermit User Guide, plain text
IKCKER.HLP Kermit-CMS help file, CMS HELP (Script) format
IKCKER.INS Kermit-CMS installation instructions (this file)
IKCKER.NUP Pre-release updates for CMS version of Kermit-370
IKCKER.UPD Updates for CMS version of Kermit-370
IKCMAC.ASM Assembler source for CMS-specific macros
IKCUTL.ASM Assembler source for CMS-specific routines
IKCXA.UPD Further updates for CMS/XA variant of Kermit-370
IK0CMD.ASM Assembler source for command handler
IK0COM.ASM Assembler source for global code
IK0DEF.ASM Assembler source for parameter definitions
IK0DOC.ASM Assembler source with brief history
IK0KAN.ASM Assembler source for Kanji character translation
IK0KER.BWR Another "beware" file, with generic entries
IK0MAC.ASM Assembler source for generic Kermit macros
IK0MAI.ASM Assembler source for storage initialization
IK0PRO.ASM Assembler source for generic routines
The following files are not necessary for installation, but may be of
some interest.
IKCACT.ASM Assembler source for sample accounting exit routine
IKCGUP.ASM Assembler source for CMS-specific part of GUPI
IKCHDR.MSS Scribe source for producing IKCKER.DOC
IKCKER.ANN Text of Kermit-CMS announcement for current version
IKCKER.LPT Same as IKCKER.DOC, but with carriage control in col 1
IKCKER.MSS Scribe source for CMS part of IKCKER.DOC
IKCKER.PS PostScript equivalent of IKCKER.DOC
IK0AAA.HLP Kermit-370 implementation notes, supported environments
IK0CON.HLP Notes on supporting other terminal controllers
IK0GUP.ASM Assembler source for generic update program GUPI
IK0KER.ANN Text of generic Kermit-370 4.3 announcement
IK0KER.MSS Scribe source for generic part of IKCKER.DOC
IK0KER.UPD Update history for Kermit-370
IK0POR.HLP Notes on porting Kermit-370 to other systems
IK0VCS.PKT Czech-language version of Kermit-370 source (updates)
IK0VDE.PKT German-language version of Kermit-370 source (updates)
IK0VER.FOR Comparison program for generating update decks
IK0VES.PKT Spanish-language version of Kermit-370 source (updates)
IK0VFI.PKT Finnish-language version of Kermit-370 source (updates)
IK0VFR.PKT French-language version of Kermit-370 source (updates)
IK0VIT.PKT Italian-language version of Kermit-370 source (updates)
IK0VNL.PKT Dutch-language version of Kermit-370 source (updates)
IK0VPL.PKT Polish-language version of Kermit-370 source (updates)
IK0VPT.PKT Portuguese-language version of Kermit-370 source (updates)
IK0VRU.PKT Russian-language version of Kermit-370 source (updates)
2) Rename and reformat, if necessary, the source files on the A disk.
If you received the program from Columbia on tape or over a network,
the assembler source filenames are probably all IKxxxx and the
filetype ASM. Logically, these are concatenated into a single file
called KERMIT ASSEMBLE (plus a few others). This step is included in
the installation EXEC. If you got the source files via e-mail, they
may have been reversibly corrupted by passage through various mail
gateways. Use IKCFIX to repair such damage before proceeding with
the installation.
3) Rename and reformat, if necessary, the help file. The file IKCKER
HLP should generally be stored under the name KERMIT HELPCMS on the
same minidisk as the executable KERMIT MODULE, so that on-line help
will always be available and, in particular, so that the CMS HELP
KERMIT command and Kermit-CMS's HELP subcommand can find it. This
step is also included in the EXEC, along with an option to install
help menus for CMS HELP KER. You may, in fact, install *only* the
help files using the EXEC. When you install the help files, you will
be prompted to select which flavors of help to use. The preferred
one is the PDS form, which allows the KERMIT HELP subcommand to find
help on individual Kermit subcommands. The same sort of access to
individual sections is also supplied through the menu option (but
with the necessity of keeping lots of little help files). One of the
installation choices is whether to remove the ".cs" separators from
the help file. These are harmless, but ugly when using the Kermit
HELP subcommand, since they sometimes appear on the screen. Their
only value is is supporting the DESCR/FORM/PARM options of the CMS
HELP command.
The most comprehensive documentation is the pair of chapters of the
Kermit User Guide dealing with CMS, namely, the generic Kermit-370
chapter and the CMS-specific one. These two are bundled together in
IKCKER.DOC and also in IKCKER.PS; the PostScript is suitable only for
printing, but the DOC file could also be stored wherever you keep
online documentation files, renamed appropriately.
4) GLOBAL the necessary MACLIBs. If you use VMFASM or VMFHASM or the
installation EXEC, the GLOBAL command is issued automatically. Under
CMS releases 1 through 5.5 and 6, the MACLIBs are DMSSP, CMSLIB,
TSOMAC, and OSMACRO. Under CMS 5.6 and 7 or higher, they are DMSOM,
DMSGPI, and OSMACRO.
5) Assemble the source files:
ASSEMBLE KERMIT (or HASM, for CMS/SP 5.5 or later)
ASSEMBLE KERMBOOT (Not necessary if using CMS/SP 4 or later)
ASSEMBLE KACCT (if desired)
Note, however, that the base source files are typically not the
latest version available. Indeed, for releases 5.5 on up, you will
need to apply updates anyway. IKCKER BWR has instructions on how to
do so, and the intallation EXEC automatically applies them, including
any local updates you have collected into a file called KERMIT LOCAL.
6) There are 4 choices for installing the runnable modules, of which the
first (and best) is available starting with VM/SP Release 4. This
choice is made automatically in the EXEC.
a) With VM/SP Release 4 and later, create a dual-purpose module.
LOAD KERMIT exits (RLDSAVE
GENMOD KERMIT
where "exits" is the list of desired exit routines, such as
KACCT.
The module created this way may be permanently pre-loaded by
the user as follows:
NUCXLOAD KERMIT
Such a pre-loaded module is always dropped when CMS encounters
an "ABEND" and it can also be removed (e.g., for replacement)
by issuing the following command:
NUCXDROP KERMIT
b) If your installation is below release 4 of VM/SP, you might just
install the Kermit-CMS program alone, to run in user memory.
This means it can't invoke some programs (see the DOC file for
more information about this).
LOAD KERMIT
GENMOD KERMIT
c) Install the Kermit bootstrap program alone. This loads the
KERMIT TEXT object file into high memory, allowing it to invoke
any other program:
LOAD KERMBOOT
GENMOD KERMIT
d) Install both, to give users a choice:
LOAD KERMIT
GENMOD KERMIT
LOAD KERMBOOT
GENMOD KERMBOOT
Note: with VM/SP Release 5, KERMBOOT will no longer work, and
method (a) is the only recommended one.
7) Install any desired auxilliary commands from IKCAUX CMD. These are
sample EXEC's and may need to be tailored to your site. The PC EXEC,
for example, assumes that the TERMINALR macro is defined in your PC
Kermit as "SERVER,CONNECT". KERMAIL and KERMPRT must be set up
according to the local options and facilities for e-mail and print,
respectively.
8) To run Kermit-CMS, simply type "KERMIT" to the CMS system prompt.
* * Alternate Languages * *
Kermit-370 now can be installed in a variety of languages. The messages
within Kermit have been gathered into a few places in the code, and they
can all be replaced during installation with those of a chosen language.
The replacements are contained in distribution files with names like
ik0vXX.pkt, where "XX" is the two-letter language code according to ISO
639. These files contain the messages in an encoded form using only the
character repertoire of ASCII, so that even the extended characters can
pass successfully through a variety of transmission mechanisms.
Here are the instructions for applying the changes:
1. Use Kermit itself to decode the language-specific update file into
the proper IBM code page. To do this, start Kermit (4.2.6 or
higher) and then select the desired code page, e.g.,
SET FILE CHARACTER-SET CP500
Then tell Kermit to use ik0vXX.pkt, via
SIMULATE IK0Vxx.PKT
RECEIVE
Kermit will then quickly decode and (attempt to) store the file with
the name ik0vXX.upd. If you already have a file of that name, the
FILE COLLISION setting will determine what happens (overwrite the
original, pick a new name for the new file, or whatever).
2. ik0vXX.upd contains the updates for all four major variants of
Kermit-370, and you must edit the file to remove the parts that
are not needed. The edited file should be combined with the
other updates and applied after the official updates for the
current release of the variant you are installing.
3. Create or add to an AUX file called KERMIT AUXOPT with the
following line
SC92300X
Bundle the updates into a file called KERMIT LOCAL (if you already
have one, it contains KERMIT AUXOPT) as follows:
:READ KERMIT AUXOPT A
SC92300X
<any prior contents of kermit auxopt>
:READ KERMIT SC92300X A
<CMS and generic contents of ik0vXX.upd>
The new updates will automatically be applied when you run IKCINS.
* * Accounting Routine * *
If you wish to use the optional accounting exit routine with Kermit, you
may do so by answering YES to that question from the installation EXEC.
Before assembling KACCT, you should examine the source and customize it
to your installation's needs, preferably by collecting your changes into
an update file called IKCACT UPD, which will automatically be applied by
the EXEC during installation.
* * Configuration * *
The IBM mainframe and its communications front end (3705, 7171, etc.)
usually require that parity be used by any asynchronous ASCII device
that wishes to communicate with it. Exactly which kind of parity is
site-dependent. At Columbia, the 3705 requires Mark parity, and the
7171 requires Even parity. Make sure your users know to use the
appropriate parity setting, as well as any other settings required for
IBM mainframe communication (see p.36-39 of the Kermit book).
For linemode transfers, the ASCII/EBCDIC translation in the front end is
a key factor. Kermit-CMS uses an ASCII/EBCDIC translation table which
conforms to the one given in the IBM System/370 Reference Summary. If
your site's translation table is incompatible with the one Kermit uses,
then enter the appropriate SET ATOE/ETOA/TATOE/TETOA subcommands in the
SYSTEM KERMINI file. As long as the system tables are invertible with
respect to the printable ASCII characters (even if the A-to-E and E-to-A
tables are not the inverses of each other), the SET subcommands can
compensate. However, if your system's ASCII/EBCDIC tables are not
invertible, Kermit will not and cannot work; you must change your
system's tables. Refer to the generic Kermit-370 chapter of the User's
Guide for a step-by-step customization procedure (see the section on
translation tables).
Kermit-CMS operation is possible for most types of protocol converters;
for best results, the converter should have a transparent mode. If
possible, be sure the converter is configured so that the graphics or
transparent mode, whatever it is called, is enabled. See IK0AAA.HLP for
a list of front ends that are known to work and for a collection of
notes and special warnings about some of them. Some further
installation details follow for specific devices.
When CMS Kermit is to be used with a 7171, make sure the 7171 is set
up with its "keyboard lock delay" parameter set to 0. Otherwise, the
"terminal" will hang whenever CMS Kermit clears the screen. This
happens consistently when the parameter is set to 10, and not at all
when set to 0. For numbers in between, the higher the number, the
more it happens.
There is another problem in the 7171 that can cause Kermit file
transfers to abort after a flurry of retransmissions if XON/XOFF flow
control is used by the receiving Kermit, or even by hardware in between
the 7171 and the receiver. To prevent this problem, set the 7171 flags
so that XOFF is not a valid terminator of a transparent read. See page
4-20 of "IBM 7171 Reference Manual and Programming Guide" (IBM
publication number GA27-0021).
Kermit operation through a Renex protocol converter generally requires
that type-ahead be turned off.
Kermit operation is possible through an IBM 3708 front end in two
different configurations. In the first, the terminal line must be set
for either "protocol enveloping" or "dynamic" mode, and a session must
be set for line-at-a-time operation for Kermit to work. Other important
details of the terminal configuration are: (1) the terminal must be
specified as a TWX device, (2) the SSCP format should be set to USSNTO,
(3) the terminal type ID should be set to 05, (4) the line should be set
for 8, or possibly 7, data bits and 1 stop bit, (5) there should be no
"read prompt", and (6) the so-called "alternate" translation table
(number 3) should be selected. Kermit-CMS may also need to be
configured because some models of the 3708 (or some environments) do not
pass the normal packet character SOH (code 1, CTRL-A). A suitable
substitute is HT (code 9, CTRL-I). Alternatively, or additionally, it
may help to set the 3708 "interface type" to 0.
The second possible 3708 configuration is "protocol conversion" mode and
makes use of the FULLSCREEN type in Kermit, which is also suitable for
many other kinds of protocol converter. The basic setup consists of the
following Kermit subcommands.
.... mainframe ..... ....... PC .........
SET CONTROLLER FULL set send start 62
SET RECEIVE START 62 set receive start 62
SET SEND START 62 set block b
SET BLOCK B set handshake none
SET HANDSHAKE 0
The 62's (Greater-than sign) may be replaced by some other decimal code
for a printable character. For best results, choose a character that
seldom appears in the files you will be transferring. In particular,
avoid the Control, Eighth-bit, and Repeat prefixes. Packet sizes are
automatically restricted by Kermit-CMS, so you needn't set them unless
conditions require packets shorter than the default (77). Flow control
may be needed to keep up with the data rate on some equipment. The
block check type should be set to "B" only if the protocol converter is
overzealous in optimizing the data stream -- there are hazards in using
any type other than "1" because of all the packet echoing. Refer to
IK0AAA.HLP for such details. Note that the translation of characters
imposes the same setup requirements on FULLSCREEN mode as on the
traditional TTY mode (linemode). See the DOC.
Kermit-CMS supports file transfers through the IBM 3174 AEA with B2 or
higher microcode, but support is restricted to terminals with the ASCII
Graphics capability in three ways that may require compensating
installation:
a) The terminal type must be defined in the 3174 to support graphics
(only the built-in VT241 and Tektronix 4205 types plus suitable
user-defined terminal types). IBM's AEA Reference describes how
to set up terminal tables.
b) The line must be defined without a Host Addressable Printer.
c) If the 3174 is owned by VTAM, the connection must be made with a
logmode that allows the Read Partition Query (such as M2SDLCQ).
-------- cut here for IKCINS EXEC (invoke for easy installation) ------
&TRACE *
*----------------------------------------------------------------------
* I K C I N S
* Complete Kermit installation EXEC (including XEDIT macro, all in one)
* J.F.Chandler - 1992 August 18, revised Nov 10
* Expanded for Help menus 1993 March - thanks to Adam Kujawski
* More options: 1993 May
* Fixed to handle 2 GB or bigger disks: 1996 Nov
* Fixed to handle CMS 13 and higher: 1996 Dec
* CMS / EXEC 2 -- Compatible with CMS releases 2 onward.
* For an explanation of the operations in this EXEC, see IKCKER.INS and
* IKCKER.BWR in the Kermit distribution. Obtain the distribution files
* (step 1 in "INS") before running this EXEC.
* Installation requires about 10mb of disk work space.
*
* Optional customization: to create a PRINT file of the update details
* and assemblies, change the definition of &PRKEEP at label -INSTALL
* from NO to YES. In the standard version of this EXEC, the PRINT file
* is purged unless there are errors in the installation.
*
* Optional customization: to see the messages from UPDATE (each giving
* the name of an update file as it is applied), change the definition
* of &UPDMSG at label -INSTALL from NO to YES. If you have local mods,
* it may be helpful to see those messages, in case there is an message
* among them. Normally, this EXEC suppresses them all.
*
* Optional customization: to use extra options on the assembly step(s),
* insert them into the definition of &ASMOPTS at label -INSTALL. These
* will be passed to the assembler "as is".
*----------------------------------------------------------------------
&IF &0 EQ IKCMENU &GOTO -MAKEMENU
&IF &0 NE IKCFAN &GOTO -INSTALL
*----------------- XEDIT MACRO TO FAN OUT UPDATE FILES ---------------
*----------------- INTENDED TO BE INVOKED AS A PROFILE ---------------
&DISK = &8
&L = &LENGTH OF .&DISK
&IF &L NE 2 &IF &L NE 3 &DISK = O
&DISK5 = &CONCAT OF &DISK 5
&IF &L EQ 3 &DISK5 = &8
&COMMAND MAKEBUF
COMMAND PRESERVE
COMMAND SET RECFM F
COMMAND EXTRACT /FNAME/FTYPE/LINE
COMMAND SET MSGMODE OFF
COMMAND :1 SET ZONE 1 5
-LOOP &LOOP -Z *
COMMAND STACK 1
&READ VARS * &FN &FT
&IF .&FT EQ . &GOTO -C
&COMMAND ERASE &FN &FT &DISK
COMMAND 1 PUT ;:READ; &FN &FT &DISK5
&IF &RC NE 2 &SKIP 2
COMMAND PUT * &FN &FT &DISK5
&GOTO -C
-Z
-C COMMAND :&LINE.1 RESTORE
&COMMAND DROPBUF
COMMAND MSG &0 complete for &FNAME.1 &FTYPE.1
&STACK LIFO QUIT
&EXIT 0
*
*---------------------------------------------- INSTALL HELP MENU
-MAKEMENU
COMMAND EXTRACT /FMODE
COMMAND :0 CASE M
COMMAND :0 TRUNC *
COMMAND :0 ZONE 1 6
COMMAND SET STAY ON
COMMAND SET MSGMODE OFF
COMMAND 1 DEL /:READ /
COMMAND REPEAT *
COMMAND DELETE *
COMMAND SET ARBCH ON $
COMMAND SET ZONE 45 *
COMMAND :1 C/$//*
COMMAND SET ZONE 1 *
COMMAND :1 C/:READ $ $/$/*
COMMAND MACRO JOIN 25
COMMAND REPEAT *
COMMAND :1 / SET / 1 PUTD / SHOW / SETCOM HELPTASK &FMODE.1
COMMAND XEDIT SETCOM HELPTASK &FMODE.1 (NOPROF
COMMAND SET MSGMODE OFF
&CALL -HELPPCH 33 list of SET parameters.
COMMAND FILE
&SETCOM25 = &STRING OF SETCOM TASK
&SETCOM25 = &LEFT OF &SETCOM25 23
COMMAND -1 I &SETCOM25 SET...
&CALL -HELPPCH 25 list of subcommands.
COMMAND /.../ C/ &BLANK / - List of SET subparameters/
COMMAND SAVE KERCOM HELPTASK &FMODE.1
COMMAND :1 DEL *
&SETCOM25 = &LEFT OF KERMITCM 23
COMMAND I &SETCOM25 KERMIT
&SETCOM25 = &STRING OF KERCOM TASK
&SETCOM25 = &LEFT OF &SETCOM25 23
COMMAND I &SETCOM25 SUBCMDS...
&CALL -HELPPCH 25 Help Menu.
COMMAND /.../ C/ &BLANK / &BLANK - List of subcommands/
&STACK FFILE KER HELPTASK &FMODE.1
&EXIT
-HELPPCH &MSG = &RANGE OF & 2 &N
COMMAND ZONE &1 *
COMMAND HEX ON
COMMAND :0 C/ $/X'4A6C'/*
COMMAND :0 I &BLANK
COMMAND I &BLANK &BLANK This is the Kermit-CMS &MSG
COMMAND I &BLANK &BLANK Place cursor on desired item and hit ENTER or PF1.
COMMAND ADD 2
&RETURN
*
*-------------------------------------------------- INSTALL KERMIT
*
-INSTALL
*---------- Maximum positive number allowed in 4-byte word
&MAXPOS = 2147483647
*---------- Set to keep output print file or not...
&PRKEEP = NO
*---------- Set to suppress update application messages...
&UPDMSG = NO
*---------- Set to string of extra assembler options....
&ASMOPTS = &STRING OF
*--------------- INITIALIZE SOME VARIABLES (SET DEFAULTS)
* ALL THESE OPTIONS ARE CHECKED WITH THE INSTALLER
*
&STACK LIFO NO NO NO NO YES YES YES NO NO YES YES
&READ VARS &XA &SFS &KANJ &NMAC &BASE &CLOB &FAN &ACT &BOOT &HELP &PDS
&STACK LIFO A KERMIT HELPCMS * NO NO NO
&READ VARS &DISK &CTL &HELPFT &SRC &LCL &MENU &HELPONLY
*--------------------------------------- DECODE CMS LEVEL
&COMMAND Q CMSLEVEL (LIFO
&IF &RC NE 0 &STACK LIFO * * * *
&READ VARS * * &CMSLEVEL
&CMSLEVEL = &TRANS OF &CMSLEVEL ,
&CMSLEVEL = &TRIM OF &CMSLEVEL
* FOR CMS 7, CHECK IF HASM MISSING (OPTIONAL UNDER ESA 370 FEATURE)
&COMMAND ESTATE HASM MODULE *
&IF &RC NE 0 &IF 0&CMSLEVEL EQ 07 &CMSLEVEL = 7370
&COMMAND ESTATE DMSGPI MACLIB S
&XA2PLUS = &RC
* &LVL VALUES: 2 3 4 5 6 7 8 9 10
* NUCLEUS CMSLVL: - 6 7 8 8 9 10 10 11
*
&LVL = 1 + &POSITION OF &CMSLEVEL 3 4 5 5.5 5.6 6 7 7370 8
&IF &LVL EQ 1 &IF &XA2PLUS EQ 0 &LVL = 8
&XA = &WORD OF NO NO NO NO YES YES NO YES NO YES &LVL
&SFS = &WORD OF NO NO NO NO NO NO YES YES YES YES &LVL
&NMAC = &WORD OF NO NO NO NO NO YES NO YES YES YES &LVL
* NOTE: THE LIST OF "AVAILABLE" CMS LEVELS NEED NOT BE EXTENDED PAST 8
* UNLESS NEW FUNCTIONS ARE ADDED TO KERMIT REQUIRING MACROS/DEFINITIONS
* MISSING FROM THE CMS 7 AND 8 MACLIBS.
&Y2K = NO
&IF &LVL EQ 8 &IF 0&CMSLEVEL GE 013 &Y2K = YES
*---------------------------------- DEDUCE CNTRL FILE NEEDED
&IF &SFS EQ YES &CTL = KERMCMS6
&IF &NMAC EQ YES &CTL = KERME370
&IF &XA EQ NO &SKIP 4
&CTL = KERMXA
&IF &NMAC EQ YES &CTL = KERMXA21
&IF &SFS EQ YES &CTL = KERMESA
&IF &Y2K EQ YES &CTL = KERMY2K
*-------------------------------------- SPOOL PRINTER
SENTRIES
&L = &RC
EXECIO * CP (LIFO ST QUERY VIRTUAL 00E
SENTRIES
&L = &RC - &L
&LOOP 2 &L
&INFO2 = &INFO1
&READ STRING &INFO1
&CHR = &PIECE OF &INFO1 9 1
&SPCONT = 16
&SPTO = 10
&IF .&CHR NE . &SPTO = &SPTO + 1
&SPCONT = &PIECE OF &INFO1 &SPCONT 6
&SPTO = &PIECE OF &INFO2 &SPTO 12
&COMMAND CP SPOOL 00E CONT TO *
*---------------------------------- ANNOUNCE AND CONFIRM OPTIONS
&COMMAND VMFCLEAR
&PRINT &0 EXEC:
&BEGPRINT -INFO
installs Kermit on a working disk of your choice using distribution source and
updates (assumed to be accessible). The working disk should be at least 10MB.
There must be enough virtual storage for updating and assembling (a few MB:
depends on conditions). Source files must be on a single disk (or on its R/O
extensions), but other Kermit updates may be on any accessed disk.
To halt installation, enter 'STOP' at any prompt...
Before installing, search 'IKCKER BWR' for relevant optional mods. Local
updates should be listed in 'KERMIT AUXOPT' and be either already accessible
or bundled into 'KERMIT LOCAL' with ':READ' separators.
-INFO
&CALL -ASK HELPONLY Install *only* the HELP file
&IF &HELPONLY EQ NO &CALL -CHECK IKCKER BWR *
&CALL -GETPARM SRC mode source filemode
-ASKDISK
&CALL -GETPARM DISK disk installation disk
&DISK = &LEFT OF &DISK 1
&DISK2 = &CONCAT OF &DISK 2
&DISK5 = &CONCAT OF &DISK 5
&TXTDSK = &DISK
&COMMAND MAKEBUF
&COMMAND LISTFILE KERMIT TEXT * (FIFO
&IF &RC EQ 0 &READ VARS * * &TXTDSK
&COMMAND DROPBUF
&IF &HELPONLY EQ NO &IF &TXTDSK LT &DISK &GOTO -ERR5
&COMMAND ESTATE KERMIT ASSEMBLE &DISK
&BRC = &RC
&IF &BRC NE 24 &IF &BRC NE 36 &IF &DISK NE * &SKIP 2
&PRINT Invalid filemode &DISK
&GOTO -ASKDISK
&COMMAND MAKEBUF
&COMMAND QUERY DISK &DISK (LIFO
&READ VARS * * * &R/W * * &BLKSI * * &FBLK &TBLK
&COMMAND DROPBUF
&IF .&R/W EQ .R/W &SKIP 2
&PRINT Disk &DISK is not accessed R/W
&GOTO -ASKDISK
&COMMAND ESTATE $KERMIT ASSEMBLE &DISK
&URC = &RC
&IF &HELPONLY EQ YES &GOTO -DISKOK
&IF .&TBLK NE .- &GOTO -CHKSIZE
&COMMAND MAKEBUF
* Get Filepool id
&COMMAND QUERY ACCESSED &DISK ( LIFO
&READ VARS * * * * &DIR
&DIR = &TRANS OF &DIR : &BLANK
&STACK LIFO &DIR
&READ VARS &FP *
&FP = &CONCAT OF &FP :
* Get available space
&COMMAND QUERY LIMITS * &FP ( LIFO
&READ VARS * * &TBLK &UBLK *
&UBLK = &TRANS OF &UBLK - &BLANK
&STACK LIFO &UBLK
&READ VARS &UBLK *
&COMMAND DROPBUF
&FBLK = &TBLK - &UBLK
-CHKSIZE
&BLKSI = 0&BLKSI + 0
&IF &BLKSI EQ 0 &GOTO -DISKOK
&MAXBLK = &DIV OF &MAXPOS &BLKSI
&TSIZ = &MAXPOS
&IF 0&TBLK LT &MAXBLK &TSIZ = &MULT OF &BLKSI 0&TBLK
&FSIZ = &MAXPOS
&IF 0&FBLK LT &MAXBLK &FSIZ = &MULT OF &BLKSI 0&FBLK
&MINSIZ = 2000000
&IF &BRC NE 0 &MINSIZ = &MINSIZ + 1000000
&IF &URC NE 0 &MINSIZ = &MINSIZ + 1000000
&IF &TSIZ GE 9000000 &IF &FSIZ GE &MINSIZ &SKIP 2
&PRINT Disk &DISK is too small or too full
&GOTO -ASKDISK
-DISKOK
&CALL -CHECK &0 EXEC *
&COMMAND COPYFILE &0 EXEC &FM IKCFAN XEDIT &DISK5 (REPLACE TOLABEL -INSTALL
&COMMAND COPYFILE &0 EXEC &FM IKCMENU XEDIT &DISK5 (REPLACE TOLABEL -INSTALL
&IF &HELPONLY EQ YES &GOTO -MAKEHELP
&X = &POSITION OF &CTL KERMIT KERMXA KERMXA21 KERMCMS6 KERMESA KERME370 KERMY2K
&X = &WORD OF <5.5 5.5 5.6 6 >6 7(370) >12 &X
&PRINT Control file '&CTL CNTRL' is suitable for CMS Rel. &X ...
&CALL -GETPARM CTL filename control filename
&IF .&NEW EQ . &SKIP 3
&X = &POSITION OF &CTL KERMIT KERMXA KERMXA21 KERMCMS6 KERMESA KERME370 KERMY2K
&X = 1 + &X
&XA = &WORD OF NO NO YES YES NO YES NO YES &X
*---------------------------------------- ESTABLISH ASSEMBLER TO USE
&COMMAND VMFCLEAR
&ASMCMD = ASSEMBLE
&IF &XA NE YES &GOTO -GETASM
&ARGS HASM ASMA90 ASMAHL HLASM
&I = 0
&LOOP 4 &N
&I = &I + 1
&ASMCMD = &&I
&COMMAND ESTATE &ASMCMD MODULE *
&IF &RC EQ 0 &SKIP 0
-GETASM
&CALL -GETPARM ASMCMD command assemble command
&IF &URC EQ 0 &CALL -ASK CLOB Updated source already on disk &DISK - destroy it
&IF &CLOB EQ NO &GOTO -ERR1
&IF &BRC EQ 0 &CALL -ASK BASE Base source already on disk &DISK - replace it
*---------------------------- MAKE SURE ALL SOURCE FILES ARE PRESENT
&IF &BASE EQ NO &GOTO -CHKEND
&CALL -ASK KANJ Include Kanji support
&P1 = &STRING OF IK0DOC IK0MAC IKCMAC IK0DEF IK0MAI IK0COM IK0CMD IKCUTL
&X = &STRING OF &P1 IK0PRO
&IF &KANJ EQ YES &X = &STRING OF &P1 IK0KAN IK0PRO
&STACK LIFO &X
&READ ARGS
&I = 0
&LOOP 2 &N
&I = &I + 1
&CALL -CHECK &&I ASM &SRC
-CHKEND
*------------------------------ MAKE SURE UPDATES ARE PRESENT
&CALL -CHECK IKCKER UPD *
&IF &XA EQ YES &CALL -CHECK IKCXA UPD *
*-------------------------------------- MAKE SURE DISK IS DEFINED
&COMMAND ESTATEW * * &DISK
&IF &RC EQ 0 &SKIP 2
&COMMAND ESTATE * * &DISK
&IF &RC EQ 0 &GOTO -ERR2
*
*-------------- ************ S T E P INS 2
*
*-------------------------------------- MAKE OPTIONAL ACCOUNTING EXIT
&CALL -ASK ACT Include optional accounting exit
&IF &ACT EQ NO &GOTO -ACTEND
&CALL -CHECK IKCACT ASM &SRC
&COMMAND COPYFILE IKCACT ASM &FM KACCT ASSEMBLE &DISK5 (RECFM F LRECL 80 REP
&COMMAND ESTATE IKCACT UPD &SRC
&IF &RC NE 0 &GOTO -ACTEND
&PRINT Updating KACCT
&CALL -CHECK IKCACT UPD &SRC
&COMMAND COPYFILE IKCACT UPD &FM KACCT UPDATE &DISK5 (RECFM F LRECL 80 REP
&UPDOPTS = &STRING OF OUTMODE &DISK PRINT INC REP
&COMMAND UPDATE KACCT ASSEMBLE &DISK5 KACCT UPDATE &DISK ( &UPDOPTS
&UPDRC = &RC
&COMMAND ERASE KACCT UPDATE &DISK
&IF &UPDRC GT 12 &GOTO -ERR3
-ACTEND
*-------------------------------------- MAKE BASE SOURCE(S)
©OP = &STRING OF RECFM F LRECL 80 REP
&IF &LVL GE 3 &GOTO -BOOTEND
&BOOT = YES
&CALL -ASK BOOT Generate high-memory bootstrap
&IF &BOOT EQ NO &GOTO -BOOTEND
&PRINT **NOTE** KERMIT TEXT must be kept together with MODULE
&CALL -CHECK IKCBOO ASM &SRC
&COMMAND ESTATE KERMBOOT ASSEMBLE &DISK
&IF &RC NE 0 &SKIP 1
&IF &BASE EQ NO &SKIP 1
&COMMAND COPYFILE IKCBOO ASM &FM KERMBOOT ASSEMBLE &DISK5 ( ©OP
-BOOTEND
&IF &BASE EQ NO &GOTO -MAKEND
&PRINT Merging base source
&I = 0
&LOOP 4 &N
&I = &I + 1
&CALL -CHECK &&I ASM &SRC
&COMMAND COPYFILE &&I ASM &FM KERMIT ASSEMBLE &DISK5 ( ©OP
©OP = &STRING OF APPEND
-MAKEND
*
*-------------- ************ S T E P BWR 4
*
*----------------------------------- FAN OUT UPDATE FILES
&COMMAND VMFCLEAR
&COMMAND ESTATE KERMIT AUXOPT *
&AUXOPT = &RC
&CALL -ASK LCL Any local updates to apply
&IF &LCL EQ NO &SKIP 2
&IF &AUXOPT NE 0 &CALL -CHECK KERMIT LOCAL *
&SKIP 1
&IF &AUXOPT EQ 0 &PRINT *** Warning: 'KERMIT AUXOPT' exists anyway.
&COMMAND ESTATE KERMIT AUXLCL &DISK
&IF &RC EQ 0 &CALL -ASK FAN Re-extract individual update files
&IF &FAN EQ NO &GOTO -FANEND
&PRINT Extracting individual update files
&COMMAND XEDIT IKCKER UPD * ( PROFILE IKCFAN ) &DISK
&IF &XA EQ YES &COMMAND XEDIT IKCXA UPD * ( PROFILE IKCFAN ) &DISK
*
*-------------- ************ S T E P BWR 5
*
&COMMAND ESTATE IKCKER NUP *
&IF &RC NE 0 &SKIP 2
&CALL -ASK FAN Extract updates from IKCKER NUP
&IF &FAN EQ YES &COMMAND XEDIT IKCKER NUP * ( PROFILE IKCFAN ) &DISK
&IF &LCL EQ NO &SKIP 2
&COMMAND ESTATE KERMIT LOCAL *
&IF &RC EQ 0 &COMMAND XEDIT KERMIT LOCAL * ( PROFILE IKCFAN ) &DISK
-FANEND
*------------------- ONE LAST CHECK: CNTRL FILE FROM FAN
&CALL -CHECK &CTL CNTRL &DISK
&IF &LCL EQ YES &CALL -CHECK KERMIT AUXOPT *
*
*-------------- ************ S T E P INS 3
*
*----------------------------------------- MAKE HELP FILE
-MAKEHELP
&CALL -GETPARM HELPFT filetype help filetype
&COMMAND ESTATE KERMIT &HELPFT &DISK
&IF &RC EQ 0 &CALL -ASK HELP HELP file already on disk &DISK - replace it
&IF &HELP EQ NO &GOTO -HELPEND
&CALL -CHECK IKCKER HLP &SRC
&IF &LVL GE 3 &SKIP 2
&COMMAND COPYFILE IKCKER HLP &FM KERMIT &HELPFT &DISK2 (REP
&GOTO -HELPEND
&COMMAND HELPCONV IKCKER HLP &FM
&CALL -ASK PDS Convert help file to PDS form
&IF &PDS EQ YES &SKIP 2
&COMMAND COPYFILE IKCKER $HLP A KERMIT &HELPFT &DISK2 (REP
&GOTO -HELPEND
&CALL -ASK PDS Remove confusing help section separators
&COMMAND VMFCLEAR
&PRINT Installing KERMIT &HELPFT ...
&COMMAND MAKEBUF
&BUFNO = &RC
&STACK FIFO SET MSGMODE OFF
&STACK FIFO SET RECFM F
&STACK FIFO SET CASE M
* WARNING: THERE ARE LOWER-CASE CHARACTERS IN 2 OF THE NEXT 4 LINES
&IF &PDS EQ NO &SKIP 2
&STACK FIFO LOCATE -2/.cs / DEL
&STACK FIFO REPEAT *
&STACK FIFO :0 C/.cm /*COPY /*
&STACK FIFO SET MSGMODE ON
&STACK FIFO FFILE TEMPKERM COPY &DISK5
&COMMAND XEDIT IKCKER $HLP (NOPROF
&COMMAND DROPBUF &BUFNO
&COMMAND MACLIB GEN TEMPKERM TEMPKERM
&COMMAND COPYFILE TEMPKERM MACLIB A KERMIT &HELPFT &DISK2 (REP
&COMMAND ERASE TEMPKERM MACLIB A
&COMMAND ERASE TEMPKERM COPY &DISK
-HELPEND
&IF &LVL LE 3 &GOTO -MENUEND
&CALL -ASK MENU Create HELP menu system
&IF &MENU EQ NO &GOTO -MENUEND
&COMMAND ESTATE IKCKER $HLP A
&IF &RC EQ 0 &SKIP 2
&CALL -CHECK IKCKER HLP &SRC
&COMMAND HELPCONV IKCKER HLP &FM
&PRINT Installing KER HELPTASK ...
&COMMAND MAKEBUF
&BUFNO = &RC
&STACK FIFO SET MSGMODE OFF
&STACK FIFO SET CASE M
&STACK FIFO SET ARBCHAR ON $
* WARNING: THERE ARE LOWER-CASE CHARACTERS IN THE NEXT LINE
&STACK FIFO :0 C/.cm $ /:READ $ &HELPFT /*
&STACK FIFO SET MSGMODE ON
&STACK FIFO FFILE TEMPKERM HELP &DISK2
&COMMAND XEDIT IKCKER $HLP (NOPROF
&COMMAND DROPBUF &BUFNO
&COMMAND ERASE SETCOM HELPTASK &DISK
&COMMAND XEDIT TEMPKERM HELP &DISK2 ( PROFILE IKCMENU
&COMMAND XEDIT TEMPKERM HELP &DISK2 ( PROFILE IKCFAN ) &DISK2
&COMMAND ERASE TEMPKERM HELP &DISK
-MENUEND
&COMMAND ERASE IKCKER $HLP A
&IF &HELPONLY EQ YES &EXIT
*
*-------------- ************ S T E P BWR 6
*
*----------------------------------------- APPLY UPDATES
&COMMAND ERASE $KERMIT ASSEMBLE &DISK
&COMMAND ERASE KERMIT TEXT &DISK
&PRINT Updating KERMIT ASSEMBLE
&DQ = &CONCAT OF &DISK '
&PRINT File 'KERMIT UPDATES &DQ will have the list of updates applied...
&IF &UPDMSG EQ NO &COMMAND SET CMSTYPE HT
&UPDOPTS = &STRING OF CTL STK OUTMODE &DISK PRINT INC
&COMMAND UPDATE KERMIT ASSEMBLE &DISK &CTL CNTRL &DISK ( &UPDOPTS
&UPDRC = &RC
&COMMAND SET CMSTYPE RT
&IF &UPDRC GT 12 &GOTO -ERR3
*
*-------------- ************ S T E P INS 4
*
*------------------------------- RETRIEVE MACLIB LIST FROM STACK
&COMMAND SENTRIES
&IF &RC LE 1 &GOTO -ERR3
&READ VARS
&READ ARGS
&IF &N LE 1 &GOTO -ERR3
&MACLIBS = &RANGE OF & 2 9
&COMMAND GLOBAL MACLIB &MACLIBS
*
*-------------- ************ S T E P INS 5
*
*----------------------------------------------- ASSEMBLE KERMIT
&PRINT Assembling...
&NAME = KERMIT
&COMMAND &ASMCMD $KERMIT ( NOESD NORLD PRINT &ASMOPTS
&IF &RC NE 0 &GOTO -ERR4
&COMMAND ERASE $KERMIT ASSEMBLE &DISK
&COMMAND RENAME $KERMIT TEXT &DISK KERMIT = &DISK2
&LOADS = KERMIT
&IF &ACT EQ NO &SKIP 4
&LOADS = &STRING OF &LOADS KACCT
&NAME = KACCT
&COMMAND &ASMCMD KACCT ( NOESD NORLD PRINT &ASMOPTS
&IF &RC NE 0 &GOTO -ERR4
&IF &BOOT EQ NO &SKIP 4
&LOADS = KERMBOOT
&NAME = KERMBOOT
&COMMAND &ASMCMD KERMBOOT ( NOESD NORLD PRINT &ASMOPTS
&IF &RC NE 0 &GOTO -ERR4
&COMMAND CP CLOSE 00E NA KERMIT LISTING
*
*-------------- ************ S T E P INS 6
*
&PRINT Loading Kermit ...
&IF &LVL GE 3 &RLDSAVE = RLDSAVE
&COMMAND LOAD &LOADS (CLEAR NOMAP &RLDSAVE
&R = &RC
&COMMAND GENMOD KERMIT MODULE &DISK2
&IF &RC GT &R &R = &RC
&IF &R EQ 0 &IF &PRKEEP EQ NO &SKIP 1
&COMMAND CP SPOOL 00E CLOSE
&COMMAND CP SPOOL 00E PURGE &SPCONT &SPTO
&EXIT &RC
*-------------------------------------------------------------------
*-------------------------------------- CONFIRM EXISTENCE OF A FILE
-CHECK
&COMMAND ESTATE &1 &2 &3
&IF &RC EQ 0 &SKIP 3
&X = &CONCAT OF &3 '
&PRINT File '&1 &2 &X not found.
&GOTO -DONE
&FM = &3
&IF .&3 NE .* &RETURN
&COMMAND MAKEBUF
&COMMAND LISTFILE &1 &2 &3 (FIFO
&READ VARS * * &FM
&COMMAND DROPBUF
&RETURN
*----------------------------------- ASK FOR POSSIBLE OVERRIDE (PARM)
-GETPARM &X = &CONCAT OF ' &&1 '
&MSGTXT = &RANGE OF & 3 &N
&PRINT Default &MSGTXT is &X - enter alternate &2 if desired:
-GETPM1 &IF &1 EQ ASMCMD &SKIP 2
&READ VAR &NEW
&SKIP 1
&READ STRING &NEW
&IF .&NEW NE .* &SKIP 2
&PRINT '*' not allowed, except as default. Re-enter, or type STOP:
&GOTO -GETPM1
&IF .&NEW EQ .STOP &GOTO -QUIT
&IF .&NEW NE . &&1 = &NEW
&RETURN
*----------------------------------- ASK FOR POSSIBLE OVERRIDE (YES/NO)
-ASK &MSG = &RANGE OF & 2 &N
&DEFMSG = &CONCAT OF (default: &BLANK &&1 )?
&PRINT &MSG &DEFMSG
&READ VAR &NEWVAL
&X = &POSITION OF .&NEWVAL . .Y .YES .N .NO .STOP
&IF &X EQ 0 &SKIP -3
&IF .&NEWVAL EQ .STOP &GOTO -QUIT
&&1 = &WORD OF &&1 YES YES NO NO ... &X
&RETURN
*-------------------------------------- ERROR EXITS
-QUIT &PRINT Stopping...
&GOTO -DONE
-ERR1 &PRINT &0 would destroy $KERMIT ASSEMBLE &DISK
&GOTO -DONE
-ERR2 &PRINT Mode letter &disk not defined
&GOTO -DONE
-ERR3 &PRINT Error in UPDATE - rc=&UPDRC
&IF &UPDRC NE 0 &PRINT Enter 'HELP UPDATE' for explanation.
&GOTO -DONE
-ERR4 &PRINT Error in assembling &NAME - rc=&RC
&GOTO -DONE
-ERR5 &FID = &CONCAT OF 'KERMIT &BLANK TEXT &BLANK &TXTDSK '
&PRINT &FID precedes disk &DISK in search order.
&PRINT Remove or rename.
-DONE
&COMMAND CP CLOSE 00E NA KERMIT LISTING
&COMMAND CP SPOOL 00E CLOSE
&COMMAND CP SPOOL 00E &SPCONT &SPTO
&EXIT 100