Mike Slinn

IBM MVS on the Hercules Mainframe emulator

Published 2023-08-12.
Time to read: 5 minutes.

This page is part of the mainframe collection.

The operating systems for IBM's mainframe computers have changed very little over the decades since they were first released. If you are the type of person who is intrigued by the idea of restoring vintage Model T Fords, then the Hercules IBM mainframe emulator is just the toy you need to give yourself for Christmas.

Installing Hercules

Hercules is part of the standard Ubuntu distribution. To install it, simply type the following. Note that this also installs an X-windows emulation of an IBM 3270 terminal:

Shell
$ yes | sudo apt install hercules x3270

Old IBM Mainframe OSes

If you want to find old IBM mainframe OSes, look for the term ADCD, which means "Application Developer Controlled Distribution".

The ADCD software stacks provide z/OS, z/VM, and associated middleware products formatted for use with ISV zPDT.

IBM OS/390 V2R10 ADCD

A public domain OS from IBM can be obtained from archive.org. An installation script for Hercules is available at GitHub.

This article does not discuss running OS/390 on Hercules.

IBM MVS 3.8j

Version 3.8j of the IBM MVS operating system was originally released in 1981, and the maintenance edition was released in 1985. This later edition of MVS v3.8j is readily available without intellectual property issues as a 228 MB zip file.

This packaging of the IBM operating system has been publicly available since 11/2013, although it was publicly available for many years before that in a different package. If you just want to examine its source code without installing anything, it has been on GitHub since Nov 5, 2020.

If you want to download it, do so on a file system that is case sensitive, such as Linux ext4 or MacOS. By default, Windows file systems are not case sensitive.

Microsoft Windows Security flags the following file as a dangerous trojan with alert level severe: pub013.291\TK4-.JASON.JCC\jcc\jccdbg.dll – “This program is dangerous and executes commands from an attacker.” The TK4-.JASON.JCC/jcc directory contains non-IBM software and should be deleted. To do this after cloning, on a non-Windows machine, type:
$ rm -rf pub013.291/TK4-.JASON.JCC

You can download the MVS_TK4- Users Manual.

The site holding the MVS download, https://wotho.ethz.ch/tk4-/, sometimes goes offline for extended periods. However, I found the same MVS zip file here. The file has this comment:

Modifications to IBM's MVS 3.8j operating system (delivered via turnkey-mvs) to add some z/OS (MVS/XA, OS/390) functionality, especially 31-bit addressing.

Here is a related GitHub project, tk4rob.

This repository is intended to collect bug reports, feature requests, and general questions related to Rob Prins's update for the MVS 3.8 TK4- Turnkey System created by Jürgen Winkelmann... This repository aims to provide a space for users of the Rob Prins version of MVS 3.8J TK4- to report issues, suggest new features, and ask general questions about the system.

I found what appears to be the same version on the Open Source Development Network (OSDN) website: mvs380-2_0.zip.

There is a course on Udemy called The Complete Mainframe Professional Course which uses this downloadable version of MVS and Hercules.

Installing IBM MVS 3.8j

To install the operating system on Hercules, as it would have run on 24-bit IBM 3033 mainframes, simply unzip tk4-_v1.00_current.zip to a directory. Page 7 of the Users Manual refers to the unzip directory as the “tk4- folder”. I downloaded and unzipped to /var/tk4- as follows:

Shell
$ cd /var

$ sudo mkdir tk4-

$ sudo chmod 777 tk4-

$ cd tk4-

$ wget  --no-check-certificate \
  -P . \
  https://wotho.ethz.ch/tk4-/tk4-_v1.00_current.zip

$ unzip tk4-_v1.00_current.zip

The top-level directories resulting from the unzip in /var/work/tk4/tk4-_v1.00_current are:

Shell
$ tree -dL 2
.
├── conf
│   └── tk4-_updates
├── ctca_demo
│   ├── conf
│   ├── log_1
│   ├── log_2
│   ├── logo
│   ├── prt_1
│   ├── prt_2
│   ├── rdr
│   ├── scripts
│   └── sysgen
├── dasd
├── doc
├── hercules
│   ├── darwin
│   ├── httproot
│   ├── linux
│   ├── patches
│   ├── source
│   └── windows
├── jcl
├── local_conf
├── local_scripts
├── log
├── pch
├── prt
├── rdr
├── scripts
│   └── tk4-_updates
├── tapes
└── unattended 

Hercules Configuration

These manual steps can be used to start MVS on Hercules:

Shell
$ cd tk4-_v1.00_current
$ pwd /var/work/tk4/tk4-_v1.00_current
$ mkdir log
$ echo "CONSOLE" > unattended/mode
$ ./mvs

For convenience, I define an environment variable called mvs with the directory that hercules with mvs lives in:

~/.bashrc
export mvs=/var/work/tk4/tk4-_v1.00_current

This Bash script launches Hercules by performing the above steps. You might need to change the directory in the script for your system.

#!/bin/bash

cd /var/work/tk4/tk4-_v1.00_current # Change this to suit your needs
mkdir -p log
echo "CONSOLE" > unattended/mode
./mvs

Booting Up Hercules

Now launch MVS on Hercules:

