Hercules is a software implementation of International Business
Machines System/370 and Extended System Architecture/390
mainframe hardware which runs under Linux on a personal computer.
Hercules was created by Roger Bowler, an enthusiastic S/370 fan who
envisioned himself, and other computing enthusiasts, exploring and learning
mainframe computing techniques at home without spending fortunes for
equipment. There are thousands of Hercules' supporters located
around the world using, enhancing, and expanding Hercules' capabilities.
Their numbers are constantly increasing as more people learn about the existence
Hercules by itself only provides
the implementation of the hardware instruction set of IBM
mainframe architectures, S/370, ESA/390, and z/390. In order to utilize
Hercules, it is necessary to acquire either an operating system or a
stand-alone program that has been designed to run on IBM mainframe
hardware. Like the hardware itself, the operating system software
that runs mainframe computers is prohibitively expensive. However,
there are older versions of several of IBM's popular operating systems
that are now classified as Public Domain, meaning that they may be
obtained and utilized freely.
The Hercules community runs a variety of vintage
IBM mainframe operating systems which have been determined to be in the
public domain, including MVT release 21.8, MVS release 3.8, DOS/VS
release 34, and VM370 R6 (all from the 1970's time period). Linux/390 by its very
nature is publicly available. Under the disaster recovery provisions
of their licenses, some have successfully run more recent operating
systems on their
Hercules enabled systems.
Since January, 2001 I have personally devoted my time to MVS 3.8, as it
is the environment that I have spent the majority of my career working in and with which I am
the most familiar. However, there is still information on this
site to benefit those who are running MVT 21.8f.
[Click for larger image/information]
My purpose in creating this web site is to share tips, code, job streams, and
links to other Hercules web sites with the growing community of Hercules
What will you find here?
I have collected and organized a diverse amount of information on this site
to help those who are just starting out with Hercules and/or one of the
operating systems that run under Hercules' emulation. Some of the material
is hosted elsewhere and I simply provide a link to the host site. Some
material I provide a copy of that is directly downloadable from the server that
hosts my web pages, in some cases in a slightly different format from that the
original material. However, the most important content of this site is the
documentation and tutorials that I have written to help people get up to speed
using Hercules and MVS 3.8j on their own systems.
The information in this site is organized into specific topic
categories. The links below may be used
to navigate to the beginning page of a particular topic area. Some topics include
quite a bit of information and have additional levels of pages accessible from
the main page. A brief summary of some of the topics follows.
These pages have evolved over time, and although the very first version
focused mainly on the MVT operating system, my own professional experience began
with MVS 3.8. Therefore, the main focus of my site has now shifted to
focus on the
installation and use of MVS 3.8j. At this link you will find a
step-by-step guide to installing MVS 3.8j using the distribution tapes obtained
If you need help assembling, compiling, and link-editing your own programs
under MVS or MVT, at this
link you will find instructions, job streams, and examples of how to
prepare source programs in a variety of various
programming languages for execution.
Since MVS 3.8 only includes the Assembler, you will
need to install compilers if you are interested in ALGOL, COBOL, FORTRAN, PL/1,
etc. This navigation link will take you to a guide to installing these compilers under MVS.
You will also find the MVT Sort/Merge program at this link. Here is where
you will also find the consolidated compilers/tools SYSCPK DASD volume and
In the feedback I received from people who had visited early versions of this
site, I was made aware of the fact
that there was interest in learning some beginning information about
RPG programming. Conceding that there is indeed little information
available for the casual inquiring mind (ie, without spending $50 or more on a
book that will mostly contain information about RPG II, RPG III or RPG IV), I
set out to produce an introductory tutorial to RPG I. This is definitely an introductory
tutorial and is limited strictly to the version of RPG that we have available to
run under MVT/MVS, but it will get you started if you want to try writing some RPG
There is a wealth of software available for MVT, MVS, and OS/390 on the CBT
tape. However, it is frequently necessary to modify some of the
programs in order to run properly on the vintage version MVS we have
available. Whenever I find something on the CBT tape that is useful to me
under MVS 3.8j, I simplify the installation, to a single jobstream if possible,
and add it to this page with a brief introduction. At times I will also
add some additional material, such as execution jobstreams and TSO Help
text. As a learning experience, you might get the original material from
the CBT tape site (I always document exactly which file(s) the material came
from) and follow my changes to see what it takes to retrograde some of this
software to MVS 3.8j level.
File #134 of the CBT tape contains a TSO HELP member which documents frequently
encountered System (and even a few commonly seen User) Abend Codes. All I have done is
to remove the TSO HELP control information yielding plain text, but it could
be useful to print out a copy and keep near your system.
In 2000/2001, while researching some holes in my memory on RPG at a nearby university library, I
found a textbook on OS Utilities from
1975. I was able to get these great Utility summary guides from the
appendix that I know some of you will be as glad to have available as I am.
Over the last few years, I have added information about a couple of new
utilities and there are now ten utility programs documented here. Chris
Cheney sent along a number of tips about MVT specific information and caught
bunches of typographical errors. At the moment, I consider this page is
pretty much complete and a PDF version of the information is available for
download from the page.
Another byproduct of my efforts to write the RPG tutorial was this section on
the ISAM interface, which allows programs written to access ISAM files to
instead process datasets defined in VSAM Key-Sequenced clusters. Even
though I maintained programs using the ISAM interface in a production system for
several years, it took several hours of dump reading followed by several more
hours of research to reacquaint myself with the finer points of this feature.
You can read the summary of what I extracted from the available IBM
documentation at this link. If you want to access VSAM datasets from COBOL or PL/1
programs (compiled with the MVT compilers), you might want to look at the
routines I wrote to let you do just that. Instructions for using them and the
downloads are at the VSAM for COBOL and VSAM
for PL/I navigation links.
I have a lot of source code (COBOL and
ALC mostly) on CD-ROM and ZIP cartridge archives that I created on my personal
computer. I finally got tired of manipulating these ASCII files to create
individual job streams using IEBUPDTE
to load them over to source libraries under MVS. So, I wrote a small
program that can build AWSTAPE files on MS/PC-DOS, Windows/??, or even OS/2 (the
OS I was running when I wrote it). I have also made a version that will run on Linux.
I know that some people have even customized the utility (using the supplied
source code) to load datasets that have records that are not card image,
which was my original goal.
This link contains a
mini-reference manual for the FORTRAN IV language. Although not as
extensive as my RPG tutorial, it will help beginners get started using the
FORTRAN compiler from the MVT system. I will try to add more to it in the
I had been frustrated for more than a year because the MVT COBOL compiler
wouldn't handle VSAM files. I valiantly tried to make the ISAM
Interface Program suffice, but it just didn't cut it for some of the things I
wanted to do. So, I wrote an assembler routine that could be called from
COBOL that implements almost all of the VSAM file handling available in the
later COBOL compilers we don't have access to. Documentation on how to
download, install and use the program can be found at this navigation link.
And as I finally began looking at learning some PL/I, I decided it would be
nice to have access to native VSAM from PL/I programs, so I wrote a wrapper
routine to call the routine I wrote for COBOL (above) from PL/I programs. The
installation and sample PL/I programs can be found at this navigation link.
I put together a general VSAM overview and what I hope is a thorough
coverage of the IDCAMS utility at this link. There are lots of sample job
streams that can get you started building a library of jobs to handle lots of
These are a handful of programs that I have had around for some time.
Some are subroutines I wrote that have been migrated from operating system to
operating system with me, such as the date routines and field formatting
routines. Some of code in the date routines originated back in the late
1970s when I was working on a Burroughs medium system (anyone remember MCPV?).
When the bugs were being worked out in order to get MVS 3.8j running under
Hercules, an effort was made to collect as many PTFs that might apply to MVS
3.8j as possible. I put this page together to collect all of them that
were mentioned on the discussion groups.
This is exactly what it says it is. The questions are divided into
categories - General MVS, General Hercules, Console Operations, JES2, System
Generation, Application/User Tasks. When I receive questions or see
questions posted on the discussions that are asked more than once, I put the
question and at least one solution here.
This user exit may be installed under MVS 3.8j to automatically dump and
clear SMF datasets when they become filled. Even if you don't want to
install the automatic exit, this page includes instructions for setting up a
Generation Data Group to hold archived SMF datasets plus the JCL to copy the SMF
data from the collection datasets into the Generation datasets and clear the
collection datasets when they get full.
This is an extensive tutorial on using basic TSO - it includes an overview of
the TSO environment and command syntax for most of the commands. At least
half of this page is devoted to writing TSO Command Lists. We may not have
REXX available for MVS 3.8j (yet!), but there is an tremendous amount you can do with a
These pages are devoted to helping install a couple of useful additions to
VSCopy is a version if IEBCOPY that may be used to restore datasets under MVT
that were unloaded using the version of IEBCOPY from MVS - the versions of
IEBCOPY included with MVT is very limited and is not compatible with the version
included with MVS.
IFOX00 is the assembler that is included with MVS and is much more capable
than the assembler included with MVT. However, there is nothing that
prevents the IFOX assembler from executing under MVT and this page will help you
install it - an archive included on the page has everything you need. In
addition, this page includes a set if revised assembler procedures that allow
you to easily use both versions of assembler on a single system. There is
also a detailed comparison of the options effective for each assembler.
Even I was having trouble keeping up with what changed on these pages when,
so I added this page to annotate the date and what changed whenever I make a
If you are using Hercules and one or more of the operating systems that
function under it, you probably should consider joining one of the discussion
groups so you can stay current with developments of interest to you. Here
are the links to the groups: