Since there are no language compilers bundled with MVS 3.8, the compilers that are available to use are those that were included with the MVT 21.8f installation plus any that have been placed in the public domain by their owners/authors and are available on media that we can install under MVS running under Hercules.
Important: When installing any software on MVS 3.8j that was not installed as a part of the System Generation procedure, it is always a good idea to choose a target library that is not one of the libraries created by the System Generation procedure. In other words, you probably should not install load modules for the compilers in SYS1.LINKLIB, nor install procedures in SYS1.PROCLIB. I have attempted to be consistent when writing the installation jobstreams for the compilers to use SYS2.LINKLIB as the target of load modules and SYS2.PROCLIB for procedures. Since the compiler library datasets, for the languages that require them, usually have no counterpart in the standard IBM datasets, I usually use a high level qualifier of SYS1. If you wish, you may change the compiler library high level qualifier to SYS2 to match the target LINKLIB and PROCLIB, but if you do you will also need to change any references in the procedures that use them.
If you do not have SYS2.LINKLIB defined on your system, you should create one using the attributes of SYS1.LINKLIB as a guide. You will also need to add SYS2.LINKLIB to the LNKLST member of SYS1.PARMLIB. And you will also need to add SYS2.LINKLIB to the IEAAPF member of SYS1.PARMLIB so that authorized programs may be executed from SYS2.LINKLIB. Be careful when modifying the members of SYS1.PARMLIB, paying strict attention to the inclusion or omission of commas and continuation characters (in column 72).
If you do not have SYS2.PROCLIB defined on your system, there are instructions for doing so at: How can I execute catalogued procedures from a library other than SYS1.PROCLIB?.
November 2008 Update: Some conversations with Phil Roberts led me to undertake the creation of a single Compiler Library DASD Volume that contains all of the compilers included below, with the exception of BWBASIC. With this option, you can install all of the compilers/tools with a single installation process, which I have attempted to make as painless as possible. Future updates to this page will also be added to the single DASD volume image whenever they are added to this page, so that all that will be required to incorporate future compilers/tools is to download a new copy of the DASD image. For more information and installation instructions: Compilers/Tools DASD Volume.
Click on the name in the index list below to navigate to a synopsis further down on this page. From the synopsis you can follow a link to the actual compiler installation instructions.
|ALGOL Updated 05/06/2013||FORTRAN G||SPASM|
|ALGOL68C Updated 03/09/2013||FORTRAN H||SNOBOL|
|Assembler G (Waterloo)||MORTRAN||Sort/Merge Utility|
|Assembler XF (IFOX00)||Pascal 8000 Updated 07/05/2013||SPITBOL Updated 06/10/2021|
|ASSIST||PL/I||SPITBOL/370 Added 01/22/2014|
|BASIC360 Updated 07/29/2019||PL360||Stanford PASCAL Updated 11/16/2020|
|BWBASIC||RPG||Stony Brook Pascal|
|COBOL||SIMULA||WATFIV Updated 10/15/2014|
|GCCMVS Updated 07/24/2020||SLAC Modified Link-Editor||XPL|
Compilers for five languages (two versions of FORTRAN) are included in the distribution archive for the OS/MVT 21.8f Operating System:
OS ALGOL F - version designation: 01 JUL 67
IBM OS American National Standard COBOL - version designation: V2 LVL78 01 MAY 72
FORTRAN IV G - version designation: LEVEL 21
OS 360 FORTRAN H - version designation: LEVEL 21.8 JUN 74
OS 360 PL/I (F) - version designation: 5.5
OS RPG - version designation: V1M10
Although it is not a compiler, the Sort/Merge Utility included with OS/MVT is the only Sort/Merge Utility available for use on MVS under Hercules. Since the origin of all of these materials is the OS/MVT distribution libraries, I have included the Sort/Merge Utility in this section.
For each of the language compilers from OS/MVT and the Sort/Merge, there is an archive available for download from this site which contains a tape image, an installation jobstream, and an installation verification jobstream. To download and install any of these, click on the desired link below:
Source for the MVT COBOL compiler, MVT RPG compiler, and MVT SORT/MERGE are available from MVT Compilers Source.
The PL360 programming language was originally designed and implemented by Nicklaus Wirth and Joe Wells at Stanford University for the IBM System/360 computers. However, the FUNCTION capability of PL360 makes the language extensible to IBM System/370 and Amdahl computers. In fact, PL360 can be used on any computer that supports the basic System/360 instruction set. The other instructions can be programmed through FUNCTION declarations and statements.
To download the archive I created for this compiler, as well as links to two other distributions and compiler documentation links, click on PL360.
SNOBOL4 (StriNg Oriented and symBOlic Language) is a language for text processing, pattern matching, and much more, first designed and implemented at Bell Telephone Laboratories, Inc. (BTL) in the 1970's.
To download the archive for this compiler, as well as access additional links to documentation and support sites, click on SNOBOL4.
SPITBOL (Speedy Implementation of SNOBOL) is a compiled implementation of the SNOBOL4 language for the IBM System/360 and System/370 family of computers. It was created by Robert Dewar and Ken Belcher at the Illinois Institute of Technology.
To download the archive for this compiler, as well as access additional links to documentation and support sites, click on SPITBOL.
SPITBOL/370 is a substantial functional extension to SPITBOL/360 version 3. While Version 3 was a stability release concerned with
fixing bugs and integrating the new OS interface, SPITBOL/370 seeks to
adapt SPITBOL to the 370 instruction set and add new capabilities to the language.
To download the archive for this compiler, as well as access additional links to documentation and support sites, click on SPITBOL370.
This PASCAL compiler was uploaded to the Hercules group by Mark Waterbury in 2000.
To download the archive for this compiler with instructions for installing under Hercules/MVS, click on PASCAL.
On 11/16/2020 I have added instructions and an archive for installing the New Stanford Pascal created and maintained by Bernd Oppolzer. To download the archive and read instructions for installation, click on NPASCAL.
BWBASIC is a BASIC language interpreter written by Ted A Campbell. A version that has been compiled with Dignus Systems/C is available for download from their site http://www.dignus.com/freebies/#bwbasic along with documentation and an installation verification program. So far I have not gotten past a S0C1 abend on my attempts to run the program, but others may have better luck.
If you want to code in C on MVS (3.8, XA, OS/390 or above), there is now another option available, and it is both free and clear of copyright conditions. Paul Edwards and Phil Roberts have been working on this for some time. Download from:
Tim Pinkawa has created some guide pages for installing and using the gccmvs compiler:
Installing GCCMVS, a free C compiler
Using GCCMVS, a brief tutorial
Practical GCCMVS, some more practical uses of GCCMVS
Updated 07/24/2020: Although the links to websites above work, the links from Tim Pinkawa's pages for obtaining GCCMVS do not seem to still be available. The links at SourceForge seem to all point back to Tim's pages as well. So I am adding a brief set of steps to install GCCMVS (or GCC370, which is what you need for MVS 3.8j) here: GCCMVS. Note: If you have SYSCPK (at version 1.19 or later) installed, you already have GCCMVS on your system; please read GCC.DOC($SYSCPK) on the SYSCPK volume.
|Peter Sylvester maintains a site for Simula at https://www.edelweb.eu/Simula/ where you can download the Simula compiler and read the Users Guide for the language.|
You may also download an archive from this site containing the load modules and procedure library. For download and installation instructions, click on SIMULA.
In the summer of 1965, four undergraduate students of the University of Waterloo, Gus German, Jim Mitchell, Richard Shirley and Robert Zarnke, led by Peter Shantz, developed a FORTRAN compiler for the IBM 7040 computer and called it WATFOR. Its objectives were fast compilation speed and effective error diagnostics at both compile and execution time. It eliminated the need for a separate linking procedure and, as a result, FORTRAN programs which contained no syntax errors were placed into immediate execution.
In 1966, the University decided to replace the 7040 with an IBM 360 computer. This meant that a replacement for the 7040 version of WATFOR had to be created for this new computer. A team of full-time employees and undergraduate students was formed to write an IBM 360 version. The project members, Betty Schmidt, Paul Dirksen, Paul Cress, Lothar K. "Ned" Kesselhut, Bill Kindree and Dereck Meek, who were later joined by Mike Doyle, Rod Milne, Ron Hurdal and Lynn Williams, completed 360 WATFOR in the early part of 1967. The compiler was a great success and many other institutions (universities, colleges, businesses and governmental agencies) started using the WATFOR compiler to meet needs similar to those experienced at the University of Waterloo. The distribution of the software and customer support was carried on by Sandra Ward.
As a result of ideas put forth by the SHARE FORTRAN Committee and others, a new version of WATFOR, called WATFIV, was produced in 1968. WATFIV introduced new features such as CHARACTER variables and direct-access input-output.
To download the archive for this compiler with instructions for installing under Hercules/MVS, click on WATFIV.
MORTRAN is a FORTRAN language extension that permits coding in a more convenient structured format. The language is implemented by a macro-based pre-processor and is further extensible by user-defined macros. Its features include:
To download the archive for this pre-compiler with instructions for installing under Hercules/MVS, click on MORTRAN.
You may wonder why I would have instructions for installing the Assembler that is included with MVS 3.8j. The initial reason I added the instructions was for those who are running OS/MVT and wanted to gain the benefits of running the later version of the assembler. However, in January 2007 I added the instructions for building the IFOX00 load modules using Paul Gorlinsky's regenerated source that contains all known PTFs. So for those purists who like to be able to build load modules directly from source code, this is now an option for Assembler XF.
Also, there are some modified Procedure Library members for executing Assembler on this page. And a comparison of option differences between the Assembler F (from OS/MVT) and Assembler XF (from OS/VS2) versions.
To view the instructions and access the archives, click on Assembler XF.
Also, if you are attempting to assemble a program written for a more recent version of MVS (or OS/390 or z/OS), you may want to take a look at Jan Jaeger's extended mnemonic macros - mnemac.
ASSIST is a small, high-speed, low-overhead assembler/interpreter system especially designed for use by students learning assembler language. The assembler program accepts a large subset of the standard Assembler Language under OS/360, and includes most common features. The execution-time interpreter simulates the full 360 instruction set, with complete checking for errors, meaningful diagnostics, and completion dumps of much smaller size than the normal system dumps.
To view the installation instructions, documentation files, and download the archives, click on ASSIST.
SPASM is a fast, Single Pass ASseMbler (whence the acronym SPASM), designed to accept a subset and a superset of the IBM System/370 Assembler Language. The generated code is assembled directly into core memory, and may be executed or interpreted there. Since the SPASM system is designed with the beginning machine language programmer in mind, it is expected that interpretation will be the normal mode of execution. Facilities are provided to help the beginner over some of the pitfalls inherent in the language, sometimes at the cost of minor restrictions on the source language. Like many student-oriented systems, SPASM provides a batching capability which removes the necessity for returning to the operating system between jobs that typically are at most a few seconds in duration.
To view the installation instructions, documentation files, and download the archives, click on SPASM.
The SLAC modifications to the OS/VS linkage editor are of two types:
The changes and additions to the printed output include the suppression of useless page ejects; modifications in the module map and cross reference table headings to show that either a module map or module map and cross reference table are being printed; and a change in the main heading to reflect the fact that this is the SLAC modified version of the linkage editor.
The internal changes to help the user include printing a message telling the user where the system has put the output data set (SYSLMOD); clearing the input text buffer to HEX 81's so uninitialized areas of the program may be found more easily; flagging, in the module map, all names called from the SYSLIB data set (via AUTOCALL), and the listing of these names in a concatenation number dictionary with the data set name and volume from which they were linked. The data derived from the creation of the SYSLMOD message and the concatenation number dictionary is also written out to the SMF data set using a special SVC routine. This data can be used to monitor program usage, load module library access patterns, distribute costs of subroutine libraries, etc.
In addition, the renumbering table is cleared more efficiently to improve speed.
User and systems documentation is included on the distribution tape.
To view the installation instructions, documentation files, and download the archives, click on SLACLE.
In October 2007, Dan Skomsky posted to the Hercules' Assembler discussion group files area his cleaned up version of Assembler G from the CBT Tape. His update incorporates a tremendous effort on his part to manually insert the updates to bring the assembler to version 27a, which is the latest version of the source known to be available. He subsequently made a modification to one of the macros to eliminate an MNOTE during assembly of the ASMG source, necessitating the upload of a PTF to replace one jobstream in the archive. The archive available for download here has had that PTF incorporated and the ReadMe from the PTF archive has been appended to the ReadMe from the original archive for documentation. Otherwise the archive is unchanged from Dan's original. Note that all files contained in the archive are ASCII TeXT format created on a Windows system, so each line is terminated by X'0d0f', so if you download to a Linux system, you need to run the files through fromdos or a similar utility to strip the x'0d' characters. The archive - asmg27a.tgz [MD5: F91F976484A3E2E9DECF2D0D58301B9C] - contains five jobstreams and a documentation file:
Modify, to conform to your system environment, and submit SOURCE.ASMG27A.jcl, MACLIB.ASMG27A.jcl, and LKEDCTL.ASMG27A.jcl which will create three Partitioned Datasets containing the source code, macro library, and linkage editor control statements required to assemble and link Assembler G. Modify, to conform to your system environment, and submit ASMGBASE.ASMG27A.jcl to assemble all modules into a single object library Partitioned Dataset. Modify, to conform to your system environment, and submit ASMGLINK.ASMG27A.jcl to link edit the modules, creating the load modules that comprise Assembler G.
[11 July 2013] An archeological expedition on my desktop brought to light a page I had photocopied at some unknown time in the past with a bit of historical information on Assembler G. Obviously when I originally copied the information I intended to incorporate it here, alas it became lost on the way and, although it has resurfaced, I no longer remember the source of the material. But rather than lose it again, I am reproducing the information here without further procrastination.
Assembler G, also known as ASMG, was a fast assembler written at UW [University of Waterloo]. The program was first installed in March of 1968. It was designed for use with the IBM 360 and 370 computer systems (Cowan, Graham, Mackie et al. 28). The assembler was so effective that it was adopted for general use, even at several IBM laboratories (Cowan, Graham, Mackie et al. 4).
Assembler G was maintained for registered users by UW staff for a monthly fee of $100.00 after it was developed under the direction of R. Petersen. The program was first presented to the computing community at a SHARE Conference held in Houston, Texas in February 1968.
In spite of its many similarities to Assembler F, in its May 1976 issue Datapro noted that Assembler G dramatically out performed ASMF and offered "potential in terms of cost savings and extended features." When the program first appeared, the Computing Centre Newsletter noted that Assembler G was four to five times faster than its immediate predecessor.
UW Special Collections. GA 133-859. Wes Graham Fonds. Series 4.1: UW Files to 1973. "Assembler G Maintenance Agreement," 3.
UW Special Collections. GA 133-944. Wes Graham Fonds. Series 4.1: UW Files to 1973. Sandra Hope (ed.) "Information About Assembler G," The Computing Centre Newsletter (Issue 7, 10 September 1968), 18.
UW Special Collections. GA 133-1255. Wes Graham Fonds. Series 4.2: UW Fiels to 1973. "Assembler G: University of Waterloo," Datapro (May 1976), 70E-866-1a-1b.
UW Special Collections. GA 133-944. Wes Graham Fonds. Series 4.1: UW Files to 1973. J.P. Sprung (ed.), "Research and Development." The Computing Centre Newsletter. (Issue 2 March 11-2, 1968), 4.
This is a Pascal compiler for S/370 from the State University of New York at Stony Brook, built with XPL. The archive containing this compiler has been available from the Hercules-390 group files since April, 2000, and was uploaded by Mark Waterbury.
To view the installation instructions, documentation files, and download the archives, click on StonyBrookPascal.
This is the distribution tape for ALGOL68C, originating from Cambridge University in April, 1976. The archive containing this compiler has been available from the H390-MVS group files since February, 2005, and was uploaded by Tony Harminc.
To view the installation instructions, documentation files, and download the archives, click on algol68c.
This is the distribution tape for Pascal 8000, originating from the University of Tokyo, Japan [Teruo Hikita and Kiyoshi Ishihata] and modified at the Australian Atomic Energy Commission [Gordon Cox and Jeffrey Tobias]. The archive containing this compiler has been available from the H390-MVS group files since February, 2005, and was uploaded by Tony Harminc.
To view the installation instructions, documentation files, and download the archives, click on pascal8000.
The XPL programming language is a derivative of PL/I designed for compiler writing. The archive containing this compiler has been available from the Hercules-390 group files since May, 2001, uploaded by Peter Flass, and is also available from the CBT tape, file #517.
To view the installation instructions, documentation files, and download the archive, click on XPL.
Ed Liss contributed a project of his that he found in his archives. A BASIC interpreter written in PL/I. The archive available here may be used to install under MVS 3.8j. It is already installed in the SYSCPK Compiler Library DASD volume.
To view the installation instructions, documentation files, and download the archive, click on BASIC360.
I hope that you have found my instructions useful. If you have questions that I can answer to help expand upon the information I have included here, please don't hesitate to send them to me:
Return to Site Home Page
This page was last updated on February 03, 2023.