Systems Programmers Tips and Tricks for ISPF
This article is about shortcuts - ways of saving time, energy and, above all, keystrokes, while using the interactive system productivity facility (ISPF) and associated product interfaces that we all know and love.
The shortcuts I'm going to explore were born mainly out of my conversations with other systems professionals, and as such this article represents a distillation of many professionals' recommendations. Each of us has our favorite tricks or customizations that we routinely perform, either on a new system or a new site, when becoming acquainted with the mainframe.
In an ideal world, we would all have the time to read the current version documentation and adjust our style to take advantage of the features that IBM continues to add to tried and true products. However, this isn't the world in which we live and work. Many of the ideas presented here are pretty well-established (tricks have been around for many years), yet I'm often surprised when I see a seasoned professional with no knowledge of one of these old-fashioned techniques. Some of the other suggestions are fresh from the latest versions, and some of you may not see these functions available on your system for some time. Keep this in mind when trying the settings suggested here, and check your installation documentation if something contained here doesn't appear to work in your shop.
(Note: Throughout this article, unless otherwise noted, all commands are assumed to be ISPF commands, and thus can be issued without any preamble, directly from the ISPF 'Command ===>' prompt.)
By default, current versions of ISPF implement a functionality set known as Keylists. Having worked with ISPF before Keylists were introduced, I find their added functionality dubious at best, and a downright nuisance at worst. They allow you to specify an alternate set of Program Function Keys (PF1-PF24) for each main screen or set of screens in the ISPF suite of tools and utilities.
I like a consistent set of PF keys throughout the entire ISPF interface, so Keylists provide little value. My reasoning is simple: I don't want to have to remember when the Function Keys change meaning or value. For someone who has always worked with the default modern set of PF Keys, changing these defaults can be a challenge at first, since people tend to like what they're familiar with. I encourage you to try the following suggestions for awhile and see if they work for you; there's more than one good reason to revert to the previous default behaviour. Try the following:
Under ISPF Option 0: type a 0 in the ISPF Command Input line. You will see a drop-down menu titled Function keys. From this drop down, select option 9, "disable Keylists" you'll see the advantage in a moment. Before doing this, you may want to try issuing the ISPF command KEYS, just to see what your current PF Key assignments are. I suggest you check the assignment of PF12 specifically. Unless your system programmer agrees with me strongly enough to enforce a change from the installation default for all users, PF12 will be assigned to the ISPF command CANCEL, thereby backing out of the current screen or function. After following the above instructions and disabling the Keylist function, check your PF Key assignments again and PF12 will now be assigned to the ISPF Command RETRIEVE.
The RETRIEVE command is one of the most useful ISPF standard line commands. I don't like typing unnecessarily and the ability to recall a previous command is considered standard in any command-line interface. You can still use either PF3 or PF4 to back-out of differing levels of screens. Functionality isn't lost, but is transferred to alternate keys.
Again under Option 0, select the drop-down menu Function Keys. Selection 6 removes the two lines of function keys displayed at the bottom of every ISPF screen. This returns two usable lines of valuable screen real estate. Most people who regularly use a z/OS* system know which function keys they need and use; they rarely need a reminder and they only need to type KEYS at the ISPF command to check the key assignments.
Also under TSO/ISPF option 0 is another favorite of mine: the Log/List drop-down menu. This presents four options, the first of which can be used to disable the Specify Disposition of Log Dataset screen that appears every time you exit ISPF to TSO. Remember, the objective is to save unnecessary keystrokes wherever possible (I rarely need this screen and prefer not to see the options it presents). This screen demands input and can't simply be PF3ed out of. If you really want to see it, you can populate it with default values using the same drop-down menu. I prefer to remove the screen completely as described in the next paragraph.
To change the default behavior, select option 1 from the Log/List drop down, fill in your preferred disposition for the ISPF Log Dataset. Unless you have a reason to keep your ISPF Log data, I generally select option 2: Delete data set without printing (Note: This is a vital setting for a RACF administrator as this data set will contain a record of all RACF commands entered during your ISPF session, including passwords in cleartext. Consequently it's also important to have an appropriate RACF profile protecting these datasets from casual prying). If you really don't want the data, the real trick is to enter 0 for the dataset primary and secondary page allocations - you'll never see that screen again.
While in the ISPF settings screen, I also disable the command line at bottom option. Most experienced systems programmers do this, finding the command line at bottom default difficult to navigate, hence adding keystrokes to the use of any TSO or ISPF command. Together with tab to point-and-shoot fields and tab to action bar choices also disabled, this combination saves me at least two keystrokes each time I type a command. To get to the command line now, just press the home key on most emulators. It's not necessary to use the key assigned to the NewLine character, or multiple tab keys to enter a command. Removing the split-line marker can also be done here by unselecting the "always show split line" option, again adding another useful line of available screen.
A useful command, or set of commands related to the Split Line, is SWAP or SWAP LIST. Since the introduction of multiple ISPF screens with the SPLIT NEW command, many system programmers commonly have three or more screens active at all times. Previously, there was some value in retaining the split line - and sacrificing the screen space it consumes - as this line serves as a visual cue that more screens are available and possibly hidden. With the original SPLIT NEW and SWAP n - "n" being the target screen number - it wasn't always obvious which screen you were currently viewing and which screen would be presented after a SWAP command. The SWAP LIST command solves this problem with a pop-up window from which you can easily choose the desired screen; a great help if you choose to run many screens at once. If you're still using only two ISPF screens at a time - PF2 to split, and PF9 to swap - I encourage you to try the SWAP LIST command.
For a better user experience, instead of using SPLIT or PF2 to create a new ISPF screen, try the START and START target commands - where target is the ISPF application or screen to which you wish to jump (i.e., START 3.4 to initiate Dslist). These complement the SWAP LIST functionality nicely. If you need to compare two screens, you can still type SPLIT at the command line, then position your cursor wherever you prefer the second screen to begin and hit ENTER.
Remember that the KEYS command isn't just for checking your current settings. You can use this screen to completely customize your ISPF. If you like START instead of SPLIT, I suggest assigning it to the PF2 key to simulate the old-fashioned behavior, but with the new-fashioned functionality.
At this point, after you have totally customized your ISPF environment to suit your work preferences, it's worth noting that ISPF saves these settings in members in the data set allocated to the DD ISPPROF. This is important to know, as the updates are only made permanent after the data set is closed (i.e. unallocated). This only happens when you exit the ISPF application to the TSO READY prompt. The current trend of letting your terminal log you off automatically - after whichever timeout your installation has chosen to use - means that the updates made during your session won't be permanently saved. To ensure your hard work in selecting the settings that suit you best isn't lost, remember to logoff ISPF cleanly. My personal preference is to always logoff cleanly, shutting down ISPF, then TSO, as well as my emulator - this stems from when VTAM and other control blocks could be left hanging, initialized but unused. Without this discipline, un-renewable system resources are eventually consumed, forcing a restart of subsystems, or even an IPL. Of course, in any version of z/OS, and most versions of OS/390*, this is no longer a concern.
In my opinion, ISRFIND, ISRDDN and DDLIST are some of the most useful features introduced in ISPF in recent years. The first two are TSO commands, hence issued at the ISPF command line as TSO ISRFIND and TSO ISRDDN. DDLIST is an ISPF command table entry that invokes ISRDDN. Originally meant as ISPF diagnostic tools for IBM* support specialists, once it was known that these facilities were available they quickly became a part of the systems programmers' favorite toolset. By way of acknowledging this, IBM continues to add functionality to these, especially DDLIST, which is now the preferred method of extracting this information from a running system. Principally, they provide an easy method for examining your current allocated data sets and their associated DDs. Several facilities are available in these tools, including browsing storage, search facilities and generating CLISTs to clone data set allocations. Use the built-in PF1 help screens to explore the power of these indispensable tools.
Now that you're changing your ISPF look and feel to suit your taste, take a look at the CUAATTR ISPF command. Here you can change the defaults concerning the appearance of ISPF fields and text - specifically the color, intensity and highlight properties of virtually any ISPF screen field: input or output. If you prefer to see a certain cursor type, or a bold text in specific fields, this is the place for you. The only change I regularly make here is removing the underline - USCORE - for normal input fields. I know where the input fields are and don't require a visual cue. I change the setting for normal entry field from USCORE to NONE, as I find it makes the screen look a little less cluttered. There are many other options to explore here.
After entering a data set high-level qualifier at option 3.4, press "Enter" to generate a list of data sets (i.e., DSLIST - data sets matching mask screen). From this screen, select the options drop-down menu. A couple of the menu items presented here look useful, and one day I may get around to trying them, but my preference here is to select option 1: DSLIST Settings.
I deactivate Display Edit/View entry panel as I've never found a use for it and this saves me a screen and keystroke every time I edit a sequential data set. Note that this screen is only presented under the following conditions: the data set is DSORG PS. Note that this screen is only presented under the following conditions: the data set is DSORG PS, ISPF doesn't recognize the Dataset Low Level Qualifier (LLQ), and you use "e" to edit rather than "v" to view. Therefore, some system programmers may be unfamiliar with the effect I describe; try creating then editing a PS file named something like "yourhlq.TEST.RUBBISH" using 3.4.
Lastly for ISPF, I want to bring attention to another keystroke-saving habit I practice. By default, ISPF uses the value of the current TSO PROFILE PREFIX to fill in the first qualifier of a data set name unless the data set name is quoted (a quoted data set is commonly known as "fully qualified"). This is best exploited when entering a data set name on almost any panel (Note: The most notable exception to this prefixing feature is in the DSLIST - option 3.4 - entry screen. A little thought will make the reason obvious; in DSLIST, we're usually listing a range of datasets matching a generic mask - asterisk or just blank - of some kind. ISPF has no way of knowing if we're interested in seeing only our own datasets - assuming TSO PREFIX is your HLQ, or a separate HLQ. ISPF makes the reasonable assumption that we have specified the target HLQ as part of the generic mask. Therefore, prefixing makes no sense and isn't implemented in this screen.) in ISPF; if the data set starts with your current PROFILE PREFIX setting, you don't need to put quotes around the data set name or add the high-level Qualifier - ISPF will do this for you. As a corollary to this, if the data set name is quoted at the start (i.e., the first quote) there's no need to close the quote, saving another keystroke, as ISPF will assume the quote and close it for you, generating a fully qualified data set name.
One final tip: when exiting ISPF, try "=x" from the command line. And as usual, I'll conclude with a question for the readers' education, or - in this case - my own knowledge base. How do you change the default position of the "command ===>" input line from bottom to top in the SDSF application? In a later issue, I'll explore the ISPF editor, SDSF and some useful TSO knowledge.
Michael Cairns is responsible for the mainframe products and operations of Consul Asia Pacific, a security- and compliance-solutions vendor. Michael can be reached at firstname.lastname@example.org.
comments powered by