Iron Spring PL/I

Version: 
1.2.0
Release date: 
Monday, 5 November, 2007

License:

Interface:

Authors/Port authors:

Compiler for the PL/I programming language, although it is currently missing some features. PL/I is a powerful programming language suitable for a wide range of problems. PL/I has been used to write operating systems and compilers, simulations, real-time programs, mathematical software, spreadsheets, GUI programs, business applications, and much more. PL/I is a more secure programming language.

  • Karger and Schell, in their retrospective on Multics Security say:

    “a PL/I programmer would have to work very hard to program a buffer overflow error, while a C programmer has to work very hard to avoid programming a buffer overflow error.”

  • PL/I is widely used on mainframes and midrange systems today, but since the demise of Digital Research, Inc. has not been readily available on personal computers. Ian Hayes of Clarity Consulting says:
    “PL/I is heavily used by about 25 percent of all IS organizations around the world, and many additional organizations have at least several mission-critical PL/I applications.”
This software is distributed as compressed package. You have to download and manually install it; if prerequisites are required, you will have to manually install them too.

Manual installation

Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. Read the included readme_os2.html file. See below for download link(s).

Following ones are the download links for manual installation:

Iron Spring PL/I v. 1.2.0 (15/11/2023, Iron Spring Software, Peter Flass) Readme/What's new
Bugs fixed Changes in version 1.2.0 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 Changes in previous versions 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
 www.iron-spring.com/pli-1.2.0.zip
Iron Spring PL/I v. 1.1.0 (20/6/2023, Iron Spring Software, Peter Flass) Readme/What's new
Summary of Changes for 1.1.0 Several problems with arrays and structures of unaligned bit data have been corrected. Array builtins ALL and ANY, and arithmetic builtin CONJG have been added. Conversion of arithmetic data to bit string now follows standards. A builtin function IBSW has been added to swap bytes in a FIXED BINARY value. Bugs fixed Changes in version 1.1.0 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
 www.iron-spring.com/pli-1.1.0.zip
Iron Spring PL/I v. 1.0.1 (28/1/2023, Iron Spring Software, Peter Flass) Readme/What's new
Changes in the current version Mapping of slack bytes in structures has changed. If you share a structure, or a pointer to a structure, between separately-compiled procedures, all procedures should be recompiled. The compiler option "-lg" requests printing of an aggregate map. Bugs fixed Changes in version 1.0.0 number/Fixed in version/Description 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
 www.iron-spring.com/pli-1.0.1.zip
Iron Spring PL/I v. 0.9.10.e (18/5/2022, Iron Spring Software, Peter Flass) Readme/What's new
Changes in the current version Mapping of slack bytes in structures has changed. If you share a structure, or a pointer to a structure, between separately-compiled procedures, all procedures should be recompiled. The compiler option "-lg" requests printing of an aggregate map. Bugs fixed Changes in version 0.9.10e number/Fixed in version/Description 492 0.9.10e RANDOM not recognized as valid builtin function 491 0.9.10e Aggregate listing prints sizes of arrays incorrectly 490 0.9.10e PROC or ENTRY with no label crashes at compile time 483 0.9.10e NOSTRG not accepted as valid condition prefix 481 0.9.10e CALL TASK without task variable traps at compile time 479 0.9.10e HBOUND/LBOUND/DIM incorrect for some adjustable structures 478 0.9.10e Infinite loop inside Type-3 DO loop 461,462 0.9.10e Run-time trap assigning elements of arrays of structures
 www.iron-spring.com/pli-0.9.10e.zip
Iron Spring PL/I v. 0.9.10.d (15/3/2021, Iron Spring Software, Peter Flass) Readme/What's new
Changes in the current version Mapping of slack bytes in structures has changed. If you share a structure, or a pointer to a structure, between separately-compiled procedures, all procedures should be recompiled. The compiler option "-lg" requests printing of an aggregate map. Bugs fixed in version 0.9.10d number/Fixed in version/Description 477 0.9.10d Incorrect display of DEFINED structures in aggregate listing 476 0.9.10d Factored level numbers in declaration parse incorrectly 475 0.9.10d VERIFY does not allow expressions as arguments 474 0.9.10d Converting FIXED BINARY to BIT in operation expression returns null bit string 472 0.9.10d Assigning null string to adjustable traps occasionally 468 0.9.10d TRANSLATE a null varying character string traps 465 0.9.10d STORAGE(x) is a restricted expression when x is not adjustable 464 0.9.10d PUT LIST/DATA doesn't space if already at tab position 463 0.9.10d Incorrect conversion of immediate value to UNSIGNED 457 0.9.10d PUT DATA structure names off by one 456 0.9.10d TRANSLATE a null varying character string traps 236 0.9.10d Unable to use scalar array element in DO-Statement as TO, BY, etc. Conditionals must be scalar expressions.
 www.iron-spring.com/pli-0.9.10d.zip
