management: What Can We Get from IDEs?
If you're as old as me, the chances are that you still code using the standard ISPF 3270 screen. The biggest change in the past 20 years has probably been the HILITE feature that can colour code source like JCL and COBOL.
But if you're just starting with z/OS, you'll probably look at us veterans with our ISPF screens, and think "what are they doing?" You'll be used to sophisticated GUI based development environments, or Integrated Development Environments (IDEs).
So, what advantages do IDEs for z/OS give us, and do they really matter?
Anything that has a GUI screen and controlled by a mouse is going to have advantages over the ISPF editor. For a start, IDE have more screen room: you can see more code in a screen. ISPF will show between 24 and 40 lines: IDz can show up to 190 lines in split screen mode. Scrolling up and down code using a mouse or scrollbars will always be faster than those PF7 and PF8 keys.
Navigation around programs is also faster. Most IDEs provide screens so you can get a 10,000 foot view of the code you're looking at, and navigate around it. For example, IDz can show the program flow of a COBOL program in a diagram:
Click on each section to jump to that part off the code.
Searching is also faster, and IDEs provide screens so you can more easily see hits, and where they are in the code.
All IDEs colour code source code to make it easier to view. For example, IDz editing a COBOL program will look something like this:
But even better, most will perform syntax checking in real-time. If there is a syntax error, it is highlighted. IDz shows an exclamation mark next to lines in error.
In this example, WS-I cannot store numbers as high as 100,000, and the CALL statement has a missing single quote.
Many IDEs can flag not just syntax errors in programming languages like COBOL or PL/I, but also SQL statements, IMS DL/I statements, and EXEC CICS calls. Many can also flag errors in JCL, REXX scripts and more.
If you reference a variable in code, often a mouseover will show the variable's declaration, and sometimes other information:
One of the biggest issues when using ISPF to edit code is to move around includes and copybooks. Often, programmers will look at a compiler listing rather than original code to see includes and copybooks. Many IDEs provide features that can be used to view copybooks by mouseover or other feature.
More Advanced Editing Features
The above features are found in most IDEs: free and commercial. However, there are other features found in some, but not all IDEs.
For example, many provide a 'snippet' feature: include commonly used code with the click of a mouse. Users can define their own snippets, or there may be pre-canned ones. As an example, IDz has a wizard for creating a new COBOL program that instantly provides the basic statements.
Some also allow rules to be coded. For example, a site may discourage Goto statements by highlighting them, or requiring that variable names follow a set naming convention.
Some IDEs also go further: providing code analysis tools. For example, IDz can provide code complexity metrics for source code. Identification of dead code (code that can never be accessed) can also be found.
Working with Jobs and Datasets
Many IDEs provide features to work with batch jobs: editing JCL, submitting jobs, viewing the status of jobs in JES, and viewing any output. For example, the following screen shows Zowe Explorer exploring batch jobs and batch output.
IDEs also provide features for working with z/OS datasets: listing, browsing, editing, copying, renaming, deleting, allocating, migrating. The following shows IDz listing datasets, and showing some options available for each:
What This Means
This is not a comprehensive list of all the benefits of each IDE, but shows some of the more commonly seen features. So, what does this mean?
The idea is to improve the productivity of hard-to-find mainframe developers. The hope is that these tools will make it faster for them to do the day-to-day tasks. But how much of a productivity benefit can we really get from these features? In 2010, IBM did a benchmark test, comparing ISPF with IDz (then Rational Developer for z). This measured a 27% reduction in the amount of time required to do basic tasks when using RDz for mainframe users with 15+ years of ISPF experience.
Another idea of IDEs is to make it easier for new mainframe staff to become productive. This same study also measured the productivity of staff new to ISPF. Adding these to the pool, the study measured a 50% reduction in time required.
So, IDEs are not just to make developer lives easier, but can lead to increased productivity.