Stony Brook Pascal

The source archive (formerly available from the Files section of the now defunct Hercules-390 Yahoo group) consists of the contents of 25 files that originally resided on a S/360 tape.  The files are of three types - source or documentation files, object modules (output from either the S/360 Assembler or XPL), and a load library (copied to tape with IEHMOVE).  All files were transferred to a PC in binary mode and are EBCDIC format.  Recovering the source/documentation and load library was relatively straight forward, but reloading the object modules, which are required to execute the Pascal compiler requires several steps.  To simplify the installation, I have provided an AWS tape image, created with IEBCOPY, that will restore three Partitioned Datasets containing the source, object, and load modules.  I have not retained the exact names used for the files in either the original archive or the S/360 datasets from which they were transferred.  In fact, there were some discrepancies between the documentation and the source archive contents, which became evident when attempting to use jobstreams included in the documentation.  The following table shows the relationship between the archive file number, the dataset name stated in the documentation, and the Partitioned Dataset & member as restored from my IEBCOPY tape:       (Note that (hlq) will depend upon your installation.)

File
Dataset Name
Partitioned Dataset (Member)
1  
COMMENTS
(hlq).SBPASC.SOURCE(COMMENTS)
2  
OMONITOR.ASM
(hlq).SBPASC.SOURCE(OMONITOR)
3  
RMONITOR.ASM
(hlq).SBPASC.SOURCE(RMONITOR)
4  
USER.PASCAL
(hlq).SBPASC.LINKLIB
5  
PASS1.XPL
(hlq).SBPASC.SOURCE(PASS1XPL)
6  
PASS1.OBJ
(hlq).SBPASC.OBJECT(PASS1)
7  
PASS2.XPL
(hlq).SBPASC.SOURCE(PASS2XPL)
8  
PASS2.OBJ
(hlq).SBPASC.OBJECT(PASS2)
9  
PASS3.XPL
(hlq).SBPASC.SOURCE(PASS3XPL)
10  
PASS3.OBJ
(hlq).SBPASC.OBJECT(PASS3)
11  
PMD.XPL
(hlq).SBPASC.SOURCE(PMDXPL)
12  
PMD.OBJ
(hlq).SBPASC.OBJECT(PMD)
13  
BNCHMRKS
(hlq).SBPASC.SOURCE(BNCHMRKS)
14  
XPLSM.ASM
(hlq).SBPASC.SOURCE(XPLSM)
15  
XCOM.OBJ
(hlq).SBPASC.OBJECT(XCOM)
16  
XCOM4.XPL
(hlq).SBPASC.SOURCE(XCOM4XPL)
17  
XPLIB.XPL
(hlq).SBPASC.SOURCE(XPLIB)
18  
XPLXREF.XPL
(hlq).SBPASC.SOURCE(XPLXREF)
19  
EDITXPL.XPL
(hlq).SBPASC.SOURCE(EDITXPL)
20  
PASS1.UPDATE4
(hlq).SBPASC.SOURCE(PASS1UP4)
21  
PASS2.UPDATE4
(hlq).SBPASC.SOURCE(PASS2UP4)
22  
PASS3.UPDATE4
(hlq).SBPASC.SOURCE(PASS3UP4)
23  
PMD.UPDATE4
(hlq).SBPASC.SOURCE(PMDUP4)
24  
OMONITOR.UPDATE4
(hlq).SBPASC.SOURCE(OMONP4)
25  
RMONITOR.UPDATE4
(hlq).SBPASC.SOURCE(RMONP4)

The archive containing my installation jobstreams and the tape image is available from this site by clicking on the link:  sbpascal.tgz [MD5: fb10ebc4096c4f29bd0b41df3e066ea4].  The archive contains:

readme.txt
Brief documentation contained in the source archive.
xplpas.txt
Detailed installation notes contained in the source archive.
reload.jcl
Jobstream to reload the three Partitioned datasets from the tape image.
sbpivp.jcl
Jobstream to execute the Pascal programs included in the BNCHMRKS dataset from the source archive.
sbpproc.jcl
Jobstream to install a procedure in your Procedure Library to execute Pascal.
sbpasc.het		
The tape image created by IEBCOPY containing the three Partitioned dataset contents.
sbpasc.map TAPEMAP output for the sbpasc.het tape image.