Shell
$ mvs
HHC01413I Hercules version 4.00
HHC01414I (c) Copyright 1999-2012 by Roger Bowler, Jan Jaeger, and others
HHC01415I Built on Jun 23 2016 at 20:32:29
HHC01416I Build information:
HHC01417I Hercules for TK4- (64-bit Linux)
HHC01417I Modes: S/370 ESA/390 z/Arch
HHC01417I Max CPU Engines: 8
HHC01417I Using   setresuid() for setting privileges
HHC01417I Using   POSIX threads Threading Model
HHC01417I Using   Error-Checking Mutex Locking Model
HHC01417I With    Dynamic loading support
HHC01417I Using   shared libraries
HHC01417I With    External GUI support
HHC01417I With    IPV6 support
HHC01417I With    HTTP Server support
HHC01417I With    sqrtl support
HHC01417I With    SIGABEND handler
HHC01417I With    CCKD BZIP2 support
HHC01417I With    HET BZIP2 support
HHC01417I With    ZLIB support
HHC01417I With    Regular Expressions support
HHC01417I Without Object REXX support
HHC01417I Without Regina REXX support
HHC01417I With    Automatic Operator support
HHC01417I With    National Language Support
HHC01417I Machine dependent assists: cmpxchg1 cmpxchg4 cmpxchg8
HHC01417I Running on gojira Linux-6.2.0-27-generic. #28-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 12 22:39:5, x86_64 MP=8
HHC01413I Hercules version 4.00
HHC01414I (c) Copyright 1999-2012 by Roger Bowler, Jan Jaeger, and others
HHC01415I Built on Jun 23 2016 at 20:32:29
HHC01416I Build information:
HHC01417I Hercules for TK4- (64-bit Linux)
HHC01417I Modes: S/370 ESA/390 z/Arch
HHC01417I Max CPU Engines: 8
HHC01417I Using   setresuid() for setting privileges
HHC01417I Using   POSIX threads Threading Model
HHC01417I Using   Error-Checking Mutex Locking Model
HHC01417I With    Dynamic loading support
HHC01417I Using   shared libraries
HHC01417I With    External GUI support
HHC01417I With    IPV6 support
HHC01417I With    HTTP Server support
HHC01417I With    sqrtl support
HHC01417I With    SIGABEND handler
HHC01417I With    CCKD BZIP2 support
HHC01417I With    HET BZIP2 support
HHC01417I With    ZLIB support
HHC01417I With    Regular Expressions support
HHC01417I Without Object REXX support
HHC01417I Without Regina REXX support
HHC01417I With    Automatic Operator support
HHC01417I With    National Language Support
HHC01417I Machine dependent assists: cmpxchg1 cmpxchg4 cmpxchg8
HHC01417I Running on gojira Linux-6.2.0-27-generic. #28-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 12 22:39:5, x86_64 MP=8
HHC00100I Thread id 7F71411FF6C0, prio 15, name Processor CP00 started
HHC00100I Thread id 7F7140DFF6C0, prio  0, name Timer started
HHC00811I Processor CP00: architecture mode z/Arch
HHC00136W Error in function setenv(): cannot set CUU: Not thread safe--setting disabled
HHC01802I HTTP server using root directory /var/tk4-/hercules/httproot/
HHC01807I HTTP server signaled to start
HHC00100I Thread id 7F71409FF6C0, prio  4, name HTTP server started
HHC01802I HTTP server using root directory /var/tk4-/hercules/httproot/
HHC01803I HTTP server waiting for requests on port 8038
HHC01042I 0:000C COMM: device bound to socket 3505
HHC00100I Thread id 7F71405FF6C0, prio  0, name Socket device listener started
HHC01437I Config file[45] conf/tk4-.cnf: including file conf/intcons.cnf
HHC00100I Thread id 7F71401FF6C0, prio  4, name Console connection started
HHC01024I Waiting for console connections on port 3270
HHC01437I Config file[71] conf/tk4-.cnf: including file conf/tk4-_default.cnf
HHC00971I 0:0610 CTC: connect to 127.0.0.1:18610 failed, starting server
HHC00971I 0:0611 CTC: connect to 127.0.0.1:18611 failed, starting server
HHC00100I Thread id 7F713A3FF6C0, prio  0, name 3705 device(1:0660) thread started
HHC01004I 0:0660 COMM: listening on port 37051 for incoming TCP connections
HHC01004I 0:0661 COMM: listening on port 37052 for incoming TCP connections
HHC00100I Thread id 7F7139BFF6C0, prio  0, name 3705 device(1:0661) thread started
HHC01004I 0:0662 COMM: listening on port 37053 for incoming TCP connections
HHC00100I Thread id 7F71393FF6C0, prio  0, name 3705 device(1:0662) thread started
HHC01004I 0:0663 COMM: listening on port 37054 for incoming TCP connections
HHC00100I Thread id 7F7138BFF6C0, prio  0, name 3705 device(1:0663) thread started
HHC01004I 0:0664 COMM: listening on port 37055 for incoming TCP connections
HHC00100I Thread id 7F71386FE6C0, prio  0, name 3705 device(1:0664) thread started
HHC01004I 0:0665 COMM: listening on port 37056 for incoming TCP connections
HHC00100I Thread id 7F71384FC6C0, prio  0, name 3705 device(1:0665) thread started
HHC01004I 0:0666 COMM: listening on port 37057 for incoming TCP connections
HHC00100I Thread id 7F71382FA6C0, prio  0, name 3705 device(1:0666) thread started
HHC01004I 0:0667 COMM: listening on port 37058 for incoming TCP connections
HHC00100I Thread id 7F70E3FFF6C0, prio  0, name 3705 device(1:0667) thread started
HHC01004I 0:0668 COMM: listening on port 37911 for incoming TCP connections
HHC00100I Thread id 7F70E3DFD6C0, prio  0, name 3705 device(1:0668) thread started
HHC01004I 0:0669 COMM: listening on port 37912 for incoming TCP connections
HHC00100I Thread id 7F70E3BFB6C0, prio  0, name 3705 device(1:0669) thread started
HHC01004I 0:066A COMM: listening on port 37913 for incoming TCP connections
HHC00100I Thread id 7F70E39F96C0, prio  0, name 3705 device(1:066A) thread started
HHC01004I 0:066B COMM: listening on port 37914 for incoming TCP connections
HHC00100I Thread id 7F70E37F76C0, prio  0, name 3705 device(1:066B) thread started
HHC00100I Thread id 7F70E33FF6C0, prio  4, name 0:0670 communication thread started
HHC01004I 0:0670 COMM: listening on port 37801 for incoming TCP connections
HHC00100I Thread id 7F70E32FE6C0, prio  4, name 0:0671 communication thread started
HHC01004I 0:0671 COMM: listening on port 37802 for incoming TCP connections
HHC00100I Thread id 7F70E31FD6C0, prio  4, name 0:0672 communication thread started
HHC01004I 0:0672 COMM: listening on port 37803 for incoming TCP connections
HHC00100I Thread id 7F70E30FC6C0, prio  4, name 0:0673 communication thread started
HHC01004I 0:0673 COMM: listening on port 37804 for incoming TCP connections
HHC00100I Thread id 7F70E2FFB6C0, prio  4, name 0:0680 communication thread started
HHC01004I 0:0680 COMM: listening on port 33351 for incoming TCP connections
HHC00100I Thread id 7F70E2EFA6C0, prio  4, name 0:0681 communication thread started
HHC01004I 0:0681 COMM: listening on port 33352 for incoming TCP connections
HHC00100I Thread id 7F70E2DF96C0, prio  4, name 0:0682 communication thread started
HHC01004I 0:0682 COMM: listening on port 33353 for incoming TCP connections
HHC00100I Thread id 7F70E2CF86C0, prio  4, name 0:0683 communication thread started
HHC01004I 0:0683 COMM: listening on port 33354 for incoming TCP connections
HHC00100I Thread id 7F70E2BF76C0, prio  4, name 0:0688 communication thread started
HHC01004I 0:0688 COMM: listening on port 27411 for incoming TCP connections
HHC00100I Thread id 7F70E2AF66C0, prio  4, name 0:0689 communication thread started
HHC01004I 0:0689 COMM: listening on port 27412 for incoming TCP connections
HHC00100I Thread id 7F70E29F56C0, prio  4, name 0:068A communication thread started
HHC01004I 0:068A COMM: listening on port 27413 for incoming TCP connections
HHC00100I Thread id 7F70E28F46C0, prio  4, name 0:068B communication thread started
HHC01004I 0:068B COMM: listening on port 27414 for incoming TCP connections
HHC00100I Thread id 7F70E27F36C0, prio  4, name 0:068C communication thread started
HHC01004I 0:068C COMM: listening on port 27415 for incoming TCP connections
HHC00100I Thread id 7F70E26F26C0, prio  4, name 0:068D communication thread started
HHC01004I 0:068D COMM: listening on port 27416 for incoming TCP connections
HHC00100I Thread id 7F70E25F16C0, prio  4, name 0:068E communication thread started
HHC01004I 0:068E COMM: listening on port 27417 for incoming TCP connections
HHC00100I Thread id 7F70E24F06C0, prio  4, name 0:068F communication thread started
HHC01004I 0:068F COMM: listening on port 27418 for incoming TCP connections
HHC00414I 0:0152 CKD file dasd/hasp00.152: cyls 411 heads 19 tracks 7809 trklen 13312
HHC00414I 0:0191 CKD file dasd/mvscat.191: cyls 1114 heads 15 tracks 16710 trklen 56832
HHC00414I 0:0248 CKD file dasd/mvsdlb.248: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:0148 CKD file dasd/mvsres.148: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:0160 CKD file dasd/page00.160: cyls 698 heads 12 tracks 8376 trklen 8704
HHC00414I 0:0161 CKD file dasd/page01.161: cyls 698 heads 12 tracks 8376 trklen 8704
HHC00414I 0:0240 CKD file dasd/pub000.240: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:0241 CKD file dasd/pub010.241: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:0270 CKD file dasd/pub001.270: cyls 960 heads 12 tracks 11520 trklen 35840
HHC00414I 0:0271 CKD file dasd/pub011.271: cyls 960 heads 12 tracks 11520 trklen 35840
HHC00414I 0:0280 CKD file dasd/pub002.280: cyls 1772 heads 15 tracks 26580 trklen 47616
HHC00414I 0:0281 CKD file dasd/pub012.281: cyls 1772 heads 15 tracks 26580 trklen 47616
HHC00414I 0:0290 CKD file dasd/pub003.290: cyls 1114 heads 15 tracks 16710 trklen 56832
HHC00414I 0:0291 CKD file dasd/pub013.291: cyls 2047 heads 15 tracks 30705 trklen 56832
HHC00414I 0:0149 CKD file dasd/smp001.149: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:014A CKD file dasd/smp002.14a: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:014B CKD file dasd/smp003.14b: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:014C CKD file dasd/smp004.14c: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:0131 CKD file dasd/sort01.131: cyls 203 heads 20 tracks 4060 trklen 7680
HHC00414I 0:0132 CKD file dasd/sort02.132: cyls 203 heads 20 tracks 4060 trklen 7680
HHC00414I 0:0133 CKD file dasd/sort03.133: cyls 203 heads 20 tracks 4060 trklen 7680
HHC00414I 0:0134 CKD file dasd/sort04.134: cyls 203 heads 20 tracks 4060 trklen 7680
HHC00414I 0:0135 CKD file dasd/sort05.135: cyls 203 heads 20 tracks 4060 trklen 7680
HHC00414I 0:0136 CKD file dasd/sort06.136: cyls 203 heads 20 tracks 4060 trklen 7680
HHC00414I 0:0140 CKD file dasd/work00.140: cyls 560 heads 30 tracks 16800 trklen 19456
HHC00414I 0:0170 CKD file dasd/work01.170: cyls 960 heads 12 tracks 11520 trklen 35840
HHC00414I 0:0180 CKD file dasd/work02.180: cyls 886 heads 15 tracks 13290 trklen 47616
HHC00414I 0:0190 CKD file dasd/work03.190: cyls 1114 heads 15 tracks 16710 trklen 56832
HHC01437I Config file[106] conf/tk4-.cnf: including file conf/cbt_dasd.cnf
HHC01437I Config file[110] conf/tk4-.cnf: including file conf/source_dasd.cnf
HHC01437I Config file[114] conf/tk4-.cnf: including file conf/tk4-_updates.cnf
HHC01437I Config file[10] conf/tk4-.cnf: including file conf/tk4-_updates/01
HHC01437I Config file[11] conf/tk4-.cnf: including file conf/tk4-_updates/02
HHC01437I Config file[12] conf/tk4-.cnf: including file conf/tk4-_updates/03
HHC01437I Config file[13] conf/tk4-.cnf: including file conf/tk4-_updates/04
HHC01437I Config file[14] conf/tk4-.cnf: including file conf/tk4-_updates/05
HHC01437I Config file[15] conf/tk4-.cnf: including file conf/tk4-_updates/06
HHC01437I Config file[16] conf/tk4-.cnf: including file conf/tk4-_updates/07
HHC01437I Config file[17] conf/tk4-.cnf: including file conf/tk4-_updates/08
HHC01437I Config file[18] conf/tk4-.cnf: including file conf/tk4-_updates/09
HHC01437I Config file[19] conf/tk4-.cnf: including file conf/tk4-_updates/10
HHC01437I Config file[118] conf/tk4-.cnf: including file conf/local.cnf
HHC01437I Config file[10] conf/tk4-.cnf: including file local_conf/01
HHC01437I Config file[11] conf/tk4-.cnf: including file local_conf/02
HHC01437I Config file[12] conf/tk4-.cnf: including file local_conf/03
HHC01437I Config file[13] conf/tk4-.cnf: including file local_conf/04
HHC01437I Config file[14] conf/tk4-.cnf: including file local_conf/05
HHC01437I Config file[15] conf/tk4-.cnf: including file local_conf/06
HHC01437I Config file[16] conf/tk4-.cnf: including file local_conf/07
HHC01437I Config file[17] conf/tk4-.cnf: including file local_conf/08
HHC01437I Config file[18] conf/tk4-.cnf: including file local_conf/09
HHC01437I Config file[19] conf/tk4-.cnf: including file local_conf/10
HHC02260I Script 1: begin processing file scripts/ipl.rc
HHC01603I hao tgt MVS038J
HHC00077I The target was placed at index 0
HHC01603I hao cmd script scripts/tk4-.rc
HHC00077I The command was placed at index 0
HHC00100I Thread id 7F70E22EE6C0, prio  0, name Hercules Automatic Operator started
HHC01603I hao tgt IEA101A
HHC00077I The target was placed at index 1
HHC01603I hao cmd script ${SCR101A:=scripts}/SCR101A_${REP101A:=default}${CMD101A}
HHC00077I The command was placed at index 1
HHC01603I hao tgt IEA305A
HHC00077I The target was placed at index 2
HHC01603I hao cmd script ${SCR101A:=scripts}/SCR101A_${REP101A:=default}${CMD101A}
HHC00077I The command was placed at index 2
HHC01603I * pausing for a few seconds, please stand by.
HHC01603I maxrates
HHC02272I Highest observed MIPS and IO/s rates:
HHC02272I From Wed Dec 31 19:00:00 1969 to Sat Aug 12 12:03:42 2023
HHC02272I MIPS: 0.00
HHC02272I IO/s: 0
HHC02272I Current interval is 1440 minutes
HHC01603I ipl 148
HHC01603I * pausing for a few seconds, please stand by.
HHC00811I Processor CP00: architecture mode S/370
IEA101A SPECIFY SYSTEM PARAMETERS FOR RELEASE 03.8 .VS2
HHC00081I Match at index 01, executing command script scripts/SCR101A_default
HHC01603I script scripts/SCR101A_default
HHC00010A Enter input for console 0:0009
HHC02260I Script 2: begin processing file scripts/SCR101A_default
HHC01603I * IEA101A just to make sure HAO gets it
HHC00081I Match at index 01, executing command script scripts/SCR101A_default
HHC01603I script scripts/SCR101A_default
HHC02260I Script 3: begin processing file scripts/SCR101A_default
HHC00008I /
HHC02264I Script 2: file scripts/SCR101A_default processing ended
HHC00100I Thread id 7F70E20EC6C0, prio 15, name Read-ahead thread-1 started
HHC00100I Thread id 7F70E1EEA6C0, prio 15, name Read-ahead thread-2 started
HHC00100I Thread id 7F70E1DE96C0, prio 16, name Writer thread-1 started
HHC00100I Thread id 7F70E1CE86C0, prio 16, name Garbage collector started
IEA940I THE FOLLOWING PAGE DATA SETS ARE IN USE
 PLPA ... SYS1.PAGELPA
 COMMON . SYS1.PAGECSA
 DUPLEX . SYS1.DUPLEX
 LOCAL .. SYS1.PAGEL01
 LOCAL .. SYS1.PAGEL02
 IGF992I  MIH INIT COMPLETE, PRI=000300, SEC=000015
 IEE360I SMF NOW RECORDING ON SYS1.MANX ON MVSRES TIME=17.03.49
 RAKF is based on the ESG Security System
 written by Craig J. Yasuna               (Mar 1991)
 adapted to MVS 3.8J: A. Philip Dickinson (Aug 2005)
                      Phil Roberts        (Apr 2011)
                      Juergen Winkelmann  (Apr 2011)
 RAKF001I RAKF is now being activated
 RCVT WAS PROCESSED SUCCESSFULLY
 RAKF003I RAKF is now active
 RAKFPROF7  RAKF PROFILES UPDATED
 RAKFUIDS4  USER TABLE UPDATED
 IEF677I WARNING MESSAGE(S) FOR JOB JES2     ISSUED
 $HASP493 JES2  QUICK-START IS IN PROGRESS
 $HASP412 MAXIMUM OF 1   READER(S)  EXCEEDED
 $HASP412 MAXIMUM OF 1   PUNCH(ES)  EXCEEDED
 $HASP412 MAXIMUM OF 3   PRINTER(S) EXCEEDED
 IEE041I THE SYSTEM LOG IS NOW ACTIVE
 IEE341I BSPPILOT NOT ACTIVE
 $HASP160 PUNCH1   INACTIVE - CLASS=B
 $HASP250 SYSLOG   IS PURGED
 $HASP100 BSPPILOT ON STCINRDR
 $HASP373 BSPPILOT STARTED
 $HASP100 INIT     ON STCINRDR
 $HASP373 INIT     STARTED
 $HASP100 INIT     ON STCINRDR
 $HASP373 INIT     STARTED
 $HASP100 INIT     ON STCINRDR
 $HASP373 INIT     STARTED
 $HASP100 INIT     ON STCINRDR
 $HASP373 INIT     STARTED
 $HASP100 INIT     ON STCINRDR
 $HASP373 INIT     STARTED
 $HASP100 INIT     ON STCINRDR
 $HASP373 INIT     STARTED
 $HASP100 BSPSETPF ON STCINRDR
 $HASP309    INIT  1 INACTIVE ******** C=A
 $HASP309    INIT  2 INACTIVE ******** C=BA
 $HASP309    INIT  3 INACTIVE ******** C=HBA
 $HASP373 BSPSETPF STARTED
 $HASP309    INIT  4 INACTIVE ******** C=SHB
 $HASP309    INIT  5 INACTIVE ******** C=SBA
 $HASP309    INIT  6 INACTIVE ******** C=SC
 BSPSP91I - Parms passed: NOREPLYU
 BSPSP93I - PFK definitions will be updated in memory
 BSPSP22I - Dataset processed: SYS1.PARMLIB
 BSPSP23I - on volume MVSRES
 BSPSP21I - Member being processed: SETPFK01
 +BSPSP98I - Member processed, LASTCC=0000
 +BSPSP21I - Member being processed: SETPFK02
 +BSPSP98I - Member processed, LASTCC=0000
 +BSPSP99I - End of processing, MAXRC=0000
 $HASP395 BSPSETPF ENDED
