The history of PL/I stretches back to the 1970s when IBM, at the prompting of the SHARE user group, delivered the first PL/I compiler so that users would have a language with the combined strengths of Fortran and COBOL. IBM then delivered three releases of OS PL/I Version 2 in the 1980s and PL/I for MVS and VM in the early 1990s. All of these releases were based on a common code base that gradually became old, plus both hard and expensive to enhance and maintain.
However, with the advent of the PC, IBM built a completely new PL/I compiler that was shipped first on IBM® Operating System/2® (OS/2) and then ported to Microsoft Windows, the IBM® AIX® operating system, and the mainframe. With this compiler and the 12 consecutive years with a new release of the IBM® z/OS® version, IBM has improved optimization of PL/I programs, enhanced their exploitation of IBM® System z® architecture, addressed many customer requirements, and introduced numerous application modernization features.
IBM continues to have a strong commitment to the PL/I language, particularly given its widespread use in many business-critical applications. The current family of IBM PL/I implementations consists of the Enterprise PL/I compiler for the mainframe and the PL/I for AIX compiler, both of which share a common, nearly identical front-end code base, which ensures portability between those platforms.
We are opening this forum to create more direct communication between users of our PL/I compilers and the IBM compiler development organization. We hope you'll find the content informative and interesting, and we look forward to your contributions through questions, comments, and ideas.
PL/I has complex rules for how structures are mapped and for when padding is inserted.
However, it can be important to know when there is padding in a structure (for example,
if you pass that structure to a program compiled by a language, such as C or COBOL,
that may map the structure differently).
With Enterprise PL/I 4.1, if you specify the new NOPADDING suboption to the compiler's
RULES option, the compiler will issue an E-level message for any structure that contains
RULES(NOPADDING) is also useful in detecting changes that might seem innocent but could
be dangerous because of the introduction of padding. For example, there is no padding
in this structure
2 b fixed bin(31),
3 d char(1),2 f fixed bin(31);
3 e char(2),
but if the 2-byte field E were changed from CHAR(2) to FIXED BIN(15) so that the structure
2 b fixed bin(31),
3 d char(1),2 f fixed bin(31);
3 e fixed bin(15),
even though the size of E would be unchanged, the structure would now contain some padding bytes,
and the RULES(NOPADDING) option would alert you to this (and if you also specified the AGGREGATE
option, the compiler listing would show you where those padding bytes were).
ALLOCATE is a storage control built-in function, which allocates storage of the specified size in the heap. You can also use ALLOCATE to allocate the specified size in the specified area.
The ALLOCATE built-in function now has the AREA reference as a new optional argument. When you specify ALLOCATE(n, x), the specified number of bytes n is allocated within that area. The number is rounded up to a multiple of 8. If there is insufficient space within the specified area, the AREA condition is
For more information, see Built-in functions, pseudovariables, and subroutines.
Code that uses elements of structures with multiple REFERs can be very expensive: each reference uses one or more
costly library call to remap the structure. Many PL/I users have long known that the of multiple REFERs created a
black hole for performance.
Now, with Enterprise for z/OS 4.1, for structures where all the elements are byte-aligned, those calls will be avoided and
straightforward inline code generated (because if all elements are byte-aligned, no padding is possible and thus the
address calculations are relatively simple).
To insure all elements are byte-aligned
XifangZhang 50DDQKCXWA 44 Views
Dear IBM PL/I users:
You might have already noticed that there is a banner on the top of the cafe says this cafe will be sunset at the end of 2019. We are pleased to inform you that the sunset date has been extended to March 31, 2020. The current Café will stay online until March 31, 2020, while we migrate content over.
Same as C/C++ Café and COBOL Café, the PL/I Café will also be moving to the IBM Z and LinuxONE community. Please join the new IBM Z and LinuxONE community, which offers rich communities, business and technical experts, blogs, and forums to exchange ideas, connect through shared interests and develop expertise.
Here are some helpful resources:
You always have our commitments to provide you with the best user experience on IBM PL/I compilers.
PL/I community support
We are excited to announce that IBM Z Open Editor is now available as a FREE, easily downloadable extension in Visual Studio Code’s marketplace.
The difference is more than aesthetic: IBM Z Open Editor is backed by IBM’s powerful language server protocol (LSP) for COBOL and PL/I. It can handle embedded statements for CICS, IMS, and DB2, and also support Job Control Language (JCL) syntax highlighting. For COBOL and PL/I, in addition to syntax highlighting, the LSP support means that our extension can also perform modern editing functions such as:
Curious to learn more about IBM Z Open Editor or try it out?
Find out more about IBM Z Open Editor at our About page, see a full list of features on our Documentation website, or go ahead and give it a try. Search in Visual Studio Code for “IBM Z Open Editor” and install it from there, or download the extension through the Visual Studio Code Marketplace here.
Bouquets or brickbats? We would love to hear from you!
Once you have tried out IBM Z Open Editor, we would love to hear what you think of it. You can give feedback in the following ways:
We are always looking for ways to improve our extension.
IBM Z Open Editor follows Wazi, a technical preview that explored integrating mainframe application development capabilities into modern development environments and pipelines. Based on Wazi’s success and user feedback, we made some of Wazi’s capabilities available in IBM Z Open Editor. If you tried out Wazi while it was live, thank you! Your support and feedback is invaluable for improving IBM Z Open Editor.
To learn more about the direction of IBM Z Open Editor, we invite everyone to attend the session “Open Source DevOps Elevated for the Enterprise” at the DevOps.com virtual summit on October 24, 2019. Offering manager Amit Tolmare will be presenting on IBM Z Open Editor as part of a larger discussion about DevOps in the Multicloud World. Registration is free, but space is limited. Reserve your spot now at: https://devopz.io/
To view the full range of IBM Z DevOps capabilities, please visit http
For questions or comments regarding this blog post, please reach out to offering manager Amit Tolmare at asto
IBM PL/I compiler has released a new version on IBM Z. The recent announcement of Enterprise PL/I V5.3 reinforces the continuing IBM commitment to the PL/I programming language on the z/OS operating systems and the continued delivery of new features.
Specifically, V5.3 offers:
The exploitation of the new IBM z15™ hardware
With V5.3, you can reduce CPU usage of decimal compute-intensive applications by up to 50%, and on average by 12% on IBM z14 over the same compute-intensive applications originally built with the previous Enterprise PL/I product. The new ARCH(13) compiler option allows the compiler to exploit the latest IBM z15.
Improved processing of UTF-8 strings with the introduction of a new native datatype
The V5.3 compiler provides increased efficiency and support for Unicode data encoded in UTF-8 format. A new native datatype, UCHAR, has been introduced to help you easily build maintainable applications and process UTF-8 strings efficiently.
The enhanced support for processing UTF-8 strings also includes support for hex strings ending with the suffix UX so that you specify arbitrary UTF-8 string constants such as '00'ux (the lowest UCHAR value) and 'F48FBFBF'ux (the highest UCHAR value).
The enhanced support for processing UTF-8 strings means that you can now work directly with UTF-8 strings without having to waste CPU resources on converting them. This results in more maintainable programs and is especially useful when you modernize your PL/I applications to work with web services.
Several usability enhancements, particularly support for namespaces and VALUE sets
The QUALIFY statement and a corresponding END statement delimit a qualify block, and thus create a namespace for ORDINALs, other types, and named constants. See QUALIFY statement.
The VALUELISTFROM attribute lets you copy a VALUE set from one variable to another. See VALUELISTFROM attribute.
Besides, the V5.3 compiler also has a number of new features to help you optimize your PL/I applications and increase your programming productivity. Specifically, the new compiler:
• Supports the date/time patterns YYYY/MM/DD, YY/MM/DD, YYYY-MM-DDTHH:MI:SS.999999, DD/MM/YYYY, and DD/MM/YY. See Date/time built-in functions.
• Enables you to use the two slashes (//) characters to specify that the rest of a line is a comment. See Delimiters and operators.
• Increases the maximum LINECOUNT value to 65535 lines so that fewer page breaks are created in listings intended to be viewed only online. See LINECOUNT.
• Allows you to assign '' to HANDLEs, OFFSETs, AREAs, and ENTRYs as a simple way to assign a null value to them in the same manner that you can assign '' to POINTERs. See Non-computational targets.
• Limits false positives in NOLAXENTRY and NOLAXQUAL checking by excluding names starting with 'DFH', 'DSN', 'EYU', 'SQL', or ' IBM'. See RULES.
New built-in functions and options to add more functionality and increase flexibility
The V5.3 compiler provides you with additional functionality so that you can modernize your applications. It also allows for maximum portability of your source code among a variety of compiler implementations.
The V5.3 compiler provides the following new and enhanced built-in functions:
New built-in functions
• Array: INARRAY, QUICKSORT, and QUICKSORTX
• Buffer: MEMREPLACE
• Condition: ONOPERATOR
• Comparison and replacement: IFTHENELSE, FOLDEDFULLMATCH, FOLDEDSIMPLEMATCH, REGEX, and REPLACE
• Date/time value: MAXDATE, STCKETODATE, STCKTODATE, PLISTCKLOCAL, PLISTCKUTC, PLISTCKELOCAL, and PLISTCKEUTC
• File reference: FILEDDWORD
• JCL: ISJCLSYMBOL
• Precision: PRECVAL and SCALEVAL
• UTF-8 string: BYTELENGTH, UHIGH, ULOW, UVALID, UPPERLATIN1, UPPERASCII, LOWERLATIN1, LOWERASCII, ONUCHAR, and ONUSOURCE
• System information: GETSYSWORD and GETSYSINT
Enhanced built-in functions
• Buffer: MEMCONVERT
• JSON: JSONPUTVALUE and JSONPUTMEMBER
See Summary of changes, Language Reference.
The V5.3 compiler provides the following new and modified compiler options:
New compiler options
Modified compiler options
See Summary of changes, Programming Guide.
Improved JSON and XML support
The V5.3 compiler increases support for various casings of names in the JSON functions via:
• the addition of LOWER as a suboption to the JSON(CASE)compiler option
• the new JSON(GET(HEEDCASE | IGNORECASE)) compiler option
• the support for an optional parameter to JSONPUTMEMBER and JSONPUTVALUE that specifies whether the names should be written in lowercase, in uppercase, or as is.
A new XMLNAME attribute has been introduced, so that alternate name formats can be specified for XML output. See XMLNAME attribute.
Compiler and runtime support for z/OS V2.4
Enterprise PL/I for z/OS, V5.3 adds support for building and running PL/I applications for the z/OS V2.4 operating system.
With Enterprise PL/I for z/OS, V5.3, you can benefit from over 50 years of IBM experience in PL/I compiler innovation and development. Please visit the Enterprise PL/I for z/OS V5.3 Knowledge Center for more information. Both English manuals and Japanese manuals are viewable and downloadable now in the PL/I documentation library.
If you have any comments regarding the PL/I documentation, please send them to firstname.lastname@example.org.
As you may have noticed, IBM Z is moving to the new IBM Support site to replace the IBM Service Request Tool. Now, all IBM Z product PMRs have migrated and can be accessed from the Cases menu. This new IBM Support site will allow for:
To learn more, please visit: https://www.ibm.com/mysupport/s/ . We strongly recommend that you review the replay of the June 26th online demo and Q/A webinar, covering the new Support site: http://ibm.biz/Ztraining.
What has happened:
Existing SR IDs were automatically moved to the new IBM Support site Existing SRs/PMRs have been converted to Cases
What to do:
The process to initiate cases via voice will remain the same. The ability to initiate cases via IBMLink will remain the same.
Three things you might be interested in (My Notifications, Z Favorites, and V5.2 CD Announcement Letter)
XifangZhang 50DDQKCXWA 883 Views
IBM's My Notifications Alerts
My Notifications is a tool that enables you to subscribe to the product and the document type you want to see. With setting your personal subscription preference, you can receive an email notification every time when a specific content page has updated.
Instructions about how to set your My Notifications:
Step 1: Log in the IBM Support - My Notifications with your IBMid.
Step 2: Choose your Delivery Preferences (Daily or Weekly emails, Plain text or HTML formatted emails, etc.). If you prefer to use an RSS or Atom feed, uncheck the box next to your email address.
Step 3: Use keywords to search your target product name (e.g. PL/I) and click the '+Subscribe' symbol behind the product name.
Step 4: Select document types you preferred within the pop-up window and click the 'Submit' button afterwards.
Note: You are highly recommended to select 'Fixes' and 'Troubleshooting' here.
Step 5: Re-type the target product name in the 'Product lookup' field to check whether your subscriptions have been set successfully.
IBM Z Favorites
IBM Z Favorites for z Systems is a collection of links to helpful z Systems Web sites. It has links to various interest categories, such as products, product documentation, software and solutions, support and more. Use the navigation bar to the left to select your area of interest.
Tip: Use your browser's "Find In Page" function, to help locate the subject you are interested in.
IBM Enterprise PL/I for z/OS, V5.2 Continuous Delivery Announcement Letter
You may have already realized that the IBM PL/I compiler team has continuously delivered several V5.2 modifications after the V5.2 GA date (September 2017). Taking into the consideration that, one of the critical commitments of us is to deliver better service to accelerate our clients' success, we applied the Continuous Delivery model starting from 2016 and refreshed the Enterprise PL/I for z/OS V5.1 tech docs several times until the V5.2 GA date.
With the Continuous Delivery (CD) model, you can receive new features and enhanced capabilities as soon as the code is ready. The CD model enables you to receive enhancements in a faster and more continuous way without waiting for the next release.
Just in case you did not realize the V5.2 CD Announcement Letter, which has been officially announced in September 2018, the link is inserted here for your convenience.