ALGOL Compiler from MVT
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:
a HET tape image (algol.het),
the output of the mainframe utility TAPEMAP showing the contents of the tape image (algol.map),
an installation jobstream (mvtalgol.jcl), and
an installation verification jobstream (algtest.jcl).
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.
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
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.
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:
missing source for the compiler was reconstituted by disassembling the object, resulting in a complete set of source for the available compiler,
the source code was updated to use standard MVS mapping macros in place of hard coded offsets,
numerous other improvements, such as:
upper and lower case alphabetic characters may be used interchangeably in procedure names, identifier names and Algol Language defined symbols; all alphabetic characters are resolved to upper case except within strings where they retain their upper or lower case specification,
the range of alphabetic characters is extended to include the national characters [$, _, # and @]; these national characters may be used wherever an alphabetic character is acceptable in procedure names and identifier names,
the standard Algol array subscript definition of enclosing square brackets is supported,
the operator ** may be used in place of 'POWER',
compiled Algol programs are identified by a translator ID of 360SAL531 and a date of compilation,
the semicolon count, wherever printed, is left zero suppressed for improved program readability,
the run time library routines, specifically all routines responsible for data management and the interface with the operating system are compatible with MVS programming standards; JES2/3 SYSIN datasets are Opened for input only without the Point option set in the DCB MACRF field; JES2/3 SYSOUT datasets are Opened for output only without the Point option set in the DCB MACRF field; previous techniques to avoid ABENDs when processing SYSIN or SYSOUT datasets are no longer required.
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:
Hercules Emulated Tape (.het extension) file containing the compiler, library, installation verification programs, and jobstreams, and
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