HHC00008I /
HHC01603I hao tgt HHC00010A
HHC02264I Script 3: file scripts/SCR101A_default processing ended
HHC00077I The target was placed at index 3
HHC01603I hao cmd script scripts/SCR00010A
HHC00077I The command was placed at index 3
HHC00010A Enter input for console 0:0009
HHC00081I Match at index 03, executing command script scripts/SCR00010A
HHC01603I script scripts/SCR00010A
HHC02260I Script 4: begin processing file scripts/SCR00010A
HHC00100I Thread id 7F70E13DF6C0, prio 16, name Writer thread-2 started
HHC00008I /d t
HHC00008I /d t
HHC02264I Script 1: file scripts/ipl.rc processing ended
HHC02264I Script 4: file scripts/SCR00010A processing ended
 IEE136I  TIME=17.03.53 DATE=23.224
 +BSPPILOT - Running script STARTSTD
 +BSPRS22I - Dataset processed: SYS1.PARMLIB
 +BSPRS23I - on volume MVSRES
 +BSPRS08I - PARM NOECHO
 IEE302I 480      ONLINE
 $HASP100 DYNAMASK ON STCINRDR
 $HASP373 DYNAMASK STARTED
 IEF403I DYNAMASK - STARTED - TIME=17.04.19
 DMSK00I DYNAMASK DONE ****
 DMSK06I  START
 IEF404I DYNAMASK - ENDED - TIME=17.04.19
 $HASP395 DYNAMASK ENDED
 $HASP100 NET      ON STCINRDR
 $HASP373 NET      STARTED
 IEF403I NET - STARTED - TIME=17.04.21
 $HASP100 TP       ON STCINRDR
 $HASP373 TP       STARTED
 IEF403I TP - STARTED - TIME=17.04.21
 $HASP100 MF1      ON STCINRDR
 $HASP373 MF1      STARTED
 IEF403I MF1 - STARTED - TIME=17.04.22
 IRB100I MF/1 IS ACTIVE
 $HASP000 OK