Iron Spring PL/I v. 0.9.10.c (15/9/2020, Iron Spring Software, Peter Flass) Readme/What's new
Changes in the current version Mapping of slack bytes in structures has changed. If you share a structure, or a pointer to a structure, between separately-compiled procedures, all procedures should be recompiled. The compiler option "-lg" requests printing of an aggregate map. Bugs fixed in version 0.9.10c number/Fixed in version/Description 455 0.9.10c Error declaring parameters of subscripted entry variable structure element 453 0.9.10c Size of adjustable string does not include length prefix 452 0.9.10c Improper diagnosis of STRINGSIZE condition 451 0.9.10c Compiler trap for UNSIGNED constant greater than 2147483647 450 0.9.10c Compiler error for ENVIRONMENT clause with no specifications 449 0.9.10c Incorrect code generated for complex WHEN clauses 448 0.9.10c STRING builtin fails with scalar character argument 447 0.9.10c ERROR condition raised at compile time with some FIXED DECIMAL constants 446 0.9.10c STRING builtin doesn't concatenate elements of structure argument 445 0.9.10c Compiler trap initializing STATIC numeric variable with character string 444 0.9.10c VERIFY builtin traps when first argument is VARYING 443 0.9.10c CALL TASK may cause compiler errors 442 0.9.10c INIT attribute ignored allocating BASED variable 441 0.9.10c Trap passing dummy argument to adjustable array parameter 440 0.9.10c Runtime trap on some RETURN statements 439 0.9.10c Incorrect handling of floating point exceptions [OS/2 only] 437 0.9.10c PUT DATA(ptr) causes trap in runtime library 436 0.9.10c Structure alignment problems 435 0.9.10c BOUND/HBOUND/DIM may return incorrect result in expression 433 0.9.10c Runtime error for n**2 where n is FIXED BIN(31) 432 0.9.10c Diagnose error matching array argument with scalar parameter 431 0.9.10c Issue warning message for RETURN in ON-Unit 426 0.9.10c Compiler error assigning BIT(16) to FIXED BIN(16)
 www.iron-spring.com/pli-0.9.10c.zip
Iron Spring PL/I v. 0.9.10b (1/7/2019, Iron Spring Software, Peter Flass) Readme/What's new
1 Jul, 2019: PL/I beta version 0.9.10b released. This release contains bugfixes and performance enhancements. Changes in the current version Added ROUND builtin. Added compiler option "-N" to generate line number information for debugging. Bugs fixed in version 0.9.10b number/Fixed in version/Description 429 0.9.10b Some declarations of variables without attributes parse incorrectly 428 0.9.10b Error referencing members of a DEFINED structure 427 0.9.10b Error referencing subscripted EXTERNAL data 425 0.9.10b Opening nonexistent file ENV(APPEND) does not create new file 424 0.9.10b UNDEFINEDFILE not caught for nonexistent file 423 0.9.10b Incorrect results for &AND; and &OR; on adjustable bit strings 422 0.9.10b Library routine _pli_TBS missing 421 0.9.10b Trap accessing BIT(*) parameter 420 0.9.10b Syntax error in SELECT statement not diagnosed 419 0.9.10b x**2 now done inline (performance improvement) 418 0.9.10b DECLARE(...),... generates erroneous error message 417 0.9.10b Incorrect code generated for DO UNTIL 416 0.9.10b STATIC pointers dereferenced incorrectly 415 0.9.10b Incorrect code generated for DO UNTIL 410 0.9.10b ONFILE builtin returns null string for UNDEFINDFILE on OPEN of ISAM file
 www.iron-spring.com/pli-0.9.10b.zip
Iron Spring PL/I v. 0.9.10a (8/11/2017, Iron Spring Software, Peter Flass) Readme/What's new
Changes Changes in the current version Added ROUND builtin. Added compiler option "-N" to generate line number information for debugging. Changes in version 0.9.10a Bug number Fixed in version Description - * 404 0.9.10a RETURN statement should be invalid in ON-Unit - * 403 0.9.10a SIZE builtin returns incorrect value for structures - * 401 0.9.10a KEY and INTO keywords incirrectly disgnosed on READ - * 398 0.9.10a Incorrect conversion of CHAR to UNSIGNED - * 397 0.9.10a STORAGE of some adjustable strings causes compiler trap - * 395 0.9.10a Some CONTROLLED variables initialized incorrectly - * 394 0.9.10a Some expressions in WHEN statements cause errors at runtime
 www.iron-spring.com/pli-0.9.10a.zip
Iron Spring PL/I v. 0.9.10 (9/10/2017, Iron Spring Software, Peter Flass) Readme/What's new
9 Oct, 2017: PL/I beta version 0.9.10 released. This is a major release that provides support for INDEXED files, similar to IBM ISAM files or VSAM KSDS. At the present time this is only available on Linux systems. Several bugs have also been fixed in this release, see the readme file for your system for a listing.
 www.iron-spring.com/pli-0.9.10.zip
