![]() |
Iron Spring PL/I CompilerOS/2 Version 1.3.1
|
The current version still contains bugs. 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, 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.
The following debuger setup is not required, but will simplify debugging.
To get the debugger to stop at the beginning of the PL/I program,
make the following modifications to "setup.dbg", normally found
in the <WATCOM>\binw directory.
A later version will be installable using the WarpIN installer.
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.
pli-1.3.1
|
+-----------------------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:
LINK386 is distributed with OS/2 and installed as part of "Optional System Utilities."
The version of make used to build the libraries is 3.81beta3.
Versions 1.3 and 1.4 were tested.
After this, you will also need to link your program with a module definition file
that exports the symbol "_PLI_Main" so that it is visible to the debugger.
The "samples" directory contains an example .def file and linker command
to do this.
elseif _dbg@dbg$os == 12 && ?@main { Following this go/until/noflip @main } elseif ?@@_PLI_MAIN { Insert these three lines go/until/noflip @@_PLI_MAIN } Installation
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.
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.
Cumulative list of bugs fixed | ||
---|---|---|
Changes in version 1.3.1 | ||
589 | 1.3.1 | GOTO <subscipted-label-constant> traps at runtime |
588 | 1.3.1 | INITIAL attribute generates incorrect data for STATIC BIT fields before non-BIT |
587 | 1.3.1 | Incorrect conversion of CHARACTER to FLOAT |
584 | 1.3.1 | Incorrect output PUT EDIT with "F" format |
583 | 1.3.1 | Incorrect output for PUT <minor-structure> |
579 | 1.3.1 | Compiler trap on aggregate assignment of array arguments |
577 | 1.3.1 | Alignment attribute not copied for LIKE structure |
572 | 1.3.1 | Compiler trap referencing computational elements of structure parameters |
571 | 1.3.1 | Error returning bit(1) result from some conditionals |
570 | 1.3.1 | SUM builtin of array with zero lower bound causes runtime trap |
568 | 1.3.1 | Reference to element of DEFINED structure incorrect |
566 565 | 1.3.1 | BIT builtin returns incorrect result |
551 | 1.3.1 | Structure qualification not allowed for refer object |
549 | 1.3.1 | BASED AREA variable not properly initialized when allocated |
448 | 1.3.1 | STRING builtin and pseudovariable incorrect output if argument is a character string |
410 | 1.3.1 | ONFILE builtin returns null string in UNDEFINEDFILE On-Unit |
344 | 1.3.1 | GET STRING(xx) LIST(string) raises ERROR condition |
231 | 1.3.1 | ENTRY variable not allowed as argument to ENTRYADDR builtin |
Changes in prior versions | ||
563 | 1.3.0 | Incorrect access to elements of array of structures |
561 | 1.3.0 | Assignment to array of structures may be incorrect |
560 | 1.3.0 | Result of INDEX or SEARCH builtin incorrect if used in expression |
556 | 1.3.0 | LBOUND/HBOUND incorrect for adjustable array. (repeat of 320) |
555 | 1.3.0 | Refer object set incorrectly for array bounds |
554 | 1.3.0 | Incorrect length returned for CONTROLLED string elements |
553 | 1.3.0 | STORAGE/CURRENTSTORAGE values inconsistent for adjustable based structure |
552 | 1.3.0 | Refer expression not converted to FIXED BIN(31) |
551 | 1.3.0 | Allow structure qualification for refer object name |
550 | 1.3.0 | Element name and descriptor not passed to I/O subsystem |
549 | 1.3.0 | Subscripted reference to undeclared variable causes trap |
548 | 1.3.0 | Error with hardware shift instruction with constant shift amount |
547 | 1.3.0 | Declaration of external array causes compiler trap |
540 | 1.3.0 | No warning generated for undeclared programmer-named condition |
530 | 1.3.0 | TRIM(bit string) generates garbage |
454 | 1.3.0 | Error referencing BASED ENTRY variable |
546 | 1.2.0 | Builtin SIZE not recognized as synonym for STORAGE |
539 | 1.2.0 | Incorrect conversion of bit string constant to FIXED DECIMAL |
536 | 1.2.0 | Incorrect output with PUT(bit_string) with A-Format |
534 | 1.2.0 | Errors with UNSIGNED size<4 |
533 | 1.2.0 | Errors converting relational expression to bit string |
532 | 1.1.0 | (OS/2)GOTO out of ON-Unit causes erroneous "recursive abend" |
528 | 1.1.0 | Block initialization calling some library procedures traps at runtime |
518 | 1.1.0 | Initialization of UNALIGNED BIT elements of STATIC structures and arrays incorrect |
513 | 1.1.0 | Various errors with VARYING UNALIGNED BIT arrays |
512 | 1.1.0 | Trap referencing structure with REFER option declared in another block |
511 | 1.1.0 | Floating point numbers print incorrectly if smaller than 1e-16 |
510 | 1.1.0 | ADDR(x) may return incorrect result if x was previously referenced in the same statement |
509 | 1.1.0 | Access to adjustable descriptor in containing block returns incorrect result |
461 462 | 1.1.0 | SIGSEGV on aggregate assignment to array of structures |
508 | 1.0.0 | Incorrect conversion of FLOAT BINARY to FIXED DECIMAL |
506 | 1.0.0 | Compiler trap in some cases where statement not properly terminated |
504 | 1.0.0 | Incorrect conversion of COMPLEX data |
503 | 1.0.0 | Statement label should not be allowed on declaration |
502 | 1.0.0 | Error using array element as control variable in DO-Statement |
501 | 1.0.0 | Code comment not printing subscript for subscripted label constant |
500 | 1.0.0 | GET/PUT array elements off by one |
499 | 1.0.0 | CHAR to BIT conversion not handling leading and trailing blanks |
498 | 1.0.0 | ONCHAR returns incorrect value |
497 | 1.0.0 | Incorrect output for GET/PUT of minor structure |
496 | 1.0.0 | Problems moving FIXED BIN returned value |
495 | 1.0.0 | SIGNED/UNSIGNED builtins may return incorrect precision |
494 | 1.0.0 | Incorrect precision converting FIXED DECIMAL to FIXED BINARY |
493 | 1.0.0 | Fixed documentation of OSGetProcInfo |
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.
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
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.
Reporting bugs
For the current 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 1.3.1, 15 Aug 2024
http://www.iron-spring.com