17.04.22           IEF236I ALLOC. FOR JES2 JES2
17.04.22           IEF237I 00E  ALLOCATED TO PRINTER1
17.04.22 STC   28  $HASP150 MF1      ON PRINTER1        13 LINES
17.04.22 STC   28 *$HASP190 MF1      SETUP -- PRINTER1 -- F = 0001 -- C = 6    -- T = QN
17.04.22           $HASP160 PRINTER1 INACTIVE - CLASS=A
17.04.22           IEF236I ALLOC. FOR JES2 JES2
17.04.22           IEF237I 00F  ALLOCATED TO PRINTER2
17.04.22 STC   24  $HASP150 BSPSETPF ON PRINTER2        32 LINES
17.04.22 STC   24 *$HASP190 BSPSETPF SETUP -- PRINTER2 -- F = 0001 -- C = 6    -- T = QN
17.04.22 STC   25  $HASP150 DYNAMASK ON PRINTER2        28 LINES
17.04.22 STC   24  $HASP250 BSPSETPF IS PURGED
17.04.22 STC   26  IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
17.04.22           $HASP160 PRINTER2 INACTIVE - CLASS=Z
17.04.22 STC   25  $HASP250 DYNAMASK IS PURGED
17.04.22 STC   26  IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
17.04.22 STC   26  IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
17.04.22 STC   26  IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
17.04.22 STC   26  IST025I  BLDL FAILED FOR IEDIAK   IN VTAMLIB
17.04.22 STC   26  IST025I  BLDL FAILED FOR IEDIAK   IN VTAMLIB
17.04.22           IEF236I ALLOC. FOR JES2 JES2
17.04.22           IEF237I 002  ALLOCATED TO PRINTER3
17.04.22           $HASP160 PRINTER3 INACTIVE - CLASS=X
17.04.22 STC   26  IST110I  NETWORK SOLICITOR STARTED
17.04.22 STC   26  IST093I  ATSO     ACTIVE
17.04.22 STC   26  IST093I  ASNASOL  ACTIVE
17.04.22 STC   26  IST093I  AJRP     ACTIVE
17.04.22 STC   26  IST093I  L3274    ACTIVE
17.04.22 STC   26  IST093I  L3791    ACTIVE
17.04.22 STC   26  IST093I  S3705    ACTIVE
17.04.22 STC   29  $HASP100 TSO      ON STCINRDR
17.04.22 STC   29  $HASP373 TSO      STARTED
17.04.22 STC   29  IEF403I TSO - STARTED - TIME=17.04.22
17.04.22 STC   26  IST020I  VTAM INITIALIZATION COMPLETE
17.04.22 STC   26  IEA000I 0C0,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IEA000I 0C1,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IEA000I 0C2,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IEA000I 0C3,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IEA000I 0C4,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IEA000I 0C5,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IEA000I 0C6,IOE,05,0200,400000000001,,,NET     ,17.04.22
17.04.22 STC   26  IFL003I  IFLOADRN COMPLETED
17.04.22 STC   26  IST270I  370X N07      NOW LOADED WITH LOADMOD N07
17.04.23 STC   29  IKT007I TCAS ACCEPTING LOGONS
17.04.23 STC   29  IKT005I TCAS IS INITIALIZED
17.04.24 STC   27  IKJ019I TIME SHARING IS INITIALIZED
17.04.26 STC   30  $HASP100 SNASOL   ON STCINRDR
17.04.26 STC   30  $HASP373 SNASOL   STARTED
17.04.26 STC   30  IEF403I SNASOL - STARTED - TIME=17.04.26
17.04.26 STC   31  $HASP100 JRP      ON STCINRDR
17.04.26 STC   31  $HASP373 JRP      STARTED
17.04.26 STC   31  IEF403I JRP - STARTED - TIME=17.04.26
17.04.26 STC   30  +SNASOL - APPLICATION SNASOL   IS UP
17.04.26 STC   31  JRPI101 INITIALIZATION COMPLETE
17.04.26 STC   31  JRP904I - JRP WAITING FOR COMMAND.
17.04.27 STC   26  IFL003I  IFLOADRN COMPLETED
17.04.27 STC   26  IST270I  370X N10      NOW LOADED WITH LOADMOD N10
17.04.27 STC   26  IST093I  N07      ACTIVE
17.04.28 STC   26  IST093I  N07P3    ACTIVE
17.04.28 STC   26  IST093I  N08      ACTIVE
17.04.32 STC   26  IFL003I  IFLOADRN COMPLETED
17.04.32 STC   26  IST270I  370X N12      NOW LOADED WITH LOADMOD N12
17.04.33 STC   26  IST093I  N10      ACTIVE
17.04.33 STC   26  IST093I  N10P3    ACTIVE
17.04.33 STC   26  IST093I  N11      ACTIVE
17.04.38 STC   26  IFL003I  IFLOADRN COMPLETED
17.04.38 STC   26  IST270I  370X N14      NOW LOADED WITH LOADMOD N14
17.04.38 STC   26  IST093I  N12      ACTIVE
17.04.38 STC   26  IST093I  N12P3    ACTIVE
17.04.38 STC   26  IST093I  N13      ACTIVE
17.04.43 STC   26  IST093I  N14      ACTIVE
17.04.43 STC   26  IST093I  N14P3    ACTIVE
17.04.43 STC   26  IST093I  N15      ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3767S11 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3767S21 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3767S31 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3767S41 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3278S11 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3278S21 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3278S31 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3278S41 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3278L11 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3278L21 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3767L31 ACTIVE
17.04.46 STC   26  IST097I  VARY     ACCEPTED
17.04.46 STC   26  IST093I  T3767L41 ACTIVE
17.04.51 STC   27  IED160I 3705 T07      LOAD=T07
17.04.54 STC   27  IED160I 3705 T10      LOAD=T10
17.04.57 STC   27  IED160I 3705 T12      LOAD=T12
17.05.00 STC   27  IED160I 3705 T14      LOAD=T14
17.05.04 STC   27  IED382I T07      ACTIVATE COMPLETE
17.05.07 STC   27  IED382I T10      ACTIVATE COMPLETE
17.05.10 STC   27  IED382I T12      ACTIVATE COMPLETE
17.05.13 STC   27  IED382I T14      ACTIVATE COMPLETE
17.05.14 STC   32  $HASP100 INISDSTD ON STCINRDR
17.05.14           MVS038J MVS 3.8j TK4- system initialization complete CN=00
HHC00081I Match at index 00, executing command script scripts/tk4-.rc
HHC01603I script scripts/tk4-.rc
HHC02260I Script 5: begin processing file scripts/tk4-.rc
17.05.14 STC   32  $HASP373 INISDSTD STARTED
17.05.14 STC   32  IEF403I INISDSTD - STARTED - TIME=17.05.14
17.05.14 STC   17  +BSPRS99I - End of processing, MAXRC=0000
17.05.15 STC   32  IEF404I INISDSTD - ENDED - TIME=17.05.15
17.05.15 STC   32  $HASP395 INISDSTD ENDED
17.05.15 STC   32  $HASP150 INISDSTD ON PRINTER2        21 LINES
17.05.15           $HASP160 PRINTER2 INACTIVE - CLASS=Z
17.05.15 STC   32  $HASP250 INISDSTD IS PURGED
HHC01603I script scripts/tk4-_updates.rc
HHC02260I Script 5: begin processing file scripts/tk4-_updates.rc
HHC01603I script scripts/tk4-_updates/01
HHC02260I Script 5: begin processing file scripts/tk4-_updates/01
HHC02264I Script 5: file scripts/tk4-_updates/01 processing ended
HHC01603I script scripts/tk4-_updates/02
HHC02260I Script 5: begin processing file scripts/tk4-_updates/02
HHC02264I Script 5: file scripts/tk4-_updates/02 processing ended
HHC01603I script scripts/tk4-_updates/03
HHC02260I Script 5: begin processing file scripts/tk4-_updates/03
HHC02264I Script 5: file scripts/tk4-_updates/03 processing ended
HHC01603I script scripts/tk4-_updates/04
HHC02260I Script 5: begin processing file scripts/tk4-_updates/04
HHC02264I Script 5: file scripts/tk4-_updates/04 processing ended
HHC01603I script scripts/tk4-_updates/05
HHC02260I Script 5: begin processing file scripts/tk4-_updates/05
HHC02264I Script 5: file scripts/tk4-_updates/05 processing ended
HHC01603I script scripts/tk4-_updates/06
HHC02260I Script 5: begin processing file scripts/tk4-_updates/06
HHC02264I Script 5: file scripts/tk4-_updates/06 processing ended
HHC01603I script scripts/tk4-_updates/07
HHC02260I Script 5: begin processing file scripts/tk4-_updates/07
HHC02264I Script 5: file scripts/tk4-_updates/07 processing ended
HHC01603I script scripts/tk4-_updates/08
HHC02260I Script 5: begin processing file scripts/tk4-_updates/08
HHC02264I Script 5: file scripts/tk4-_updates/08 processing ended
HHC01603I script scripts/tk4-_updates/09
HHC02260I Script 5: begin processing file scripts/tk4-_updates/09
HHC02264I Script 5: file scripts/tk4-_updates/09 processing ended
HHC01603I script scripts/tk4-_updates/10
HHC02260I Script 5: begin processing file scripts/tk4-_updates/10
HHC02264I Script 5: file scripts/tk4-_updates/10 processing ended
HHC02264I Script 5: file scripts/tk4-_updates.rc processing ended
HHC01603I ${LOCALRC:=script scripts/local.rc}
HHC02260I Script 5: begin processing file scripts/local.rc
HHC01603I script local_scripts/01
HHC02260I Script 5: begin processing file local_scripts/01
HHC02264I Script 5: file local_scripts/01 processing ended
HHC01603I script local_scripts/02
HHC02260I Script 5: begin processing file local_scripts/02
HHC02264I Script 5: file local_scripts/02 processing ended
HHC01603I script local_scripts/03
HHC02260I Script 5: begin processing file local_scripts/03
HHC02264I Script 5: file local_scripts/03 processing ended
HHC01603I script local_scripts/04
HHC02260I Script 5: begin processing file local_scripts/04
HHC02264I Script 5: file local_scripts/04 processing ended
HHC01603I script local_scripts/05
HHC02260I Script 5: begin processing file local_scripts/05
HHC02264I Script 5: file local_scripts/05 processing ended
HHC01603I script local_scripts/06
HHC02260I Script 5: begin processing file local_scripts/06
HHC02264I Script 5: file local_scripts/06 processing ended
HHC01603I script local_scripts/07
HHC02260I Script 5: begin processing file local_scripts/07
HHC02264I Script 5: file local_scripts/07 processing ended
HHC01603I script local_scripts/08
HHC02260I Script 5: begin processing file local_scripts/08
HHC02264I Script 5: file local_scripts/08 processing ended
HHC01603I script local_scripts/09
HHC02260I Script 5: begin processing file local_scripts/09
HHC02264I Script 5: file local_scripts/09 processing ended
HHC01603I script local_scripts/10
HHC02260I Script 5: begin processing file local_scripts/10
HHC02264I Script 5: file local_scripts/10 processing ended
HHC02264I Script 5: file scripts/local.rc processing ended 

