Welcome to the IBM Rational PL/I community. Here you will find the latest technical and business information, and educational information about PL/I and related z/OS and AIX topics including IMS, CICS, and Rational Developer for System z.
Enterprise PL/I for z/OS V5.2 documentation is refreshed to include the following enhancements: Language Reference: Enhancements in usability The compiler now supports control of the NULLINIT values used for POINTERs. See NULLINIT attribute . The compiler now supports use of STATIC NONASGN array elements as constants. See Restricted expressions . The compiler now supports three new time patterns: YYYY/MM/DD , YY/MM/DD and YYYY-MM-DDTHH:MI:SS.999999 . See Date/time built-in functions . The... [More]
IBM PL/I compiler has released a new version on IBM Z . The recent announcement of Enterprise PL/I V5.2 reinforces the continuing IBM commitment to the PL/I programming language on the z/OS operation systems and the continued delivery of new features. Specifically, V5.2 offers: Exploitation of the new IBM z14 hardware and the Vector Packed Decimal Facility Enterprise PL/I for z/OS, V5.2 reduces CPU usage of decimal compute intensive applications by up to 40%, and on average by 10% over the same... [More]
IBM PL/I compiler has released a new version on System z. The recent announcement of Enterprise PL/I V5.1 reinforces the continuing IBM commitment to the PL/I programming language on the z/OS platform. Specifically, V5.1 offers: Enablement of PL/I applications to handle big data requirements with 64-bit support Increase in programmer productivity and application modernization with XML enhancements Over 20 additional customer-requested enhancements, which include: Built-in function enhancements to improve programmer productivity Support for... [More]
IBM PL/I compiler team dedicates to offer a better support for you. As several new PTFs have been delivered, IBM PL/I compiler has released a new edition of Enterprise PL/I for AIX V3.1 technical docs. Specifically, new updates including: Language Reference As the AIX compiler essentially matches the PL/I V4.4 z/OS compiler, this updated Language Reference book is identical to the PL/I for z/OS V4.4 book. Several new attributes, statements, built-in functions and built-in subroutines have been included, such as the ASSERT... [More]
The PL/I workstation compiler supports the following interfaces to other products: 1. Using the sort program The compiler provides an interface called PLISRTx (x = A, B, C, or D) that allows you to make use of the IBM-supplied Sort programs. To use the Sort program you must include the correct PL/I statements in your source program and specify the correct data sets in your JCL. 2. Interlanguage Communication between PL/I and C The Interlanguage Communication (ILC) between PL/I and C is supported. You can write PL/I code that either calls or is... [More]
The new INLIST built-in function has made it easy for you to simplify code that tests if a expression is in one of a list of values. But sometimes you may want to test if an expression is in a range of values, as in IF BIRTHYEAR >= 1980 & BIRTHYEAR <= 1999 THEN The new BETWEEN built-in function makes it easy for you to simplify such code. This function returns a bit(1) value indicating if the value of an expression is within the... [More]
In PL/I conversions, BINARY rules over DECIMAL, and FLOAT, over FIXED.
This means, for example, that when an expression contains a BINARY and a DECIMAL operand, then
the result will be BINARY.
Hence, for the assignment in this code
dcl a fixed bin;
dcl b float dec;
b = b + a ;
there will be these conversions
a will be converted to FLOAT BIN
b will be converted to FLOAT BIN
the sum will be converted to FLOAT DEC
PL/I has always had a series of built-in functions (BINARY, DECIMAL, FIXED, and FLOAT) to help
control such... [More]
Enterprise PL/I for z/OS V5.1 documentation is refreshed to include the following enhancements: Language Reference Enhancements in usability: The compiler now flags unreachable ASSERT UNREACHABLE statements with a different message than it flags other unreachable statements. The compiler now expands in the AGGREGATE listing typed structures that are member of other structures. The attributes listing now shows the contents of the VALUE attribute for CHARACTER and BIT constants of length 256 or less and also for numeric... [More]
If you use the TEST option and DebugTool, Enterprise PL/I will show you the source as you coded it.
So, for example, if you have code that contains an EXEC SQL statement, you will see in the
debugger just that EXEC SQL statement as you coded it and not the many, many statements generated by the
preprocessor and visible in the listing. This is a big plus since those generated
statements will be largely meaningless to you and would certainly not be ones
you should be debugging and fixing.
The same would be true if you were using the CICS... [More]
This will be the second half of the break from writing about checking program correctness and writing instead about some new things we made available recently via PTFs. Thing 1: SQL allows the use of a null data: a date with a year, month, and day all equal to 1. PL/I now supports this via a new compiler option: Under the new NULLDATE compiler option, the VALIDDATE and REPATTERN built-in functions will accept the SQL null date as a valid date. For compatibility, NONULLDATE is the default. To use this null date in... [More]
Check out all the information about the latest release of Enterprise PL/I for z/OS. You can get a summary of the release as well as all the announcement details. See what's new with Enterprise PL/I for z/OS, V4.4 including enhancements to leverage the latest z/OS. For all the details about the Enterprise PL/I for z/OS, V4.4 announcement, see here .
There is another new built-in function that also makes it easy to simplify your code: NULLENTRY. Previously to assign a null value to an entry variable, you had to use the UNSPEC pseudovariable, and to test if an entry variable was null, you had to use the UNSPEC built-in function. Moreover, you had no nice way to use INIT with an ENTRY variable. But now instead of writing UNSPEC( funcptr ) = ''B;... [More]
For many years, the only floating point representation on z/OS was hexadecimal float. This is a base 16 representation, but most of us have 10 fingers and most business applications want to perform decimal calculations.
The difference between these 2 bases leads to problems as exemplified by this code:
dcl f1 float dec(6);
dcl f2 fixed dec(5,3);
dcl f3 float dec(6);
f1 = 4;
f2 = f1 / 100e0;
put skip data( f2 );
f3 = 100 * f2;
put skip data( f3 );
This rather disconcerting... [More]
I want to take a break from writing about checking program correctness and to write instead about some new things we made available recently via PTFs. Thing 1: we have added a new built-in function to provide an "unhex" capability. It is modeled after the base64decode8 etc. built-in functions, and in the Language Reference Manual, it would be described as HEXDECODE decodes a source buffer from hex into a target buffer. It returns a FIXED BIN(31) value that indicates the number of bytes that are written into the target buffer.... [More]
There are many times when you may want to test if a value is equal (or not equal) to one of a set of values. You can do this easily with a SELECT statement or an IF statement as in the following code IF (EXPLAN.ACCESSTYPE = 'I ' | EXPLAN.ACCESSTYPE = 'N ' |... [More]