Iron Spring PL/I

Release date: 
Monday, 1 July, 2019



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. o.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)
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 ∨ 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
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
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.
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
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
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  local copy
Record updated last time on: 11/10/2020 - 07:04

Translate to...


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