Language Compilers Available for MVS 3.8

Since there are no language compilers bundled with MVS 3.8, the compilers that we have available to us are those that were included with the MVT 21.8f installation or 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.  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 FORTRAN H SPASM
Assembler G (Waterloo) GCCMVS WATFIV
Assembler XF (IFOX00) PL/I MORTRAN
ASSIST PL360 SNOBOL
BWBASIC RPG Sort/Merge Utility
COBOL SIMULA SPITBOL
FORTRAN G SLAC Modified Link-Editor Stanford PASCAL

 


Compilers from MVT 21.8f

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:


PL360

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

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

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.


Stanford PASCAL

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.


BWBASIC

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.


GCCMVS

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:

http://gccmvs.sourceforge.net

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


Peter Sylvester maintains a site for Simula at http://www.edelweb.fr/Simula/ where you can download the Simula compiler and read the Users Guide for the language.


WATFIV

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

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:

  • free-field format,
  • alphanumeric statement labels,
  • flexible comment convention,
  • nested block structure,
  • FOR-BY-TO, DO, WHILE, UNTIL, LOOP, IF-THEN-ELSE, IFXIT and NEXT statements,
  • multiple assignment statements,
  • conditional compilation, and
  • automatic listing indentation.

To download the archive for this pre-compiler with instructions for installing under Hercules/MVS, click on MORTRAN.


Assembler XF (IFOX00)

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 - Assembler System for Student Instruction & Systems Teaching

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 - Stanford Fast Single Pass Assembler

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.


SLAC Modified Linkage Editor

The SLAC modifications to the OS/VS linkage editor are of two types: 

  1. changes and additions to printed output and
  2. various internal changes to help the user in program debugging.

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.


Assembler G Version 27A (Waterloo Assembler)

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 (http://tech.groups.yahoo.com/group/hercules-s370asm/message/552).  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:

ASMGBASE.ASMG27A.jcl
ASMGLINK.ASMG27A.jcl
LKEDCTL.ASMG27A.jcl
MACLIB.ASMG27A.jcl
ReadMe.txt
SOURCE.ASMG27A.jcl

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.


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:


This page was last updated on April 23, 2008.