Iron Spring PL/I Compiler

OS/2 Version 1.3.0
15 Apr 2024

Release Notes

Introduction

This document provides information on using the Iron Spring PL/I compiler and compiled programs on the OS/2 platform. For information on the Linux platform, see the corresponding document
readme_linux.

The current version still contains bugs. You can help improve the compiler. See the section Reporting bugs.

Trademarks
eComStation is a trademark of Serenity Systems International.
Gnu is a trademark of the Free Software Foundation.
IBM is a trademark of IBM, Inc.
Intel is a trademark of Intel Corporation.
Iron Spring is a trademark of Iron Spring Software.
Linux is a registered trademark of Linus Torvalds.
VAX is a trademark of Hewlett-Packard, Inc.
WATCOM is a trademark of Sybase, Inc. and its subsidiaries.

License

<boring-legal-stuff>
This license a legal agreement between you and Iron Spring Software. Your use of this software signifies that you agree to the terms of this license.

Iron Spring Software grants you the right to use and copy the Iron Spring PL/I compiler and library freely. You may distribute programs compiled using the compiler and/or linked with the library under any terms you wish without restriction. The source to the library is licensed under the terms of the Gnu Lesser General Public License (LGPL).

All material is copyright Iron Spring Software, 2023.

THE COMPILER AND LIBRARY ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COMPILER AND LIBRARY IS WITH YOU. SHOULD THEY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
</boring-legal-stuff>

Contents

This distribution includes the executable for the PL/I compiler PLIC.EXE, the runtime DLL, the static and import libraries lib\static\prf.lib and \lib\prf.lib, and the sources for the library and sample programs.

  pli-1.3.0
    |
    +-----------------------samples----------------lib
    |                          |                    |
 plic.exe                   (Sample sources and     +--------------------------static---include----source
 (compiler executable)       %include files,        PL/I DLL (prf.dll)         |         |         |
 (documentation, etc.)       sample makefiles       Import Library (prf.lib)   |         |         +--------asm
                             and module definition                             |         |   (PL/I source)   |   
                             file).                                            |         |               (assembler
                                                                               |  (%include files          source)
                                                                               |    required by                                                                                      
                                                                               |     library).
                                                                               |
                                                                      prf.lib (static library)
                                                                      OS2386.lib

Requirements

The folowing software is required to run the OS/2 version of the compiler: The following software is recommended:

Installation

  1. Unpack the distribution file into a directory named "x:\pli-1.3.0", (Specify your desired drive in place of 'x'.)
  2. Only the compiler (x:\pli-1.3.0\plic.exe) and either the static runtime library (x:\pli-1.3.0\lib\static\prf.lib) OR the DLL (x:\pli-1.3.0\lib\prf.dll) and the import library (x:\pli-1.3.0\lib\\prf.lib) are required. You should already have a version of OS2386.LIB. If you don't, you can use the one supplied in "x:\pli-1.3.0\lib\static\OS2386.lib".
  3. Move the compiler to a directory in your PATH or add x:\pli-1.3.0 to your path in config.sys.
  4. If you are using the DLL version of the library, move prf.dll to a directory in LIBPATH, or add (x:\pli-1.3.0\lib) to your LIBPATH in CONFIG.SYS and reboot. In order to link compiled programs you also need to make the import library prf.lib available by moving it to a directory listed in the LIB environment variable. Alternatatively, you can add the line "LIB = x:\pli-1.3.0\lib" to your makefiles.
  5. If you are using the static version of the library (x:\pli-1.3.0\lib\static\prf.lib), move it [and x:\pli-1.3.0\lib\static\OS2386.lib if required] to a directory listed in the LIB environment variable. Alternatatively, you can add the line "LIB = x:\pli-1.3.0\lib\static" to your makefiles.

A later version will be installable using the WarpIN installer.

Sample Programs

The file samples/samples.html contains a list of all the sample programs. The comments in each program contain information on using the program.
  1. Test the sample programs. Two makefiles are provided: 'makefile.OS2DLL' links with the PL/I DLL, 'makefile.OS2Static' links with the static library. CD to the directory "x:\pli-1.3.0\samples" and type "make- makefile.OS2DLL" for the DLL version, or "make -f makefile.OS2Static" for the static version. If you don't have make available, you can manually type the commands in the makefile. The sample programs "numwrd", "filedump", "print_listing", and "libver" build to executables, the remainder should generate object files.
  2. Test numwrd. Enter ".\numwrd 123". The program should display the result "one hundred twenty-three".
  3. You might want access to the %INCLUDE files in "x:\pli-1.3.0\lib\include" or "x\pli-1.3.0\samples" for your own programming.

Using the compiler

The "samples" directory contains two sample makefiles that can be used to compile and link PL/I programs. You should copy these and modify them for your requirements. "Makefile.OS2Static" is an example of a compile and link using the static version of the runtime library. "Makefile.OS2DLL" is an example linking against the runtime DLL. The library named "prf.lib" contains object files in the static directory, and import definitions for the runtime DLL in the non-static directory.

Linking PL/I programs

The following command statically links a PL/I program with the runtime library.
LINK386 /m:f /a:8 /st:0x100000 ${OBJ},,,${LIBDIR}\prf.lib+${LIBDIR}\OS2386.lib,${DEF};

