MVT Compilers from Source

 

In October, 2008 I started working toward building the MVT compilers from the available source.  At that time I only completed the work on the Sort/Merge, which seemed to be the primary interest of everyone involved at the time.  I made that available when it was complete from another link on this site.  Because of a recent post on the Turnkey-MVS group I resurrected the partial work I had already done towards the remaining MVT compilers and have placed the results on this page.  I was able to recover what I had started for COBOL and RPG, and then completed them to the same state as the Sort/Merge.  I intended to include FORTRAN G and FORTRAN H, but ran into problems, the details of which I elaborate more on below.

As I was working on this, I dedicated a 3350 volume to the project and, since I have the space on the server for this site, I am making the entire volume image available for download.  However, if you are only interested in a particular compiler, I have made DSSDUMP format tapes available for each of the compilers, so no one is required to download more than they are interested in.  The links to the individual tapes are located in the section corresponding to each compiler below.

The 3350 volume contains its own User Catalog, into which all the datasets on the volume are catalogued.  The volume and a jobstream to import the User Catalog are available from mvtsrc.tar.gz (24.1 MB)  [MD5: 05470d014896e805526bd822b2580ad8].  An annotated VTOC listing for the volume may be viewed at: MVTSRC.3350 VTOC.  Download the archive, extract the volume image into the directory where you store your MVS DASD volume images, and submit the import jobstream to import the User Catalog into your Master Catalog.  If you prefer to utilize compressed DASD images, run the DASDCOPY utility to compress the volume image.

 

June 2016 Update - Phil Roberts pointed out to me that the MTS distributions included some source for the MVT FORTRAN compilers. I was able to retrieve the source for the IEYUNF module, which was the only roadblock to assembling the FORTRAN G compiler from source.  The copy of IEYUNF that had been available prior to this was truncated following line 128 of the source.  The 128 lines we had were identical to the first 128 lines of the IEYUNF module from the MTS distribution.  Although the other source for the other FORTRAN G modules on the MTS distribution had been modified to run under MTS, it is likely that this source is the original source.  Therefore I have added FORTRAN G (and a few days later, FORTRAN H) to this page.  As with the other MVT material, I cannot verify that object/load modules built from source are a 100% match with the object/load modules obtained from the Rick Fochtman CD-ROM.  

I have been away from this project for a long time, but with Phil's help I have now added the two FORTRAN compilers to the material here.  I hope to devote more time to this project in the future, hopefully soon, but at least this may provide a starting point for anyone else who wants to attempt comparison of the object/load modules generated from source versus that installed from the object libraries included with OS/360 MVT.

If you had already downloaded this DASD volume and installed it on your MVS system, you may upgrade to the latest version by simply downloading the current archive, with Hercules/MVS shut down unpack it placing the DASD volume image in the location where your previous mvtsrc.3350 volume was (replacing it), and then IPL MVS.  It is not necessary to re-import the catalog to have access to the new datasets on the volume.

 

ALGOL

I have not included the ALGOL compiler, simply because Tom Armstrong has completely refurbished the compiler and provided it to the Hercules' community.  It is available from this site at ALGOL.

 

COBOL

The datasets related to the COBOL compiler are:

Dataset
Attributes
Allocation
Contents
MVTSRC.CB545
FB/80/9440
456 Tracks/2 Dir Blocks/12 Members
ALC source loaded from Rick Fochtman's CD
MVTSRC.COBLIB
U/13030
15 Tracks/13 Dir Blocks/73 Members
COBOL library built from source
MVTSRC.COBOL.CNTL
FB/80/9440
30 Tracks/5 Dir Blocks/5 Members
jobstreams to assemble, link, delink, and run a test compile
MVTSRC.COBOL.LISTINGS
FBA/121/9438
900 Tracks/4 Dir Blocks/58 Members
listings from the assemble and link jobs
MVTSRC.COBOL.LOAD
U/19069
30 Tracks/5 Dir Blocks/12 Members
load modules built from the source
MVTSRC.COBOL.MACLIB
FB/80/19040
30 Tracks/10 Dir Blocks/3 Members
macros required to assemble the source
MVTSRC.COBOL.OBJECT
FB/80/3120
45 Tracks/5 Dir Blocks/56 Members
object decks from assembling each source module
MVTSRC.COBOL.XOBJECT
F/80/80
30 Tracks/5 Dir Blocks/56 Members
object decks from delinking the original load modules
MVTSRC.LM546
FB/80/3120
42 Tracks/12 Dir Blocks/44 Members
ALC source loaded from Rick Rochtman's CD
MVTSRC.SYS1.COBLIB
U/13030
90 Tracks/40 Dir Blocks/73 Members
COBOL library from MVT System Generation
MVTSRC.SYS1.MACLIB
FB/80/3120
810 Tracks/100 Dir Blocks/381 Members
Macro Library from MVT System Generation

