![]() |
Iron Spring PL/I CompilerBeta Version 0.8c
|
This is beta software. Some PL/I features are still missing from this version. See the Programming Guide for a partial list of missing features. |
PL/I is widely used on mainframes and midrange systems today, but since the demise of Digital Research, Inc. has not been easily available on personal computers.
Iron Spring Software was founded in 2007 with the intention of bringing the benefits of PL/I: flexibility, reliability, and portability, to a wider market. The initial version(s) will run on OS/2 and eCS only. It is anticipated that future versions will run on Linux and may be ported to other systems.
This as the second beta version of Iron Spring PL/I. This version is still missing some features of full PL/I. The Programming Guide lists many of the missing features.
The current version still contains bugs. As a user of beta software, you can help improve the compiler. See the section Reporting bugs.
Trademarks
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, 2008, 2009.
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.
A later version will be installable using the WarpIN installer.
Documentation for the IBM compiler is available
online.
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.
</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.
pli08c
|
+-----------------------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 (.obj files for all | | (PL/I source) |
file). library procedures). | | (assembler
| (%include files source)
| required by
| library).
|
prf.lib (static library)
OS2386.lib
Requirements
The folowing software is required to run the compiler:
The following software is recommended:
Testing was done on Warp 4. The compiler and its generated
executables will also run on eComStation.
LINK386 is distributed with OS/2 and installed as part of "Optional System Utilities."
Alp version 4.00.003 was used to build the libraries. This version was distributed
as part of the OS/2 Warp 4 toolkit. Version 4.00.004 was distributed as part of the
OS/2 Warp DDK. Some earlier versions, including the version from Hobbes, will not
work.
The version of make used to build the libraries is 3.81beta3.
Versions 1.3 and 1.4 were tested.
Installation
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.
Changes in version 0.8c |
---|
Exponentiation is allowed for powers of non-integers. Edit-directed I/O handles complex format specifications correctly. Float values can be written with LIST- and DATA-directed output. Single-argument calls to HBOUND, LBOUND, and DIM are allowed. COMPLEX constants are generated correctly. |
Changes in version 0.8b |
Version 0.8b was never officially released; it included mainly a "HIPER" fix for a bug that prevented generation of correct ELF objects. Other changes include previously-unimplemented cases of the CURRENTSTORAGE builtin for unaligned bit strings and structures, and initialization of static unaligned bit data. The HEXIMAGE, ADD, MULTIPLY, and DIVIDE builtins were added. |
Changes in version 0.8a |
List-directed input is now implemented. |
The condition-handling builtins, DATAFIELD, ONCHAR, ONCODE, ONCOUNT, ONFILE, ONKEY, ONLOC, and ONSOURCE, and the pseudovariables ONCHAR and ONSOURCE were added. DATAFIELD and ONKEY always return the null string, since the corresponding data-directed input and the KEY condition are not currently implemented. ONCOUNT always returns zero since multiple conditions can not occur. |
The DISPLAY statement was added. |
A cross-reference listing can now be produced. |
Subscripted statement label constants are now allowed. |
The compiler can now optionally generate ELF object files. |
The range of allowed arguments for the STRING builtin was restricted (see the description of STRING in the programming guide), and code for all allowable argument types was completed. |
Changes in version 0.7b |
The BOOL, COS, COSD, LOG, LOG10, LOG2, SIN, SIND, SQRT, TAN, and TAND builtins were added. |
The UNION attribute was implemented. |
Bit string AND, OR, and NOT now works with strings of arbitrary length. |
Better code is now generated for the RETURN statement when a procedure contains multiple entries. |
FLOAT data can now be output using the F-format. |
Changes in version 0.7a |
Version 0.7a includes a completely rewritten code generator that produces object files,
with optional assembler output. This is a major enhancement over previous versions that
generated assembler output only. Because of the scope of the change this is still an alpha
release. Assuming no major problems with the new code, the next version should be a beta.
A great deal of effort was made to ensure that the generated object code is identical to that produced by ALP in previous versions. No attempt has been made to improve the quality of the code, even in cases where improvements were identified. Although the instructions are identical the code is packaged somewhat differently in the object file. In most cases the files created by PL/I should be smaller than the corresponding file generated by ALP. Because of this change the ALP asssembler has been changed from a required to an optional program. It is still required if you need to assemble the .asm output of the compiler or the assembler programs in the library. |
Changes in version 0.6a |
The principal change is repackaging the library as both a DLL and a static library. |
The %REPLACE preprocessor statement has been implemented to provide limited support for named constants, pending implementation of the full preprocessor. |
The procedure and entry option FROMALIEN was added to allow 'callbacks' to PL/I procedures from C or assembler code. |
Changes in version 0.5e |
Conversion between scaled FIXED BINARY and FIXED DECIMAL is now supported. |
PUT DATA has been largely implemented, except for arrays of structures. |
The COLUMN and SKIP format-items are now supported. |
Changes in version 0.5d |
The compiler will now honor alternate characters for OR or NOT coded on the command line. |
Character strings can use either the single (') or the double (") quote characters as delimiters. |
All FIXED to FLOAT conversion routines now correctly handle constants and scaled values. |
The DEFINED attribute now accepts any valid reference as the base variable. |
Bugs fixed in the current version
This is a cumulative fix list since the inital alpha version.
Bug number | Fixed in version | Description |
---|---|---|
115 | 0.8c | Enabling SUBSCRIPTRANGE can cause "compiler error" messages. |
114 | 0.8c | LIST-directed input fails to read the last data item in the stream if it is a quoted string. |
112 | 0.8c | The DISPLAY statement does not free storage allocated for its argument list. |
111 | 0.8c | Generated code loading the address of an external data item generates incorrect relocation for ELF. |
107 | 0.8c | HEXIMAGE causes compiler trap if called with non-syntactically-correct argument list. |
104 | 0.8b | REPEAT builtin generating incorrect output if count is greater than one. |
102 | 0.8b | PUT with E-format output incorrect if rounding causes value to be renormalized. |
97 | 0.8b | DISPLAY(ptr) correctly diagnoses error, but fails to recover. |
94 | 0.8b | STORAGE and CURRENTSTORAGE of a scalar non-string produce incorect results. |
93 | 0.8a | The DISPLAY statement traps when called with pictured data. |
92 | 0.8a | Conversion of pictured data to character incorrect. |
90 | 0.8a | Adjustable structures may not be correctly mapped at run time. |
88 | 0.8a | Compiler does not allow specification of full pathname for %INCLUDE files. |
86 | 0.8a | Use of [currently unsupported] structure expression causes compiler trap. |
85 | 0.8a | STORAGE(array) returns the size of one array element. |
84 | 0.8a | WRITE FILE(x) KEY(...) causes message 'Unrecognized keyword KEY." |
82 | 0.8a | Compiling a CALL statement to an INTERNAL ENTRY which had syntax errors causes compiler trap. |
81 | 0.8a | 'PUT ( |
33 | 0.8a | GOTO the THEN or ELSE clause of an IF-statement causes trap 5 at run time. |
78 | 0.7b | FLOAT constants erroneously match already- generated constants. |
77 | 0.7b | Floating point and decimal division generates incorrect results with new code generator. |
76 | 0.7b | Duplicate declarations containing the INITIAL or DEFINED attribute or adjustable lengths or bounds cause trap. |
73 | 0.7b | Errors in minor structure alignment cause storage overlays. |
72 | 0.7b | F-format output prints incorrectly when library is compiled with new code generator. |
71 | 0.7b | Incorrect code for the SIZE condition for FIXED BINARY data generated by new code generator. |
70 | 0.7b | Compiler traps when too few arguments supplied for builtin function. |
64 | 0.7a | Syntax error in expression in 'DO WHILE()' or 'DO UNTIL()' causes trap 5. |
63 | 0.7a | Compare character string of length<=4 to character string of length>4 generates incorrect output. |
61 | 0.7a | FLOAT zeroes convert incorrectly. |
60 | 0.7a | Scaled FIXED to FLOAT constant conversions generate incorrect output. |
58 | 0.7a | ENDPAGE condition not raised when page size exceeded. |
56 | 0.7a | PTRADD builtin generates incorrect output |
55 | 0.7a | 'PUT (PLIRETV)' generates incorrect output. |
54 | 0.7a | Use of BYTE builtin in expression causes trap 5. |
52 | 0.6a | Various conditions cause extra unused storage to be reserved on the stack. |
49 | 0.6a | Array declaration with bound information missing [DCL a ()...] causes trap 5. |
46 | 0.6a | Missing final END statement causes ending code not to be generated. |
44 | 0.5e | XCPT_FLOAT_DENORMAL_OPERAND if control variable for an iterative DO is FLOAT. |
43 | 0.5e | Subscripting EXTERNAL data generates incorrect output. |
40 | 0.5e | Declaring a parameter with the PICTURE attribute causes compiler trap 5. |
39 | 0.5e | Returning an adjustable string from a procedure with multiple entry points returns the null string. |
35 | 0.5e | INDEX(SUBSTR(x... generates incorrect code. |
33 | 0.5e | Alignment may cause length of adjustable descriptors to be miscalculated. |
32 | 0.5e | GOTO an undeclared label variable causes compiler trap 5. |
31 | 0.5e | GOTO out of an iterative DO statement causes compiler trap 5. |
30 | 0.5e | WRITE FROM a structure causes error. |
29 | 0.5e | KEYFROM option not recognized on WRITE statement. |
28 | 0.5e | Arithmetic with STATIC variables caused spradic traps. |
26 | 0.5e | Entry name text not generated for second and subsequent labels of a PROCEDURE or ENTRY statement. |
23 | 0.5e | PUT to SYSPRINT in an ON-Unit entered as result of an error caused by I/O to SYSPRINT causes infinite loop |
20 | 0.5d | Scaled divisors were not handled correctly. |
18 | 0.5d | F format output had the decimal point placed incorrectly and the data not correctly rounded. |
16 | 0.5d | Structures declared with the LIKE attribute had the level number of the last member set incorrectly. |
14 | 0.5d | The third and fourth arguments to ADD, SUBTRACT, MULTIPLY and DIVIDE handled incorrectly. |
11 | 0.5d | The INITIAL, BASED, and DEFINED attributes and adjustable bounds and lengths not working correctly in factored declarations. |
8 | 0.5c | Assignment to expression generates incorrect error message. |
7 | 0.5c | Trap in structure declaration for ',;'. |
6 | 0.5c | LENGTH(<expression>) generates spurious error message. |
5 | 0.5c | F-Format output incorrect. |
3 | 0.5b | PLITABS linked incorrectly. |
2 | 0.5b | Conversion of arithmetic data to character may cause various errors. |
1 | 0.5b | Allocating temporary stack storage >4K may cause Trap 5. |
A Yahoo! group "ISPLI"
(http://tech.groups.yahoo.com/group/ISPLI) is
available as a user forum for problems, tips, etc. The developers also monitor
this group.
Before reporting a bug, please make sure you are running
the most recent release.
The following information is required to report
a bug:
Mail bug reports to:
Support
No formal support is provided for pre-release versions of Iron Spring PL/I.
Bugs will be fixed on a best-efforts basis only, and the fix included in
the next distributed version.
Reporting bugs
For the current beta version of the compiler, a bug
is one of the following:
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.
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.
bugs@iron-spring.com
version 0.8c, 17 Oct, 2009
http://www.iron-spring.com