The Linux Foundation Projects
Skip to main content
Blog | CBT Tape

ISPF Menus Made Easy

By | October 6, 2021

Written by Lionel B. Dyck, Contributor to CBT TAPE and an advocate for z/OS ISPF

Some History

Menus have been around since at least the 13th century (according to Wikipedia) when early Chinese entrepreneurs needed to provide a way for their customers to learn what was available to order. Other institutions have used menus, which we can also call directories, for locating items of interest. Libraries used the Dewey Decimal system to categorize book to make it easy for people to find the specific book they were interested in among the floors, sections of floors, bookcases, and shelves that contained books. Stores had directories to help customers find the items they were looking for in large, multi-story, buildings with multiple departments (toys, shoes, etc.).

Then came computer system. Initially the ‘menu’ was a cabinet of trays with labels containing the cards, or paper-tape, for the few applications that were available. After a very few years permanent storage was developed in the form of magnetic tape and direct access storage devices (aka DASD), and a directory was created that became a catalog. As more complex operating systems were developed the concept of directories was invents to categorize all the data files and applications stored on the DASD.

Catalogs, directories, menus – all just a way to help a human being easily find what they are looking for.

Then someone invented a computer terminal that allowed a human being to interact with the applications and data managed by the computer system. As the number of applications increased so did the inability to remember, and find, the applications and where they were located. That resulted in lost productivity until someone invented the first computer menu. As the terminals at that time were line oriented, the menu was a series of lines printed, or displayed, listing available options for the user to select from.

In the 1970’s IBM released the Structured Programming Facility (SPF) for use with the early 3270 display terminals and full screen panels and menus became easier to use. SPF evolved and in 1982 became the Interactive System Productivity Facility/Program Development Facility (ISPF/PDF) that we have today and both IBM and ISV’s. Over the years it has improved as new capabilities were added, but it remains the main menu interface for the z/OS Time Sharing Option (TSO) user today. While it isn’t graphical, it does support point-and-shoot using both a mouse (move mouse and press left mouse button) and using the keyboard (tab to field and press enter).

While ISPF is not a GUI, it provides an extremely efficient, and user friendly, interface to the z/OS system for the TSO users.

Is the ISPF menu system perfect? The answer is no. There have been efforts by various vendors and individual companies to enhance the menu experience.

This article will discuss two of those efforts. The Product Launch Point (PLP) and EZMENU. Both are free and open source.

Product Launch Point (PLP)

The first tool is the PLP application. PLP was developed starting in early 2000 as a result of a project to consolidate multiple data centers, each of which had their own set of ISPF menus for the various IBM, ISV, and inhouse applications. Each of the existing menus had good and bad points, however the challenge was the need for a single set of menus that would be easy to maintain. PLP grew and was well received, not just at the installation where it was developed, but also at several others who downloaded it and provided feedback.

The advantage of the PLP design is that the menu was totally dynamic and did not require customized invocation execs to allocate, or LIBDEF, the required libraries. The only external requirement is the availability of a Dynamic STEPLIB command (found on file 452 of the CBT Tape – if a STEPLIB is required.

The entire menu is contained within an ISPF table that is accessed by all users. To allow changes there is an Administrative interface that allows the table to be updated while others are actively using the table. It does this by making a copy of the table for updating, then copying the table back when the updates are completed.

Being an ISPF table there are many capabilities that can be gained that a traditional ISPF menu panel does not have, as you can see from the screen capture (below).

Below is an example of the power of PLP – this is how all the elements required to invoke the application are defined. Including the ability (not shown) to define the allocation of additional DD names and associated datasets.

The PLP package includes an installation guide and a user guide.

Among the useful features of PLP are:

  1. Multiple menus are supported by invoking PLP with /xxx, where xxx is the name of a menu
  2. User menus are supported which are unique to the individual user
    1. Including the ability to add an ‘alias’ of a command from a menu to the user menu
  3. Submenus are supported


The next menu tool is called EZMENU because it is even easier than PLP, although not as complete or robust.

This tool was created for use with the new CBT Starter Kit that will be available soon at as a collection of CBTTape tools for installations that are new to the CBTTape to get a feel for what’s available. Then it was generalized for broader use.

This is what it looks like in use – just like a traditional ISPF Menu with the numbers working as a selection number in the Option entry field and as point-and-shoot field. To help the infrequent user the available commands are displayed above the table of commands.

The available commands are:

Find, abbreviated as F, to find a command where the find string may be found in the command name or description.

Locate, abbreviated as L, to scroll the table to the command selection number requested.

Only, abbreviated as O, to remove from the table display all rows that do not have the requested string.

Refresh, abbreviated as R, to refresh the table after Only is used.

The menu is an ISPF table that is generated from data that is found in a member in the same library as the EZMENU exec, or the entire dataset name can be specified if the menu data member resides elsewhere. The EZMENU exec can be easily modified, since the REXX source is provided, to look elsewhere if desired.

The menu data format is very simple and consists of six (6) keyword/value pairs. Command, Desc, and Action are required for each menu option.

Keyword Value
Title: The title to be used at the top if the Menu Panel (case sensitive)
Sort: Yes (default) or No, to sort the table by command name
Help: Optional name of an ISPF Tutorial Panel for the Menu
Command: Command (or Application) name (8 characters)
Desc: Short description of the command (case sensitive)
Action: Instructions to invoke the command


The action is very similar to what would be coded in an ISPF Panel, which is no surprise as it is an ISPF application that is being invoked.

The available actions are:

Action Description
CMD(XXX) Select CMD(xxx) NewAppl(CBT) Passlib
PGM(XXX) Select PGM(xxx) NewAppl(CBT) Passlib
PANEL(XXX) Select Panel(xxx) NewAppl(CBT) Passlib
TSO xxx Address TSO xxx
BROWSE dsn Browse dsn or dsn(member)
Edit dsn Edit dsn or dsn(member)
View dsn View dsn or dsn(member)


Note that if &zparm is found on any of the actions that a popup will be displayed.

And this is what the data that is used to generate the menu looks like:

And the result is a dynamic ISPF menu that can be easily changed, and more importantly it can be easily searched and thus used.

How to get EZMENU and PLP

There are three ways:

  1. Download from the author’s website from the ISPF Tools menu
  2. Get one, or both, from GitHub
    1. Clone the ezmenu repository from
    2. Clone the plpispf repository from
  3. Download File 312 from – check the updates directory for the latest

Lionel B. Dyck is the Co-Author of ZIGI (z/OS ISPF Git Interface), Author of dozens of open-source z/OS tools, including FTPBatch, XMITIP, and PDSEGEN. Contributor to the CBTTAPE ( and an advocate for z/OS ISPF. Host of and sites.