Features and benefits
IBM PL/I for VSE/ESA™ (PL/I VSE) enables you to integrate your PL/I applications into IBM Language Environment for VSE/ESA (LE/VSE).
PL/I also provides you with access to LE/VSE's rich set of library routines and enhanced interlanguage communication (ILC) with IBM COBOL for VSE/ESA (COBOL/VSE) and IBM C for VSE/ESA (C/VSE).
PL/I VSE (program number 5686-069) brings to VSE the functions of IBM PL/I MVS™ & VM (PL/I MVS & VM) while retaining close source compatibility with the DOS PL/I Optimizing Compiler (DOS PL/I).
PL/I is a programming language for scientific, engineering, commercial, and systems programming tasks. PL/I includes the best features of FORTRAN, COBOL, and ALGOL, with powerful structured programming constructs and many more features that other languages have only recently implemented or considered.
- PL/I cross-platform portability
- PL/I VSE's relationship to LE/VSE
- How you can benefit from PL/I VSE
- Virtual Storage Constraint Relief (VSCR)
- Improve programmer productivity
- Enhanced interlanguage communication with COBOL/VSE and C/VSE
- Use powerful input and output facilities
- Make your source programs device independent
- Compatibility with DOS PL/I and PL/I MVS & VM
- Installing and customizing PL/I VSE
- How to learn more
PL/I cross-platform portability
PL/I is available on the following IBM platforms:
OS/390®
MVS™
VM
VSE
OS/400®
AIX®
Microsoft® Windows® NT
PL/I VSE's relationship to LE/VSE
The OS/390, MVS, VM, and VSE implementations of PL/I share a common run-time environment, Language Environment.
Language Environment consists of common conventions, run-time facilities, and callable services that provide a consistent application development environment.
In a single VSE application you can include modules created by any LE/VSE-conforming language (PL/I VSE, COBOL/VSE, and C/VSE).
How you can benefit from PL/I VSE
PL/I benefits include:
Block-oriented nature -- enables production of modular programs of extensively reusable code because blocks can contain declarations that define variable names and control storage allocation.
Supplied defaults providing reduced number of declarations and other program statements to write and enables you to teach and use subsets of the language without being concerned about all possible alternatives
Other PL/I language features include a wide variety of:
Data types, including coded arithmetic, string, and several types for program control
Data aggregates, including arrays, structures, and arrays of structures
Built-in functions and subroutines
Storage classes, including automatic, static, controlled, and based
Virtual Storage Constraint Relief (VSCR)
Although the PL/I VSE compiler runs below the 16-megabyte line, PL/I VSE applications created by the compiler can use VSE/ESA extended architecture 31-bit addressing. This allows you to take advantage of address space above the 16-megabyte line. Thus, you can construct large applications that use extensive tables of data without resorting to techniques like segmentation to fit large programs into the available address space.
With VSCR:
The NOT and OR compile-time options, which allow you to specify up to seven alternate symbols, any one of which may be used as the logical NOT operator, or the logical OR operator and the string concatenation operator.
Improve programmer productivity
PL/I built-in functions and subroutines include:
Math computation
Integer manipulation
String-handling
Precision specification
Array processing
Error handling
Input and output procedures
Storage allocation
Program interrupts or conditions that occur at run time can be detected by the hardware, the operating system, other software, or PL/I itself. Using the facilities available with PL/I, you can write applications that provide non-stop operation by handling these conditions.
In addition to condition handling, PL/I provides diagnostic facilities to prevent programming errors. For many of these errors, the running application can detect the problem, take corrective action, and continue execution. Problems that cause your programs to produce inaccurate results include, for example:
Subscripts or substrings that are out of range
Assignment of a string to a target shorter than its source
Computational results that exceed declared precisions
Some of the new features of this release of PL/I are:
Enhanced interlanguage communication (ILC) with COBOL/VSE, including FETCH.
Dynamic loading of subprograms using the FETCH statement.
FETCHABLE procedures to simplify your selection of a procedure within a fetched phase.
Automatic storage above the 16-megabyte line under control of the LE/VSE STACK option.
The LE/VSE STORAGE option, which you can use to initialize storage, detect the use of uninitialized variables, and detect the use of free or never-allocated storage.
OPTIONS(BYVALUE) and OPTIONS(BYADDR), which allow you to choose whether arguments are passed directly by value or indirectly by address.
The NOT and OR compile-time options, which allow you to specify up to seven alternate symbols, any one of which may be used as:
The logical NOT operator, or
The logical OR operator and the string concatenation operator
The default symbols for these operators are troublesome because upload and download programs often do not translate them correctly. Therefore, your ability to specify alternate symbols helps to make your source code more portable.
OPTIONAL arguments, which allow you to omit arguments to assembler routines.
The option to choose built-in mathematical functions that are compatible with either LE/VSE or DOS PL/I.
Alternate external names for assembler entry points.
The ability to customize dates and times.
DATE and DATETIME functions that return millisecond resolution.
Access to LE/VSE functions that properly handle 2-digit and 4-digit years in the year 2000 and beyond.
Enhanced interlanguage communication with COBOL/VSE and C/VSE
Your PL/I VSE applications can communicate with applications created by the COBOL/VSE and C/VSE compilers.
Using LE/VSE, your PL/I VSE applications can fetch COBOL/VSE or C/VSE routines; and COBOL/VSE or C/VSE applications can dynamically call PL/I VSE routines.
PL/I VSE now supports reentrant ILC applications.
ILC between PL/I VSE and COBOL/VSE or C/VSE is also supported under CICS/VSE.
Use powerful input and output facilities
PL/I's input and output facilities provide a high degree of application portability. These facilities also allow you to take advantage of data files, access methods, and other devices that the operating system provides.
PL/I handles most ordinary operations, such as file opening and closing. Programs can control input and output operations (such as checking on file status) as well as intercept various exceptional conditions to take corrective action. Such conditions include:
End of file
End of report page
Record not found
Unknown name in data-directed input
Record too long or too short
File not found
PL/I supports two types of data transmission. Record-oriented input and output transmits data aggregates, or records, one at a time without performing any data conversions. Stream-oriented input and output transmits one data item at a time in a continuous stream of characters. Data is converted during transmission - external data is in character format, and internal data is represented in any of the computational data types supported by PL/I.
Make your source programs device independent
PL/I VSE builds DTFs dynamically at run time. This means that you can define input and output device types in run-time JCL, making your source programs device independent.
Compatibility with DOS PL/I and PL/I MVS & VM
PL/I VSE provides source program compatibility with DOS PL/I and PL/I MVS & VM for most PL/I language elements.
Where there are differences between DOS PL/I and PL/I MVS & VM, PL/I VSE retains close compatibility with DOS PL/I.
PL/I VSE does not provide object compatibility with either DOS PL/I or PL/I MVS & VM. To use the functions of PL/I VSE, application programs must be recompiled with the new compiler and link-edited with the LE/VSE run-time library.
There may be some significant migration issues, so it is important to review the updated PL/I VSE Migration Guide SC26-8056-01 for additional information.
Installing and customizing PL/I VSE
You can install and customize PL/I VSE by following the instructions in PL/I VSE Installation and Customization Guide. Note that if you have not already installed LE/VSE, you need to do so before installing PL/I VSE.