A DSSDUMP format tape containing these eleven datasets and a jobstream to restore the tape (using DSSREST) is available in the archive mvtcobol.tar.gz (6.8 MB)  [MD5: 572c1371029187b723eae0a4e8a6b319].  DSSREST is available on SYSCPK.  The restore jobstream is written to restore to a 3350 volume with VOL=SER=MVTSRC, so you may need to adjust parameters if your target volume is not 3350.

The source for IKFCBL01 is generated during MVT System Generation and is determined by settings for default compile time options, which are specified in the MVT Stage 1 jobstream.  I have included the System Generation macro and an annotated source member that will allow you to alter this source module to conform to your requirements.

I have not completed a suitable comparison of the assembled source to the distributed load modules, but my conclusion is that they do not match.  The compiler built from the source performs as expected in the tests I have completed.  I include the SYS1.MACLIB from MVT, because any meaningful attempt to compare the output from the compiled source to the load modules taken from a freshly generated MVT system will more closely match if the MVT system macros are used.  Assembling the source using the MVS SYS1.MACLIB is guaranteed to result in object/load modules that are different from those that are the product of MVT System Generation.

 

FORTRAN G

The datasets related to the FORTRAN G compiler are:

Dataset
Attributes
Allocation
Contents
MVTSRC.FORTG.CNTL
FB/80/9440
30 Tracks/5 Dir Blocks/5 Members
jobstreams to assemble, link, delink, and run a test compile
MVTSRC.FORTG.LISTINGS
FBA/121/9438
600 Tracks/10 Dir Blocks/92 Members
listings from the assemble and link jobs
MVTSRC.FORTG.LOAD
U/19069
30 Tracks/5 Dir Blocks/6 Members
load modules built from the source
MVTSRC.FORTG.MACLIB
FB/80/19040
60 Tracks/10 Dir Blocks/111 Members
macros required to assemble the source
MVTSRC.FORTG.OBJECT
FB/80/3120
30 Tracks/5 Dir Blocks/90 Members
object decks from assembling each source module
MVTSRC.FORTG.XOBJECT
F/80/80
45 Tracks/5 Dir Blocks/76 Members
object decks from delinking the original load modules
MVTSRC.FORTLIB
U/13030
30 Tracks/30 Dir Blocks/66 Members
FORTRAN library built from source
MVTSRC.FO520
FB/80/3120
180 Tracks/4 Dir Blocks/13 Members
ALC source loaded from Rick Fochtman's CD
MVTSRC.LM501
FB/80/3120
74 Tracks/20 Dir Blocks/78 Members
ALC source loaded from Rick Fochtman's CD
MVTSRC.SYS1.FORTLIB
U/13030
120 Tracks/40 Dir Blocks/163 Members
FORTRAN library from MVT System Generation
MVTSRC.SYS1.MACLIB
FB/80/3120
810 Tracks/100 Dir Blocks/381 Members
Macro Library from MVT System Generation

A DSSDUMP format tape containing these eleven datasets and a jobstream to restore the tape (using DSSREST) is available in the archive mvtfortg.tar.gz (3.9 MB)  [MD5: d6c020373956f18859b418fd7240c571].  DSSREST is available on SYSCPK.  The restore jobstream is written to restore to a 3350 volume with VOL=SER=MVTSRC, so you may need to adjust parameters if your target volume is not 3350.

