BSP - Beratung, Schulung, Projekte


Build Yourself An Editor in 7 Steps

Introduction

Okay - there already is an editor for TSO under MVT. It is called EDIT and can be used to create/modify text files under MVT. Of course, it is not the easiest tool to use - similar to edlin of PC-DOS. Unfortunately, the SPF environment is not available for MVT. The good news is, though, that there is a full screen editor available for MVT. It is not too difficult to to get it to run under TSO, but there is some work to be done.

Installation Checklist

You might want to print this checklist and tick of the things you have completed so far

  1. MVT up and running under Linux or Windows/NT. For the documentation on how to install Hercules on Windows/NT see the document herc_w32
  2. Generate support for TSO and TCAM. Lots of problems seem to be caused by too small buffers in the standard TSO setup. For a more stable setup check here
  3. Include user SVC into MVT. For a detailed descripton check here
  4. Download modified FSE installation files
  5. Unpack modified FSE installation files
  6. Customize the FSE installation file
  7. Run the installation jobs

Setting up TCAM and TSO

Due to a missing parameter and too small buffer sizes in the standard TCAM/TSO setup there are a lot of strange errors/hangs happening under TSO. The TCAM Stage1, Stage2 and TSO setup that worked for me can be downloaded from the tsosetup tar ball.

Note that I modified the Stage2 source. I changed CUTOFF 300 to CUTOFF 2100, because that is what the installation docs say, and I found no way to specify a parameter on the stage1 macros to influence this value.

Include user SVC into MVT

