Tools and processes for application development on IBM Z should not be unique when compared to those used by the rest of the enterprise. IBM Developer for z/OS (IDz) has provided an integrated development environment (IDE) for mainframe application developers for several years. IDz is based on Eclipse, a very popular development environment for Java. As IDz has continued to grow, features that are common and expected by the modern developer have been added. Syntax coloring, syntax checking, code completion (also known as intellisense or content assist), find references to variables, and an outline view for program navigation and understanding are all basic editing features that today's developer expects from their editor. That was not always the case for IBM Z application development. Many years ago when ISPF was the only option, developers were forced to code in an environment without the common features provided by today's IDEs.
As I mentioned in my last blog
Introducing IBM Developer for z/OS 15.0 the latest version of IDz is based on Eclipse 4.8. This version of Eclipse supports the Generic Text Editor which in turn supports Language Server Protocol (LSP). The LSP was created by Microsoft to define a common API for editors and language servers to communicate. In another
blog from last year I described how if you own IBM Developer for z/OS Enterprise Edition (IDzEE) then you are entitled to support for the new Wazi Developer for VS Code and Wazi Developer for Workspaces clients as well. This pairing provides organizations with the ability to offer freedom of IDE choice to their developers. Allowing programmers to feel comfortable with their choice of editors and still benefit from the increased productivity provided by modern tooling. Today I am happy to share with you the next step in our journey. A new REXX editor, available in Eclipse, VS Code and Workspaces.
REXX Editor in Eclipse
REXX Editor
The new REXX editor in IBM Developer for z/OS 15.0.1 is based on the Eclipse Generic Text Editor and uses our new REXX language server. This same language server also supports
editing REXX in Wazi Developer for VS Code, as well as Wazi Developer for Workspaces. Now developers writing REXX in organizations that own IDzEE can benefit from the same editor features regardless of the development environment they choose.
The
new REXX editor is filled with features to help developers write and understand REXX quickly. As such the new editor is now the default for files with .rex or .rexx file extensions when using IDz 15.0.1. Of course, any file extension and editor association can be configured manually using preferences. In addition, using the Open With menu action allows users to choose which editor to open for the specific file. When opening existing REXX source users will notice syntax highlighting and an outline view. These features, common to modern editors, assist users in their understanding and navigation of the REXX exec. Language constructs such as comments, keywords and string literals are all highlighted in their own specific color making them easily identifiable. Each internal routine is parsed and displayed as an entry in the Outline view, and selecting one causes the editor to jump to that location in the source. When developers write new REXX or modify existing REXX, features such as code completion, syntax checking, find variable references and automatic indentation reduce the amount of time required to get the job done. Finally since the REXX editor in IDz is based on the Generic Text Editor it also contains support for Copy/Paste, Undo/Redo, and Find/Replace as well as other behaviors controlled by Preferences > General > Text Editors such as Show line numbers, Show whitespace characters and Enable quick difference indicators. As this is the first release there are some known limitations, however we hope to continuously improve the REXX editing experience in the future.
Find References
COBOL and PL/I Editing
IBM Developer for z/OS 15.0.1 also contains updates for COBOL and PL/I editing. Since the initial release in September 2019 of Enterprise COBOL for z/OS 6.3 and Enterprise PL/I for z/OS 5.3 additional syntax has been added to the languages via PTFs. IDz editors have been updated to support these new additions. For COBOL the changes include modifications to the JSON GENERATE and JSON PARSE statements, a new intrinsic function named UUID4, as well as some new instrinsic functions for date and time handling. To check which compiler PTF provides a specific new feature, refer to the
Enterprise COBOL Fix list and new feature support document. As for PL/I the syntax additions, they include new built-in functions SUBTO and XMLUCHAR, as well as additional support for DEFINE STRUCTURE with NULLINIT being allowed for STRUCT types and the REINIT statement being allowed to name a variable of STRUCT type. For more details refer to the
Enterprise PL/I 5.3 Language Reference. Again because of the magic of language servers this new COBOL and PL/I syntax support is consistent regardless of whether a developer is using Eclipse, VS Code or Workspaces.
One feature that is specific to IDz is the Filter View. This feature allows users to focus in on a specific type of statement while hiding the rest of the code in the editor. The
Filter View > Includes action has been improved for PL/I in this release. Synonyms for %INCLUDE such as -INC and ++INCLUDE are now considered include statements when using the Filter View action. Similar support for COBOL has existed previously and now the same behavior is available for PL/I.
Another popular feature for users when editing COBOL and PL/I source in IDz is the Program Control Flow diagram. With the click of a mouse a diagram depicting the flow of control for the program is generated. This diagram has been enhanced for both COBOL and PL/I in IDz 15.0.1, allowing the user to quickly understand the nodes in the diagram they have selected, which is really nice for large programs with many nodes. For example, a user could select a COBOL paragraph or section in the editor either by using the Outline view, the Open Declaration function or by simply highlighting the label itself. Then when the
Show In > Program Control Flow action is used, the node in the diagram representing that paragrah/section will be highlighted making it easy to identify the specific location. Likewise, from within the diagram, if a user selects a node and then uses an action to Show Program Control Flow to/from Here, the appropriate nodes will be highlighted. We like to think of this new node highlighting as being similar to the "you are here" indicator that you might see when looking at a map.
You are here, in the Program Control Flow diagram
User Build
Whether the enterprise is using Engineering Workflow Management (EWM) as the source control manager and build tool, or a combination of
GitLab and IBM Dependency Based Build (DBB), there are times when developers need to build one program and it's dependencies before committing changes to the repository. For times like these, IDz provides a User Build feature. In IDz 15.0.1 there are new default key bindings associated with the User Build commands. Of course these defaults can be changed by using Preferences > General > Keys, but for Dependency Based Build the key binding of Ctrl+Shift+Alt+D is associated with the Configure User Build command while Ctrl+Shift+Alt+B is associated with the User Build command itself. As for EWM the key binding of Ctrl+Shift+Alt+U is associated with the EWM User Build command for local resources while Ctrl+Alt+Shift+Z is associated with the EWM User Build command for remote resources.
Preference for DBB - User Build key binding
Besides having a new default key binding the EWM User Build has some other minor improvements. The name of the EWM project area and the name of the file selected for the build are now displayed at the top of the EWM User Build dialogs. Having this information present provides an easy point of reference while configuring EWM User Build settings prior to pressing Finish. One of the steps in configuring an EWM User Build is discovering and selecting the dependency files to upload for the build. Of course these files are required for the initial user build, but if the build fails for some reason and a subsequent build is attempted it may be desirable to use the previously uploaded files and not spend the time and effort re-uploading dependency files again, especially if they have not changed. To assist with these situations a new option to
Reset the dependency file selection for every build has been added to Preferences > User Build. If this option is selected then the dependency selections in the Additional Files to Load dialog are cleared and users must manually select them or rediscover them for each subsequent user build request.
RFEs Delivered
Have you ever thought "Wouldn't it be great if this software had that capability?", but you were not sure who to talk to about your idea? If so then the RFE Community is the place for you. The RFE Community provides users the opportunity to submit requests for enhancement to the IBM product development teams. Recently one of our z/TPF colleagues wrote a blog titled
The Guide to Good RFEs, which not only explains how the process works but offers tips regarding how best to fill out the information required. If you have an idea for improvement,
submit your IDz enhancement request today.
Working with JCL and Jobs has been a popular area for RFEs over the years and this IDz update includes two more of these enhancements. In the JES view or the Remote System Details table view, when selecting a job or a job data set, there is a new context menu named
Export > To Local available via right clicking. There could be many reasons a user might want to save job output to the local filesystem including historical archiving, attaching the output to another tool, or even opening a huge output spool in an external editor. If the user decides to open a job spool in the JES Spool editor, instead of using the new export action, the
JES Spool Outline view will be populated. A new menu action has also been added to the outline view. Select an item under the JESJCL node and right click to choose
Show JCL (SJ). This action also exists from the JES view but the idea to add it to the outline provides easier access after the spool has been opened for examination.
JES - Export to Local
Another enhancement in the Remote Systems Explorer view is now when using the action to export a z/OS connection, not only are the filters specific to the chosen connection preserved, but also any global filters, ones that are shared by all z/OS connections, are also included in the export.
Allocating and defining data sets has also been enhanced. The Data Set Characteristics dialog now has improved validation regarding LRECL and BLKSIZE values. Also, when using the Define Generation Data Group wizard to create a GDG, a new "Extended" checkbox provides users the option to create an extended generation data group. This option not only requires the latest client and server versions be installed but also that the GDG Extended feature is enabled on the system.
IBM Developer for z/OS supports the generation of JCL for multiple purposes including Compilation, Remote Syntax Check, ZUnit test case building and running. IDz 15.0.1 will now
generate a new Symbolic Parameter, named FELJOB, at the top of the generated JCL so users can determine the context of the JCL, by understanding the action that caused the JCL to be generated. For example, a statement that sets the value of FELJOB to be RMTCHECK indicates a Remote Syntax Check, while a value of ZUNITCMP indicates a ZUnit test case build. In addition a sample REXX named FELIF is provided in the SFELPROC library containing comments that show how to incorporate the REXX into a customized procedure in order to test the value of the FELJOB Symbolic Parameter in case, for example, you want to execute a step in the job only for Remote Syntax Check and not for building a ZUnit test case.
ZUnit, Debug, Code Coverage and more
Speaking of ZUnit, the user interface for running a ZUnit test case from a local project has been simplified, reducing the number of windows required from four to one. Additionally, tests added to a test case include both a test name and a test description. The ZUnit Runner Results view now optionally displays this description. The new option named
Show test description in the result view can be enabled in Preferences > z/OS Automated Unit Testing Framework (zUnit). And finally, IDz 15.0.1 now supports testing Batch PL/I programs using the new Dynamic Test Runner. This version supports creating unit tests by recording data. As this is the first release there are some limitations regarding supported data types.
Other areas that have been enhanced in IDz 15.0.1 are the z/OS Debugger and the Code Coverage collector. For an overview of the changes see
What's new in IBM z/OS Debugger 15.0.1. Now users can simultaneously collect code coverage information while stepping through a program that is being debugged. For more details about this cool new feature refer to the blog titled
Concurrent Debug and Code Coverage. Collecting code coverage has also been enhanced to output results in Cobertura format as well as allow for filtering results at the module, compile unit or file level.
As always the
Host Configuration Assistant (HCA) has also been updated. The feedback regarding this web application, and the amount of time it saves, has been extremely positive. So if you are using IDz 14.x and are planning an upgrade to IDz 15, or even if you are installing IDz for the first time, be sure to have a look at HCA. In addition to IDz, the HCA app supports IBM Z Virtual Test Platform, Application Delivery Foundation for z/OS (ADFz), IBM Dependency Based Build, IBM File Manager, IBM Fault Analyzer, IBM Application Performance Analyzer and more.
Conclusion
Developing and delivering software should occur in a standard manner across an organization. Common tools and common processes provide developers a familiar experience regardless of the application they are currently working on. IBM Developer for z/OS Enterprise Edition continues to remove barriers that might be associated with z/OS application development within enterprises. Technologies such as Language Server Protocol allows IDzEE to provide a common editing experience for developers regardless of whether they prefer Eclipse, VS Code or Red Hat CodeReady Workspaces development environments.
Integration with modern source control and pipeline coordination tools such as GitLab provides a common and consistent software workflow for
enterprises who are adopting DevOps processes. IBM Developer for z/OS remains the most comprehensive IDE available for z/OS application developers. As the seasons continue to change on the calendar, IDz continues to raise the bar by combining new and traditional technologies for the benefit of developers and enterprises.