I have not completed a suitable comparison of the assembled source to the distributed load modules, but my conclusion is that they do not match.  The compiler built from the source performs as expected in the tests I have completed.  I include the SYS1.MACLIB from MVT, because any meaningful attempt to compare the output from the compiled source to the load modules taken from a freshly generated MVT system will more closely match if the MVT system macros are used.  Assembling the source using the MVS SYS1.MACLIB is guaranteed to result in object/load modules that are different from those that are the product of MVT System Generation.

 

FORTRAN H

The datasets related to the FORTRAN H compiler are:

Dataset
Attributes
Allocation
Contents
MVTSRC.FORTH.CNTL
FB/80/9440
30 Tracks/5 Dir Blocks/5 Members
jobstreams to assemble, link, delink, and run a test compile
MVTSRC.FORTH.LISTINGS
VBA/137/9416
900 Tracks/10 Dir Blocks/134 Members
listings from the assemble and link jobs
MVTSRC.FORTH.LOAD
U/19069
30 Tracks/5 Dir Blocks/1 Member
load module built from the source
MVTSRC.FORTH.MACLIB
FB/80/19040
15 Tracks/5 Dir Blocks/3 Members
macros required to assemble the source
MVTSRC.FORTH.OBJECT
FB/80/3120
79 Tracks/10 Dir Blocks/133 Members
object decks from assembling each source module
MVTSRC.FORTH.XOBJECT
F/80/80
75 Tracks/7 Dir Blocks/133 Members
object decks from delinking the original load modules
MVTSRC.FORTLIB
U/13030
30 Tracks/30 Dir Blocks/66 Members
FORTRAN library built from source
MVTSRC.FO500
FB/80/3120
180 Tracks/4 Dir Blocks/13 Members
ALC source loaded from Rick Fochtman's CD
MVTSRC.SYS1.MACLIB
FB/80/3120
810 Tracks/100 Dir Blocks/381 Members
Macro Library from MVT System Generation

A DSSDUMP format tape containing these nine datasets and a jobstream to restore the tape (using DSSREST) is available in the archive mvtforth.tar.gz (3.8 MB)  [MD5: f53ba72fe3bd53c74f16a52e31a954d9].  DSSREST is available on SYSCPK.  The restore jobstream is written to restore to a 3350 volume with VOL=SER=MVTSRC, so you may need to adjust parameters if your target volume is not 3350.

A significant portion of the FORTRAN H compiler is written in FORTRAN code and must be compiled with FORTRAN H with the undocumented XL parm specified.  It is also necessary to specify OPT=02 to compile some of the modules, so I elected to compile all of the FORTRAN code with OPT=02.  I do not think I would have figured out all the required permutations without the help of Phil Roberts.  Phil was also able to track down the documentation (such as there is) for the XL compiler option:  www.slac.stanford.edu/vault/collvault/greylit/cgtm/CGTM51.pdf

Note: the library modules (MVTSRC.FORTLIB) are built with the FORTRAN G compiler and are not re-built by the jobstreams for FORTRAN H.

I have not completed a suitable comparison of the assembled source to the distributed load modules, but my conclusion is that they do not match.  The compiler built from the source performs as expected in the tests I have completed.  I include the SYS1.MACLIB from MVT, because any meaningful attempt to compare the output from the compiled source to the load modules taken from a freshly generated MVT system will more closely match if the MVT system macros are used.  Assembling the source using the MVS SYS1.MACLIB is guaranteed to result in object/load modules that are different from those that are the product of MVT System Generation.

 

PL/I

I have not included the PL/I compiler, because Tom Armstrong is also working on updating it, as he did the ALGOL compiler.  From statements he has made about the work in progress, I know that there are severe problems involved in attempting to build the compiler from the source we have, so there is simply not much point in providing the source at this point.  Hopefully Tom will soon release the updated version of PL/I to share with the Hercules community.

 

RPG

The datasets related to the RPG compiler are:

Dataset
Attributes
Allocation
Contents
MVTSRC.RG038
FB/80/9440
192 Tracks/4 Dir Blocks/56 Members
ALC source loaded from Rick Fochtman's CD
MVTSRC.RPG.CNTL
FB/80/9440
30 Tracks/5 Dir Blocks/5 Members
jobstreams to assemble, link, delink, and run a test compile
MVTSRC.RPG.LISTINGS
FBA/121/9438
330 Tracks/4 Dir Blocks/57 Members
listings from the assemble and link jobs
MVTSRC.RPG.LOAD
U/19069
30 Tracks/6 Dir Blocks/27 Members
load modules built from the source
MVTSRC.RPG.OBJECT
FB/80/3120
15 Tracks/4 Dir Blocks/56 Members
object decks from assembling each source module
MVTSRC.RPG.XOBJECT
F/80/80
45 Tracks/4 Dir Blocks/56 Members
object decks from delinking the original load modules
MVTSRC.SYS1.MACLIB
FB/80/3120
810 Tracks/100 Dir Blocks/381 Members
Macro Library from MVT System Generation

A DSSDUMP format tape containing these seven datasets and a jobstream to restore the tape (using DSSREST) is available in the archive mvtrpg.rar (3.2 MB)  [MD5: 15e88f72fcbfd9def3816c7e469b8ef4].  DSSREST is available on SYSCPK.  The restore jobstream is written to restore to a 3350 volume with VOL=SER=MVTSRC, so you may need to adjust parameters if your target volume is not 3350.

I have not completed a suitable comparison of the assembled source to the distributed load modules, but my conclusion is that they do not match.  The compiler built from the source performs as expected in the tests I have completed.  I include the SYS1.MACLIB from MVT, because any meaningful attempt to compare the output from the compiled source to the load modules taken from a freshly generated MVT system will more closely match if the MVT system macros are used.  Assembling the source using the MVS SYS1.MACLIB is guaranteed to result in object/load modules that are different from those that are the product of MVT System Generation.

 

SORT/MERGE

The datasets related to the SORT/MERGE utility are:

Dataset
Attributes
Allocation
Contents
MVTSRC.SM023
FB/80/9440
630 Tracks/13 Dir Blocks/252 Members
ALC source loaded from Rick Fochtman's CD
MVTSRC.SORT.CNTL
FB/80/9440
30 Tracks/5 Dir Blocks/5 Members
jobstreams to assemble, link, delink, and run a test compile
MVTSRC.SORT.LISTINGS
FBA/121/9438
330 Tracks/4 Dir Blocks/57 Members
listings from the assemble and link jobs
MVTSRC.SORT.LOAD
U/19069
30 Tracks/6 Dir Blocks/27 Members
load modules built from the source
MVTSRC.SORT.MACLIB
FB/80/19040
10 Tracks/2 Dir Blocks/10 Members
macros required to assemble the source
MVTSRC.SORT.OBJECT
FB/80/3120
30 Tracks/52 Dir Blocks/250 Members
object decks from assembling each source module
MVTSRC.SORT.PROCLIB
FB/80/19040
4 Tracks/2 Dir Blocks/2 Members
JCL procedures to execute SORT/MERGE
MVTSRC.SORT.XOBJECT
F/80/80
60 Tracks/36 Dir Blocks/250 Members
object decks from delinking the original load modules
MVTSRC.SORTLIB
U/13030
30 Tracks/36 Dir Blocks/214 Members
SORT library built from the source
MVTSRC.SYS1.MACLIB
FB/80/3120
810 Tracks/100 Dir Blocks/381 Members
Macro Library from MVT System Generation
MVTSRC.SYS1.SORTLIB
U/13030
90 Tracks/40 Dir Blocks/214 Members
SORT library from MVT System Generation

A DSSDUMP format tape containing these eleven datasets and a jobstream to restore the tape (using DSSREST) is available in the archive mvtsort.rar (9.1 MB)  [MD5: 534ef4970912ec979b21420a33905059].  DSSREST is available on SYSCPK.  The restore jobstream is written to restore to a 3350 volume with VOL=SER=MVTSRC, so you may need to adjust parameters if your target volume is not 3350.

I have not completed a suitable comparison of the assembled source to the distributed load modules, but my conclusion is that they do not match.  The Sort/Merge utility built from the source performs as expected in the tests I have completed.  I include the SYS1.MACLIB from MVT, because any meaningful attempt to compare the output from the compiled source to the load modules taken from a freshly generated MVT system will more closely match if the MVT system macros are used.  Assembling the source using the MVS SYS1.MACLIB is guaranteed to result in object/load modules that are different from those that are the product of MVT System Generation.


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 July 14, 2020.