Iron Spring PL/I v. 0.9.9b (23/7/2017, Iron Spring Software, Peter Flass) Readme/What's new
Changes in the current version Added ROUND builtin. Added compiler option "-N" to generate line number information for debugging. Bug number/Fixed in version/Description 373 0.9.9b Compiler error for PLIFILL with expression as second argument 372 0.9.9b 'S' picture item prints ' ' instead of '+' 371 0.9.9b SEARCH returns incorrect result with multi-character first argument 368 0.9.9b REVERSE of VARYING string returns incorrect length string 367 0.9.9b RUNTIME error with expressions in INITIAL attribute 365 0.9.9b Runtime error with compound expressions using INDEX 361 0.9.9b Empty source file crashes compiler 356 0.9.9b Multiple data items not allowed in TYPE3-DO list 354 0.9.9b Compiler trap with ",," in structure declaration 353 0.9.9b Compiler error converting FLOAT constant to FIXED BINARY 351 0.9.9b Incorrect conversion of FLOAT constants 348 0.9.9b Compiler trap on DO statement with STEP clause 347 0.9.9b Nested DO loop fails to loop 346 0.9.9b Runtime trap for FLOAT to FIXED conversion in DO statement 345 0.9.9b DO loop tests incorrectly if increment is variable 343 0.9.9b Error compiling some inbedded subscripts in locator qualification 342 0.9.9b Compiler error with expression in SELECT statement 340 0.9.9b Runtime error with INITIAL CALL 339 0.9.9b Storage overlay problems 338 0.9.9b Complex bit expressions may return incorrect result 337 0.9.9b STRING builtinpasses incorrect length when used as procedure argument 336 0.9.9b Listing lines truncate after 100 characters 335 0.9.9b Compiler trap on SUBSTR with STRINGRANGE enabled and the length argument omitted 328 0.9.9b Error compiling subscripted statement labels 312 0.9.9b Error compiling type3-DO in GET/PUT 309 0.9.9b Compiler not correctly derefeencing arrays of structures 303 0.9.9b Compiler prematurely detects EOF in source 191 0.9.9b LIKE attribute not recognized in parameter declarations
 www.iron-spring.com/pli-0.9.9b.zip
Iron Spring PL/I v. 0.9.9a (15/12/2016, Iron Spring Software, Peter Flass) Readme/What's new
Bug number/Fixed in version/Description 333 0.9.9a Character '7F'x should print as '.' in dumps 332 0.9.9a Array of structures padded incorrectly 331 0.9.9a Some format retetition factors raise ERROR at runtime 330 0.9.9a Non-positive argument to delay raises ERROR at runtime 329 0.9.9a FIXEDOVERFLOW not raised for fixed decimal operations 328 0.9.9a Error compiling subscripted statement labels 327 0.9.9a Format with non-integer widths raises ERROR at runtime 324 0.9.9a Sort sequence problems in plistrd 323 0.9.9a plisrtd has undocumented minimum record length requirement 321 0.9.9a Structures not padded to size of alignment 320 0.9.9a LBOUND/HBOUND incorrect for adjustable arrays 317 0.9.9a ZERODIVIDE only raised once 316 0.9.9a CONVERSION raised for GET LIST at EOF 315 0.9.9a SELECT with substring argument fails to match 312 0.9.9a Compiler error compiling stream do iteration 311 0.9.9a Runtime trap passing adjustable string arg tp adjustabls parameter 308 0.9.9a Error compiling subscripted entry references 307 0.9.9a DO loop doesn't iterate after GOTO 306 0.9.9a Fixed binary divide returns incorrect results 305 0.9.9a Compiling PUT DATA(array_elem) gets error 701 304 0.9.9a Invalid intrinsic call at runtime converting FLOAT to CHAR 303 0.9.9a Compiler prematurely detects EOF 302 0.9.9a Incorrect result length for AFTER builtin
 www.iron-spring.com/pli-0.9.9a.zip
Iron Spring PL/I v. 0.9.9 (15/9/2015, Iron Spring Software, Peter Flass) Readme/What's new
Bug number/Fixed in version/Description 297 0.9.9 (OS/2) Read format F CRLF file raises RECORD condition 296 0.9.9 PUT DATA(<minor structure> generates incorrect output 295 0.9.9 Assignment of string constant to pictured data causes error 294 0.9.9 Compiler error initializing too many FIXED DECIMAL array elements 293 0.9.9 SIZE check for FIXED DECIMAL generates incorrect code 292 0.9.9 Compiler error if second argument to IAND or IOR has precision<=15 291 0.9.9 Incorrect code generated to assign scalar to structure 290 0.9.9 Error in assignment of structures containing pointers 289 0.9.9 Incorrect alignment adding and subtracting constants 288 0.9.9 Incorrect scale factor for the result of the ROUND builtin
 www.iron-spring.com/pli-0.9.9.zip  local copy
Record updated last time on: 15/11/2023 - 05:22

Translate to...

Comments

1. The "PL/I" compiler from DR was missing so much of the language that I wouldn't call it PL/I. 2. It would be helpful if there were a link to a list of missing features and estimated time for adding them. Keep up the good work.

Add new comment