ALGOL Compiler from MVT

Update 05/06/2013 

Tom Armstrong has completed refurbishment of the IBM OS/360 Algol F Compiler and Library, which he has generously made available for use by the Hercules/MVS community.  Tom has designated his version as 2.1, whereas the compiler/library obtained from the MVT distribution identifies itself as version 2.  Tom's installation may be used as a first-time installation of the Algol compiler/library under MVS 3.8j or as an update to an installation of the MVT version 2 compiler/library.  I am leaving the original MVT version installation available immediately below for historical purposes, but you may simply install Tom's version by following the instructions found on the lower portion of this same page [reference link: Tom Armstrong's Version 2.1 Installation].

 

The ALGOL compiler and installation files are contained in the archive:  algol.tgz [MD5: 3A21E24627EE5973802AB0C6C7485FF2].  Click on the archive name to download the archive to your computer.  The archive contains:

Uncompress the archive (use the tar xvzf <archive> command on Linux or use WinZip or ZipNAll on Windows).  The tape image should go into your tape image subdirectory, the jobstreams should go into your JCL subdirectory, and the map file may be viewed with a text editor or printed if you are curious about the contents of the tape image.

The ALGOL compiler consists of a set of load modules, which are invoked during the compilation of a user written program, and a set of object modules, which are used during the link-editing of a compiled program.  The compiler load modules are contained in the first dataset on the tape image (ALGOL.LOAD).  The object modules are contained in the second dataset on the tape image (ALGOL.LIB).  These two datasets were created by an IEBCOPY unload and the two libraries were unloaded from 3350 DASD (RECFM=U,BLKSIZE=19069).  The third dataset on the tape image (ALGOL.PROCS) is a set of Catalogued Procedures, in IEBUPDTE format, that can be used to invoke the compiler. 

 

Target Libraries

The load modules for the compiler must be restored to a load library and the object modules must be restored to a Partitioned Dataset that will be available to the Linkage Editor.  The Catalogued Procedures should be restored to a procedure library known to JES2 on your system.  The default targets in the installation jobstream are SYS2.LINKLIB (for the load library), SYS1.ALGLIB (for the ALGOL object library), and SYS2.PROCLIB (for the Procedure Library).  If these libraries are not correct for your system, you must edit the installation jobstream before submitting it and substitute destination libraries suitable for your configuration.  Search for the comment - <==TARGET - which is contained on each line where a target library is named.  Additionally note that SYS1.ALGLIB is created in step LINK003 and changes to the UNIT and VOL=SER parameters may be required to conform to your configuration.

The installation jobstream reloads the unloaded libraries to temporary datasets and the re-links the contents to the target libraries.  This allows you to place the restored modules on the type of DASD that fits your configuration, rather than restrict the destination to 3350 DASD.  However, you must have 3350 work space available in your configuration to restore the datasets to during the installation.

When you have verified that the installation jobstream - mvtalgol.jcl - conforms to your configuration, mount the tape image on a tape device and submit the jobstream to MVS for execution.  The job should take no more than a minute to execute and the return codes expected for the steps are:

IEF142I MVTALGOL RELOAD - STEP WAS EXECUTED - COND CODE 0000
IEF142I MVTALGOL PROCS - STEP WAS EXECUTED - COND CODE 0000
IEF142I MVTALGOL LINK001 - STEP WAS EXECUTED - COND CODE 0000
IEF142I MVTALGOL LINK002 - STEP WAS EXECUTED - COND CODE 0000
IEF142I MVTALGOL LINK003 - STEP WAS EXECUTED - COND CODE 0004

 

Installation Verification Jobstream

The algtest.jcl jobstream performs a compile, link, and execute of a simple ALGOL program to print the phrase "HELLO WORLD" on the printer.  The complete JES2 output for this job may be viewed at algtest.

Note the overrides on the print output datasets in the GO step.  Since the ALGOL routines open SYSOUT datasets in a manner that JES2 objects to, any SYSOUT DDs must be directed to disk datasets which are then printed using IEBPTPCH to avoid an ABEND during the execution of the compiled program.  (Thanks to Todd Enders for this work-around!)

After the compiler has been successfully installed and verified, you do not need to retain the installation jobstreams or the tape image on your host computer.


Tom Armstrong's Version 2.1 Installation

The Algol F Level 2.1 Independent Component Release is a complete replacement of the previous release Level 2.0 which was a component of OS/360. This ICR may be used to upgrade an existing Algol F installation at the Level 2.0 to Level 2.1 or alternatively may be used to install the Algol F Compiler and Library where the Compiler and Library have not been previously installed. The ICR includes a number of programming enhancements to the Compiler and the Library. The Library routines have been updated for compatibility with the MVS JES2/3 environment.  Note:  The target OS for this installation is MVS, it was not designed for, nor has it been tested under OS/360 MVT.

Highlights from the documentation:

Included in the distribution are replacements for the Algol F JCL procedures more suited for an MVS environment and four Algol programs to provide an IVP for users to prove their successful Algol F Level 2.1 installation.

To install the Algol F Level 2.1 compiler and library, download the archive Algol_F_Level_2_1_ICR.zip [MD5: a0a245656f54457e9559c6fb24f24b12], which contains:

  1.  Hercules Emulated Tape (.het extension) file containing the compiler, library, installation verification programs, and jobstreams, and

  2. an Adobe Acrobat document with complete installation instructions.

Follow the instructions included in the Adobe Acrobat document to retrieve and customize the installation jobstream, which will install the compiler and library on your system.

Also provided with the release are Adobe Acrobat documents containing the source code assemblies as a modern replacement for the IBM fiche that used to be optionally available for order from PID.  The documents for the compiler and library, respectively, are available as:

Algol_F_Compiler_Level_2_1.pdf [MD5: 48a2b5c378ef481fb1700af4d6a9f24f]

Algol_F_Library_Level_2_1.pdf [MD5: 107e9f4c69b4bc1ba613d15f126bbd64]

The source code for the compiler and library are available in a Hercules Emulated Tape file as:

Algol_F_Level_2_1_Source.zip [MD5: 66bbe92defc8aa7dcc1bc79e4816c2a0]

The following jobstream is provided to retrieve the source from the HET tape and install it into Partitioned Datasets:

//T1COP JOB 111,T1,CLASS=S,MSGCLASS=C                                 
//*                                                                   
//*       DOWNLOAD THE SOURCE DISTRIBUTION TAPE FOR                   
//*                                                                   
//*       IBM ALGOL F LEVEL 2.1                                       
//*                                                                   
//*       360S-AL-531 ALGOL F COMPILER                                
//*            AND                                                    
//*       360S-LM-532 ALGOL F LIBRARY                                 
//*                                                                   
//ALGSRC  EXEC PGM=IEBCOPY                                            
//SYSPRINT DD  SYSOUT=*                                               
//INC      DD  DSN=ALGOLF.COMPILER.L210.CTL,DISP=(OLD,PASS),          
//             UNIT=3400-6,VOL=SER=ALGSRC,LABEL=(1,SL)                
//INA      DD  DSN=ALGOLF.COMPILER.L210.ASM,DISP=(OLD,PASS),          
//             UNIT=3400-6,VOL=SER=ALGSRC,LABEL=(2,SL)                
//INM      DD  DSN=ALGOLF.COMPILER.L210.MAC,DISP=(OLD,PASS),          
//             UNIT=3400-6,VOL=SER=ALGSRC,LABEL=(3,SL)                
//INRTA    DD  DSN=ALGOLF.RLIBRARY.L210.ASM,DISP=(OLD,PASS),          
//             UNIT=3400-6,VOL=SER=ALGSRC,LABEL=(4,SL)                
//INRTM    DD  DSN=ALGOLF.RLIBRARY.L210.MAC,DISP=(OLD,KEEP),          
//             UNIT=3400-6,VOL=SER=ALGSRC,LABEL=(5,SL)                
//OUTC     DD  DSN=SYSD.ALGOLF.CNTL,DISP=(,CATLG),                    
//             UNIT=3350,VOL=SER=VVVVVV,SPACE=(TRK,(30,30,36))  <---- CUSTOMIZE
//OUTA     DD  DSN=SYSD.ALGOLF.ASM,DISP=(,CATLG),                     
//             UNIT=3350,VOL=SER=VVVVVV,SPACE=(TRK,(120,30,36)) <---- CUSTOMIZE
//OUTM     DD  DSN=SYSD.ALGOLF.MACLIB,DISP=(,CATLG),                  
//             UNIT=3350,VOL=SER=VVVVVV,SPACE=(TRK,(30,30,36))  <---- CUSTOMIZE
//OUTRTA   DD  DSN=SYSD.ALGOLFRT.ASM,DISP=(,CATLG),                   
//             UNIT=3350,VOL=SER=VVVVVV,SPACE=(TRK,(90,30,36))  <---- CUSTOMIZE
//OUTRTM   DD  DSN=SYSD.ALGOLFRT.MACLIB,DISP=(,CATLG),                
//             UNIT=3350,VOL=SER=VVVVVV,SPACE=(TRK,(30,30,36))  <---- CUSTOMIZE
//SYSIN    DD  *                                                      
    COPY INDD=INC,OUTDD=OUTC                                          
    COPY INDD=INA,OUTDD=OUTA                                          
    COPY INDD=INM,OUTDD=OUTM                                          
    COPY INDD=INRTA,OUTDD=OUTRTA                                      
    COPY INDD=INRTM,OUTDD=OUTRTM                                      
/*   
//      

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 January 17, 2015.