Uncompress the archive (use the tar xvzf sbpascal.tgz command on Linux, or under CYGWIN; 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 and documentation files may be viewed with a text editor or printed.  The jobstreams and documentation files were created under Windows, so the lines are terminated with x'0d0a'.

The three Partitioned datasets were unloaded from a 3350 volume, and the attributes of the three datasets were:

(hlq).SBPASC.SOURCE - RECFM=FB,LRECL=80,BLKSIZE=9440
(hlq).SBPASC.OBJECT - RECFM=F,LRECL=7200,BLKSIZE=7200
(hlq).SBPASC.LINKLIB - RECFM=U,LRECL=0,BLKSIZE=7294

You must not change the attributes of the (hlq).SBPASC.OBJECT dataset, as the Pascal compiler is compiled to expect the object modules to be in this format.

Prior to submitting the RELOAD jobstream, you must edit it and change the value of the two default parameters TVOL and THLQ on the PROC statement to specify the Volume Serial of the target volume to which the datasets are to be restored and the High Level Qualifier for the dataset names that will be relevant to your environment.  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.

Prior to submitting the SBPPROC jobstream, you must edit it and change all five instances of (hlq) to the same value you specified for THLQ in the RELOAD jobstream.  The target library for the Pascal Procedure is SYS2.PROCLIB.  If you do not have SYS2.PROCLIB defined on your system, you must change the SYSUT2 DD to SYS1.PROCLIB.

When you have verified that the installation jobstream - reload - and the Pascal procedure - sbpproc - conform to your configuration, mount the tape image on a tape device and submit the jobstreams to MVS for execution.  The reload job should take about one minute to execute and the return codes expected for the steps are:

IEF142I IEBCOPY RESTORES - STEP WAS EXECUTED - COND CODE 0000
IEF142I IEBCOPY RESTOREO - STEP WAS EXECUTED - COND CODE 0000
IEF142I IEBCOPY RESTOREL - STEP WAS EXECUTED - COND CODE 0000

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

IEF142I SBPPROC IEBUPDTE - STEP WAS EXECUTED - COND CODE 0000

The SBPIVP jobstream includes the contents of the BNCHMRKS dataset as inline card images and expects your Procedure Library to contain the PASCAL procedure.  The output of this job on my system may be viewed at:  Stony Brook Pascal Benchmarks.

On my first attempt to run the XPLIVP jobstream I received a User Abend 0400.  There is no documentation about Abend codes in the source archive, but I found a web site devoted to the XPL Programming Language, where I found a list of Abend codes returned by the XPL Submonitor:

ABEND CODES RETURNED BY THE XPL SUBMONITOR
THE SUBMONITOR WILL RETURN THE FOLLOWING USER COMPLETION CODES IN THE EVENT OF ERRORS:
100
ERROR IN OPENING ONE OF THE FILES: PROGRAM, SYSPRINT OR SYSIN
200
UNEXPECTED END OF FILE ENCOUNTERED WHILE READING IN THE XPL PROGRAM FILE.
300
I/O ERROR (SYNAD ERROR) WHILE READING IN THE XPL PROGRAM FILE
400
XPL PROGRAM TO BE LOADED WILL NOT FIT IN THE AMOUNT OF CORE AVAILABLE
500
THE XPL PROGRAM HAS CALLED THE SUBMONITOR WITH AN INVALID REQUEST FOR SERVICE
800+I
I/O ERROR (SYNAD) ON OUTPUTI (MAY BE UNABLE TO OPEN THE FILE)
900+I
REFERENCE TO OUTPUT(I) IN THE XPL PROGRAM SPECIFIES A NONEXISTENT OUTPUT FILE
1000+I
I/O ERROR (SYNAD) IN INPUTI
1200+I
END OF FILE ERROR ON INPUTI (THE XPL PROGRAM TRIED TO READ AFTER THE SUBMONITOR 
HAD PASSED IT AN END OF FILE INDICATION FOR INPUTI)
1400+I
THE XPL PROGRAM SPECIFIED A NONEXISTENT INPUT FILE: INPUT(I)
2000+I
I/O ERROR (SYNAD) ON DIRECT ACCESS FILEI (MAY BE UNABLE TO OPEN THE FILE)
2200+I
END OF FILE ERROR ON DIRECT ACCESS FILEI
4000
THE XPL PROGRAM REQUESTED TERMINATION AND A DUMP BY EXECUTING THE STATEMENT: CALL EXIT ;

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.