Boot up will take at least 30 seconds. Leave it alone until the signon logo is prominently displayed:

Shell
HHC01603I *
HHC01603I *                           ************   ****  *****          ||
HHC01603I *                           **   **   **    **    **           |||
HHC01603I *                           **   **   **    **   **           ||||
HHC01603I *                                **         **  **           || ||
HHC01603I *        |l      _,,,---,,_      **         ** **           ||  ||
HHC01603I * ZZZzz /,'.-'`'    -.  ;-;;,    **         ****           ||   ||
HHC01603I *      |,4-  ) )-,_. ,( (  ''-'  **         *****         ||    ||
HHC01603I *     '---''(_/--'  `-')_)       **         **  **       ||     ||    ||||||||||
HHC01603I *                                **         **   **      |||||||||||  Update 08
HHC01603I *       The MVS 3.8j             **         **    **            ||
HHC01603I *     Tur(n)key System           **         **     **           ||
HHC01603I *                              ******      ****     ***       ||||||
HHC01603I *
HHC01603I *            TK3 created by Volker Bandke       vbandke@bsp-gmbh.com
HHC01603I *            TK4- update by Juergen Winkelmann  winkelmann@id.ethz.ch
HHC01603I *                     see TK4-.CREDITS for complete credits
HHC01603I *
HHC02264I Script 5: file scripts/tk4-.rc processing ended 