The FSE editor needs a user SVC to function correctly. User SVCs can only be added to the MVT system via a (partial) system generation process. You can download the jobs I used from the nucgen tar ball. The process is actually quite simple:

  1. Make a copy of your MVT stage 1 job and call the copy NUCGEN1.JCL
  2. Modify NUCGEN1.JCL by adding lines like
     SVCTABLE   SVC-240-T4-S0
  3. SVCTABLE SVC-241-T3-S0 SVCTABLE SVC-242-T4-S0 SVCTABLE SVC-243-T3-S0 SVCTABLE SVC-244-T4-S0 SVCTABLE SVC-245-T3-S0 SVCTABLE SVC-246-T4-S0 SVCTABLE SVC-247-T3-S0 SVCTABLE SVC-248-T4-S0 SVCTABLE SVC-249-T3-S0 SVCTABLE SVC-250-T4-S0 SVCTABLE SVC-251-T3-S0 SVCTABLE SVC-252-T4-S0 SVCTABLE SVC-253-T3-S0 SVCTABLE SVC-254-T4-S0 SVCTABLE SVC-255-T3-S0 into the stage1 deck.
    Note that the SVCTABLE macros must be preceeded by at least one space. The macros as shown here proved entries for user SVCs in the range of 240 to 255, with the even numbers being type 4 SVCs, and the odd numbers defining type 3 SVCs. Of course you can use any naming conventions.
    Note that FSE needs a type 4 SVC, and the distributiion assumes SVC number 248
  4. In the GENTSO macro of the stage1 deck change
    GENTYPE=ALL
    to
    GENTYPE=(NUCLEUS,9)
    and
    INDEX=MVT1
    to
    INDEX=SYS1
  5. Run the stage1 JCL
  6. Run the stage2 JCL.
    The output of the stage1 job is JCL that can be submitted as is and will generate a new Nucleus with the name IEANUC09 (because of the GENTYPE=(NUCLEUS,9) parameter
  7. IPL the System using the new nucleus. If you don't know how to do so, check here. You should see error messages flashing by the modules IGC002xx could not be found. Do not worry, this is not a bug, but a feature. We will remove that feature later.
  8. If IPL was successful, you can now renames the nucleus modules with a job like this
    //NUCREN JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
    //RENAME EXEC PGM=IEHPROGM
    //SYSPRINT DD SYSOUT=A
    //MVTRES   DD DISP=OLD,UNIT=3330,VOL=SER=MVTRES
    //SYSIN    DD *
     RENAME DSNAME=SYS1.NUCLEUS,VOL=3330=MVTRES,                           C
                   MEMBER=IEANUC01,                                        C
                   NEWNAME=IEANUC02
     RENAME DSNAME=SYS1.NUCLEUS,VOL=3330=MVTRES,                           C
                   MEMBER=IEANUC09,                                        C
                   NEWNAME=IEANUC01
    
    Note that this way you still have a working nucleus module (IEANUC02) available in case of disaster.
  9. Get rid of the error messages during IPL time by placing dummy SVCs into the SVC library:
    //DUMMYSVC JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
    //COPY    EXEC PGM=IEWL,REGION=256K,
    //             PARM=(LIST,XREF,MAP,RENT,REUS,REFR)
    //SYSPRINT DD  SYSOUT=A
    //LINKLIB  DD  DISP=SHR,DSN=SYS1.LINKLIB
    //SYSLMOD  DD  DISP=SHR,DSN=SYS1.SVCLIB
    //SYSLIN   DD  *
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024{(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024A(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024B(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024C(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024D(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024E(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024F(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024G(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0024I(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025{(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025A(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025B(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025C(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025D(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025E(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025F(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025G(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025H(R)
     INCLUDE LINKLIB(IEFBR14)
     NAME IGC0025I(R)
    //IOSUP  EXEC PGM=IEHIOSUP
    //SYSPRINT DD SYSOUT=A
    //SYSUT1   DD DSN=SYS1.SVCLIB,DISP=SHR
    //
    

Download the modified FSE installation files

There are many places where you can find the original FSE installation file. The original place to look is the CBT overflow tape, which is accessible via the net at fse.zip. I have, though, modified the FSE distribution files slightly to make customizing them more easily. Also have I built IEBUPDTE Jobs to build the assembly file containing the FSE source plus a few macros that are needed because IEUASM does not support some of the extended mnemonics used in the source.

You can get the installation files from the fseinst tar ball. Download the file into an empty directory

Unpack the modified FSE installation files

Change to the directory into which you downloaded the fseinst tar ball. Enter the following command

tar -xvzf fseinst.tg
which will place the following files into the directory
fse.sed    <---- FSE customization data
fseinst1   <---- ALLOC and IEBUPDTE Jobs
fseinst2   <---- Builds FSEASML proc in SYS1.PROCLIB
fseinst3   <---- Assembles and links FSE
fseinst4   <---- creates new TSO logon procedure
fseinst5   <---- Assembles and links the user SVC
fseinst6   <---- buils resident SVC table
runsed     <---- Shell script to configure Inst-Jobs

Customize the FSE Installation files

Certain changes need to be done to the source file to really make them installable on MVT. Please edit the file fse.sed to provide installation data. See inside fse.sed for detailed information.

You can now use the script file runsed to modify the installation jobs. You can modify the variable JCL inside this script to point to the directory where you want the modified JCL to be stored. The script line might look somewhat like this

JCL=/hercules/mvt/jcl
Alternatively, you can invike the script with the JCL path as the invokation parameter:
runsed /hercules/mvt/jcl

When the runsed script has finished, there will be files

fseinst1.jcl
fseinst2.jcl
fseinst3.jcl
fseinst4.jcl
fseinst5.jcl
fseinst6.jcl
in the target directory. You might want to review these jobs before running them.

Run the installation jobs

Nucleus Selection at IPL time

The operator (that is you) can select an alternate nucleus to be loaded at IPL time. This is how you do it:

  1. Shutdown MVT if you haven't done so already
  2. Switch to the standard Hercules console (press ESC if you are not already there)
  3. Enter the Hercules command:
    stop
  4. Set a breakpoint at location Hex 80, which is the first executable instruction of the IPL program. You do this by entering the Hercules command:
    b 80
  5. IPL from your system residence volume. The machine will stop shortly afterwards. You can do this with the
    ipl 350
    commands on the hercules console (This is of course only true if 350 is the address of your IPL device).
  6. Store into location 8 the HEX EBCDIC character that designates the last character of the IEANUC0x member to be used. We have chosen a NUCID of 9, therefore enter the hex character F9. The Hercules command to do this is
    r 08=f9
  7. You can now resume the IPL processing by entering the Hercules command
    start
Enjoy your private hercules mainframe



© Volker Bandke