Hercules

IBM S/370 and ESA/390

Emulator

What is Hercules?

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 of Hercules.

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.

Hercules Console

[Click for larger image/information]

MVS 3.8 Console

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 OS/390 and DOS/VSE on their Hercules enable systems.  

As of January, 2001 I am personally devoting 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 enthusiasts.

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 located along the left side of this page may be used to get to the beginning page of a particular topic.  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.

Installing Hercules

If you have just discovered Hercules, this link to view suggestions and links to get you started with installing Hercules and operating system software on your own computer.

Installing MVS 3.8

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 become 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 from IBM.

Assembling/Compiling

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.  The Compilers for MVS 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.

RPG Tutorial

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 programs.

CBT Software 

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.  Some 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.

Abend Codes

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.  

OS Utilities

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.

ISAM/VSAM Interface Utility

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 that.  Instructions for using them and the downloads are at the VSAM for COBOL navigation link.

Make AWSTAPE Utility

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 design.

IEFACTRT Exits

I have begun adding some IEFACTRT (SMF step/job accounting) exits that I have collected at this link.  I keep hoping I will get back to this project, but so far other things have taken priority.

FORTRAN Mini-Reference

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 future.

VSAM for COBOL

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.

VSAM for PL/I

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.

VSAM Tutorial

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 common tasks.

Miscellaneous Programs

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?). 

PTFs (Program Temporary Fixes)

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.

MVS FAQ (Frequently Asked Questions)

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. 

IEFU29 (SMF Dataset Switch Exit) 

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.

IMASPZAP Utility

Instructions and job streams for using the ZAP utility to dump and/or patch load modules.

TSO Tutorial

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 awful lot you can do with a CLIST.

VSCOPY and IFOX for MVT

These pages are devoted to helping install a couple of useful additions to MVT.  

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.

Book List

A short list of books I recommend for the serious MVS user.  

Changes

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 change here.  


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:

Main Hercules' Group
Documentation
Advocacy
Porting Hercules to OS/2
MVS
MVT
OS/VS1
VM
DOS/VSE
DOS/VS & DOS/VSE
Linux
TSS
MUSIC/SP
Learning 370 Assembler
Tur(n)key MVS



Visitors since September, 2000


My personal site


This page was last updated on February 21, 2008.