The following command links a PL/I program with the PL/I runtime DLL.
LINK386 /m:f /a:8 /st:0x100000 ${OBJ},,,${LIBDIR}\prf.lib,${DEF};

Documentation

The Iron Spring PL/I Compiler Programming Guide contains a description of the features of the compiler. Except as noted in the Programming Guide under Compiler Differences and Restrictions this compiler is compatible with the IBM "PL/I for MVS and VM Compiler 1.1". A complete language reference in HTML will be available as part of a future release.

Documentation for the IBM compiler is available online at teampli.net.

Bugs Fixed

Bugs fixed
Changes in version 1.3.0
5631.3.0Incorrect access to elements of array of structures
5611.3.0Assignment to array of structures may be incorrect
5601.3.0Result of INDEX or SEARCH builtin incorrect if used in expression
5561.3.0LBOUND/HBOUND incorrect for adjustable array. (repeat of 320)
5551.3.0Refer object set incorrectly for array bounds
5541.3.0Incorrect length returned for CONTROLLED string elements
5531.3.0STORAGE/CURRENTSTORAGE values inconsistent for adjustable based structure
5521.3.0Refer expression not converted to FIXED BIN(31)
5511.3.0Allow structure qualification for refer object name
5501.3.0Element name and descriptor not passed to I/O subsystem
5491.3.0Subscripted reference to undeclared variable causes trap
5481.3.0Error with hardware shift instruction with constant shift amount
5471.3.0Declaration of external array causes compiler trap
5401.3.0No warning generated for undeclared programmer-named condition
5301.3.0TRIM(bit string) generates garbage
4541.3.0Error referencing BASED ENTRY variable
 
Changes in previous versions
5461.2.0Builtin SIZE not recognized as synonym for STORAGE
5391.2.0Incorrect conversion of bit string constant to FIXED DECIMAL
5361.2.0Incorrect output with PUT(bit_string) with A-Format
5341.2.0Errors with UNSIGNED size<4
5331.2.0Errors converting relational expression to bit string
5321.1.0(OS/2)GOTO out of ON-Unit causes erroneous "recursive abend"
5281.1.0Block initialization calling some library procedures traps at runtime
5181.1.0Initialization of UNALIGNED BIT elements of STATIC structures and arrays incorrect
5131.1.0Various errors with VARYING UNALIGNED BIT arrays
5121.1.0Trap referencing structure with REFER option declared in another block
5111.1.0Floating point numbers print incorrectly if smaller than 1e-16
5101.1.0ADDR(x) may return incorrect result if x was previously referenced in the same statement
5091.1.0Access to adjustable descriptor in containing block returns incorrect result
461
462
1.1.0SIGSEGV on aggregate assignment to array of structures
5081.0.0Incorrect conversion of FLOAT BINARY to FIXED DECIMAL
5061.0.0Compiler trap in some cases where statement not properly terminated
5041.0.0Incorrect conversion of COMPLEX data
5031.0.0Statement label should not be allowed on declaration
5021.0.0Error using array element as control variable in DO-Statement
5011.0.0Code comment not printing subscript for subscripted label constant
5001.0.0GET/PUT array elements off by one
4991.0.0CHAR to BIT conversion not handling leading and trailing blanks
4981.0.0ONCHAR returns incorrect value
4971.0.0Incorrect output for GET/PUT of minor structure
4961.0.0Problems moving FIXED BIN returned value
4951.0.0SIGNED/UNSIGNED builtins may return incorrect precision
4941.0.0Incorrect precision converting FIXED DECIMAL to FIXED BINARY
4931.0.0Fixed documentation of OSGetProcInfo

Modifying the Runtime Library

The document
About the Iron Spring PL/I Library Contains information necessary to modify or extend the runtime library. Most users of Iron Spring PL/I will probably not be interesting in making modifications to the library.

Support

Iron Spring PL/I is supported on a "best efforts" basis. Attempts will be made to fix all reported bugs, and have the fixes included in the next distributed version. "Thank You" to a number of users who have submitted bug reports which helped improve this version of the compiler.

The Iron Spring PL/I Users' Forum (https://groups.io/g/Iron-Spring) is available as a user forum for problems, tips, etc. The developers also monitor this group.

Reporting bugs

For the current version of the compiler, a bug is one of the following:
  1. Any compiler trap.
  2. Incorrect output not caused by a flagged unimplemented feature (compile-time message 995 or run-time UNIMPLEMENTED condition.
  3. Compile-time message 990 (Compiler error).
  4. Output of the compiled program different from that produced when the program is compiled with the IBM compiler, except for differences noted.
Features not implemented in the current version will be added in future versions. In the meantime, their absence should at least be indicated by an error message.

Before reporting a bug, please make sure you are running the most recent release.

The following information is required to report a bug:

  1. A brief description of the problem (trap, incorrect output, etc.)
  2. The host operating system: OS/2 or Linux.
  3. The command-line options used to compile this program.
  4. The current compiler version obtained by running "PLIC -V".
  5. A small sample program ilustrating the problem. Please make sure you imbed or supply all the %include files required to compile the sample.
Hopefully, all this information will be small enough to be sent as plain text in a mail message. Otherwise please attach a zip file. No other formats will be accepted.

Mail bug reports to:

   bugs@iron-spring.com


version 1.3.0, 15 Apr 2024
http://www.iron-spring.com