IBM has been quietly delivering a new release of the PL/I compiler every year since 1999 on System z. The recent announcement of Enterprise PL/I for z/OS continues to show IBM’s commitment to delivering a world class PL/I compiler on System z.
Enterprise PL/I for z/OS V4.5 is enhanced to fully exploit the new z13 architecture. It uses the new Vector Facility to improve the performance of the code generated for the verify and search built-in functions and expands the use of the Decimal Floating Point Facility for fixed decimal calculations. Enterprise PL/I for z/OS V4.5 provides significant performance improvements over Enterprise PL/I V4.4. Compute intensive applications running on z13 (compiled with Enterprise PL/I V4.5) have shown CPU time reduction of up to 17% over the same applications running on zEC12 (compiled with Enterprise PL/I V4.4). This significant improvement in performance is achieved through a combination of more powerful z13 hardware and improved compiler optimization.
Enterprise PL/I V4.5 also has many new features. It addressed 28 customer requirements. The most significant new feature is providing full, integrated support (i.e. parse, generate, and validate) for JSON, the preferred lightweight data exchange format for mobile applications. Other significant new features include raising the maximum size of strings (from 32K to 128M), generating faster code for CICS calls, allowing structures to be used as SQL indicator variables, supporting named constants as SQL host variables, and new compiler options to improve code quality and analyze runtime problems.
Enterprise PL/I for z/OS V4.5 is scheduled to become generally available on February 27, 2015. More information.
There are three, perhaps overlooked, new features of Enterprise that let you "compile out" code either
unconditionally or conditionally:
To cause the compiler to skip some code unconditionally, you could try to enclose it in comments. But this works
only if that code itself contains no comments. However, as of the 3.9 release, you can enclose code
in %DO SKIP; ... %END;, and then the compiler will unconditionally skip over the enclosed code.
To cause the compiler to skip over some code conditionally, you can enclose it in a %DO; ... %END; block that
is conditional on the value of the SYSPARM
compiler option. For example, this code
would be compiled into your object deck only if you specified SYSPARM('test') as a compiler option. Using
this option in this manner makes it easy to compile a
production or a test version of your code from the same source file.
And if all your test code consists only of PUT FILE statements - and if PUT FILES are not used elsewhere in
your code, you could cause the compiler to skip over that code conditionally by using the IGNORE( PUT ) compiler
option introduced in the 4.1 release.
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:
Code completion: When you start typing a command, variable, or paragraph name, a selection list of commands, defined variable names, and code snippets is displayed automatically.
Copybook/Include resolution: To preview the contents of a copybook, move your mouse cursor over the copybook name in a COPY statement. You can also open the copybook in a separate editor by pressing Ctrl+Click (Windows) or Cmd+Click (Mac). Resolving PL/I include files works similarly.
Peek References: A Results References view is displayed underneath the variable or paragraph. Click any result to go to that location in the file.
Outline View: Explore and navigate your COBOL and PL/I code efficiently with a complete sortable and interactive table of contents for your code. Use the Outline View to quickly jump to any part of your code by clicking its section header, or search for identifiers within the outline. Icons next to each Outline View item make it easy to identify procedures, loops, and more.
Integrations to make life easier
Git: Quickly find and access recently edited code
Colored bars highlight recently changed lines in an open editor window, while clicking on the SCM (Git) view will reveal and provide access to files that have been recently modified. If you have the GitLens extension, you can also view in-editor annotations to see the most recent commit modifying each line of code.
Zowe: Interact directly with your mainframe
IBM Z Open Editor is designed to integrate seamlessly with the Visual Studio Code Extension for Zowe. The Visual Studio Code Extension for Zowe allows you to connect remotely to the IBM z/OS mainframe system, where you can manage your data sets, files, and jobs, and use IBM Z Open Editor to efficiently and effectively edit your COBOL and PL/I applications.
Curious to learn more about IBM Z Open Editor or try it out?
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/
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:
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 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.
IBM no longer offers a PL/I compiler for Windows. IBM currently offers PL/I compilers for AIX and z/OS.
IBM released VisualAge PL/I Enterprise for OS/2 and Windows NT (5639-D65) in 1998, but it is no longer available or supported since 2006. More information can be found at the end of marketing and end of support announcements. There is no replacement product for the Windows compiler.
IBM formerly made the Windows PL/I compiler available within bundles, such as WebSphere Developer for zSeries, renamed to WebSphere Developer for System z (5724-L44). WebSphere Developer for System z allowed for development on Windows and z/OS, but the last release (V7) hit end of support in 2010. Rational Developer for System z (RDz) was later introduced, which was renamed to IBM Developer for z Systems (IDz) (5724-T07), however, IBM Windows compilers including the PL/I compiler were removed in RDz V9. RDz V8.5 was the last release to include it, and it hit end of support in 2017.
You may find more responses on Stack Overflow discussing other vendors that offer a PL/I compiler for Windows.
Look@ Knowledge Center is a new, online message and reference search facility based on the original LookAT. It works across all products in IBM Knowledge Center. It uses the Knowledge Center web site so that the information is always current.
It only takes two steps to get the message information you need. Suppose you want to look up the message ID IBM1227I E for Enterprise PL/I for z/OS compiler, all you need to do is:
1. Choose a product: All Products
Note: Not all IBM products are on the list currently. When you search PL/I messages, you can opt for 'All Products', but you will probably get multiple search results--one for each release.
2. Enter the message ID IBM1227I, then click [Go].
Then you will get your message information in the Knowledge Center search result.
The compiler supports specifying different ROUTCDE and DESC values in DISPLAY statements. See DISPLAY statement.
New or changed built-in functions, pseudovariables, and subroutines
The new built-in function GETSYSINT returns a size_t value that is the value of the requested system information.
The new built-in function ONOPERATOR returns a CHAR(2) string whose value is the operator in an ASSERT COMPARE statement that raised an ASSERTION condition.
The new built-in function SCRUBOUT returns a string with all the characters from a second string removed.
The new built-in function UUID4 returns a CHARACTER(36) string that is a version 4 universally unique identifier.
The built-in function GETSYSWORD supports ACTINFO, JESNODE and MSGCLASS as keywords.
The built-in function MEMCONVERT has been extended to take a parameter t that specifies the technique to be used in the conversion.
The JSON built-in functions are now supported under CMPAT(V1).
Compiler option enhancements
The USAGE compiler option has the following change:
REGEX( RESET | NORESET )
The new REGEX(RESET) suboption of the USAGE compiler option lets you save and restore the current locale value when the codepage argument to the REGEX function is different than the codepage corresponding to the current locale.
The RULES compiler option has the following change:
GLOBAL | NOGLOBAL
The new NOGLOBAL suboption of the RULES compiler option lets you flag any variable that is used in a nested subprocedure of the block where the variable is declared with AUTOMATIC, CONTROLLED, DEFINED, PARAMETER, and ASSIGNABLE STATIC.
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:
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 statement and the ALLOCATE built-in function, etc. For details, see Summary of changes
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.
When you specify ALLOCATE(n), ALLOCATE allocates storage of size n in heap storage and returns the pointer to the allocated storage. If necessary, n is converted to REAL FIXED BINARY(31,0). If the requested amount of storage is not available, the STORAGE condition is raised.
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
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 called by C.
3. Interfacing with Java
The Java Native Interface (JNI) is the Java interface to native programming languages and is part of the Java Development Kits. By writing programs that use
the JNI, you ensure that your code is portable across many platforms. The JNI allows Java code that runs within a Java Virtual Machine (JVM) to operate
with applications and libraries written in other languages, such as PL/I. In addition, the Invocation API allows you to embed a Java Virtual Machine into your
native PL/I applications.