When Hercules finally completes the startup process, the second last line at the bottom of the console will contain a prompt where you can enter commands:

Hercules console
herc =====> 

MVS is now accessible on port 3270 (of course!)

To stop Hercules, type exit at the Hercules prompt. Shutdown can take a long time, so be patient.

User IDs and Passwords

  • HERC01 is a fully authorized user with full access to the RAKF users and profiles tables. The logon password is CUL8TR.
  • HERC02 is a fully authorized user without access to the RAKF users and profiles tables. The logon password is CUL8TR.
  • HERC03 is a regular user. The logon password is PASS4U.
  • HERC04 is a regular user. The logon password is PASS4U.
  • IBMUSER is a fully authorized user without access to the RAKF users and profiles tables. The logon password is IBMPASS. This account is meant to be used for recovery purposes only.
 – From MVS_TK4- Users Manual

3270 Emulators

A 3270 emulator is necessary to interact with the emulated IBM MVS system.

X3270 is a family of 3270 emulators. I could not get the X Windows application (x3270) to display properly on my 4K monitor, even when I specified Windows HiDpi and X Windows scaling options. However, wx3270 v1.1ga9 worked.

Another option is Tom Brennan’s Vista TN3270 emulator. It looks straight out of the 1990s, and I could not get the upload/download to work, but otherwise it works rather well.

