ALGOL 68C (Cambridge University)


The information on this page is divided into two main sections.  The first section contains the instructions for restoring the compiler libraries and procedures to your system and will allow you to quickly be ready to submit source programs to the compiler.  The second section contains the steps I used to install the source archive (from the H390-MVS group) under Hercules/MVS on my system to build the libraries/procedures for the first section.  You only need to concern yourself with the second section if you wish to rebuild the compiler libraries/procedures from the source archive.

Update 03/09/2013 

via Chris Cheney:  Algol68C for IBM MVT and MVS has been upgraded to Release 1.3039 and is available by download via the web page http://algol68c.bitbucket.org/370/Algol68C_Release_1.3039.html.  This version supercedes the one documented here and should be the preferred version for most users in the MVT/MVS hobbyist community.  

 

Installing the Pre-Generated Compiler Libraries, Procedures, and Test Jobs/Data

The archive containing my installation jobstreams, tape images, and documentation is available from this site by clicking on the link:  algol68c.tgz [MD5: d19c3b2bb3474530f298f511950c26ce].  The archive contains:

a68c4.pdf
SYSOUT listing of file 4 (installation instructions) from the original source tape.
alg68c.map
TAPEMAP output for the alg68c.het tape image.
algol68c	
Jobstream to reload the original source tape to disk.
algprocs
Jobstream to install the procedures in your Procedure Library to execute the compiler.
algtest1 - 4
Four jobtreams containing test ALGOL programs to verify the compiler operates as expected.
reload
Jobstream to restore the compiler libraries from IEBCOPY created tape.
alg68c.het
The tape image created by IEBCOPY containing the three Partitioned dataset contents.
algol68c.aws	
The original source tape from H390-MVS group file area.

Uncompress the archive (use the tar xvzf algol68c.tgz command on Linux or use WinZip or ZipNAll on Windows).  The tape images should go into your tape image subdirectory, and the jobstreams should go into your JCL subdirectory.  The map file may be viewed with a text editor or printed.  In order to view the pdf, you will need a copy of Adobe Acrobat Reader.  The jobstreams and map file were created under Windows, so the lines are terminated with x'0d0a'.

Prior to submitting the RELOAD jobstream, you must edit it and change the value of the default parameter TVOL on the PROC statement to specify the Volume Serial of the target volume to which the datasets are to be restored.  The target Volume Serial may specify a target volume that is not a 3350, but you must ensure that the blocksizes of the restored datasets will fit on the target device (as shown in the alg68c.map).  You may change the value of THLQ, which specifies the high level qualifier of the dataset names to which the libraries will be restored, but if you change from the default of SYS2, you will also need to edit the ALGPROCS and all four ALGTEST jobstreams to change all occurrences of SYS2 to the new value of THLQ as they must agree for the compiler to function.

Unless you have decided to change the high level qualifier of the library datasets, ALGPROCS jobstream should not require editing.  The target library for the procedures is SYS2.PROCLIB.  If you do not have SYS2.PROCLIB defined on your system, you must change the SYSUT2 DD in the ALGPROCS jobstream to SYS1.PROCLIB.

When you have verified that the two installation jobstreams - reload and algprocs - conform to your configuration, mount the alg68c.het tape image on a tape device and submit the jobstreams to MVS for execution.  Note that there are two tape images in the archive and that you need to mount the alg68c.het image.  The reload job should take about one minute to execute and the return code expected for the single step is:

IEF142I IEBCOPY RESTOREL - STEP WAS EXECUTED - COND CODE 0000

The algproc job should take less than one minute to execute and the return code expected for the step is:

IEF142I ALGPROCS IEBUPDTE - STEP WAS EXECUTED - COND CODE 0000

One of the four libraries restored is SYS2.A68LIB.TESTS (if you have changed the high level qualifier in the reload jobstream, your library's high level qualifier may be different than SYS2).  This library contains installation verification jobstreams, ALGOL programs, and the expected output of those jobstreams/programs.  Because the dataset characteristics make it difficult to edit the contents, I have extracted the four test jobstreams and they are contained in the installation archive as algtest1, algtest2, algtest3, and algtest4.  I should also say that there were some changes necessary in order for the jobs to run as expected, so the contents of the four jobstreams included in the archive are slightly different from those in the A68LIB.TESTS dataset.  The changes I made were:

  1. I added a GOSET DD statement to each A68 step to force the deletion of the temporary PDS from the prior step that is the target for the link edited load module.  Without this change, the jobs would always abend with a duplicate dataset on volume message.
  2. I increased the amount of storage for the region in the GO steps for several of the steps, using the REGG= parameter on the EXEC statement for the procedure after receiving S0C4 abends.

Since I am not proficient in ALGOL, I can only say that it appears that the output from the test jobs matches the expected output when run on my system.  The fourth test job seems to be expected to fail as it is testing features that are not implemented.  In the case of the fourth job, the return codes I received on my system did not always match those stated to be expected in the A68LIB.TESTS results members. 

At this point you have installed the compiler and the procedures to execute it.  You are ready to write your own ALGOL programs and submit them to compile, link, and execute.  There is some documentation on the original tape regarding the specifics of the Cambridge ALGOL68C compiler and its differences from ALGOL 68, but there is no basic or beginners documentation on the language itself.

You only need to read the following section if you want to know how I installed the original source tape and generated the ALGOL 68 compiler libraries.

 

Restoring the Contents of the Original Source Tape and Generating the Compiler Libraries

The original source archive (from the now defunct Files section of the H390-MVS Yahoo group) contains an AWS tape image the contains 25 files.  The contents of these files are:

  1. The character set used on the tape
  2. The version numbers of the system being distributed.
  3. The job used to write this tape.
  4. Instructions for installing the ALGOL68C system.
  5. The job to construct an ALGOL68C system on a 360/370.
  6. A job to undump the data sets from the tape.
  7. The 360/370 object modules for the library, FORTRAN interface and crossreference program.
  8. The 360/370 object modules for the pack/unpack program.
  9. The 360/370 object modules for the compiler.
  10. The 360/370 object modules for the translator.
  11. Sample JCL procedures for running ALGOL68C.
  12. Test programs.
  13. Jobs to run tests and resulting output.
  14. The compiler initialisation files.
  15. The environment files for the library.
  16. The source code for the 360/370 machine library.
  17. The source code for the A68C library.
  18. The source code for the crossreference program.
  19. Source of the pack/unpack program.
  20. Changes incorporated in this version.
  21. List of known bugs.
  22. ALGOL68C features not yet implemented.
  23. Differences from ALGOL 68.
  24. Documentation for the program used to pack and unpack some of the files on this tape.
  25. The JCL for the jobs used (at Cambridge) to compile the compiler, translator, and library.

The algol68c jobstream in the archive will restore all twenty-five files from this tape into a single Partitioned dataset.  The first step allocates the space for the dataset and the following 25 steps restore the tape files into individual members of the pre-allocated dataset.  The jobstream is coded to utilize the SYSREPRO utility from the CBT Tape (SYSREPRO), but you can easily modify the JCL to utilize IEBGENER.

The fifth file on the tape - a68c5 - is the jobstream to generate the compiler libraries.  The changes I made before submitting the job were:

No other changes were made to the installation jobstream.

After the libraries were generated, I collected the contents of all members of SYS2.A68LIB.PROCS into a single jobstream - algprocs - and edited the dataset names in the PROC members to add the high level qualifier SYS2. 


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 March 30, 2020.