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 :READ KERMIT SC92300X A 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