If I had installed Hercules on WSL, the following command would need to be used to discover the IP address of WSL:

Windows CMD
C:\Users\Mike Slinn>wsl hostname -I
192.168.191.196 

The same command can be used on WSL/Linux if the .exe filetype is specified:

Shell
$ wsl.exe hostname -I
192.168.191.196 

To access the system emulated on Hercules running in WSL, I would have made a connection to 192.168.191.196:3270. If I had instead installed the system on an Ubuntu server called gojira, it would be accessed at gojira:3270.

Here is the window that Vista TN3270 displays so a user can specify the IP address and port of the IBM host to connect to:

Once connected, the signon message is displayed in the 3270 emulator:

User user name herc01 and password cul8tr

To connect to a local Hercules instance running in WSL/Ubuntu, Vista TN3270 can be launced from Bash with the IP address to connect to with the following incantation:

Shell
$ '/mnt/c/Program Files (x86)/TomBrennanSoftware/VistaTN3270/vistaTN3270.exe' \
  /h $(wsl.exe hostname -I) &

Here is a script that performs the above:

#!/bin/bash

'/mnt/c/Program Files (x86)/TomBrennanSoftware/VistaTN3270/vistaTN3270.exe' \
  /h $(wsl.exe hostname -I) &

XMIT Files

The Hercules documentation describes how to work with XMIT files on Hercules.

In 2002 Jim Morrison wrote a couple of programs - XMIT370 and RECV370 - that may be used to provide the same functions as TRANSMIT and RECEIVE, although they run in batch, not under TSO. These programs are present in the SYSCPK volume of compilers and tools that is available from my site. Jim’s distribution file, including the source code and documentation is available on the SYSCPK volume in the dataset SYSC.RECV370.ASM. The PROCedures for executing XMIT370 and RECV370 are available in SYSC.PROCLIB.

The Hercules documentation has lots more information on how to work with XMIT files.

XMIT Manager

Xmit Manager XmitManager is a Windows based tool that allows for the manipulation of IBM Mainframe created Xmit format files.

Xmit Manager is a Windows based tool that allows for the manipulation of IBM Mainframe created Xmit format files. With Xmit Manager you can open Xmit files and view or extract the data within them, whether that is binary or text based. Xmit files with Partitioned datasets or Sequential datatsets content can be dealt with similarly through the Graphical Interface.
 – CBT Tape

References

* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.