0% found this document useful (0 votes)
12 views213 pages

ISPF - Users Guide

Uploaded by

Vasco Silvestre
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views213 pages

ISPF - Users Guide

Uploaded by

Vasco Silvestre
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 213

Author

Franz Lanz
Panoramaweg 27
72658 Bempflingen
Germany
ispf@lanz.de

ISBN 978-3-11-037548-0
e-ISBN (PDF) 978-3-11-037559-6
e-ISBN (EPUB) 978-3-11-039788-8

Library of Congress Cataloging-in-Publication Data


A CIP catalog record for this book has been applied for at the Library of
Congress.

Bibliografische Information der Deutschen Nationalbibliothek


Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der
Deutschen National -
bibliografie; detaillierte bibliografische Daten sind im Internet
über http://dnb.dnb.de abrufbar.

© 2015 Walter de Gruyter GmbH, Berlin/Boston


Coverabbildung: OlgaYakovenko/iStock/thinkstok
Satz: PTP-Berlin Protago-TEX-Production GmbH, Berlin

www.degruyter.com

Preface

Since approximately 1980, I worked many times with the Interactive System
Productivity Facility (ISPF) (a subsystem of z/OS driven by TSO) during my
activities as external advisor, programmer and lecturer in the IBM host. As the
name already says, this sub-system is designed to help users in the IBM
Mainframe host environment to develop a higher productivity in IBM z/OS. I
can promise you, ISPF fulfils this task very well.
As soon as I was more familiar with ISPF and so had outgrown to the beginners
stage, the desire emerged in me to automate and accelerate some recurring
operational sequences if possible. I have looked around myself on the book
market which book can support me with the realization of the desire on a high
level. However, I found no book, which would be suitable.
Since I developed at home and abroad a set of procedures and programs during
my lecturer, adviser and programming activities in different enterprises, which
often brought me substantial accelerations of my work in z/OS, I decided to
publish my experiences in handling ISPF as well as the developed programs in
this book. This program collection is SMART ISPF UTILITIES called. The
procedures and programs described in this book can be from internet
downloaded.
The intention of this book is to support you to become a professional in
handling ISPF. Since the knowledge in the ISPF, with which you as a reader
approach this book however are surely very different, constructed the book
modular. Thus, you can use the book either as a pure textbook or as a manual
for your daily work. Many cross references as well as an extensive index
supports you in the navigation within the book. I developed some parts of the
material in the last twenty years during my practical work at customers’ sites,
and I used these parts for my daily work. That means that the procedures
described here are in practice established during my work with ISPF since
many years.
This book will support you to reach your full potential in using ISPF as an
application programmer, a system programmer or another z/OS-ISPF user. You
will learn how you use the ISPF system and its subsystems to perform
professional operation within z/OS. Additionally you can enhance your
programming skills by referencing the programs of SMART ISPF
UTILITIES available on internet, in order to become a skillful ISPF genuine
power user.
Bempflingen, in March 2015 Franz Lanz

Contents
Preface
1 Introduction
1.1 Readers previous knowledge of ISPF
1.2 Using this book
1.3 Screens, source codes, JCL and other displays
1.4 Labeling of important tips
1.5 Citations from other publications
1.6 IBM glossary
1.7 z/OS basic information
1.8 ISPF reference books
1.8.1 ISPF BOOKS FOR ISPF USERS
1.8.2 ISPF BOOKS FOR ISPF APPLICATION PROGRAMMERS
1.9 TSO reference books
1.10The ISPF services
1.11Working with ISPF
1.12ISPF interaction
1.13The 3270 screen
1.13.1 3270 SCREEN LAYOUT
1.13.2 THE FULL SCREEN TECHNOLOGY
1.14 The ISPF online help facility
1.14.1 CALL THE ONLINE HELP FACILITY
1.14.2 OVERVIEW OF ALL COMMANDS AND FUNCTIONS OF
ISPF
1.14.3 DESCRIPTION OF THE DSLIST COMMAND
1.15 ISPF sub-systems
1.15.1 SDSF – SYSTEM DISPLAY AND SEARCH FACILITY
1.15.2 IBM DATA SET COMMANDER FOR Z/OS
1.15.3 FILE MANAGER FOR Z/OS
1.15.4 MVS/QUICKREF
1.16 Information sources

2 Technical basics
2.1 Data sets
2.1.1 ALLOCATION OF DATA SETS
2.1.2 NAMING CONVENTIONS FOR DATA SET NAMES
2.1.3 THE RELEVANCE OF QUALIFIERS
2.1.4 DATA SET TYPES
2.1.5 OTHER DATA SET TYPES
2.1.6 CONCATENATED DATA SETS BASICS
2.1.7 PARTITIONED CONCATENATED DATA SETS
2.1.8 SEQUENTIAL CONCATENATED DATA SETS
2.1.9 ABBREVIATIONS CONCERNING DATA SETS

3 The TSO/ISPF logon process


3.1 The logon procedure
3.2 TSO start and the user logon process in detail
3.3 ISPF start
3.3.1 NECESSARY ISPF LIBRARIES
3.3.2 DISPLAY CURRENTLY EXISTING LIBRARY STRUCTURES
3.3.3 ISPF TABLE SERVICE DATA SETS
3.3.4 THE USER PROFILE LIBRARY ISPPROF
3.3.5 CONTENTS OF ISPF PROFILE LIBRARY
3.3.6 THE ISPF START COMMAND
3.3.7 THE INITIAL LOGON PROCEDURE XYZLOGON
3.3.8 RULES HOW A LOGON PROCEDURE MAY END
3.3.9 THE PRIVATE LOGON PROCEDURE SLOGON
3.3.10 EXAMPLE OF A LOGON PROCEDURE
3.4 The SLOGON procedure of the SMART ISPF utilities
3.4.1 INSTALL THE SLOGON PROCEDURE

4 Customize ISPF
4.1 Available 3270 screen formats
4.2 ISPF options setting
4.3 The ISPF settings panel (Selection 0)
4.4 Panels and their handling
4.5 The structure of ISPF panels
4.5.1 USING HELP PANELS
4.6 The primary option menu
4.7 Screen splitting
4.7.1 ESSENTIAL RULES AND TIPS FOR SPLIT SCREEN
4.7.2 DIRECT ACTIVATION OF AN ISPF LOGICAL SCREEN
4.7.3 EXAMPLE, WITH EIGHT LOGICAL SCREENS OF ISPF
4.8 The program function keys of ISPF
4.8.1 OPTIMIZE PF KEY SETTINGS
4.8.2 SWITCHING ON THE PF KEY SETTING DISPLAY
4.8.3 UTILIZE KEYLISTS FOR PF KEYS
4.8.4 DISPLAY THE PF KEY ASSIGNMENT IN A KEYLIST
4.8.5 PF KEYS USE WITHOUT USING KEYLIST

5 ISPF command tables


5.1 Execute programs in a TSOP/ISPF environment
5.1.1 ONLINE EXECUTION
5.1.2 BATCH EXECUTION
5.2 Introduction to the ISPF command technology
5.2.1 THE MEMBER ISPCONF
5.2.2 DATASETS FOR COMMAND TABLES
5.2.3 CREATING YOUR OWN ISPF COMMANDS
5.3 Program SICMD
5.3.1 EDIT ISPF COMMANDS USING SICMD
5.3.2 DISPLAY THE LIST OF ALL STANDARD ISPF COMMANDS
5.3.3 DEFINE THE CALL OF SICMD AS COMMAND
5.3.4 GENERATING A LIST OF COMMANDS

6 DSLIST – Data set lists


6.1 The DSLIST panel
6.2 The possibilities of the action bar for DSLISTs
6.3 The DSLIST panel fields
6.4 DSLIST panel processing
6.4.1 THE DSLIST PRIMARY COMMANDS
6.4.2 THE COMMANDS MEMBER AND SRCHFOR
6.4.3 DSLIST LINE COMMANDS
6.4.4 DSLIST SETTINGS
6.4.5 EXAMPLES OF THE DATA SET LIST SETTINGS
6.5 Personal data set lists
6.5.1 CREATING PERSONAL DATA SET LISTS
6.5.2 CALL DSLISTS
6.6 Entering the DSLIST command with the name of a
DSLIST
6.6.1 ENTERING THE DSLIST COMMAND WITHOUT
PARAMETERS
6.6.2 USING THE VOLUME SERIAL FIELD
6.7 DSLIST optimal use with command tables
6.7.1 ORGANIZATION AND NAMING CONVENTIONS
6.7.2 CALL DSLISTS USING THE ISPF COMMAND TABLE

7 The Object/Action Workplace


7.1 The ISPF workplace panel
7.1.1 CALLING THE WORKPLACE VIA THE COMMAND TABLE
7.1.2 OPERATION OF THE WORKPLACE PANEL
7.1.3 ACTION COMMANDS IN THE WORKPLACE PANEL
7.2 Examples of workplace operation

8 The ISPF editor


8.1 Table of EDIT primary commands
8.2 Table of EDIT line commands
8.3 Displaying and maintaining an edit profile
8.3.1 SETTING EDIT OPTIONS WITH EDSET/EDITSET
8.3.2 EDIT PROFILE SETTINGS AND THEIR USE
8.4 Colored code for EDIT and VIEW
8.4.1 COLORED CODE - WHAT IS IT?
8.4.2 SETTING THE COLORED CODE
8.4.3 UNIFORM LAST LEVEL QUALIFIER
8.5 Edit recovery
8.6 The UNDO function
8.7 Turn the UNDO function on and off
8.8 FIND and CHANGE
8.8.1 DEFINITION OF SEARCH OPERANDS
8.8.2 DEFINITION OF SIMPLE SEARCH TEXTS
8.8.3 DEFINITION OF SPECIAL SEARCH TEXTS
8.9 Exclude
8.10 SHIFT and OVERLAY
8.10.1 EXAMPLE ONE FOR USING OVERLAY
8.10.2 EXAMPLE TWO FOR USING OVERLAY
8.11 CUT and PASTE
8.11.1 DATA TRANSPORT VIA THE CLIPBOARD OF THE PC
SYSTEM
8.11.2 DATA TRANSPORT VIA THE ISPF CLIPBOARD

9 Utilities for allocated data sets


9.1 DDLIST – Description and call
9.2 DDLIST operation
9.3 Find a member
9.4 Free a data set allocation
9.5 Warning when inconsistent data set structures exist
9.6 The display options SHORT and LONG
9.7 Display system library chains
9.7.1 DISPLAY OF PARMLIB MEMBER ALLOCXX
9.7.2 DISPLAY THE LINKLIST CHAIN
9.7.3 BROWSING STORAGE AND LOADED MODULES

10 Secret Programs
10.1The TSO command CONCATD
10.2Program ISRDSLST
10.3The TASID program
11 The SMART ISPF utilities
11.1 Naming conventions
11.2 The dynamic panel concept
11.3 List of programs
11.4 Program descriptions
11.4.1 EDIT MACRO
11.4.2 EDIT MACRO #ALTXT
11.4.3 EDIT MACRO #EDMEM
11.4.4 EDIT MACRO #IMACROA
11.4.5 EDIT MACRO #IMACRO1
11.4.6 EDIT MACRO #IMACRO2
11.4.7 EDIT MACRO #ISPFB
11.4.8 EDIT MACRO #LCH
11.4.9 EDIT MACRO #SPLJ
11.4.10EDIT MACRO #SSS
11.4.11EDIT MACRO #SSSCH
11.4.12EDIT MACRO #SU
11.4.13EDIT MACRO #TSOB
11.4.14EDIT MACRO #VERASE
11.4.15PROGRAM SCURSOR
11.4.16PROGRAM SDOC
11.4.17PROGRAM SLE
11.4.18DATA MEMBER SLOGDSN
11.4.19PROGRAM SLOGON
11.4.20PROGRAM SPROFEDT
11.4.21ISPF VARIABLES LOAD MEMBER SPROFVAR
11.4.22PROGRAM SSC
11.4.23PROGRAM SSS
11.5 Installation of SMART ISPF utilities
11.5.1 DOWNLOAD AND UNZIP
11.5.2 INSTALLATION
11.5.3 ALTLIB COMMAND
11.5.4 MAKE THE SMART ISPF UTILITIES READY TO RUN
List of screens
List of programs
List of tables
List of JCL
Bibliography
Index
1 Introduction
1.1 Readers previous knowledge of ISPF
This book is not only a conventional schoolbook with a systematic explanation
of contents. It is rather more a handbook either for beginners as well as for
advanced users. What previous knowledge should a user of this book have?
Beginners:
These persons should have a basic knowledge of z/OS, TSO, I SPF, JCL, Data Sets
and so on. There are some books on the market designed to introduce
beginners in the mentioned systems and subsystems.
Advanced users:
These persons have a multi-year experience in z/OS and its subsystems. These
readers can use this book as a reference book to learn advanced methods in
practical using of ISPF.

1.2 Using this book


1. You can use this book as a traditional manual to learn systematically how to
use ISPF. In this case, you will use the book by executing the examples showed
in the book to become an advanced ISPF user.
2. However, you can use this book by selecting special parts of interest for you.
I myself use the book as a reference when I am searching for a special
procedure. You will find many examples for nearly all tasks in ISPF during your
daily work. You should use the index dictionary to find descriptions of special
advanced techniques in using ISPF. I included many examples for these cases. I
have tested all examples very thoroughly.

1.3 Screens, source codes, JCL and other displays


This book contains many texts that are with the courier new font formatted.
These texts always come from an ISPF screen display. These text parts often
consist of whole ISPF screens, program sections, entered commands, JCL and
printouts of results of an action on the z/OS system. Texts that span multiple
screen displays I have assembled accordingly. Important texts I have
each grayed out so you can find them easily.

1.4 Labeling of important tips


When I explain special procedures or tricky techniques, you will find a box in
the text, marked with one of these Icons:
for hints, tips, recommendations

to indicate important warnings and “caution!”

for notes and remarks.

Boxes without icons indicate conclusions and similar contents. These notes
describe sometimes also input rules or the sequence of difficult procedures.

1.5 Citations from other publications


In this book, you will sometimes find excerpts from other publications or the
Internet. These excerpts are always set in italics and its source is mentioned.

1.6 IBM glossary


It is impossible for me to explain all special words contained in this book. You
can find all such words in the Dictionary of IBM & Computing Terminology.
You can download this dictionary from the following URL:
http://www-03.ibm.com/ibm/history/documents/pdf/glossary.pdf
1.7 z/OS basic information
If you are a newcomer to z/OS, it may be helpful for you to get basic information
about this system. IBM has produced an internet entry to learn basics for z/OS:
http://www-01.ibm.com/support/knowledgecenter/zosbasics/
com.ibm.zos.zbasics/homepage.html? cp=zosbasics%2F0

The first page looks like this:

IBM z/OS basic skills education


Welcome. New to z/OS? You have come to the right place! The z/OS basic skills
Knowledge Center is the fastest way to learn and become productive on z/OS.
Once you have learned the basic z/OS concepts and skills presented here, you can
find the z/OS product documentation in this IBM Knowledge Center.
How ISPF runs:
ISPF is a subsystem of z/OS. To run, ISPF requires a terminal control program
(TCP). The TCP for ISPF is TSO/E → Time Sharing Option Extended.
Sometimes an ISPF user needs the assistance of TSO: e.g., when the ISPF user
would have access to a data set he must use the Allocation Service of TSO.
Also during logon: TSO have to process a Logon Procedure. At the end of this
procedure, ISPF starts using a special TSO command. The section 3.3.6 The ISPF
start command on page 38 describes the ISPF start command in detail.
To learn more about TSO see the following URL:
http://en.wikipedia.org/wiki/IBM_TSO
User’s rights in z/OS:
A TSO user (maybe running ISPF), a job or an internal start of a task initiates
each work on z/OS.
The z/OS Security Server (RACF → Resource Access Control Facility) controls
all users’ rights. Each user has its own rights.

Normally, his rights deduce from a RACF group. All TSO (and therefore all
ISPF) users are members in a RACF group. Each user can manipulate his rights
for his own resources to grant access rights for other users, but he can never
expand his rights beyond the group rights.
Display of panels:
You will find many panel displays within this book. These screen shots always
displayed in a frame and in fixed font “Courier New”. Sometimes I deleted
needless lines of the screen.
Program function keys:
In the 1970ies, when the 3270 terminal layout was developed, the keyboard
contains so-called Program Function Keys. By pressing such a key, the
following happens:
1. An Enter is to the application program sent.
2. The program reads screen contents altered by the user and gets information
about the pressed PF key.
Some keyboards of 3270 terminals in the late 1970ies were equipped with
real 24 PF keys. Since the 3270 screens used together with 3270 emulator
software on PC terminals only 12 F keys are available on the PC keyboard. The
PF keys 13 to 24 could normally simulated by pressing the uppercase key
together with an F key. In the last years, IBMs literature uses also the notation
F key instead of PF key. Up to now, you will find in the most IBM brochures the
PF notation for ISPF. Therefore, I will still use this term in this book. In later
chapters, you will see a comprehensive description of PF key using.

1.8-ISPF reference books


Of course, for such a big subsystem as the ISPF many reference books are
available. You can find these books free of charge in IBMs internet books
libraries. They are available in two types:
1. As PDF books for downloading to your PC.
2. Direct to display with an internet browser.
If you use this book here for your work in ISPF, you normally do not need any
ISPF book published by IBM. I described all procedures you need here. All
functions used, and the necessary parameters for practical work, are described
here. However, if you cannot find the solution for a task, then you should use
the original reference books.
In the following chapter, I show you where you can find all information to use
ISPF. Unfortunately, IBM changes from time to time methods to find a certain
type of reference books. Now you can use the following steps:
1. With the following URL you come into the general z/OS literature frame:
http://www-03.ibm.com/systems/z/os/zos/library/bkserv/
You can click on the line z/OS V2R1 documentation in PDF format. This
action leads you to z/OS V2R1 Elements and Features selection menu.
2. Press now Cntrl+F and enter the search text ISPF. The browser positions the
cursor on z/OS ISPF.
3. Click on this line and see the group of available ISPF publications.
4. Click on the book you want and the book is opened in your PDF reader. You
can now save it to your PC for later use.
Direct link to the ISPF library:
There is a direct link to the ISPF Library:
http://www-01.ibm.com/software/awdtools/ispf/library/
Under this link, you will find ONLY ISPF reference books. However, there are
also books for earlier releases listed.
IBM form number
All books within the IBM z/OS library have a dedicated Form Number. The
form number consists of three blocks of information each separated by a
hyphen:
1. The first part is a four-character item: two alpha characters and a two-digit
number. e.g., SC19 stands for all ISPF books.
2. The second part is a four-digit number defining the book within its group.
3. The third part is a two-digit number continuously upward counted for this
book.
Table 1.1 on page 5 shows the ISPF reference books and their form numbers
for z/OS release V2R1:

Table 1.1: ISPF reference books


Title Form number
z/OS ISPF Dialog Developer’s Guide
SC19-3619-00
and Reference

z/OS ISPF Dialog Tag Language Guide


SC19-3620-00
and Reference

z/OS ISPF Edit and Edit Macros SC19-3621-00

z/OS ISPF Messages and Codes SC19-3622-00

z/OS ISPF Reference Summary SC19-3624-00

z/OS ISPF Services Guide SC19-3626-00


z/OS ISPF User’s Guide Vol I SC19-3627-00
z/OS ISPF User’s Guide Vol II SC19-3628-00
Hint:
If you are searching for a book using the
form number then you should use only
the basic numberwithout the release
appendix. The system then shows all
available titles and you can choose
theproper exemplar.

The following listing shows such manuals you should have as an ISPF user or
an ISPF programmer:

1.8.1 ISPF BOOKS FOR ISPF USERS


SC19-3627 → ISPF User’s Guide Volume I
SC19-3628 → ISPF User’s Guide Volume II
These both books contain all information to use ISPF. Only the explanation of
the ISPF Editor is in another book:
SC19-3621 → ISPF Edit and Edit Macros
This book contains both the normal handling procedures for the ISPF editor as
well as the programming rules for Edit Macros. As you will see later, many Edit
macros are included in the SMART ISPF utilities.

1.8.2 ISPF BOOKS FOR ISPF APPLICATION PROGRAMMERS


As a normal user of ISPF, you do not need these books. If you plan developing
ISPF applications, see the book title ISPF Programmer’s Guide by the same
author.
SC19-3624 → ISPF Reference Summary
This manual contains short references for all commands and their parameters.
This is the right book if a programmer is familiar in developing ISPF
applications.
SC19-3619 → ISPF Dialog Developer’s Guide and Reference
This manual describes the development of applications in an ISPF environment.
The description for producing panels is without using the Dialog Tag Language.
SC19-3626 → ISPF Services Guide
This manual contains descriptions of all facilities, rules and techniques used for
ISPF programming.

1.9 TSO reference books


As I mentioned above, ISPF is running under control of TSO. Sometimes you
need the assistance of TSO, e.g. for data set access. Therefore, it is necessary to
know where you can find information concerning TSO commands. You need
only one book from the wide range of available TSO reference books:
TSO/E Command Reference Form Number: SA22-7782

1.10 The ISPF services


ISPF offers many services to program ISPF applications. As mentioned above
service groups define services. The Table 1.2 on page 7 shows the ISPF service
groups and their usage:

Table 1.2: ISPF service groups

Service Group Used for


Display Service display of panels and tables

working with libraries (LM stands for Library


LM Service
Management)

Table Service working with ISPF tables

FT Service dynamic production of JCL by using skeletons

Q Service query services


V Service handling of ISPF Variables

1.11 Working with ISPF


ISPF is a comprehensive and comfortable subsystem of z/OS. You can enter
commands, start programs and procedures, use full screen panels for input and
output of data. It is able to perform big applications for all purposes used on
z/OS computers. The following categories define working with ISPF:
Command
Execute a TSO or ISPF command e.g. ALLOC, FREE, SWAP NEXT, SPLIT NEW,
ISPFWORK, ISRDDN and so on.
Function
Execute a program or a procedure as a single task. The program or procedure
ends when the work is finished. For instance enter command Z in front of a DSN
in a DSLIST panel to execute a compress.
Dialog
Execute a program or a procedure to start a dialog. A dedicated action must
always end a dialog by pressing a PF key or entering an END command. E.g.
DDLIST, LCMDSMOD.
Application
Execute an ISPF application. An ISPF application may consist of a range of
programs and panels called in sequence on demand by the application. Each
ISPF application runs under a dedicated Application ID. E.g., SDSF, EDIT
Remark:
Each Application has its own pool of ISPF variables. Only the
Application knows their variables.

1.12 ISPF interaction


ISPF is an online dialog system. Its programs are always online during the
whole ISPF session. Each action by the user on the terminal sends the contents
of the screen to the system called an ISPF interaction. An interaction ends, when
the screen is again ready for input.
There are two ways to start an ISPF interaction:
1. By pressing the enter key. When this key is pressed, all changed contents of
the screen are to the application sent. The data are processed and a new screen
will be send to the terminal.
2. By pressing a PF key. The same work happens as when the enter key is
pressed. Additionally the application program can check what PF key is
pressed.

1.13 The 3270 screen


Introduction to 3270 Screen:
The following text is from URL:
http://en.wikipedia.org/wiki/IBM_3270 copied.
The IBM 3270 is a class of block oriented computer terminal (sometimes called
display devices) made by IBM originally introduced in 1971 normally used to
communicate with IBM mainframes. The 3270 was the successor to the IBM 2260
display terminal. Due to the text color on the original models, these terminals are
as green screen terminals informally known. Unlike a character-oriented
terminal, the 3270 minimizes the number of I/O interrupts required by
transferring large blocks of data known as data streams, and uses a high speed
proprietary communications interface, using coaxial cable.
Although IBM no longer manufactures 3270 terminals, the IBM 3270 protocol is
still commonly used via terminal emulation to access some mainframe-based
applications. Accordingly, such applications are to as green screen applications
sometimes referred. Use of3270 is slowly diminishing over time as more and more
mainframe applications acquire Web interfaces, but some web applications use
the technique of screen scraping to capture old screens and transfer the data to
modern front-ends.
You can use this URL to get more information concerning the 3270 screen
history.

1.13.1 3270 SCREEN LAYOUT


IBM designed the 1st 3270 screen layout in the early 1970ies. It consists of 24
lines and 80 characters on each line. Later the display ability of 3270 screens
expands to more lines and more characters on a line. The Table 1.3 on page 9
shows the current available screen layouts:

Table 1.3: 3270 screen layouts


Lines Characters/line
24 80

32 80

43 80

27 132
62 160
1.13.2 THE FULL SCREEN TECHNOLOGY
Many years ago, the full screen technology on the z/OS IBM Mainframe
systems came together with ISPF. This offers the ability to enter much data on
a screen and send these data in one go to the system.
We can differ between the following entry actions:
1. Start actions or set ISPF options using the pull down menus of the CUA line
on an ISPF panel. CUA → Common User Access. The CUA line appears as top line
on ISPF panels.
2. Enter primary commands at the command line and press enter.
Alternatively, press a PF key, which starts a primary command.
3. Enter line commands. Enter line commands only at those lines prepared for
entering such commands. For example in front of a DSN in a DSLIST panel.
4. Enter data on panels containing many input fields or data input areas like the
ISPF editor.

1.14 The ISPF online help facility


Learning to use ISPF is by the online help and tutorial facilities easier made,
which are available while using ISPF.

For example, if you need help filling in the data requested by an ISPF utility,
you can use the tutorial to help you understand the data entry requirements
for that utility.

1.14.1 CALL THE ONLINE HELP FACILITY


When you push PF1 on the Primary Option Menu, the ISPF Help Facility
appears. The most ISPF panels are also offering the Help function by pressing
PF1. You should use this facility when you need help on a panel.
The most panels also contain an action bar line. On this line is a help button.
In the primary option menu, you can move the cursor to this help button and
press enter. A pull down selection column appears.

Screentext 1.1: Selection of help themes


Enter the number of a theme in the first line and press enter. This leads you into
the area explaining the selected topic. Example: You can find the changes for
this ISPF release by typing 16 and pressing enter. The appearing selections
depend on the panel type. You should use this help function to get targeted help
within an ISPF application.

1.14.2 OVERVIEW OF ALL COMMANDS AND FUNCTIONS OF


ISPF
You can use the Online Help Facility to get an overview of all commands and
functions of ISPF. Perform the following steps:
1. Press PF1 when you are in the primary option menu. The panel table of
contents appears.
2. Enter i to select the alphabetical index of tutorial topics and press enter.
Screen 1.1: ISPF tutorial help index
3. Enter i again and press enter. A group selection of I group of ISPF help is
displayed.
4. Then enter i8 to select the display of all ISPF commands. The next table shows
the list of commands.

Screen 1.2: ISPF help display of all ISPF commands


tip:

ISPF has a very comfortable short cut method to jump directly to a dedicated
target panel. You can enter a string of commands separated by the so-called
ISPF Command Delimiter. This delimiter is normally a semicolon → (;).
The entered commands (separated by a semicolon each) execute
automatically in sequence and the target panel displays. To reach the lists of
ISPF commands directly perform the following steps:

In Primary Option Menu press PF1

Type in the following character string in the command line without


blanks: i;i;i8 and press enter.

The ISPF commands panel displays.

1.14.3 DESCRIPTION OF THE DSLIST COMMAND


When the panel of the ISPF command summary is displayed type in 8 in the
input field and presses enter. The description of the DSLIST command appears:

Screen 1.3: Description of DSLIST command


1.15 ISPF sub-systems
ISPF contains some very helpful sub-systems. I will give you in later chapters
more information about these subsystems. Maybe in your ISPF are some other
subsystems available. I give here only information about such systems I have
worked with.

1.15.1 SDSF – SYSTEM DISPLAY AND SEARCH FACILITY


Producer: IBM
SDSF provides a powerful and secure way to monitor and manage your z/OS
sysplex, in both JES2 and JES3 environments. SDSF’s easy-to-use interface lets
you control:
- Jobs and output
- Devices, such as printers, readers, lines, and spool dischargers
- Checks from IBM Health Checker for z/OS
- System resources, such as WLM scheduling environments, the members of
your MAS, and JES job classes
- System log and action messages
SDSF is the bridge between JES2 and ISPF. In the most z/OS installations is a
direct call to SDSF available in the Primary Option Menu of ISPF. The CUA line
at top of the SDSF panel offers many options to change the contents of panel
display in SDSF. See the SDSF Primary Option Menu:

Screen 1.4: SDSF primary option menu


1.15.2 IBM DATA SET COMMANDER FOR Z/OS
Description of this sub-system from the following URL:
http://www-03.ibm.com/software/products/en/data-set-commander

At a glance: (copied from IBM’s internet page):


IBM® Data Set Commander for z/OS® extends IBM interactive and batch
capabilities for performing operations on partitioned data sets (PDSs) and
partitioned data set extended (PDSEs) and their members. IBM Data Set
Commander for z/OS was formerly named IBM ISPF Productivity Tool for z/OS.
IBM Data Set Commander for z/OS:
- Provides batch processing capability for managing and manipulating PDS and
PDSE data sets.
- Manages the synchronization of the LLA cache for updated LLA directory entries
across the sysplex.
- Exploits new z/ OS support for PDSE member generations.
- Provides an integrated interface to Interactive System Productivity Facility
(ISPF).

1.15.3 FILE MANAGER FOR Z/OS


Description of this sub-system from the following URL:
http://www-03.ibm.com/software/products/en/filemanager/
At a glance: (copied from IBM’s internet page):
IBM® File Manager for z/OS® provides flexible, user-friendly tools for enhanced
file processing when working with z/OS data sets, DB2®, CICS, IMS™ or
WebSphere® MQ data of the IBM Determination Tools suite. File Manager
extends the standard browse, edit, copy, batch and print utilities of Interactive
System Productivity Facility (ISPF) to help developers work with that structured
data more efficiently.
File Manager for z/OS:
- Has extensive editing, browsing and batch and interactive capabilities that
support development and production.
- Finds, copies, edits, prints, compares and displays data quickly and easily.
- Helps users manipulate data using COBOL and PL/I record layouts interactively
or in batch.
- Enhances usability by enabling customization of which fields to display, copy or
print.
- Offers templates that provide a particular interpretation of a data set, defining
a logical view that you can use to view and manipulate the data in records as
discrete fields.
Use the following URL to get a short description of the File Manager for
z/OS: ftp://public.dhe.ibm.com/software/htp/pdtools/info/DatasheetFM.pdf
If the File Manager for z/OS is available on your z/OS, you can find the manuals
on the following URL:
http://www-01.ibm.com/software/awdtools/filemanager/library/

1.15.4 MVS/QUICKREF
Producer and Distributor: © 2002 Chicago-Soft
You can get an overview for this product from this URL:
http://quickref.com/newQuickRef/helpdocs/help?thisDoc=r7_overview
A short description of this subsystem follows here:
What is MVS/QuickRef?
MVS/QuickRef is Chicago-Soft’s online quick reference tool for ISPF and CA-
ROSCOE users under the z/OS operating system. MVS/QuickRef enables you to
invoke it over the active ISPF application, get a quick answer to a z/OS-related
question, then terminate it without affecting the active ISPF application.
Why do I need MVS/QuickRef?
It saves you time and money! You no longer need to stop work at your PC to look
up a message or abend code in a manual or find the proper manual to look in. The
most frequently needed z/OS reference information is instantly displayed by
MVS/QuickRef in a concise and easy-to-read format.

1.16 Information sources


The both user’s guides for ISPF have summarized perhaps 800 pages of text. It
is not my intention to copy parts of these manuals into my book. During the
description of procedures and methods in using ISPF, I give you tips where you
can find more information.
On the following pages, I explain where you will find exact descriptions of
commands and procedures helpful for your daily work with ISPF.
The ISPF help facility:
As explained in the section 1.14 The 3270 screen on page 9, this feature is an
excellent way to get help on each point within ISPF. ISPF panels of applications
should offer a help text for each field where an input value be entered.
Command sequences and solution examples:
The command descriptions and examples you will find in the IBM Reference
Books are sometimes for a beginner a little bit difficult to understand.
Therefore, I bother to insert many practical examples to give you a good
understanding. During my very long time working with computers I was often
thinking: When and where did I use the right procedure for my current task?
Therefore, remember the solutions contained in this book! To get a proper
result, the most tasks do not need execution of only one command. Rather you
need a sequence of consecutive commands. Each time when I show a command
or a sequence of commands, I give you information where you can find the
descriptions of these commands.

2 Technical basics
Although I said above that the user of this book should have some skills in z/OS,
I will give hereafter introductions to some important technical things.

2.1 Data sets


Processing of data is the main task of a z/OS system. Therefore, data sets are
very important elements of this computing system.
Remark:
All information concerning data sets are containing in the following manual:
z/OS V2R1 DFSMS Using Data Sets Form Number: SC23-6855

2.1.1 ALLOCATION OF DATA SETS


The most used methods to allocate a data set are:
– Using JCL during running of a batch job Example: Create a new sequential data
set on disk.

– By a TSO/ISPF user using ISPF menus or running procedures that contain


ALLOC statements.
– Example: Create the same data set as above within a REXX program: dsn =
"TESTUSR.TE33ST.X01"

2.1.2 NAMING CONVENTIONS FOR DATA SET NAMES


Basic structure of a DSN:
– A DSN is a structure of qualifiers subdivided by dots.
– A DSN is maximally 44 characters long including the dots between the
qualifiers but without an eventually available member name with its brackets.
– A DSN consists of minimal two qualifiers.
– Each qualifier in a DSN is one to eight characters long, the first must be
alphabetic (A to Z) or national (# @ $). The remaining seven characters are
either alphabetic, numeric (0 - 9), national or hyphen (-).
– The number of qualifiers may be generally unlimited but the 44 character
maximum length of the DSN bound it. This means there are maximal 22
qualifiers possible because a dot follows each qualifier without the last one.
– A DSN may expand by a member name enclosed in brackets.

For example, the following names are invalid data set names:
A name that is longer than eight characters (HLQ.ABCDEFGHI.XYZ)
A name that contains two successive periods (HLQ..ABC)
A name that ends with a period (HLQ.ABC.).
A name that contains a segment that does not start with an alphabetic or
national character (HLQ.123.XYZ)

2.1.3 THE RELEVANCE OF QUALIFIERS


Two parts of a DSN have a special impact when the z/OS system handles the
data set. These parts are the first and the last qualifier. They are abbreviated →
HLQ and →LLQ.
2.1.3.1 The high level qualifier (HLQ)
The first qualifier of a DSN is the High Level Qualifier. This qualifier has an
important impact when the system handles the data set:
– The master catalog contains an alias entry for each HLQ used by TSO/ISPF
users.
– This entry is normally the user’s name.
– This entry points to a user catalog.
– All information of user data sets then contains the user catalog.
– All data sets with the same HLQ are in the same user catalog.
Example: LISTCAT of an alias entry in a Master Catalog:

Caution:
If a user attempts to create a data set with a wrong HLQ, the system tries to catalog the data set in the
master catalog. Nevertheless, a normal user has no UPDATE rights on the master catalog. Therefore, leads
this attempt to an error. If you get such an error, first check the HLQ for correctness.

Error messages when a user tries to allocate a data set with a wrong HLQ:

2.1.3.2 The last level qualifier (LLQ)


The LLQ is relevant to the data set characteristics and contents. Especially for
ISPF data sets containing source codes of some programming languages e.g.
COBOL, PL1, REXX and JCL. Example: The ISPF Editor interprets the LLQ to set
the correct language depending on colored code for sources.
The SMS (Storage Management Service) system may contain standard
allocation values for data sets with special LLQs.

2.1.4 Data set types


Before I explain how you can work with data sets, I give a short description of
data set types. A comprehensive description of data set types is in the following
manual found:
z/OS V2R1 DFSMS Using Data Sets Form Number: SC23-6855
2.1.4.1 Partitioned data sets (PDS and PDSE)
At a glance:
– This is the most used data set type when we work with ISPF.
– The name means: These data sets are partitioned.
– A partitioned data set contains in its space members together with their data.
– A partitioned data set must reside on ONE disk volume.
– You can concatenate multiple data sets for input operations that are on the
same or different volumes.
– Each member logically builds a complete data set. Therefore, the system
handles it as a discrete collection of data.
– A partitioned data set arranges member names in ascending alphabetical
order.
– The member names can have up to eight alphanumeric characters. The rules
to build alphanumeric names can be above in section 2.1.2 Naming conventions
for data set names on page 17 found. The same rules are also valid for member
names.
There are two types of Partitioned Data sets: PDS and PDSE.

2.1.4.2 PDS
Description:
– A PDS can have maximal 16 extents.
– The space of a PDS is into two areas divided: The directory and the data area.
– The directory contains the member names with pointers to the data part of
the member in the data area.
– The member’s directory of a PDS has a discrete number of directory blocks.
The SPACE parameter of the allocation statement defines the number of blocks.
– The directory is located within the first extent of the PDS space. The directory
can only contain a limited number of member names. When the directory has
reached the maximum of member names, it is impossible to store more
members in this PDS. There is no simple way to extent the number of directory
blocks. There are utilities on the marked to expand a PDS directory
dynamically. One of these utilities is PDSFAST sold by the company: Software
Engineering of Amerika (SEA).
– The system writes the data of new or changed members always behind the
data area of the last stored member. When a member changed and then
restored under the same name, the data area that the member occupied earlier
becomes free. This free space cannot be reclaimed until the PDS is compressed
(online, or batch using the IEBCOPY utility).
– A store operation for a member fails if:
– The directory is full
– All 16 extents are full
– The disk is full

This method to put the data of each new or again stored member to the end of
the data area has important benefits:
The NEWCOPY technique:

It is possible to update a PDS concurrently by more than one user working on


some LPARs. Active programs on load libraries of transaction servers as CICS
and IMS may be updated even these systems are running. The transaction
system uses the old program until the operator refreshes it manually, because
the server has saved the position of all programs when it starts. The server does
not use the new version of such a program until it is by an operator command
refreshed. In CICS, the refresh is by the command NEWCOPY performed. Of
course, a PDS can only be compressed when all affected systems are shut down.

Screen 2.1: Data set information panel of a PDS

2.1.4.3 PDSE
A PDSE type data set is within the z/OS also called a LIBRARY.
– A PDSE can have up to 123 extents.:
– The member’s directory of a PDSE is located within the whole space of the
data set. There is no limit to store additional members unless:
– All 123 extents are full.
– The disk is full.
– A PDSE is not compressible.
– When a member is stored, all free space will used. Newly formed gaps will
immediately reused.

Advantages of a PDSE:
– The directory is physically located in the data space. Due to this, there is no
limit for the number of members stored in a PDSE.
– The data space can grow up to a maximum of 123 extents on one disk
volume.
– A compress is not necessary and not allowed.

Disadvantages of a PDSE:
– Concurrent updating of a PDSE by more than one LPAR is critical. This leads
to a destruction of this data set.
– The performance of a very large PDSE containing thousands of members is
remarkably lower than a same PDS is.
Example: Data Set Information of a PDSE:
I copied the data set of the PDS example to a PDSE. See the differences:

Screen 2.2: Data set information of a PDSE


Tips for using PDS versus PDSE:
– Load libraries for transactional server systems must be of type PDS.
– If several LPARS must use the same load library, allocate a PDS.
– User libraries only updated by one LPAR should be as PDSE allocated. The
managing of a PDSE is much more convenient for the user.
– A library of thousands of members works faster when it is a PDS.
PDS/PDSE allocation rules:
Consider the following rules when you allocate a PDS/PDSE:
– LRECL: 0 to 32760 Bytes (0 only for RECFM=U → Load libraries)
– RECFM: F, FB, FBA, V, VB, VBA, U
– DSORG: always PO

Remark:
PDS and PDSE members processing is sequential.

To allocate a PDS/PDSE member use the following statements:

2.1.5 OTHER DATA SET TYPES


Sequential data sets
This data set type is for ISPF user not very important. The LOG and LIST data
sets in ISPF are sequential organized. The ISPF Edit and Browse facilities
processes this data set type. Sequential data sets are expandable to over more
than one volume.
VSAM data sets
The EDIT and BROWSE functions of ISPF cannot handle this data set type.
DB2 databases
The EDIT and BROWSE functions of ISPF cannot handle this data set type.

Remark:
Some data managing systems for ISPF on the market are able to handle nearly
all z/OS data sets types. One of these is IBM's File Manager for z/OS. See the
section 1.15.3 File Manager for z/OS on page 14.
2.1.6 CONCATENATED DATA SETS BASICS
The z/OS offers the ability that many DD statements and many concatenated
data sets in one job step to use. The maximum number of usable DD and
concatenated data sets depends on the TIOT value in the ALLOXxx member in
the data set SYS1.PARMLIB. See the section 9.7.1 Display of parmlib member
ALLOCxx on page 174.
The following data set types may be concatenated:
– Sequential Data sets
– Partitioned Data sets
Rules:
– A string of concatenated data sets can only for input opened. It is unusable
for output operations.
– All concatenated data sets must have the same record format (RECFM). The
block size (BLKSIZE) may be different.
– If the RECFM is FB then the LRECL of all concatenated data sets must have
the same length.
– Members of partitioned data sets as well as sequential data sets can appear
in the same concatenation several times.
See a sample JCL using the IDCAMS utility to copy a combination of members
and sequential data sets to one sequential output data set:

JCL 2.1: Copy job for concatenated data sets


2.1.7 PARTITIONED CONCATENATED DATA SETS
For ISPF, concatenated data sets are very important. Before ISPF can start,
allocations of many data sets are required. The LOGON procedure runs under
control of TSO and allocates all necessary data sets.
The following DD allocations must be available before ISPF starts. If ONE of
these DD is not available, the ISPF start fails.

Table 2.1: Necessary data sets when ISPF starts

Name Used for Remarks

output and input, no


ISPPROF user profiles
concatenation

programs used by
ISPLLIB read only chain
ISPF

ISPMLIB message texts read only chain

ISPPLIB panel definitions read only chain

ISPSLIB ISPF skeletons read only chain

ISPTLIB ISPF tables input read only chain

SYSPROC or SYSEXEC command procedures read only chain

tip:
You can use the ISPF utility DDLIST to display your current libraries and their
allocated data sets. The following text shows a partly excerpt of the output
of DDLIST:
As you can see, for almost DD definitions concatenations are used.
ISPTABL and ISPPROF are the only ISPF data sets used by ISPF itself for output.
ISPF stores changed ISPF tables back into these data sets. Therefore, there
must be a library allocation without concatenated data sets.
A special case is the DD pair ISPTABL and ISPTLIB:
ISPF processes ISPTABL and ISPTLIB as follows:
ISPTABL→ ISPF uses this DD to store new and changed tables.
ISPTLIB → ISPF uses this DD to read tables.
As you can see in the above excerpt of a DDLIST display, the data set
USER1.ISPPROF is the only data set in the allocation of ISPTABL and the first
data set in the ISPTLIB concatenation. This construction guarantees that a
changed member can always found at the next call for it.
Advantage of partitioned concatenated data sets:
When a member is in a chain of partitioned data sets searched, the first
occurrence of this member will found and used even if there are additional
members of the same name in a data set further down in the chain.
Examples:
– If a panel member in ISPPLIB is normally located in the third data set of the
chain is changed and then written to the first data set of the chain it is found
and used in the future always in the first data set of the chain.
– DDLIST was used to search the procedure member $DOC in all concatenated
data sets. See the following excerpt of the DDLIST output:
When the procedure $DOC called for execution by ISPF the first occurrence
contained in data set USER1.NEW.REXX is found and executed.

2.1.8 Sequential concatenated data sets


Basics:
The reading program sees the chain of concatenated data sets as one data set.
The I/O system of z/OS reads sequential concatenated data sets as one data set.
This means, there are all records of a chain of data sets read.
– The records are coming in, as they are located in the sequence of the data
sets.
– The end of file condition is indicated when the last record of the last data
set in the chain is reached.

Advantage of sequential concatenated data sets:


The I/O system reads collections of sequential data sets in one go.

Remark:

Members of partitioned data sets may be as a normal sequential data set


used. Therefore, the input in the example below can be a mix of PDS members
and sequential data sets.

Caution:
If a partitioned data set appears in such a concatenation without a member
name, the IDCAMS utility copies only the directory of the PDS to output and
no warning and no error message appears.
JCL 2.2: Example job to copy a chain of concatenated data sets to one data set

2.1.9 Abbreviations concerning data sets


The following table shows some abbreviations and their meaning for data set
handling:

Table 2.2: Abbreviations concerning data sets

Abbr. Full Name Description

DSN Data Set Name name of a data set

PDS Partitioned Data Set partitioned Data Set

partitioned Data Set


PDSE Partitioned Data SetExtended
Extended

HLQ High Level Qualifier 1st qualifier of a DSN

LLQ Last Level Qualifier last qualifier of a DSN


VOLSER Volume Serial Number name of a disk volume

ENQ enqueue term to hold a resource

DEQ dequeue term to free a resource

DSLIST Data Set List collection of data set names

3 The TSO/ISPF logon process


Before we can work with ISPF on our z/OS, we have to run through some steps:
1. We call the 3270 emulation software on our PC.
2. The 3270 emulation software connects to a Mainframe Session Manager.
3. The session manager offers some systems to which we have access.
4. We select a path to a TSO on that z/OS we want to logon.
5. The TSO start handler assembles the start job for our TSO user and submits
it. The name of the start job is the TSO user ID. The JCL EXEC statement contains
the name of the started task of the LOGON procedure. JES2 finds the task in one
of the SYSPROC chains.
6. JES2 starts the logon job. The TSO processor IKJEFT01 is loaded.
7. TSO processes the logon procedure.
8. The logon procedure starts ISPF.

Steps 1 to 4 may differ from installation to installation in a z/OS computing


center. However, steps 5 to 8 are always the same. The most elegant way to
come into an ISPF on a z/OS operating system is the Host on Demand
(HOD) system offered by IBM.
The ISPF logon procedures differ from company to company. I describe here
only the general steps. The most important element of an ISPF logon process is
the logon procedure:

3.1 The logon procedure


The system programmers department designs and installs the start process of
TSO/ISPF. An important element within this process is the logon procedure. It
starts automatically when a user logs on.
The LOGON procedure…
– uses programs developed in CLIST or REXX language.
– allocates all necessary basic data sets to run ISPF and those for all subsystems
that can run under ISPF’s control (SDSF, GDDM and others).
– calls ISPF
Your own LOGON procedure:
In the most z/OS computing centers is it possible to use an own by the user
developed logon procedure. To do this the user must be able to develop
programs in REXX or CLIST. Volume 2 ISPF Application Programmer's Guide
explains this technique in detail.

When ISPF ends, the logon procedure continues with the statements following
the ISPF start statement. Two things can happen:
– The logon procedure performs a TSO LOGOFF command. In this case, the user
falls back to the session manager.
– The logon procedure ends without a TSO LOGOFF command. In this case
the TSO READY PROMPT appears and the user gets the chance to call an own
logon procedure or enter some other TSO commands. See the following
examples.
Example 1: Call an own LOGON procedure:
The LOGON procedure has ended without a TSO LOGOFF. Therefore, the user is
able to call his own LOGON procedure.

Example 2: Logon to another TSO user ID:


The current TSO user is left and a LOGON to user2 starts: (of course, the same
user may repeat its logon here)

When a user enters a LOGON command like this, the standard TSO logon panel
appears and the user has to enter the necessary values for the new called TSO
user.
3.2 TSO start and the user logon process in detail
In this chapter, I will explain how the logon process works in detail and what
resources and requirements are necessary. As I mentioned above, the most
important thing to logon to TSO/ISPF is the logon procedure.

Where do we find the name of the logon procedure?


There are two locations where we can find the name of the logon procedure:

The first available location is the ISPF primary option menu:

Screen 3.1: ISPF primary option menu showing the TSO logon procedure name

As can be seen in the above screen, the TSO logon procedures name
is XYZLOGON:
The second location is the TSO Logon Panel:
When the session manager controls the logon process, the TSO/E Logon Panel
does not appear and the previous logon procedure is used. Therefore, we do
not see this panel during a logon process. To achieve the display of this panel,
we leave ISPF in a normal way. Then, when the TSO READY screen displays, we
enter a logon userid command (e.g. logon xyz0001) and the TSO/E logon panel
appears:
This panel contains many empty lines. I removed these lines to save space.

Screen 3.2: TSO/E logon screen showing the TSO logon procedure name
The Procedure ===> XYZLOGON field contains the TSO logon procedure name.
When the user presses the ENTER key, the logon process continues.
The logon process step by step:
1. The start processor for TSO users assembles a start job for the user and
submits it to JES2.
2. Example with parameter values from the above logon panel:

JCL 3.1: JCL to start a TSO user

3. The system searches the SYSPROC chain of the z/OS system for the member
XYZLOGON. This member contains a Started Task JCL to start the TSO user
XYZ0001. In this case, we assume the member XYZLOGON stays in
TSO.PROCLIB.
Note:
When JES2 starts during the IPL process of z/OS the system builds the
SYSPROC chain. Below you see an example of a JCL procedure to start JES2:
JCL 3.2: JES2 start job

4. JES2 starts the task XYZLOGON (see the JCL below).

JCL 3.3: TSO user start procedure

5. The program IKJEFT01 (it is the TSO processor) searches in its SYSPROC
chain the member named in the parm field of the EXEC statement. This is the
Logon Procedure written in CLIST or REXX.
6. The logon procedure XYZLOGON runs and ISPF starts.

3.3 ISPF start


Hereafter I give information about prerequisites and preparations to start ISPF.
Additionally I will explain several possibilities to start ISPF online.

3.3.1 Necessary ISPF libraries


For a start, each TSO user (like each BATCH job) has access to all programs
found in systems LINKLIB library chain.
This ability does not fulfill the requirements of TSO and least of all for ISPF. TSO
is able to run procedures and programs found in SYSPROC or SYSEXEC
allocation. However, this is nowhere near enough for ISPF. This system needs
many additional allocations to start and run in a usable manner. All necessary
data sets must be previously allocated, before ISPF can start. Why is this
necessary?
– ISPF is in contrast to TSO panel driven. Therefore, ISPF needs the DD
allocation for ISPPLIB. The ISPPLIB chain contains the basic panels for ISPF
itself as well as the panels for the ISPF subsystems (SDSF, GDDM …) and user
application panels.
– Applications may produce messages embedded in panels. The
library ISPMLIB contains these message definitions.
– Many ISPF applications use ISPF tables. These tables are stored in
the ISPTLIB library.
– The skeleton library ISPSLIB is necessary when applications use the skeleton
method.
– To execute procedures ISPF needs the allocation of SYSEXEC or SYSPROC (or
both).
– When an application and ISPF itself ends, ISPF writes the Profile Pool
Variables back into the profile data set. Therefore, ISPF needs the allocation of
DD for ISPPROF.

All libraries except ISPPROF and ISPTABL are normally concatenated data sets
and ISPF opens all when started.

Remark:
When the ISPF is already running, more LIBRARIES may be temporarily
allocated and deallocated. The commands to do this are LIBDEF and ALTLIB.

Table 3.1: All mandatory library allocations to start ISPF

DDNAME Content and use


ISPPROF User profile library

ISPPLIB Panel definitions


ISPMLIB Messages

ISPSLIB Skeletons for JCL generation

ISPTLIB Table input library

ISPTABL Table output library


SYSPROC,SYSEXEC Executable procedures
Remark:
If one allocation for DDNAME beginning with ISP is
not available, ISPF will not start! The allocated
libraries may be empty, but they must exist and
now allocated.

3.3.2 Display currently existing library structures


The currently existing library structures can as follows displayed:
– The command ISPLIBD is to display the currently allocated ISPF libraries
used. Enter this command in the ISPF command line. After enter the following
screen is displayed:

Screen 3.3: Display existing ISPF library allocations


– The command TSO ALTLIB DISPLAY is to display the currently existing
ALTLIB allocation used. This command is in the ISPF command line entered.
After enter the following screen is displayed:

Screen 3.4: Display existing ALTLIB allocation

3.3.3 ISPF table service data sets


The above table contains the ISPTLIB allocation. This DD is used to READ ISPF
tables. The allocation of ISPTLIB normally contains a chain of data sets.
Nevertheless, it is impossible to write tables back to a chain of data sets.
To WRITE a table a DD definition containing only ONE data set must exist.
Therefore, another DD name called ISPTABL allocates the table output data set.
To read and write tables the following method is used:
– There is a table output data set allocated using the DD
name ISPTABL containing only ONE data set.
– This data set is the first one in the ISPTLIB chain.
The following excerpt from a DDLIST utility display shows the allocations of
ISPTLIB and ISPTABL:

Remark:
To start ISPF, an allocation of ISPTABL is not necessary, but the ISPTLIB
allocation is mandatory.
3.3.4 THE USER PROFILE LIBRARY ISPPROF
To start ISPF the user profile library is mandatory. This means, an allocation
of ISPPROF must exist. When first starting ISPF, the user profile library may be
empty, but the allocation ISPPROF must exist. ISPF uses the profile library to
store information from session to session. This data set is a PDSE with the
following allocation values:

RECFM=FB, LRECL=80, BLKSIZE=27920

ISPF creates the members in an empty ISPPROF library when ISPF or an


application starts the first time. ISPF updates the members each time when an
application or ISPF ends.

Table 3.2: Important members in ISPPROF library

Member Contents
ISFCMDS ISPF command table for SDSF

ISFPROF Profile variables for SDSF

Profile variables for the ISPF Editor when ISPF runs with
ISPEDIT
APPLID ISP

Profile variables for the ISPF when ISPF runs with APPLID
ISPPROF
ISP
ISPCMDS ISPF command table when ISPF runs with APPLID ISP

Screen 3.5: ISPF profile data set information panel


Warning:
I strongly recommend allocate this data set as PDSE. When you use a
PDS, it is sometimes necessary to compress this data set. This necessity
brings a lot of trouble because the data set is always OPEN when ISPF
runs.
The logon procedure allocates the data set for the ISPF profile. See the following
excerpt from a CLIST logon procedure:

Program 3.1: CLIST logon procedure


3.3.5 CONTENTS OF ISPF PROFILE LIBRARY
The ISPF profile library contains the following value types:
– ISPF system variables.
– Variables of ISPF applications.
– User variables.
The values are stored in application dependent members. ISPF builds the
member names automatically.
The type of each ISPF variable is character string. The length of each variable
can be up to 32760 bytes.

Remark:
When ISPF itself or an application in ISPF starts, all ISPF variables are loaded from the ISPPROF library
into the virtual storage. They stay there until the application or ISPF ends. When the application ends, ISPF
writes all the application variables back to the appropriate member. When an application ends with a severe
error, there is no chance to write the variables back. Therefore, all changes of variables are lost. The same
happens for variables of all running ISPF applications when ISPF itself ends with a severe error or when an
operator cancels ISPF or the TSO user. When ISPF or an application after a demolition starts again, the
variables stored last are loaded.

3.3.6 THE ISPF START COMMAND


There are three TSO commands to start ISPF:
1. ISPSTART
2. ISPF
3. PDF
Each of these commands is usable to start ISPF. If one of these commands is
without any parameters used, the default options are in effect. The Table
3.3 on page 38 shows all three ISPF start commands and their default options.

Table 3.3: ISPF start commands

Command Default option Used ISPF applid


ISPSTART PANEL(ISP@MSTR) ISP

ISPF PANEL(ISP@PRIM) NEWAPPL(ISR) ISR


PDF PANEL(ISP@PRIM) NEWAPPL(ISR) ISR
There are many options available when one of these commands is used. You
can find these options in the manual ISPF Dialog Developer’s Guide and
Reference in chapter 2: Controlling ISPF Sessions.

3.3.7 THE INITIAL LOGON PROCEDURE XYZLOGON


After we are familiar with how TSO/ISPF starts, we shall look how the logon
procedure works.

ISPF user start sequence:


1. First, the logon procedure checks the availability of an ISPPROF data set.
2. If this data set exists, the procedure allocates ISPPROF.
3. If the data set does not exist, the procedure creates the data set and allocates
it as ISPPROF.
Caution:
In our example, EVERY TSO logon uses the procedure XYZLOGON.
Therefore, the procedure must not contain any statements containing
the actual user name as a constant. There are only such allocation
statements allowed which use the user name extracted by the REXX
function USERID() or the CLIST variable &SYSUID.
We used the procedure language REXX to develop the procedure XYZLOGON.
Sometimes CLIST may also be used. If you are not familiar with one of these
languages, I added some explanations below the figure. These explanations
should help you to understand the most important statements. The line
numbers are normally not part of the statements. I added these line numbers
only for the explanation of their contents for you.
Program 3.2: Logon procedure XYZLOGON

The following table contains descriptions for some lines in the above
procedure:

Lines Description
6–8 Set contents of variables lpar, user, pdsn

12 Check whether the data set for ISPPLIB is available.

If yes, allocate it.

13–
If no, create and allocate it.
15

Check whether a private logon procedure is available. If yes, then


22
call it up.
23 If there is no private logon procedure, then call ISPF immediately.

3.3.8 RULES HOW A LOGON PROCEDURE MAY END


Each logon procedure stays active in background as long as ISPF is running.
When ISPF quits, the control comes back into the logon procedure behind the
ISPF call command.
Depending on the exit programming of one of the procedures, the following
happens:
– If the general logon procedure XYZLOGON or the private logon procedure
performs a TSO LOGOFF command after the ISPF call statement, the TSO user
becomes throwing back to the session manager and he has no chance to get a
TSO READY prompt panel.
– If the private logon procedure AND the general logon procedure are both
ending without performing a TSO LOGOFF the user gets a TSO READY prompt.

3.3.9 THE PRIVATE LOGON PROCEDURE SLOGON

An own logon procedure is necessary if you plan to do the following:


– Develop own ISPF applications.
– Use ISPF applications frequently which executing elements are not contained
in the standard ISPF libraries.
– Modify existing ISPF applications.

First, you have to investigate which TSO environment is available in your z/OS
system. The questions are:
1. Is there a standard way available to use an own logon procedure?
Do the following if such an environment is available:
Look into the standard logon procedure for installing your own logon
procedure and what name you has to use. In our example above XYZLOGON is
the name of the standard logon procedure and the name of your private logon
procedure member must be SLOGON in the data set . The
ISPF Primary Option Menu contains the name of the standard logon procedure.
If you do not know where the standard logon procedure resides, ask your
system programmer.
Copy the standard logon procedure under the new name SLOGON into the data
set and modify it as necessary.
2. When you leave ISPF, do you get the TSO READY PROMPT?
You can enter the command exec to start your own Logon
Procedure after ISPF quits.
3. When you leave ISPF, do you fall back to the session manager?
If this happens, you have no chance to use a private logon procedure. The only
chance to use your own logon procedure is to ask your system programmers
whether they are willing to install a special logon environment for you.
A possible circumvention in this situation may be the use of ISPFs LIBDEF
commands in all your own application procedures. To reach your procedures,
you must use the ALTLIB command first.

Rules to develop your own logon procedure:


– Write the logon procedure in CLIST or REXX. Other languages are not useable.
– You are free in designing the procedure.
– The procedure must call ISPF. Use one of the ISPF start commands shown
above in Table 3.3 on page 38.
Recommendation:
If you plan on developing own ISPF applications, you should install a test and
a production logical level for each ISPF library. This would especially useful
if there are several users working on the same project. The first logical
levelcontains your own programming elements and the second logical levelis
the group one.

3.3.10 Example of a LOGON procedure


Remark:
This logon procedure uses the CONCATD command to allocate private
libraries. This command is able to position additional data sets BEFORE the
existing one in a DD element. See the description of CONCATD in the section
10.1 The TSO command CONCATD on page 179.

Program 3.3: LOGON procedure example


3.4 The SLOGON procedure of the SMART ISPF utilities
On the previous pages, you learned a lot concerning logon procedures. You are
now aware how important a reliable private logon procedure is. All procedures
we discussed have a weakness: If the name of one of the data sets in the systems
logon procedure has changed, your private logon procedure fails with the
error Data set not found. Therefore, I wrote a special logon procedure, which
avoids this chink.
Requirements for such a procedure:
Persons without REXX knowledge should be able to use the procedure.
– The existing data set chains must be conserved and new added data sets must
be before the origin ones for each affected DD allocation positioned.
– If an additionally to allocate data set is not found, the procedure must display
an error message and continue the allocation with the available data sets.
– The CONCATD command is not necessary.
The SLOGON procedure of the SMART ISPF utilities fulfills all these
requirements.
Functions of the SLOGON procedure of the SMART ISPF utilities:
1. Read all existing DD together with their allocated data sets and save all.
2. Read a control file containing data set names that should allocated BEFORE
the current ones for each DD element.
3. Assemble a complete new data set allocation structure.
4. Allocate this structure using the TSO ALLOC command with REUSE option.
5. Call ISPF.
Caution:
This logon procedure can never be under control of ISPF executed because
the affected libraries are OPEN when ISPF is running.

3.4.1 INSTALL THE SLOGON PROCEDURE


First, edit the control member SLOGDSN. You can copy the example member
shown below from the SMART ISPF utility data set.

3.4.1.1 The control member SLOGDSN


The logon procedure reads the control member SLOGDSN. It must reside in the
same data set where the logon procedure is. The control member contains DD
names and DSNs designed to allocate in front of existing allocations in the DSN
chain for the relevant DD element. This method avoids the necessity to insert
the variable DDNAMES and DSNs into the logon procedure itself. The logon
procedure therefore always remains unchanged.

Figure 3.1: SLOGDSN control member example

3.4.1.2 Install the SMART ISPF utilities logon procedure


There are two logon scenarios possible:
Scenario 1:
There is an environment available to install an own logon procedure as
described in the section 3.3.9 The initial logon procedure XYZLOGON on page
40.
1. Identify the data set to which you must the LOGON procedure copy and copy
it.
2. Copy the SMART ISPF utilities SLOGDSN member into the same data set as
the LOGON procedure.
3. Modify this member as needed for your requirements.
4. Perform a new logon.
5. Use the DDLIST utility to check whether the allocations are correct.
Scenario 2:
There is NO environment available to install an own logon procedure as
described in the section 3.3.9 The initial logon procedure XYZLOGON on page
40. However, you get the TSO READY PROMPT when you leave ISPF.
1. Copy the SMART ISPF utilities logon procedure SLOGON and the SLOGDSN
member into a PDS/PDSE of your choice. The PDS/PDSE must have a
LRECL=80. e.g. userid.REXX
2. Modify the member SLOGDSN as needed for your requirements.
3. Leave ISPF.
4. At the TSO READY PROMPT enter the command: exec 'userid.REXX(SLOGON)
'.
5. The logon procedure runs and ISPF starts again. During running, the logon
procedure displays an echo print of all allocations as well as error messages
that are eventually appearing.
6. Use the DDLIST utility to check whether the allocations are correct.

The figure Screentext 3.1 on page 45 shows an excerpt of a DDLIST printout


when the above SLOGDSN control member is during a logon used. All
additionally assigned allocations are in gray.
Screentext 3.1: Allocated ISPF libraries

See also the chapter 11.5 Installation of SMART ISPF utilities on page 203.

4 Customize ISPF
I will show you in this chapter what to do to have a practicable ISPF for optimal
use. I will go through the most important ISPF panels and give you my
recommendations for the practical use of these panels.

4.1 Available 3270 screen formats


As I mentioned in the section 1.13 The 3270 screen on page 8, there are some
possibilities how to customize the ISPF screen layout, as you like within the
shown limits.
Available screen layouts:

Table 4.1: 3270 screen layout selection


Lines / screen Char. / line Remark
24 80 Standard layout

32 80 1. Enlargement

43 80 2. Enlargement
27 132 Special layout to display print output in SDSF
If you use HOD (host on demand) the options panel offers the possibility to
select the screen layout you want to use. If you use other ways to logon to ISPF
there is in most cases the ability to select a screen layout.
Warning:
If you used a screen format and you leave the session without an ISPF logoff
(perhaps due to connection interruption), the system memorizes the layout you
were using. When you perform a logon again and you select another screen
layout as you used in the last (interrupted) session, the ISPF will reject the
logon.

4.2 ISPF options setting


Unfortunately, there is no central point to set all ISPF options. In fact, there are
many positions to define options. Now we look into the basic options.

4.3 The ISPF settings panel (Selection 0)


If you call up ISPF for the first time, the Primary Option Menu does not look
not very user friendly:
– The Command line ====> appears at bottom of the screen. It is not reachable
there by pressing the POS1 key.
– If you press the POS1 key, the cursor jumps to the CUA line. In most cases the
cursor should jump to the Command line = when POS1 is pressed.

Fortunately, these options are changeable. In the following panel, I will show
you the best practice for ISPF settings:

To do this, enter in Primary Option Menu a 0 → Settings and press enter. You
see now the ISPF Settings menu. I recommend setting the options as you can
see in the gray lines in the panel below.
Screen 4.1: ISPF options setting

Remark:
A slash (/) sets an option to ON, blank sets it to OFF.

Explanations concerning some of these options:


Command line at bottom
The standard position for this line is BOTTOM. To bring this line to top, set the
option OFF. Additionally, the option Tab to action bar choices must be set
OFF. With these two options set as mentioned and pressing the POS1 key brings
the cursor to the Command line on each ISPF panel.

Panel display CUA mode


To position the CUA line at top, set this option to ON.

Long message in pop-up


ISPF messages consists of two parts: The Short Message Text and the Long
Message Text. If this option is set to ON, The Long Message Text always
appears in a box instead on the upper region in the panel. Sometimes the long
messages are very long (up to 512 characters). In this case, they do not fit into
the upper region and are in a box displayed.
Here a comprehensive description of this option in an ISPF manual:

Displaying long messages in pop-ups


ISPF displays short messages at the top right of a panel, next to the panel title.
ISPF usually displays long messages in a pop-up window. However, if a long
message is less than the screen width, then, by default, ISPF displays it just
below or above the command line.

If you always want long messages in a pop-up window:


1. Enter the ISPF settings command to display the ISPF settings panel.
2. Select Long message in pop-up.

Tab to action bar choices


When POS1 is pressed and this option is set to ON, the cursor always jumps to
the CUA line. If you want, that the cursor always jumps to the command line
when you press POS1, set this option to OFF.

Tab to point-and-shoot fields


There are panels defined with point and shoot fields. In the most cases, these
fields are to pre-define actions (e.g. UPDATE or CANCEL) used. To reach these
fields using the TAB key set this option to ON.

Always show split line


During working in ISPF, you can define more than one open working logical
screen at the same time. To display this situation a dotted line additionally
appears on the screen.

Command Delimiter
As I mentioned above in the section 1.14.2 Overview of all commands and
functions of ISPF on page 10 ISPF can execute more than one command with
one input action.
A Command delimiter character must delimit these commands. By default,
this delimiter character is a semicolon (;). However, programs sometimes use a
semicolon to delimit their input parameters. If this happens, you should change
the ISPF Command delimiter character to another one e.g. Question mark (?).

4.4 Panels and their handling


Panels are into three groups classified:
1. The panels of the ISPF basic system are most important. There are thousands
of them. The library ISP.SISPPxxU normally contains these panels. The two
characters xx define the language in which the panels appear. xx = EN ^ English.
Other languages are available.
2. The panels of the ISPF subsystems are contained in dedicated libraries. They
are usually stored in ISPF subsystem libraries. E.g. the panels for SDSF are in
the library ISF.SISFPLIB
3. The third is the group of private panels. ISPF users developing themselves
and they are stored in the appropriate user libraries.

ISPF loads all panels from the library definition of ISPPLIB.

4.5 The structure of ISPF panels


Unlike the TSO, ISPF works with full-screen menus, so-called panels. These
panels are generally freely definable. You can also create panels in order to
develop own applications in ISPF.

There are three different types of panels:

The normal full screen panels


These panels replace when called the currently displayed panel completely
disregarding how big the previously displayed panel was.

The POP up windows


As the name says, these panels overlay only a part of the current panel.
Depending of their format, they let parts of the overplayed panel still displayed.
The following display will illustrate this:
I called a file with VIEW, deleted a line and then I tried to write the file with END
(PF3) back.

Screen 4.2: POP UP panel with view warning

The grayed part is a POP up Panel. It overlays the previous screen. These
windows can of course also contain input fields. POP Up panels are very useful
for displaying warnings and instructions, or a program requires a confirmation
of an impending processing by the operator.

The HELP Panels


A special technique is for creating help panels used. An entry in the definition
of a normal panel defines the HELP panel. HELP panels can be defined for an
entire panel and for individual input or output fields in a panel.

4.5.1 USING HELP PANELS


Depending on the HELP definitions in the source code of panels and the position
of the cursor, different displays can appear when you press the PF1 key.
– A dedicated description relating the field of the cursor position does appear.
In this case a help entry exists in the panel definition for such a field:

– If the cursor is not in a HELP sensitive field, a dedicated description relating


to the panel appears. In this case a help entry exists in the panel definition like
this:
– If the PF1 key is pressed and no HELP definitions are available, neither for the
panel nor for the field in which the cursor is currently located then the general
ISPF help panel appears.

Examples for help display:

4.5.1.1 HELP display for a panel field:


The panel SLEP1 contains the HELP definition for the field “function” as you can
see above. To get the display below I did the following:
1. I called up the application SLE (SMART Last Edit). ISPF displays the main
panel SLEP1.
2. I positioned the cursor in the underlined column of the
line and pressed PF1 key.
3. The POP up HELP panel SLET2 appeared. I grayed out this panel in the figure
below.

Screen 4.3: Display a POP up help panel


4.5.1.2 HELP display for a panel
The panel SLEP1 contains the HELP definition for the panel as you can see
above. For the display below, I did the following:
1. I called the application SLE (SMART Last Edit). ISPF displays the main panel
SLEP1.
2. I positioned the cursor in the first line of the panel and pressed PF1 key.
3. The HELP panel SLET2 appeared. I cut some lines to shorten the text here.

Screen 4.4: Help display of a panel

4.6 The primary option menu


The Primary Option Menu is the first panel that in an online environment
appears on your screen after the start of ISPF.
The system programmers department usually adjusts this panel for specific
user groups. The panel name can be different depending on the ISPF start
method.
See the section 3.3.6 The ISPF start command on page 38.
You see here a typical ISPF Primary Option Menu with CUA line.

Screen 4.5: Primary option menu with CUA line


The first line (CUA row) contains individual choices for pull down menus. One
of the choices is the Status menu. We use the status menu to control the
information that appears in the right area of the ISPF primary options menu.
We now want to see what options the Status menu of the CUA line offer. To do
this we position the cursor anywhere in the word Status and press ENTER. Now
the following screen with unfolded Status POP up window appears, the cursor
is on the first line of the pull down sections positioned. The place where the
cursor is, I left white in the gray window.

Screen 4.6: Primary option menu with unfolded Status CUA selection

An asterisk instead of a selection number indicates that this display now active
is.
We can now select one of the other options. We choose the third → Calendar
and press then ENTER. This provides us with a redesigned display of our
primary option menu:
Screen 4.7: Primary option menu with calendar display

As you can see, we now have the current calendar on the right side. This status
indicator looks different for each by SPLIT NEW or START produced panel. The
ISPF remembers this setting for each SPLIT logical screen separately in the
profile options. These settings are also available after a re-login.
The small example leads us to our next topic, namely the Screen splitting.

4.7 Screen splitting


Imagine you just edited a file and the same time you need at information from
another file that you want to take over into the currently edited file.
How does screen splitting work?
There are two ISPF commands to open a new ISPF logical screen.
– The command START always opens, independent of the cursor position, a
new logical screen displaying a new ISPF primary option menu as a full screen.
– The command SPLIT NEW opens a new logical screen but the ISPF primary
option menu appears below the line where the cursor is. The screen splits and
shows two logical screens simultaneously.
Due to this behavior of SPLIT NEW, PF2 should include the command START.
Whenever you need a new ISPF logical screen, press the PF2 key!
A new ISPF Primary Option Menu opens. This indicates the fact that the top or
bottom row consists of dotted lines. This line is the Split Screen Indication
Line.
Remark:
If this split screen indication line does not appear on your screen, you can use
the option Always show split line in Menu 0 of ISPFs primary option menu
to switch on the display of this line.

4.7.1 ESSENTIAL RULES AND TIPS FOR SPLIT SCREEN


– You can work with up to eight or more ISPF logical screens. This depends on
customizing of your ISPF in your z/OS system. The ISPF system variable
ZSCRMAX contains the information how many logical screens you can open.
Use the ISPF menu 7.3 to query this variable.
– By default, the PF9 key contains the text SWAP. I urge you to change the PF9
key to text SWAP NEXT. With SWAP, you can only shuttle between two logical
screens. If there are more than two logical screens open, with SWAP, you will
never reach all logical screens. If you set up the PF9 key assigned SWAP NEXT,
you can jump through all the logical screens by repeatedly pressing the PF9 key.
– If you have the screen somewhere in the middle split with SPLIT NEW and
you want to come back to a full screen display with the split-screen indication
line at the top or bottom, you can use the following trick:

1. If the PF2 key contains SPLIT NEW, position the cursor on the top line and
then press the PF2 key.
2. If the PF2 key contains START, type the text SPLIT NEW in the command line
of the active panel without pressing ENTER, move the cursor to the top line of
the screen and then press ENTER.
3. Through each of the two operations, you get a new primary option menu in
full screen mode.
4. If you leave this new primary option menu now with the PF3 key (END), you
again get displays that the Split Screen Indication Line have at top or bottom of
the screen. This trick has already stood the test for me very often!

4.7.2 DIRECT ACTIVATION OF AN ISPF LOGICAL SCREEN


Let us assume that we have opened more than two logical screens of ISPF. This
causes the problem that we can achieve a logical screen that we want to address
directly only by pressing the PF9 key repeatedly until the desired logical screen
appears.
Tip:
To scroll continuously with the PF9 key through all the logical screens, the
PF9 key must in all ISPF applications in all traversed logical screens set to
SWAP NEXT and not only to SWAP. If this is not the case, even in one
application, then it can happen that you cannot reach some logical screens
when leafing through the logical screens. The PF key assignment is
application-based. Therefore, if you start a new application in ISPF, a new
APPLID opens, and then you need to adjust the PF keys assignment there. By
way of example, here is the SDSF with its APPLID ISF.
In the following chapter, we want to look at a case in which eight levels are
open.

4.7.3 EXAMPLE, WITH EIGHT LOGICAL SCREENS OF ISPF


To display a list of all currently available ISPF logical screens enter SWAP LIST
in the command line (or press the PF key containing the SWAP LIST command).
The following example shows eight current logical screens with an application
started in each logical screen:

Screen 4.8: ISPF task list with eight ISPF logical screens

If you want to activate a certain level, then position the cursor just before the
appropriate level and press ENTER. You achieve the same effect with a double
click with the mouse on the corresponding position.

The columns show the following entries:


ID
The serial number of the logical screen. Behind the number are an asterisk (*)
or a hyphen (-). These have the following meanings:
* → This is our current logical screen.
- → This level was with the last SWAP or SWAP NEXT command left.

With a SWAP command, we can only shuttle between these two logical
screens.
Only by using SWAP NEXT, we can leave this shuttle cycle.
The ID numbers do not appear continuously from top to bottom, I had closed
and reopened some levels in this example during my last work.

Name
The application name. This name is, when available, very helpful, because you
can specifically e.g. jump in the SDSF. The application displayed in this level
must define the name.

Panelid
This is the name of the ISPF panel, which is currently active in this logical
screen. If you are familiar with the panel IDs, you can specifically jump to an
application.

Applid
This application starts with this Apple ID. Please note that each ISPF application
has its own PF key assignment.

Session Type
This is normally always 3270

Tip:
If you intend to use more than two logical screens in ISPF, I urge you to perform
the following two preparations:
Prepare in all applications with a separate ISPF application ID the PF2 key with
the command START and the PF9 key with the command SWAP NEXT.
Prepare analogous to this the PF15 key with the command SWAP LIST.

4.8 The program function keys of ISPF


We have now customized a well-functioning ISPF system. For our daily work,
we should continue the optimization process to speed up our using of ISPF.
What can and should we do to reach this target?
– We should optimize our PF key assignment.
– We should customize the ISPF command table to optimize repetitive tasks
using the assistance of the ISPF command table.
– We should learn to use ISPF Personal Data Set Lists to display frequently
needed DSNs with low effort.

4.8.1 OPTIMIZE PF KEY SETTINGS


When dealing with the ISPF PF key assignments, you must first make a
fundamental decision:

A few years ago, the KEYLISTs in the ISPF came up. I have been experimenting
for some time with this new ISPF feature. However, I could not find any
significant advantage over the conventional KEYs use and I therefore stayed
with the old form of the use of PF keys. What are the differences between
KEYLISTs and KEYs? Here a short introduction into both methods.
However, before we deal with the issue KEYLIST versus KEYS, let us look into
making the assignment of the PF keys on the screen visible and letting this
display disappear again. Especially beginners in the ISPF appreciate it if the PF
key assignment is visible on the screen for some time. This technique is in fact
the same for both methods of the PF key using.
Full information on the PF key assignments is in the
brochure ISPF User’s Guide Volume II in the chapter Settings option
(0) explained.
4.8.2 SWITCHING ON THE PF KEY SETTING DISPLAY
To display the PF key assignment on the screen, we enter the PFSHOW ON
command and press ENTER. This command toggles the display of the PF keys
for our entire ISPF. With PFSHOW OFF and ENTER, the display can be switched
off again.
The display you get by entering the PFSHOW ON command, however, depends
on several settings that you can make in a special panel. To access this setting
screen, proceed as follows:
Enter into any ISPF panel in the command line the command PFSHOW TAILOR
and press ENTER.
The following POP Up panel will appear where you make the white-backed
settings and press ENTER.

Screen 4.9: Function key definition panel

As you can see on the display, the PF key assignments are visible in the POP UP
panel as well as in the basic panel. At the same time, you see that the PF key
assignment between the two panels is different. If we now leave the POP up
Panel by pressing the PF3 key, we see to our surprise that in the basic panel
there is still no PF keys displaying because for the PF SHOW TAILOR command
only the options of presentation has changed, but not the display of PF key
setting was turned on.
Screen 4.10: Example for command PFSHOW ON

To activate the PF key assignments display, type in the command line PFSHOW
ON and press ENTER. Then the following screen display appears.

Screen 4.11: Screen showing the PF key assignment

4.8.3 UTILIZE KEYLISTS FOR PF KEYS


In this type of key assignment, the contents of the PF keys are stored in special
KEYLIST members. A panel definition may contain the name of such a member
so that the PF keys setting is loaded with the information stored in the key list
members at the start of this panel. This means the PF keys contents can change
from panel to panel.
However, it also means that you never know what PF key assignment you have
going on. Therefore, the use of PFSHOW ON is always necessary. This measure
takes four lines of the available screen off. We now want to look how to turn on
the use of KEYLIST and what the panels look like:
We activate the KEYLISTs in a panel by typing in the Command Line KEYLIST
ON and pressing ENTER. Thus, from now on the use of KEYLISTs turns on for
this ISPF application. We use the command PFSHOW ON to switch on the
permanent display of the PF key assignment.
Recommendation:
If you work with KEYLISTs always and everywhere, you should enter the
command KEYLIST ON in the ISPF primary option menu. If you work
without KEYLISTs, then enter KEYLIST OFF.

4.8.4 DISPLAY THE PF KEY ASSIGNMENT IN A KEYLIST


Let us now see on the name of the KEYLIST from which definitions the PF keys
are loaded when the current panel calls up. To do so, type the
command keylist in the command line and press ENTER.
A POP-UP Panel will appear where we scroll down for so long until a line with
the text appears.
The first word in this line denotes the current KEYLIST.

We see this in the following display:


Screen 4.12: Display the current KEYLIST

We now see that the KEYLIST ISRSAB is active, which means that the PF key
commands defined in this key list are when we press one by this member set
PF keys executed.
To display and edit the contents of key list ISRSAB now, position the cursor
before this name, there enter an e (for edit) and press ENTER. Further down a
key list edit panel appears.

The columns have the following meaning:

Definition
Here the command is defined which executes when pressing the appropriate
PF key.

Format
This option sets the display format of the dedicated PF key. Here the original
description of this definition from the ISPF help panel: Type LONG to indicate
that you want this key label to display only when the user requests the long
form of the function key area. Long is the default. Type SHORT to indicate that
you want this key label to display when the user requests either the short or
the long form of the function key area. Type NO to indicate that the key label
should never be in the function key area displayed.

Label
This value is for the dedicated key displayed when the PF key setting display is
active.

Screen 4.13: The KEYLIST edit panel

Here we can now make changes to the PF key assignments and save the
assignment.

4.8.5 PF KEYS USE WITHOUT USING KEYLIST


If you want to prove PF keys with the old method, then you have to switch off
the use of key lists by typing in the command line of an ISPF panel concerned
the ISPF application the KEYLIST OFF command and press ENTER. By entering
KEYS and ENTER in the command line the current assignment of the PF keys
will be displayed. You can then change the PF key assignment here directly and
set by pressing the PF3.

The next figure shows the PF key assignment for my ISPF Application ISF, so for
the SDSF:

Screen 4.14: My PF key assignment in SDSF

Note:
This key setting will performed when you use the REXX program
SPROFVAR of the SMART ISPF utilities to install the ISPF variables that the
SMART utilities need to run correctly. Of course, you can change the program
so that your own KEY settings are set.

Mnemonics for PF keys using:


– The on and off switching for the display of the PF keys assignment on the
screen using PFSHOW ON/OFF always applies to the entire ISPF. If the
programmer in the IBM laboratory would bound this setting to the application
that as in the KEYLIST, that would be nice. However, this is unfortunately not
the case!
– The on and off setting for KEYLISTs using the KEYLIST ON / OFF command is
only valid for the current ISPF application (ISP, ISF, ISR, etc.).
– Individual panels can define their own KEYLISTs.
– The standard PF key setting is used when a panel has the KEYLIST ON set and
calls another panel where no KEYLIST available is. This panel will then work as
if working with KEYLIST off.
– In this case, the PF Key Definitions from the ZPF variables of the application
are used.
– If in an ISPF application there are no KEYLISTS used, e.g., when KEYLIST OFF
activated is, the ZPFxx variables from the profile of the ISPF user are used.
– Individual applications can work with their own PF Key Settings. Therefore,
for example, use the SDSF always for own PF key assignment.
– The brochure ISPF User’s Guide Volume II contains the chapter Settings
(Option 0) a detailed description of the PF key assignment technique.

5 ISPF command tables


Before I can explain the functionality of the command table technology, I think
it is important to explain the different methods of executing programs in a
TSO/ISPF environment.

5.1 Execute programs in a TSOP/ISPF environment


Any programs that are available in a z/OS system are executable in a TSO/ISPF
environment. There are two types of programs:
– Programs are executable directly in z/OS without any additional support.
These are all compiled programs and z/OS utilities.
– Programs needing the assistance of an interpreter are all programs written in
REXX or CLIST.
The latter are divided into two groups:
– REXX and CLIST programs that only need the TSO interpreter environment.
– REXX and CLIST programs that additionally need the ISPF environment.
All programs are executable online and in batch. Programs written in REXX or
CLIST need for an execution in batch, of course, the appropriate interpreter.
When these programs use ISPF services, the ISPF environment must also be
available. For means of explaining the entire complex of program execution
under a number of conditions, I have developed two REXX programs. Both are
very small. They take a parameter and print its content.
– TEST1: This program only needs the TSO environment.
– TEST2: This program additionally needs the ISPF environment.
Here the source code lists of both programs:

Program 5.1: TEST1: Simple program using the TSO environment only

Program 5.2: TEST2: Simple program using the ISPF environment

Note:
The SETMSG service of ISPF is used to output messages on the screen when
the program is running online. When it runs in batch, the SAY command of
REXX is used to print the messages on DD allocation SYSTSPRT.
5.1.1 Online execution
For the online calling of a program, you do not know whether this is a procedure
or a compiled program. Moreover, you do not have to worry about the program
requiring ISPF services, because you are already working in ISPF. Nevertheless,
you have to know if it is for the correct execution parameters needed.
Programs can be online as follows executed.
– You can execute a REXX program by using the SMART edit macro ## when
the program is edited. This means simply enter in the command line of the
editor
– Type in the ISPF command line
– Enter in a DSLIST display TEST1 in front of a DSN. In this case, the DSN is to
the program as a parameter passed.
– Select the ISPF menu 6 Command and enter in the ===>
– Insert a CMD command entry in the ISPF command table to execute the
program. In this case, you can start the program by entering the command
name in the command line of each ISPF panel. See the information to insert a
command table entry in the chapter below. The SMART utility program SLE is
a typical candidate for this type of call. See the following command table entry
example:
I will not demonstrate the online execution of the above program here. This is
so simple that I really do not have to show it.

5.1.2 BATCH EXECUTION


To execute a REXX program in a batch job is not as easy as in the online
environment because an appropriate JCL program is required which is to the
batch system environment for execution submitted. This is first a difficult
matter because you have to know how this JCL needs to be to work properly
constructed. Having had this problem many times using TSO/ISPF, I developed
two edit macros, which relieve me of all this work. These two edit macros are:

#TSOB to submit and execute REXX programs which only need the TSO
environment.
#ISPFB to submit and execute REXX programs which additionally need the
ISPF environment.
If a program requires input parameters, these can be when calling entered.
I have the two above-mentioned programs TEST1 and TEST2 each executed
with the correct edit macro. I have added the resulted JCL programs below.

JCL 5.1: JCL to execute TEST1 in a native TSO environment

When running this program, the following list is printed. It can be found in
SDSF.
JCL 5.2: JCL to execute TEST2 in a TSO/ISPF environment

When running this program, the following list is printed. It can be in SDSF
found.
5.2 Introduction to the ISPF command technology
Self-defined ISPF commands are the best way to facilitate the daily work with
ISPF. Unfortunately, the most users do not have the skills to create command
definitions. It is very cumbersome to install such commands. However, you
should not despair now, because I will show you a silver bullet for defining your
own ISPF commands in the following chapters. In addition, I hope you will
say: It is quite simple.
Tip:
If you are not yet familiar with the ISPF table technique, I recommend that you
first look into the chapter Tables - Create and edit in volume 2 of my
book SMART ISPF Application Programming.
As you may have already noticed, almost every ISPF screen has an upper left
line that begins with Command ==> or option ==>. The line in which this input
option is available, I will refer to in the following text as a Command Line. In
this command line, you can always enter one or more ISPF commands. If you
want to have several ISPF commands executed at once, then you have to
separate the individual commands by the ISPF command delimiter character.

Behind Command ==> you can always enter two different types of commands:
1. ISPF Primary Commands: The commands are like a TSO, KEYLIST, KEYS,
DSLIST, = 3.4, ISPFWORK etc. The brochure z/OS ISPF User's Guide Volume I
contains a description of the ISPF Primary Commands. You will also find these
commands in the ISPF help system.
2. User Commands: The ISPF user has created these commands.

Which user commands do you now have available?


You can easily determine:
Enter the ISPF menu 3.9 and you receive the following POP UP Panel:
Screen 5.1: Command table utility

This panel covers two purposes simultaneously:


1. It serves as an entry screen for displaying or modifying individual command
tables. Behind Application ID is the name of an application ID entered whose
command table is displayed. Therefore, if we no press ENTER in the above
panel, the command table ISRCMDS appears.
2. It displays in the Command Search Order column, which command table
levels are used and the order in which the command tables are searched (top
to bottom).
As we see, we can define user commands in four different levels (and thus in
four different command tables). These levels are:
1. Application used
3. User NOT used
4. Site NOT used
5. System used
We see that only the application level and the system level have a table prefix
entry, and thus only these two levels are usable. It becomes obvious from the
statement in the screen above that the commands in the two tables ISRCMDS
and ISPCMDS are now used.

5.2.1 The member ISPCONF


I already mentioned several times in this book the fact that the ISPF system
programmer department customizes some definitions and options within your
ISPF. Of course, there must be a location defining these options. It is a member
named ISPCONF. This member contains these options. It is located in a system
library and maintained by the ISPF system programmers department. I
recommend asking your ISPF system programmers for this member and having
a look at it. Most entries are so meaningful that you can easily grasp their
meaning.
Here is an excerpt from the Member ISPCONF that contains some interesting
values:

In our example above, we see that only the application and the system level are
usable. This also means that only two command tables can be active
simultaneously. The following definition line defines the search order:

SITE_COMMAND_TABLE_SEARCH_ORDER
Remark:
If BEFORE is defined here, then the application, the user and the site table
level (if available) will be searched before the system table level for ISPF
commands. If AFTER is defined, then the system command table ISPCMDS
is always searched first.
If some commands are defined with the same name in both tables and if the
option BEFORE is set only, the command in the application table is found. If you
want to delve deeper into the topic ISPF customization, then I recommend the
brochure ISPF Planning and Customizing. Here a short excerpt from this book
concerning the above entry:
SITE_COMMAND_TABLE_SEARCH_ORDER
Determines whether the site-wide command tables are before or after the
default ISP command table searched. Valid values are AFTER and BEFORE.
The default is BEFORE.
Depending on this setting, the search order will be:

Search Order = BEFORE Search Order = AFTER

1. Application 1. Application

2.USER (1 to 3) 2. USER (1 to 3)

3.SITE (1 to 3) 3. System
4.System 4. SITE (1 to 3)

5.2.2 Datasets for command tables


Where are the command tables located?
We have already seen in the establishment of ISPF that some files must be
present when starting ISPF. One of these files is the file with the DD name
ISPTLIB. When you start an application, ISPF searches in this data set the
command table member that belongs to this application.

What are the names of the command table members assembled?


The name of the command table member is formed using the first three
characters from the name of the application ID expanded with the string CMDS.
Looking at the panel of the command table utility above, we see the entries ISR
and then ISP in the command search order column. Thus, we assume to find in
the ISPTLIB chain two members with the name ISRCMDS and ISPCMDS.

Let us now check whether these members exist:

We use the program DDLIST and search for the members ISRCMDS and
ISPCMDS one after the other. I have conducted these searches in my ISPF.

After completing these two searches, following display appears:

In fact, you see that the member ISRCMDS is in the SYST1.TSO.ISPTLIB file
allocated with DD-name ISPTLIB and the member ISPCMDS in the data
setLANZT.USER.TABL.LPRT allocated with the DD-name ISPTABL as well as in
the data set ISP.SISPTENU allocated with the DD-name ISPTLIB.
This results in the following situation:
– Since the member ISRCMDS is only in the ISPTLIB chain, it means that this
ISPF user indeed uses the commands defined in this member. The member
ISRCMDS is not in the data set allocated under the DD-name ISPTABL.
Therefore, the user has never changed this member. Otherwise, the member
would also be in the file associated with ISPTABL because we have already
learned in the discussion of concatenated data sets that we cannot write in a
chain of files.
– Since the member ISPCMDS is to find both under the DD name ISPTABL and
under the DD name ISPTLIB, it is clear that the ISPF user has changed this
member and wrote it back.
However, why did the ISPF user put his own commands just in the Member
ISPCMDS and not in the Member ISRCMDS? The following text answers this
question:
– The commands in ISRCMDS are only available as long as the application ISR
active is because this command table is an application command table. Once a
new application such as SDSF opens with the application ID ISF, these
commands are available in ISFCMDS and not in the table ISRCMDS.
– The Table ISPCMDS, as seen above, is on the ISPF system level. This means
that the commands are always available regardless of which application opens.
– Of course you can prove the Table ISRCMDS with own commands. However,
you have to remember that these commands always disappear when you
activate another ISPF application.
Let us now look at the member list of ISPTABL library:

Screen 5.2: Member list of ISPTABL library

As you can see, this ISPF user has changed and written back only two command
tables. These are in gray highlighted. We remember: The name of the command
table member will assembled using the characters of the application ID
expanded with the string CMDS. Therefore, if you want to see which
applications command tables already exists, then look at the files that are
associated with ISPTLIB for members with the suffix CMDS.

Remark:
In the list shown above, you can see that no member statistics are available for
the members ISPCMDS and QWRFCMDS. The reason is that the ISPF system
while saving command members no statistics writes.

5.2.3 CREATING YOUR OWN ISPF COMMANDS


Let us now again turn to the panel of the command table utility using ISPF
selection 3.9.

Screen 5.3: The command table utility panel

With the above screen displayed, we simply press ENTER to see what happens:
We then get the following screen, which contains the entries to the current ISP
command table:

Screen 5.4: Contents of the ISP command table


If we look at this panel, the shaded text is conspicuous. This text tells us that it
will not be so easy to create own ISPF commands because we cannot directly
modify the contents of our table ISPCMDS and then save the changes.

We try it again now with the table for the application ISF (SDSF), being certain
that at this time the table ISFCMDS of our SDSF is not open in any other ISPF
logical screen.

Screen 5.5: SDSF command table update

Here we are now getting a very different picture than for the table ISPCMDS.
The reason is that we currently do not have the application SDSF open
anywhere in this ISPF. Therefore, the table ISFCMDS is available for update.
Thus, you could now enter your own commands or change the existing one.
However, they were available only in the SDSF application and the benefit for
our ultimate goal, namely own commands available under the application ID
ISP (and thus for all levels of ISPF), is unfortunately nothing.

How can we change the ISP command table ISPCMDS?


If you can only use the standard facilities of ISPF, perform the following steps:
1. First, look whether in your file that is associated with ISPTABL the member
ISPCMDS is already present there. If not, then look using the DDLIST utility in
the file chain of ISPTLIB and then copy the member ISPCMDS into the data set
that is associated with ISPTABL. If you do not have ISPTABL allocated, you
cannot change any command tables!
2. Next, create via menu 3.4/M in the ISPTABL data set (which you can also call
directly into the DDLIST display with the input m) a copy of ISPCMDS named
XXXCMDS.
3. Then go to the ISPF menu 3.9, enter XXX as an application ID and press
ENTER.
4. Now the contents of the current ISPCMDS table appear (the contents you
copied to the member XXXCMDS) with the ability to make updates.
5. Perform your intended updates and exit the panel with the PF3 key. The
member XXXCMDS is now in your ISPTABL data set and has the content you
would like to have inside the member ISPCMDS.
6. Copy the member XXXCMDS as member ISPCMDS in the ISPTABL data set
using the REPLACE option.
7. Now leave the ISPF and start using the TSO command ISPF again. If the TSO
READY prompt does not appear immediately when you leave ISPF perform a
new TSO+ISPF logon.
8. In the future, you can always make changes in the XXXCMDS member and
then copy this member to ISPCMDS. Remember: The new or changed
commands are not available until you perform a new start of ISPF or a new
LOGON.

Your originally created commands in the members XXXCMDS are now under
the Application ID ISP and thus throughout ISPF available.
Although this is a lot of work, it is worth doing!
5.3 Program SICMD
It would be nice if there were a tool that allows you to always create ISPF
commands to be done regardless of whether the concerning application is
currently active or not. I developed such a tool a long time ago for my own use.
This tool is available under the name SICMD in the SMART ISPF utilities as REXX
procedure. The description of this program is in the general descriptions of
SMART ISPF utilities.
Remark:
You can use the ISPF Table Utility to change other tables directly online. You
find this utility via Primary Option Menu → Utilities → 16 Tables. Remember:
with this utility, you are not able to change open tables because the ISPF
profile tables are always OPEN when ISPF is running!

INSTALLATION:
Copy the REXX program SICMD from the SMART ISPF utility collection file in
your file for executable REXX procedures.

EXECUTION:
Enter TSO SICMD ISP in the ISPF command line. The SICMD application starts
and displays the working panel to change the ISPF command table ISPCMDS.
The content on your display may be different!

Screen 5.6: SICMD working panel


5.3.1 EDIT ISPF COMMANDS USING SICMD
You can perform the following actions in this panel by entering one of the action
characters in column C:
S Display the definitions for this command.
R Repeat this command.
I Insert a new command.
U Update the definitions of this command.
D Delete a command from the command table.

5.3.1.1 THE PANEL ISPUCMX


The command table utility panel ISPUCMX appears when you enter one of the
action characters S, R, I or U in column C on panel SICMD.
Depending on the entered action character, the following happens:

Panel ISPUCMX displays the definitions for this command. No changes


S
are saved if you leave this panel by entering ENTER or pressing PF3.

Create a new command by copying the definitions of the current


R command. You should change the copied definitions to define the new
one.

I Panel ISPUCMX appears containing empty input fields.

Panel ISPUCMX appears containing the current command definitions.


U You should change these values to define a new command before you
leave the panel by ENTER or PF3.
The following display shows the panel ISPUCMX called to update the ISPF
command ++. I use this command for the quick call of my mostly used Personal
Data Set Lists.
Screen 5.7: Panel ISPUCMX - change ISPF commands

This is a standard panel of ISPF designed to administer ISPF command tables.


In the panel ISPUCMX, each input field is sensitive for HELP. If you put the
cursor in one of those fields and press PF1, you will get dedicated help
information concerning this field.

5.3.1.2 DESCRIPTION OF INPUT FIELDS FOR PANEL ISPUCMX


Each entry for an ISPF command consists of four elements:
1. Verb The command name: Up to 8 characters long. This name is
mandatory.
2. Trunc Indication of a minimum length of the entered command.
3. Action The actual statement what ISPF should execute (max. 240
characters).
4. Description A description text (max. 80 characters).
Remark:
This command definition installs an ISPF command to display DSLISTs with
the ability to add a DSLIST name as a parameter together with the command.
If the command call contains a DSLIST name, this DSLIST appears only when
available. An error message appears if there is no DSLIST of the entered name
found. When you enter the command without a parameter, ISPF displays all
known DSLISTs.
Example:
The entering of ++hugo in the ISPF command line displays the DSLIST HUGO.
As we see in the command definition above, a minimum abbreviation of two
characters is necessary to execute this command. Therefore, it is sufficient to
enter the two characters ++ to execute the command.
In this case, if we display the SWAP LIST panel, the name HUGO appears in the
NAME column in the SWAP LIST panel.

Important warning:
You must make sure that you do not define by mistake a command name,
which is the same as an original ISPF command. If you do that, the original
ISPF command will not found and therefore it cannot executed because the
ISPF searches the command tables first when a command comes in.

5.3.2 DISPLAY THE LIST OF ALL STANDARD ISPF COMMANDS


As I mentioned above, you should avoid designing an original ISPF command as
your own command. Always when a new release of ISPF appears, new
commands can possible be added. Therefore, you should be able to get a list of
all current available standard ISPF commands. In an earlier chapter, I explained
the display of all ISPF commands. My tip you here again is to get a list of all
commands:
1. In the ISPF Primary Option Menu press PF1 to call the ISPF help system.
2. Enter the following command: i;i;i8. A panel displaying all current available
standard ISPF commands appears.

Attention:
If the above command does not lead to the desired result, it may be that, in the
new ISPF release, number I8 has changed. In this case, perform the above
command chain systematically and see how the new way to display the
command list is.

5.3.3 Define the call of SICMD as command

Of course, we can define the call for the REXX procedure SICMD as ISPF
command. This entry must look like this:

As you can see, the call to the procedure SICMD is expandable by adding a
parameter represented by the ISPF system variable &ZPARM. This parameter
may be an APPLID. If there is no parameter specified, then the program sets the
APPLID automatically to ISP.

5.3.4 GENERATING A LIST OF COMMANDS

With the program SICMD, you can generate a list of commands from the
currently edited ISPF command table.

Simply enter in the command line the SAVELIST command and press ENTER.

This command creates a file that contains the commands contained in the
command table, each in a record of a sequential data set. This file can then be
to the PC transferred, edited with a word processor and printed.

The data set name of the output file will as follows composed:
userid.tablename.LIST

Two examples of the generated files:

→ Command list of the application ISF (SDSF)

→ Command list of the application ISP.


EXAMPLE OF A SAVELIST CALL:
If you enter SAVELIST and press ENTER, SICMD creates the output data set and
the name appears in a small frame at the bottom of the screen.

Screen 5.8: Display a list of all ISPF user commands

6 DSLIST - Data set lists


Here some chapters begin dealing with the handling of files in ISPF. All chapters
above act on the benefits you can gain by skillful use of the possibilities
available in ISPF. Make sure you use the opportunity to work with DSLISTs. The
DSLISTs are one of the most powerful tools to speed up and optimize your work
in ISPF.

Fundamentals to the DSLISTs:


The main using of ISPF is working with data sets. Therefore, the first action that
many ISPF users start when they have completed the logon process, and have
not read this chapter in this book is the selecting of menu 3.4 in the primary
option menu. This means nothing else than they go straightway to the DSLIST
Utility to display the DSNs with which they want to start their work. Because
the ISPF 3.4 screen represents exactly the DSLIST utility panel. I have heard of
people who are not very familiar with ISPF that they do not know anything
except the ISPF menu 3.4. In addition, you might get the impression that behind
this part of the ISPF a lot of power must exist.
As you will read later in this chapter, DSLISTs are for
– Creating data set lists in many ways.
– Use them to combine the different combinations of data set names and to
display them for processing.
– Call them from all panels in ISPF.
The maximum benefit from the DSLISTs is only possible when you can call them
directly by using an ISPF command. In the above chapter, you learned the
definition of ISPF commands.
For example, when I enter ++, all DSLISTs appear that I have already created.

6.1 The DSLIST panel


Once we have the 3.4 command entered in the primary option menu of ISPF and
pressed ENTER, the following panel appears:

Screen 6.1: The data set list utility panel

This panel offers some important input fields and selectable options that we
want to look at in the sequence from top to bottom now:
6.2 The possibilities of the action bar for DSLISTs
Here we consider only the point RefList precisely:
Under RefList, we find one of the most important tools of the entire DSLIST
system or even the entire ISPF. This option represents one of the ways, to create
and manage Personal Data Set Lists. Another way to manage DSLISTs is later in
this chapter explained.

We move the cursor in the text RefList and press ENTER.

Then the following screen appears with which we can call the edit function for
DSLISTs:

Screen 6.2: RefList pull down panel

If we now enter a 2 in the frame and press ENTER, then we get the panel for the
definition and manipulation of personal data set lists:
Screen 6.3: Personal data set list panel

The gray lines show some of my personal data set lists. The list named REFLIST
is automatically by ISPF maintained. It contains the names of the 30 last used
data sets. The contents of the above panel depend on two option settings in
the View andOptions pull down menus. The above panel display appears with
the following settings in the View pull down:

Screen 6.4: Pull down menu for DSLIST View selection

Using this selection panel, we can predefine how the DSLIST display panel
appears:
When we set the option to Standard View, there are only the available DSLISTs
displayed and we can only see the names of the DSLISTs. See the following
display:
When we set the option to Extended View, the DSLIST extended panel will
displayed and we can see the DSNs, which are to build the REFLISTs used. See
the following display:

The following selection in Options...

… leads to this selection panel:


Screen 6.5: Personal List Settings panel

We will deal with this panel more detailed later when we discuss the creation
and editing of personal data set lists.

6.3 The DSLIST panel fields


The following descriptions refer to Screen 6.1: The data set list utility panel on
page 86.
First, I would like to explain the various fields of the Standard DSLIST panel that
we reach using the selection 3.4 in the Primary Option Menu. Some entries we
make here affect the display of DSLISTs generally. Some of these options change
in other panels also.
The DSNAME level
Here we can enter a mask that specifies which DSN the DSLIST Utility searches.
The DSNs found by this search appear as DSLISTs. For designing of the DSN
mask, you have many options. I want to show you some of these options:
Before we can do that, we still have something very important to discuss!
The display result depends very much on another options that can be set in
DSLIST panel. Therefore, we must first look at the importance of the
option Include Additional Qualifiers. This option is positioned in the section
below the line
– If we set the slash (/) before include additional qualifiers here, all DSNs
resulting from the mask definition of all extensions appear on the display.
– If we omit the slash, the DSNs having additional characters behind the mask
do not appear.
Because this affects all ads of DSLIST, this setting must fulfill your needs
properly. After all, depending on how this option is set, you must make the
selection masks accordingly in the DSLIST panel.
I give you no recommendations for the use of the option Include Additional
Qualifiers. You have to decide yourself what setting you like more after you
have read the following remarks concerning the settings and benefits of
DSLISTs. The following two examples will show you the effect of the Include
Additional Qualifiers option:

Example 1:
Display a DSLIST with the Include Additional Qualifiers option when set to OFF
using the mask PROX.*.REXX:

Screen 6.6: DSLIST display when additional qualifiers option is OFF

As you can see, in this case only the actual desired DSNs will displayed!

Example 2:
Display a DSLIST with the Include Additional Qualifiers option when set to ON
with the mask PROX.*.REXX:
Screen 6.7: DSLIST display when additional qualifiers option is ON

Now, the grayed names appear additionally. Sometimes this extended display
is pretty annoying and unnecessary, so I turned this option off. In this example
you can see that all data sets are displayed that meet the conditions of the mask
from the beginning. Additionally, all files with all sorts of qualifiers that match
the mask will displayed.

The same effect, which you can reach by setting Include Additional Qualifiers
Option to ON, you, can also achieve when you end the selection screen with the
generic binary stars. Example: LANZT.**.shows all of DSN beginning with
LANZT.

Remark:
The setting of the Include Additional Qualifiers option also influences the ads
in the personal data set lists started from the ISPF panel in which this option is
set.
However, you can apply a little trick: If you changed this option in a 3.4 Panel,
then you need to display this panel ONCE with ENTER. Thereafter, this option
also works for the personal data set lists called in this ISPF logical screen. I
recommend that you run some tests with this option in order to gain experience
in dealing with it. Well worth the effort!

For all further considerations hereafter, we assume that the option include
additional qualifiers is set to OFF.

I will now show some examples that make the definition of DSLIST masks
significantly.
You can use to control the selection with the two special characters asterisk (*)
and percent (%).
– One asterisk acts as a wildcard character. This means that from this point one
or more characters can occur within only one qualifier.
– Two asterisks consecutively cause displaying from here DSNs including ALL
qualifiers and characters.

Some examples will illustrate this effect:

I only enter my user ID LANZT and get the following display:

As you can see, only the Alias entry appears. See also chapter 2.1.3.1 The high
level qualifier (HLQ) on page 18.

Then I enter the following mask: LANZT.*

Now I get at least the display of a file. However, why only one? The reason is
that with the extension (.*) in my mask, only such data sets will be found that
have exactly one further qualifier behind the HLQ.

Now let's try it with LANZT.** and we get to see all the data sets which start
with the HLQ LANZT.
Examples of DSLIST masks: Include Additional Qualifiers is set to OFF in DSLIST
panel.

Table 6.1: Examples of DSLIST masks


Mask Shown DSNs
Data sets that begin with SYS and have only one qualifier.
SYS* These are just alias entries. This selection is very good to look
for alias entries.

SYS*.* Data sets that begin with SYS and have two Qualifiers.

All data sets in the whole system, having exactly three qualifiers
*.*.REXX
and their last qualifier REXX is.

All data sets in the whole system, who have REXX as the last
**.*.REXX
qualifier.

All data sets that begin with SYS. Be careful when trying out.
SYS*.** This can be tens of thousands! In my test, there were over 12
thousand.

Data sets that have the HLQ LANZT whose second qualifier is
LANZT.%%.*
exactly two characters long and still have a third qualifier.
PROX.**. REXX All data sets that have PROX as HLQ and REXX as LLQ.

Volume serial
We will discuss the use of this field in the section 6.6.2 Using the volume serial
field on page 111.
Initial view
Here we should choose option 1 as this allows the display, particularly with
very large DSLISTs, very quickly to go on. When the list appears and you need
the extra file information, you can use the keys PF10/11 to display the
information. If one of the options is 2-4 set, the system collects namely the data
set attributes from catalogs and VTOCs. This can take quite a long time.

Enter "/" to select option


The entries in the first two lines are particularly important because they again
determine whether we get a security question during DELETE operations. You
should always leave both options switched on!

6.4 DSLIST panel processing


The processing options for the files displayed in the DSLIST panel are very
extensive. It is a screen similar to an edit display. A detailed description of the
opportunities provided by the DSLIST Panel, see the IBM
brochure ISPF User’s Guide Volume II in the main chapter Utilities in the
subsection Data Set List Utility (option 3.4). In the following sections, I will
describe only the, in my opinion, for the daily work important options and
commands.
Remark:
These described methods in the following sections apply to ALL DSLIST
panels irrespective of whether they were by a simple selection of the Panel 3.4
or by a Personal Data Set List created.

6.4.1 The DSLIST primary commands


As you will see, there is a large number of sometimes very useful primary
commands. The following panel shows these commands:
Screen 6.8: DSLIST primary commands

Remark:
The shaded commands are interesting. I recommend doing some practical
exercises. The LC function is useful if you do not like the displayed colors and
you want to customize it to your taste. The commands VA, VS, VT and VV
listed at the end of the panel may ignored because the keys PF10/11
(LEFT/RIGHT) can meet these functions better.
I would like to address you on two relatively new commands. Namely, the
commands MEMBER and SRCHFOR:

6.4.2 THE COMMANDS MEMBER AND SRCHFOR


In a DSLIST display and only then, you can use these commands in the following
manner:
Enter the Command MEMBER as Primary Command. That means, enter at the
command line MEMBER, MEM or M and add a member name or a mask to
search for members in all in this DSLIST displayed PDS. The result will appear
directly in the DSLIST panel.

Example for member lookup with MEMBER:


I have searched for the member HUGO by entering M HUGO. Then I get the
following display:
Screen 6.9: Member search in a DSLIST display

As you can see, the member HUGO stays in the data set PROX.LOGON.REXX.

Example of a text search with SRCHFOR:


When creating a REXX procedure that should run under ISPF, I use the
QBASELIB command. Because I do not know exactly how this command can
used, but remember to have used it before, I search for it in my REXX data sets
by first displaying the DSLIST for REXX procedures and then enter the
command SRCHFOR. In contrast to member searches, text searches require
more information. For this reason, the following panel appears first after
entering the command SRCHFOR: (in the panel, I already filled out the search
and display options to save space).

Screen 6.10: Text string search using SRCHFOR

I have entered the grayed lines.

Very important here is that you ENTER in this panel behind the text Listing
DSN: a DSN that the system can create. When this panel is for the first time
displayed, the DSN SRCHDSL.LIST stands here. However, you can usually not
create a file with this name because you have no RACF authorization for the
HLQ SRCHDSL. The best is you choose as the DSN name If the file
does not exist, it is automatically by the application created. When you call up
the command SRCHFOR next time, DSN will always be available and displayed
here. If you put a slash before the view output field, then the file with the search
results are conveniently displayed immediately after the end of the search
process in View mode. This display follows here:

Screen 6.11: Example of a SRCHFOR list output

For each data set and each member in which the text found is, the
corresponding information is stored in the list data set. You can exactly see in
the list what the search has adduced. Also displayed is in how many members
and rows the search operation was successful. If the search text will not found
in one of the involved data sets or members will this case also logged in the list.

Conclusion:
I think with these two search tools you have good tools available for searching for
members or texts. The best part is that you can let the search run over several data
sets. If you want to exclude some data sets from the search run, you can exclude
displayed DSNs from the screen by using the line command X or even the block
command XX. You can redisplay excluded lines using a REFRESH command.
Remark:
You can now use CUT and PASTE to copy some of the search found lines to
another file currently edited in another ISPF logical screen.
6.4.3 DSLIST LINE COMMANDS
Let us look at the DSLIST help panel by pressing PFl:

Screen 6.12: Table of DSLIST line commands

The following input options can be in front of a data set name entered:

You can enter a slash (/) and get the following panel:

Screen 6.13: Data set list actions

As you can see, many actions can be on the selected file performed. However, I
particularly draw attention to the Actions 18-22. These commands allow you to
manipulate the list. In particular, the action 18 is interesting. Use this command
to add the selected file name to an already existing DSLIST. This DSN remains
permanently registered in the specified DSLIST. You should carefully consider
whether you want this. The actions 1-17 are self-explanatory so far and I do not
need to go into details. I recommend that you simply perform some tests using
these options!
You can enter an action character:
The following table shows the most important action characters:

Table 6.2: DSLIST action characters for data sets


Char. Action Remarks
Sequential data set: the edit panel appears
e Call the editor immediately PDS:
the member list is displayed

b Call browse ditto as in Edit

v Call view ditto as in Edit

Show the member


m Error message, if data set is sequential
list

r Rename Rename the data set

i Info Show data set attributes

c Catalog Catalog the data set


u Uncatalog Uncatalog the data set
You can enter a procedure name:
In this case, the procedure will called up and the DSN will forwarded to the
procedure. However, the called up procedure must be able to do something
with the DSN. This means the procedure has the DSN take as an argument and
will used accordingly.
Note:
You need to know when calling the procedure at which position within the list
of parameters the procedure expects the DSN and you must also know if other
parameters passed are.
Suppose the procedure expects the DSN in the first place and it is to provide yet
another parameter. Then you have to enter the call as follows:
PROC1 / PARM
Here, the slash represents the DSN. If the procedure expects the DSN as the
second parameter, then enter the following:

PROC1 PARM /
To be able to give long parameter lists in such calls, you can overwrite this DSN
field. The DSN will then internally correctly to the procedure as parameter
passed.

The following panel shows such a call with overwriting the DSN:

Screen 6.14: Example of a command call in a DSLIST display panel

What happens here?


1. The program compdate will start.
2. The parameters 'PEVP.PACKTIME.DGP1' and april are passed to procedure
as arguments.

We have here 54 characters available. You may ask now: How can I make such
calls if the input requires more than 54 characters? To do so, look at the option
Do not show expanded command in the next chapter

6.4.4 DSLIST SETTINGS


Already in DSLIST basic menu (selection 3.4), you can specify some options that
affect the appearance and working with the DSLIST panels. However, there is
another way of setting the DSLIST display panel and the member list panel
callable from the DSLIST display panels. In addition, other options for the
commands and actions are executable in the panels mentioned above. These
options can only be set when a DSLIST panel currently is displayed. To access
this panel, proceed as follows:

We position the cursor in the action bar in the options field and press enter.
Then the following pull-down menu appears:

Screen 6.15: Options pull down menu in a DSLIST panel

In this pull-down menu, we select option 1 for DSLIST settings and press enter.
Then we get the settings menu for the DSLIST options:

Screen 6.16: DSLIST options setting panel

With a (/) in front of their text, the options turn on. When a blank entered is,
this option will turned off. The effects and meanings of these options are in the
following pages explained:
Display Edit/View entry panel (*)
When a direct edit/view call to a sequential data set or a member will
performed and this option is ON, the edit/view entry panel appears before the
edit/view session starts. You then have the opportunity to enter additional
options. This option has no effect on a call of a member from a member list.

Automatically update reference lists


This option controls the automatic update behavior of ISPF for DSLIST REFLIST.
If this option is on, then whenever a data set will edited, the DSN is to the
standard DSLIST called REFLIST written.

List pattern for MO, CO, and RS actions


If this option is on, the member list appears before one of the above operations
on a PDS executed are so that you can select individual members for the
planned operation.

Show status for MO, CO, and RS actions


If this option is on, the process activity of the above operations is in a POP UP
panel displayed.

Confirm Member delete


This option has the same effect as the same option in the DSLIST basic panel.
Changing this option will automatically update each in both places. This option
can be set specifically using the CONFIRM command.

Confirm Data Set delete


This option has the same effect as the same option in the DSLIST basic panel.
Changing this option will automatically update each in both places. This option
can be set specifically using the CONFIRM command.

Do not show expanded command


If this option is off, then an additional panel appears in which you can modify
the command before executing. This facility provides the ability for a program
or procedure call of to pass a long parameter list as is possible in a DSLIST panel
with its maximum of 54 characters.

Enhanced member list for Edit, View, and Browse


If this option is enabled, all displays of member lists which were called up with
e for edit, v for view and b for browse in one line of a DSN appear with a eight
character long call box in front of the member name.

Recapitulation:
The advantage of this enhanced member list is that you can perform other
functions in the same member list directly after returning from a member.
The disadvantage is that after creating a new member in an editor or view
session, the member list will, after returning from the session, not updated
automatically. Therefore, if you want to use the new members immediately, you
have to rebuild the member list using the REFRESH command.

I set these options in my ISPF as they as can be seen see in the above panel.
However, this is a matter of taste. Find out your own favorite setting!

6.4.5 EXAMPLES OF THE DATA SET LIST SETTINGS


On the following pages, I want to show you some examples of the effect
regarding the options discussed above. I recommend trying these examples on
your system. You may have use for them someday!

The edit/view entry panel:


When edit/view calls a sequential data set and this option is set to ON, then the
below panel always appears before the contents of the file displayed is:

Screen 6.17: The edit/view entry panel


As you see on the panel, you can now set some options before you start with the
edit/view session. If you have entered the options, it goes directly to the editor
by pressing ENTER.

List Pattern for MO, CO and RS actions

This option is especially important for the application of RS to update the


member statistics in a PDS. If you want to edit all members at once with this RS
action, then you should disable this option. If you want the member statistics
renew only for selected members, then you should enable this option. If the
option will turned on, the following panel that is already filled in for the next
step appears when you invoke RS in front of a PDS:

As you see, two of the members currently have no member statistics. The
member statistics will by selecting the members with s and pressing ENTER
created. Thereafter, the following panel appears, in which we must make the
required entries for producing a renewal of the member statistics:
Screen 6.18: The Reset Member Statistics panel

This panel is now filled out in the shaded positions and ENTER is pressed. After
a short time, the following panel appears. There we see that the member
statistics are set correctly.

Tip:
If you renew with RS many member statistics, I recommend to set Show status
for MO, CO, and RS actions to on. You can then track the processing progress
on the screen in a POP UP menu by whizzing the names of the members
treated.

Enhanced member list for Edit, View, and Browse:


I want to illustrate to you with the following two figures how this option affects
the display of the member list. You can then decide with which you prefer to
work. Pros and cons of both displays types were explained above.
Screen 6.19: PDS members list with enhanced option ON

Screen 6.20: PDS members list with enhanced option OFF

One of the advantages of this panel is that it is sufficient to position the cursor
in front of a member name and press ENTER to edit this member. This type of
display also has a slight advantage in terms of safety. You cannot accidentally
enter a d for delete and press ENTER like in the Enhanced panel. This is also
one reason why I prefer working with edit/view and browse using the simple
panel. Another great advantage of this panel is that after CREATE of a new
member in this PDS, the display is immediately refreshed and thus the new
members immediately appear in the member list after leaving the current edit
session.

Confirm member delete:


Normally, you should always have this option enabled. This means, if you type
in an enhanced member list against a member or several members d for delete
and press ENTER, the following POP UP appears:
Screen 6.21: Confirm member delete panel

Pressing ENTER deletes the member.


If you even enter before the line set member delete confirmation off an s before
you press ENTER, then the delete confirmation fuse remains off for the duration
of the DSLIST session. Only when you leave this DSLIST session and call it up
again will the general security setting taken up again.

6.5 Personal data set lists


In this chapter, we will deal with one of the most efficient tools in the entire
ISPF. First, here are the basics of the personal data set lists:

When working in ISPF we need many data sets and we can usually group them
by any rule. For example, it makes sense to group the data sets according to
their use as follows:
– Data sets containing procedures.
– Data sets containing panels
– Data sets containing skeletons
– Data sets containing messages

In addition, we have the following groups of data sets:


– Data sets for source codes
– JCL data sets
– Data sets for the maintenance of IMS, CICS, DB2, etc.
– Data sets for test data

In the course of working with the ISPF, we always have ideas for new groups.
You
should note that a DSN might appear in several DSLISTs. Create your DSLISTs
as
you need for a particular activity.

What are the advantages of using Personal Data Set Lists?


– You only need to remember one command to make a whole group of very
different DSNs available.
– You can add or remove additional DSLISTs to the current DSLIST.
– You can install the call to a DSLIST in your private command table and in this
way call it up very fast.
– Find DSLISTs using the selection 11 in the Primary Option Menu and hold it
permanently available in an ISPF logical screen. Customize and display them
directly from the ISPF Workplace.

6.5.1 CREATING PERSONAL DATA SET LISTS


For creating your own Personal Data Set List, proceed as follows:
You move the cursor in a DSLIST panel (3.4) to the text RefList in the CUA line
and press ENTER. The following panel will displayed:

Screen 6.22: Create a personal data set List

If you now enter 2 and press ENTER, then the menu for the maintenance of your
own personal data set lists appears.
One list called RefList is definitely available. ISPF creates this list automatically
and maintains it. This list will at least appear in this panel. If only the RefList
list will displayed, then you can use the action Save As to create your own new
private DSLIST. The following screen shows the state if no other lists than the
default one are available:

If you place the cursor in the line with the name RefList and enter the character
a (for Save As) and press ENTER, then you get the following screen:

Screen 6.23: SAVE AS confirmation panel

You enter in the List field the maximum 8 characters long name of your new
DSLIST and in the line Description an appropriate description for your DSLIST.
Then press ENTER.

The panel for editing DSLISTs reappears. In the upper right hand corner, a
message appears saying that the new list has been created. Please see the next
panel:
The gray names descends the operation with Save As. You must now replace
the DSN through appropriate DSN masks and delete the unneeded rows. The
result of these actions might look like this:

If you now enter in the line of DSLIST NEWREXX an L and press ENTER, then
the new DSLIST appears in 3.4 mode displaying the new set of DSNs.

6.5.2 CALL DSLISTS


DSLISTs can be in various ways displayed. We must differentiate:
– Views for using one DSLIST.
– Views for maintaining all DSLISTs.
Views of DSLISTs using the command DSLIST.
Here is the description of the DSLIST command from the associated tutorial
panel.
Screen 6.24: Description of the DSLIST command

According to the information provided above, you can call individual DSLISTs
using three ways. However, there are some other ways to work with DSLISTs.

6.6 Entering the DSLIST command with the name of a


DSLIST
Screen 6.25: Direct call of a DSLIST by name

When you type in the gray highlighted command and press ENTER, the DSLIST
NEWREXX appears immediately.
6.6.1 Entering the DSLIST command without parameters

Then the following panel appears.

Screen 6.26: DSLIST command without parameters

To display a DSLIST, type in an s before the name of a DSLIST and press ENTER.

6.6.1.1 Integrating a DSLIST call in the command table ISPCMDS


You should use a short and concise name for this entry such as +R. This name
may be a good choice. The entry might look like this:

See the section 6.7 DSLIST optimal use with command tables on page 112.

If you have made the registration in the command table as shown, then you can
simply call the DSLIST NEWREXX anywhere in ISPF by typing +r on the
command line followed by ENTER. The entry of SCRNAME ($NEWREXX)
ensures that when the command SWAP LIST is entered, the name $NEWREXX
in the screen as ISPF level appears. This effect shows the following screen:
Screen 6.27: Display of SWAP LIST command

6.6.2 USING THE VOLUME SERIAL FIELD


Let us look at the DSLIST basic panel:

Screen 6.28: Using the volume serial field in DSLIST panel

With regard to the entries in the fields Option ===>, DSNAME Level and Volume
serial, the following combinations of input are usable:
1. If you enter a mask in Dsname Level and let Volume serial empty, then the
system will search for the DSNs in the catalog that match with the selection
mask and these DSNs are then displayed. It can happen that DSNs displayed are
for which at least in this LPAR no physical data set exists. This happens when
file attributes are missing following the filename.
2. If you type in a v behind option ===>, then you must enter in Volume serial a
complete volume serial name (disk name). This action then displays the VTOC
Summary Information of the disk.
3. If you enter a volume serial number and you leave the DSNAME field empty,
then all DSNs contained in this disk are from the VTOC (Volume Table of
Contents) read and then displayed. If you enter a generic term as Volume Serial
Number, such as HUGO*, all DSNs on all disks that satisfy this selection are
displayed. Attention, this can take a long time!
4. If you enter a volume serial number and enter in the DSNAME level field a
DSN mask simultaneously, then all DSNs from the VTOC (Volume Table of
Contents) corresponding to the DSN mask are displayed.
Remarks:
The setting of the Include Additional Qualifiers option also determines the ads
in the data set lists. You must always this setting keep in mind when you use
a DSN mask. I would like to repeat that you should always set the Initial View
in the Data Set List Utility panel to 1 (Volume). If you have mistakenly used
a wrong mask and thus very many DSNs will displayed, this option reduced
the wait time considerably.

6.7 DSLIST optimal use with command tables


After learning how to use DSLISTs and ISPF command tables intelligently, we
can simplify and accelerate our work in ISPF significantly. It is probably easiest
if I explain my system working with ISPF, in daily work as part of a very complex
ISPF application at a customer. The use of the ISPF tools is in my opinion on a
very high level and is of course not the same it was at the beginning of the
project, but I gradually brought him in the course of about 15 years to this level.
Therefore, if you follow this proposal in setting up your ISPF, you get the
maximum benefit immediately.

6.7.1 ORGANIZATION AND NAMING CONVENTIONS


Before we install the entries in our ISPF command table for calling DSLISTs, we
should worry about the command texts we want to define to call our individual
DSLISTs. To do so, see the following comments:
– We should distinguish all calls to DSLISTs of the other commands that are
indeed in the ISPF command table, preceded by a special character.
– These calls should be as simple as possible and be entered quickly. This
special character should not require the shift key and be as close as possible to
the ENTER key. Two keys fulfill these conditions for using to build the names
for commands (we cannot use any special characters). These characters are the
plus sign (+) and the minus sign (-).

I defined the following scheme for myself:


– The plus sign (+) precedes all calls for my own commands to call DSLISTs. The
rest of the call name consists of a letter or letters that give an indication of the
type of data sets, which this command should display. For example, +R stands
for all REXX data sets, +P for all panel data sets, +S for all skeleton data sets etc.
– The minus sign (-) is used to reset. For example, I use the three characters ---
to depose the REFRESH command.

6.7.2 CALL DSLISTS USING THE ISPF COMMAND TABLE


Calling DSLISTs using an ISPF command table entry is with the secret program
ISRDSLST done. See the section 10.2 Program ISRDSLST on page 182.
If no own DSLISTs defined are, we can use the ever-present DSLIST REFLIST as
a starting point:

Screen 6.29: Use REFLIST to start defining an own DSLIST

Here is an excerpt from my own ISPF command table as represented by the


SMART ISPF utility SICMD where you will find some DSLISTs, corresponding to
the naming conventions that we have above discussed:
Screen 6.30: Define ISPF command table entries using the program SICMD

Here follow more


entries!

The shaded entries have special significance as explained in the following table:
Call Meaning
++ Calls all available DSLISTs in administration mode.

+P Calls a DSLIST containing all panel definition data sets.

+LU Calls the DSLIST REFLIST containing the last 30 referenced data sets.
SICMD Calls the command SICMD to maintain the ISPF command table.

– You only need a few key strikes to get the required data sets immediately
available.
– If you create your DSLISTs intelligently, you do not need to remember an
infinite number of DSNs. You can include a DSN in several DSLISTs.
– You can save yourself a lot of search work. This is especially important if you
have to operate under time pressure.
– With the ISPF Workplace, you have a powerful tool to optimize the use of
DSLISTs. See the next chapter.
– The commands SRCHFOR and MEMBER offer more possibilities to use
DSLISTs.
Recommendation:
If you plan on developing own ISPF applications, you should install a
test and a production logical level for each ISPF library. This would
especially useful if there are several users working on the same project.
The first logical levelcontains your own programming elements and the
second logical levelis the group one.

7 The Object/Action Workplace


Learn about one of the newest tools of the ISPF. It provides a standardized
interface for working with DSLISTs. I can highly recommend this tool, because
it simplifies working with DSLISTs extraordinary. It is a real power user tool!
In the previous chapter, you became familiar with the DSLISTs, now we can
discuss a tool that makes the use of the DSLISTs elegant. Through the
workplace, we gain access to the well-equipped ISPF Object/Action
Workplace facility. This is a relatively new tool in the ISPF. It is an object-
oriented processing installation in the ISPF. Objects in this context are data sets,
members, volsers and DSLISTs.

The ISPF Object/Action Workplace can be in three ways called up:


– Using selection 11 in the primary option menu.
– Using the ISPF command ISPFWORK in any ISPF Panel.
– Using an appropriate entry in the ISPF command table. You need to insert
this entry by yourself. See the section 7.1.1 Calling the workplace via the
command table on page 116.

After you have selected the tool using one of the above mentioned call types,
you see a menu that represents a combination between the traditional DSLIST
access menu, selected by using the ISPF menu 3.4 and the command DSLIST,
which directly shows the DSLISTs. Through this combination, this panel has
become my absolute favorite menu. From here, I can do almost anything that
has to do with data sets.

For example:
– Call of a DSLIST by entering an appropriate mask behind Object Name.
– Selection of a DSLIST from the list of my DSLISTs by entering the line
command DL in the action column of the displayed DSLISTs.
– Manage a DSLIST by typing a slash (/) as the line command in one of the
displayed DSLIST rows.
– Get out a certain DSLIST mask or a DSN from the amount of the existing
DSLISTs and paste as object name by typing a slash (/) as the line command and
select an object from the displayed DSLIST content.
– View the contents of a VTOC by entering a VOLSER in the volume serial field
and blank out the field behind object name.
– Displaying specific data sets, selected through a mask from a VTOC, by
entering a VOLSER behind volume serial and setting the mask in the field object
name.The ISPF workplace panel

7.1: The ISPF workplace panel


The following image shows my own workplace panel:

Screen 7.1: The ISPF workplace panel

Tip:
In contrast to the DSLIST command, the workplace has a weighty advantage:
If you select a DSLIST via the workplace and you come back by pressing the
PF3 button, you land again in the workplace with the display of all DSLISTs.
You can then start the next action from here without previously having to recall
the workplace.

7.1.1 CALLING THE WORKPLACE VIA THE COMMAND TABLE


If you want to set up a short command to the call of the workplace, you can
achieve this through the following entry in the ISPF command table:

In this way, you can call the workplace using the command WP everywhere in
the ISPF.

7.1.2 OPERATION OF THE WORKPLACE PANEL


Two terms are very important when operating this panel. Therefore, I will
explain these first:

Objects:
In the Workplace - when no DSLIST selected is - all refers to the object that is
after Object Name entered. This means that operations relating to an existing
data set, like, for example, showing the data set characteristic can started only
if the registered data set actually exists. On the other hand, you must enter the
name of a nonexistent data set as an object if you want to create this with an
action command.
There are two ways to start actions.
– Using the pull down menus in the action bar.
– By entering an action command in the line Action ===_>
There are about 85 action commands. Because you can always enable it, also
menu- driven, via action bar, it is not necessary to memorize these action
commands. In fact, there are only four ways of operating within the workplace
panels:
1. If you enter anything in the Action field, then this action will performed,
whereat most of the actions are to the object in the Object Name field related. If
you press ENTER and there are behind Object Name and Volume Serial no other
entries in the panel, then the following happens:
– If the entry in Object Name is a DSN mask, the resulting DSLIST will then
displayed just like in the menu 3.4.
– If the Object Name is a DSN of a PDS, the member list of this PDS will then
immediately displayed. The workplace in this case works differently than menu
3.4 does.
– If the Object Name is the DSN of a sequential data set, the content of this data
set will be directly displayed in view mode. If you enter e for edit in the Action
===>, an edit session for the data set is opened. The same applies to b for
browse and v for view.
2. If you press ENTER and one of the DSLIST lines contains the action
command DL then this DSLIST will displayed.
3. If you press ENTER and one of the DSLIST lines contains a slash (/) then the
DSLIST maintenance menu will displayed. Here you have two possibilities for
further use:
– You can modify the DSLIST entries. If you leave the panel using the PF3
button, the new entries are immediately active.
– You can select a DSLIST entry with s and press ENTER. Then this entry will
take over into the panel as an object in the workplace and it will run
automatically. The next that appears depends on whether you have selected a
mask or a DSN. See point 2 above.

7.1.3 ACTION COMMANDS IN THE WORKPLACE PANEL

As I have mentioned above, there are approximately 85 action commands. For


a full description of these commands, see the brochure ISPF User's Guide
Volume II in the chapter workplace (option 11).
I would like to explain some of these commands here. I first classify these
commands into categories and then explain my opinion concerning the most
important commands. For completeness, I point out that each original ISPF
command can also be as action command entered.
7.1.3.1 Action commands to control the display.

Table 7.1: Workplace action commands to control the panel display

Command Function
Thus, you can switch on and off the display of the
ACTBAR
action bar in the work-

NOACTBAR place panel.

Toggle the workplace panel between the display of the


LV or LISTVIEW
data set and the

library display. Normally, you need only the data set


display.
Provides the ability to change the color of the screen
COLOR
displays.

7.1.3.2 Action commands of the workplace


Some of these commands come in two versions, once as a call with one
character and as a call with two characters. When the call with two characters
is used, the second character is always a p. The p stands for prompt, meaning
that before executing the command still a pop-up panel appears, that offers
several choices for the actual execution of the command. The following
examples demonstrate this effect.

Many of these commands are actually unnecessary because you can directly
access the functions such as RENAME, EDIT, BROWSE and so on when a DSLIST
is displayed.

Table 7.2: Workplace action commands

Command Function
A, AP A stands for allocate and is used to create a new data set.

B Browse.
C, CP Copy.

D, DP Delete.

DL The traditional DSLIST panel.

VTOC display of a Volume. A Volume Serial must also


DVT
entered.

E, EP Edit.

G Reset member statistics.

I Viewing data set information.

ICS Turns on the TSO command shell (such as menu 6).

ICT Leads to the display of ISPF command tables.

Shows a POP UP panel for selecting the display of data set


IP
information

Shows the members list of the registered object for the


J
purpose of submit

LP Shows a POP menu to select some displays of data sets.

M Move.

ML Member list.

N Rename of a data set.

O Open (shows member list).

P, PP Print.

PVT Print VTOC content.

R, RP Rename members and sequential data sets.


S Short data set information.

SC, SCE SuperC call.

SETTINGS Call of the panel to adjust the settings of the ISPF.

SF, SFE SearchFor call.

T TSO command call, when a members list is displayed.

U Uncatalog of a data set.

V, VP View
Z Compress

7.2 Examples of workplace operation


The following four examples should give you an idea, what type of work can
quickly and elegantly carried out using the Workplace:

Example 1: Call of a DSLIST


We move the cursor to the row of the desired DSLIST, type DL there and press
ENTER.

Screen 7.2: Call of a DSLIST from the ISPF workplace

Thus, we get the following result display. Only the last few lines will displayed:
Example 2: Call of a DSLIST, selecting a DSN maintenance menu and
viewing the members list of this PDS.

We move the cursor to the row of the DSLIST REXX, enter a slash / and press
ENTER. Screen 7.3: Call of DSLIST editor for a DSLIST of the workplace panel

Screen 7.3: Call of DSLIST editor for a DSLIST of the workplace panel

The DSLIST maintenance panel for the DSLIST REXX appears.

Since PROX.REXX is a full DSN, not a generic DSN-mask, and the PROX.REXX
data set is of type PDS the members list of this PDS will displayed. The following
screen looks like this:
Screen 7.5: Display the member list of a PDS from the workplace

Example 3: Display the data set information:


If we leave the above member selection panel with the PF3 key, then the
previously selected DSN in DSLIST maintenance window is in the object name
field. For this data set, we can now perform an action ===>. We choose the
action code i to display the data set information and press ENTER. Then the
data set information for this data set appears:

Screen 7.6: Display the data set information of a DSN from the workplace

Example 4: Show the DSLIST when using a generic mask in the DSLISTs
maintenance window.

If we enter the maintenance window instead of the above selection of


PROX.REXX a generic mask, such as PROX.*.REXX, we get the following screen:
Highlights relating to object/action workplace:
– This system combines the advantages of the DSLIST panel, which we reach
using the 3.4 selection with those of the DSLIST command.
– In addition, it offers the possibility of directly maintaining DSLISTs by
entering the selection (/) in a DSLIST row.
– The object/action workplace can be by means of several routes reached. Here
are the possibilities of the call using the commands ISPFWORK and WP in
opposition to the selection of the ISPF option menu command 11 especially
interesting, because this surface must not leave the current ISPF logical screen.
It comes back to the same point as soon as you leave the workplace panel.
– Compared with the DSLIST command to display the DSLISTs, the workplace
panel has another advantage that opens the workplace panel not only to the
choice of the DSLISTs, but is also still there, coming back from the selected
DSLIST, which is not the case when using the DSLIST command.
– The workplace panel is a dialog panel, while the DSLIST panel is a pure display
and selection panel.

8 The ISPF editor


The ISPF editor is the most powerful line-oriented data set editor in the world.
It is therefore ideally suited to edit program source code, test data, JCL, and so
on. In the following sections, I will give you different examples that show the
performance of the ISPF editor. In these examples, the windows clipboard is in
different ways used as a passing memory. We work here with the 3270
emulator software from IBM under Windows.
The follow on for the sake of completeness: You reach the editor by selecting
option 2 from the primary option menu. Usually, the editor will started directly
by entering an e in front of the name of a data set in a DSLIST display. On this
occasion, we might as well mention two relatives of the editor, so that we have
to consider three tools:

EDIT

The editor itself

VIEW
The VIEW is usable like the editor. The difference is that the data set can be
changed but not written back to the original data set of the same name. Of
course, it can be under another name saved. The numbering in the left column
will in a different color than in the editor displayed. All editor commands and
features can used.

BROWSE

BROWSE only displays data. The display structure is completely different than
in the editor or view, such as the colors, line numbering, etc. Other than editor
and view it does, the BROWSE loads not the entire data set into the memory
before the contents displayed are. Only the data part that fills one screen will
be loaded. Therefore, use BROWSE if you want to see the contents of very large
data set.

8.1 Table of EDIT primary commands


As you already learned in the introduction section, there is a distinction
between primary commands entered at the command line and the line
commands that will entered in the rows (lines) within the data region of a
panel. We now want to turn to the primary commands by telling you this first
in the form of a table. For the detailed description of the primary commands,
see the IBM brochure: ISPF edit and edit macros, Chapter 10: Edit Primary
Commands.

Rules:

Using rules concerning the syntax of the commands that are in the following
tables of the primary commands and line commands listed:

Uppercase letters:

These texts must exactly be entered as they listed are. However, they can be in
lowercase entered.

Lowercase letters:

These variables can be by the current values replaced. Lowercase is usable.


Highlighted in grey:

These are the default values (default options).

In square brackets []:

These operands are optional.

In curly braces {}:

These operands may be used alternatively.

Among themselves standing operands:

These operands can be used optionally. If none of these operands are selected
then the default operand applies.

The OR symbol (|):

One of the specified operands must entered here.


Table 8.1 on page 125contains the most important primary commands. The
shortest possible abbreviation for the commands and the default operands are
in grey highlighted:
Remark:
For the sake of simplicity, I copied some of the original command descriptions
from the IBM manual Edit and Edit Macros. I have added useful information
to some commands.
Table 8.1: Edit primary commands
Table 8.2: Operands of edit primary commands

8.2 Table of EDIT line commands


The first six columns of the editor are used for entering line commands. These
commands occur separately or in pairs. If they occur in pairs, they are called
block commands. A block command consists of two consecutive single-line
command characters in one line. Block commands combine multiple lines into
a block to be edited together. A block of lines begins with a block command in
a line and ends with the same block command in a different line. All operations
of both individual line commands and block commands will only pertain to the
conditions laid down in the BOUNDS zones! The command syntax is the same
as for the primary commands.
Here is the table of the edit line commands. The default assumptions are
highlighted grey:
Table 8.3: Edit line command summary
8.3 Displaying and maintaining an edit profile
Like all complex systems, the editor also has a control element called Profile.
You can of course look at these profiles and the options contained therein can
to your needs be changed. There are two different commands with which you
can control the profile options for the editor. Both commands are only usable if
an EDIT or VIEW session is active.
1. Command: EDSET/EDITSET
2. Command: PR/profiles

8.3.1 SETTING EDIT OPTIONS WITH EDSET/EDITSET


EDSET sets the global settings for the work with the editor within the
environment of an ISPF user. These settings then apply for all edit sessions of
the ISPF user.
The call to this function is by entering the commands EDSET or EDITSET
carried out in the command line of an edit session and pressing ENTER.
Then, the following POP UP panel appears:
Screen 8.1: Edit and view settings

In this Panel, you can use the following options that apply to all EDIT/VIEW
ISPF sessions:
User session initial macro #IMACROA
Here you can enter the name of an edit macro. This macro is in every
EDIT/VIEW session called at boot before a possible for the DSN also defined
IMACRO called is and before the data appears on the screen.
Maximum initial storage allowed for edit and view ... 0
This number identifies the maximum amount of memory in kilobytes, which the
system makes available for EDIT/VIEW sessions. If a called data set is too large
for the specified memory size then the system automatically switches to a
BROWSE session. If the specified number is zero then the system uses all
available memory. If this space is not sufficient then the call attempt ends with
an error. I suggest leave this option always on zero.

Target line for find/change/exclude string ... 5


This statement works only when the following option enabled is:

Always position find/change/exclude line string to target


If this is the case, the editor automatically positions the first line found out
when the above-mentioned operations performed are, as the fifth row from the
top of the display. This option is something for fans of this function. Test the
function and decide whether you want to work with it or not.

Always position find/change/exclude line string to target


If this option is set, the pointer will always jump in a seek to the localized
position

Remove action bars in ISPF edit and view panel


Through this option, you can set that in the EDIT/VIEW panels the action bars
are hidden. As a result, you have a line more in the EDIT/VIEW display
available. I like using this option.

CUT default / PASTE default


Understand these entries if you are to do this. See the chapter CUT and PASTE
on page 159. Then use this option at your own convenience.

Confirm Cancel/move/replace
This option sets that, if during the execution of one of the above operations, you
would overwrite data, you will prompted with a panel for confirmation. Let this
option always set to on.
Apply setting immediately
With these two options, you can determine that changes you make in this panel
made immediately after pressing the PF3 button to be effective or at the next
EDIT session. I let these options always on.

8.3.2 EDIT PROFILE SETTINGS AND THEIR USE


The EDIT profile set specific processing rules for the EDIT sessions. You can
name the EDIT profiles and attach them to certain data set types. Then, you can
use the name when calling these data set types in the edit panel (option 2 in the
ISPF). This is normally unnecessary, however, because the different profiles are
automatically associated to the data set types (LLQs) of the ISPF. This automatic
function requires that you use a consistent data set name concept however.
We want to look at such a profile. To do this, proceed as follows:
1. We edit a member in a JCL data set.
2. We enter the command profiles 9 in the command line and press ENTER.
With the 9 behind the command, we tell the editor to show us all the rows of
the profile. The maximum number of lines in the profile display is in fact nine.
He would otherwise show only the first five lines.
3. And the following screen is displayed:

Screen 8.2: Display the edit profile

In the edit profile, there are two groups of entries:


– The =PROF> lines containing the related profile options.
– Miscellaneous lines.

The most important = PROF> options:

JCL (FIXED - 80)

The data set name type of this data set is JCL. This is from the last qualifier of
the DSN SQMT.JCL derived. The records are FIXED and the LRECL is 80 bytes.
Starting from this type of data the JCL lines will displayed in cooperation with
the option defined with HILITE JCL data according to the type of JCL as colored
code.

RECOVERY ON

RECOVERY ON means that all changes are during editing logged. This has two
advantages:
– You may withdraw all changes with UNDO while editing systematically.
– If during an edit session a system crash occurs, you can continue this edit
session, when the system is running again. This recovery action is automatically
by the system offered when you call the editor the first time after a restart.

I recommend to always working with RECOVERY ON.

NUMBER OFF

The lines of the data set are not numbered. NUMBER ON STD would number
lines on the columns 73-80.

CAPS ON

When entering text while editing, each ENTER will transfer the entered
characters to uppercase. This is of course important for JCL lines because these
lines must always be in uppercase created. The editor when calling an edit
session of a JCL data set may automatically set this mode. This option works in
the following way: When you edit a data set in which CAPS OFF was during the
last session used and the editor finds that only text with uppercase letters exist
in this data set, the editor uses then CAPS ON autonomous. Conversely, it works
the same with CAPS OFF. This effect will be with a warning announced.

NULLS ON STD

NULLS ON means that blanks will with NULLS filled at the end of the text of the
line. When NULLS is active, text can be in a row inserted without deleting
previously the required number of characters.

PROFILE LOCK

With this option, you can protect the profile from override. If this option is set
to LOCK the profile, when leaving an edit session, is not during the profile
changes made in the edit session overwritten. You can still change the profile
during the session, and these changes remain active during the session. This
option prevents that changes in the profile lead at later edit sessions to
surprises. Here above all the =BNDS> line is mentioned, which is explained
below. When PROFILES LOCK is set, the current contents of the profile will
saved.

IMACRO #IMACRO1

MACRO stands for Initial Macro and means that the edit macro #IMACRO1 will
executed before the display of the edited data set appears. The macro
#IMACRO1 is in Volume 2 in the chapter on the edit macros in detail discussed.

HILITE JCL

This means that the lines in this data set are color designed along the lines of
JCL. See the section 8.4 Colored code for EDIT and VIEW on page 135.

SETUNDO STG
The information for undo changes made are stored in the main memory (STG =
storage).

The miscellaneous lines:

The miscellaneous lines can be as input and structuring help used. You can as
often as needed insert them in the edit text. If you save the data set, they will
not save together with the data and will therefore not contain in the data set
when it is in the next edit session reused.

=TABS>

They contain tab items that are bound to when entering new lines.

=MASK>

This line contains a mask that is already contained in new inserted rows.

=BNDS>

This line defines the left and right column boundaries within which the edit com
mand works.

=COLS>

This line is a mask that contains a column counter.


Remarks to edit profiles:

– You can turn off the display of profile lines with the RESET or RES command.

– When leaving the edit session will the content of the profile only then saved
in the profile ISPF pool when PROFILE LOCK is not set.

– The profile definitions apply automatically to all data sets with the same data
set type, thus the same LLQ (last level qualifier) within our ISPF sessions. If a
different TSO user calls up the same data set it can use entirely different profile
options for this data set type.
– You should use the LOCK PROFILE option so that you do not experience
through an even leftover incorrectly set =BNDS> line unpleasant surprises.

– PROFILE LOCK does not save the CAPS, NUMBER, STATS and PACK modes.
They are set automatically according to the content of the data from the editor.

8.4 Colored code for EDIT and VIEW


After we have briefly handled the topic of the colored design of the lines of
specific data set types by the editor in the chapter about the profiles of the
editor, we now want to concentrate on this topic. Unfortunately, I cannot
demonstrate these beautiful assistant features because colored printing would
have pushed up the price of this book significantly. However, I will try to lead
you to the benefits of this institution through appropriate references in mind.

8.4.1 COLORED CODE - WHAT IS IT?


Perhaps you have an editor already in another system seen who has offered the
colored code representation for programs in C or Java. If this is not the case, I
want to explain what benefits are in the display of the ISPF editor colored code.

– Pairing of brackets will reviewed and if the pairing is not valid, it will be
marked with different colors.

– The commands of programming language might appear in a different color


than the other texts.

– Comments might be shown in different colors. The beginning and end of


comments can be readily detected.

– The pairing of DO-END sections is easily checkable.

– Incorrect continuation lines could be marked.


All this and much more is offers the colored code feature of the ISPF editor! For
a comprehensive description of this topic, see the brochure of ISPF edit and
edit macros in the chapter: Enhanced and Language-sensitive Edit
coloring. On the following pages, I will introduce this technique, and I will give
you some tips and tricks.
8.4.2 SETTING THE COLORED CODE
For setting up the colored code the edit command HILITE is used. This
command can be in two ways applied:

– As a command to set individual options by typing in the command HILITE in


the command line accompanied by one or more operands.

– As a command to invoke the HILITE dialog. To do this, just type in the HILITE
command in the command line without operands.
Tip:
I recommend to always using the HILITE dialog because this dialog panel offers
you more options. You are able to perform your desired settings specifically in
this panel.
Now we want to look at this dialog. For this purpose, I have called a REXX
procedure in the editor and entered the HILITE command without any
operands. The following pop-up panel appears:

Screen 8.3: Edit color settings panel

I have grayed out the important points in this Panel:

REXX
This is the LLQ (last level qualifier) in the data set XYZMSTR.BOOK.REXX(SSC),
from which I have called the member SSC in the editor. When I dialog settings
in the HILITE dialogue have performed and I press then the PF3 button to leave
the edit session, then will these HILITE settings in the ISPF profile data sets
saved.. Henceforth these HILITE settings apply to all data sets with LLQ REXX.
They are also applied to members who are in the same data set but do not
contain REXX program code.

Language:

Here we must specify for which language the colored code is defined. In that
case, we select 14 for REXX.

Coloring:

With this choice we set, the kind of monitoring with the corresponding color
design we want to have displayed. Best is to choose 3 because we want to get
the optimal benefit from colored code facility. For example, I added too many
END statements in the following part of the program. This odd END is marked
therefore inverse:

tip:
This test detects however if too many END statements exist, but not if there
are too few! However, with nested DO arrangements each new DO is marked
with a different color and the pair of the corresponding END with the same
color. Thus, it is relatively easily to adjust each new entered do statement with
its corresponding END.

Parentheses matching

If we choose this option, then will the brackets pairing in the source code
monitored. The same colors are thereby to the related pairs of parenthesis
assigned. When the pairing disrupted is, then will the position where the
imbalance begins highlighted in color.
Example:

I added at the end of the second line of the following JCL statement a close
bracket too much and in the third row behind (5,5,10,RLSE) I omitted the
corresponding close clip. Thus, the last clip of the second row and the first
parenthesis of the third row are each displayed inverse. This will here grayed
shown.

Highlight FIND strings

If this option enabled is, then will all texts, which a FIND command finds, shown
in highlight inverse.

Example:

In an edit session of a JCL data set, I have entered the command find iefrder.
The found bodies will then represented as highlight inverse. Here, they are in
grey highlighted:

Highlight cursor phrase

This option makes the part of the text where the cursor after an ENTER is,
represented with highlight invers.
Remarks to the colored code and HILITE:

– The settings you make with the HILITE tool always apply to all data sets that
have the same LLQ.

– When you create backups or clones of data sets and a colored code is set up
for that, then make sure that the LLQ in the new data set name is maintained.
For example, if you create a copy of the USERID.JCL, then name the new data set
USERID.SAVE.JCL and not USERID.JCL.SAVE. When I create backup files, I
frequently define the DSN of the backup file so that I append the LLQ
additionally to the original DSN, regardless of whether the original file already
has the same LLQ. E.g. is the name of the original data set USERID.JCL, then I
choose for the backup data set USERID.JCL.JCL.

– You can assign the same HILITE options to different LLQs. For example, in the
data set LANZT.LOGON.CLIST the most members are REXX procedures.
Therefore, here the HILITE options are the same as for the data sets with the
LLQ REXX.

– You should define a naming concept for the LLQs of the data sets for which
you want to use colored code. Select DSNs as short as possible. This facilitates
the overview and saves a lot of typing.

– You should never save your JCL members in the same data sets where the
REXX source codes are. When doing so, you must either permanently change
the colored code settings or accept a slightly odd colored code representation
for one of the two types of data sets.

– On the following page you will find recommendations how to select the LLQs
for your program data sets

8.4.3 UNIFORM LAST LEVEL QUALIFIER


As you can see from the above, it is very important to choose the right LLQs
when creating data sets that are for use program libraries and JCL.

The proposals in the following table can be as a guidance used:

Table 8.4: Proposals for last level qualifiers


HILITE selection LLQ Contents of the data sets
Assembler ASM Assembler programs

C C C programs

COBOL COBOL, COB COBOL programs

ISPF panel PANELS Data sets of the ISPF panels


ISPF skeleton SKELS Data sets of the ISPF skeletons

JCL PROCLIB, JCL, CNTL Data sets with JCL members

PL/I PLI, PL1PL1 programs


REXX REXX, CLIST REXX programs

8.5 Edit recovery


We have looked at the treatment of profile options already under option
RECOVERY ON/OFF. Now we want to take a closer look at the subject of edit
recovery. You probably already worked with text systems in the PC area and
what the function of the Edit/Undo offers. Exactly the same function will also
found in the IPSF with the establishment of the Edit Recovery.

Establishment of the ISPF edit recovery offers the following possibilities:

– Changes in the current edit operation you may withdraw gradually.

– You can recover the edit after a system crash at the point at which it
interrupted was.

The requirement for the availability of this function is that you have in the edit
profile option RECOVERY ON set. SETUNDO RECOVERY can switch on the
recovery function even indirectly. See the next chapter. What happens when a
file is edited, for which RECOVERY ON is already active or re-set?

As soon as a first change is made in the data set and this change is activated
through an ENTER or PF button a recovery data set is created. Henceforth, all
changes will be logged during the edit session in this data set. It is used as a
data source for the UNDO command (in the SETUNDO RECOVERY) and as a
backup for the RECOVERY process after a hard crash of the editing session.

Examples of recovery data sets:


I have totally four edit sessions in my TSO user open and carried out a change
in each. After that, I could find the following recovery data sets:

If my TSO user would now be shot down by an operator intervention or by a


system crash, I could continue editing, when the ISPF is available again, using
my four edit sessions. However, here do you ask How does the system know
after a restart that edit recovery data sets are pending? To answer this question,
I need to explain the operation of the recovery mechanism:
As soon as the first change of data in an edit session carried out is, happens the
following:

– The ISPF editor creates an Edit Recovery Data Set.

– An entry will in the user PROFILE member ISREDRT inserted containing the
name of the edited data set and the name of the corresponding recovery data
set. Thereafter, the member ISREDRT is immediately to the profile data set
ISPPROF saved.

If the edit session terminates, the following normally occurs:

– The entry in the member ISREDRT will deleted and the member will
immediately written back into the profile data set ISPPROF.

– The editor deletes the edit recovery data set.


Caution:
With this recovery mechanism, a difficult situation can arise:
If your TSO session aborted was and one of the recovery data sets is for
whatever reasons no longer available after restarting your ISPF, then ISPF tries
on each editor invocation to start the recovery for the aborted edit session, but
the corresponding data set cannot be found. In this case, you only have the
possibility to abort the recovery process with CANCEL. In this case, the
changes contained in the data set recovery are irretrievably lost.

8.6 The UNDO function


You probably know the UNDO function of systems in the PC area. The almost
same functionality is available in the ISPF editor. Just like in PC systems, you
can in the ISPF editor with UNDO your last made changes to the edited data set
systematically and in reverse order take them back. The main difference is that
once redeemed with UNDO, changes cannot be restored as with most PC
systems. However, unlike the systems in the PC area, the UNDO function must
explicitly activated by enabling it. Nevertheless, when the UNDO function once
enabled is, it remains for the edit profile that was in use, permanently on
because this status will in the edit profile saved.
The undo function can retrieve the data for canceling the changes from two
different sources:

– From the recovery data set.

– From main memory.

Under what circumstances these two possible sources tapped are, depends on
the status command, which has been last with the SETUNDO command used.

8.7 Turn the UNDO function on and off


The UNDO state will with the edit primary command SETUNDO changed. This
command has some operands:

SETUNDO STORAGE | RECOVER | ON | OFF

The operands:

STORAGE ON

Enables the UNDO function and addresses the main memory for storing the
UNDO data. In the edit profile the entry SETUNDO STG appears. As of now, the
changes made in the edit session are stored independently of the RECOVERY
status in the main memory and retrieved from there when entering the UNDO
command.
STORAGE OFF

Disables the main memory as storage location for the undo data and defines the
disk storage as memory for the undo information.
Depending on the current recovery status, there are two possibilities:

– The recovery status is OFF. Then SETUNDO will turned OFF and the undo
command is no longer applicable.

– The recovery status is ON. Then automatically SET UNDO RECOVER will
turned on and the undo information is stored from now on in the recovery data
set.

RECOVER

Defines the recovery data set as location for the undo data. If RECOVERY has
previously been set to OFF, RECOVERY is automatically set to ON.
You may have noticed while reading the SETUNDO command the operand
STORAGE is in italics. The reason is as follows:
The ability to use the main memory as a buffer for the undo data must activated
by the system generation for the ISPF in this MVS LPAR by the
UNDO_STORAGE_SIZE option set to a nonzero value in the member ISPCONF.
When this option not set is then you can use only SETUNDO RECOVERY. If this
feature is in your system not enabled, you must not give up using undo. You can
always use SETUNDO RECOVERY.
I want to show you in the following examples the contents of some edit profile
and explain the situation regarding RECOVERY and UNDO in each case. The
explanation of each state is always below the output of the profile options
printout:

Recovery is on. The undo data set is the recovery data set REXX (FIXED - 80)
RECOVERY ON NUMBER OFF
Recovery is on. Undo data are stored in the main memory.

Recovery off. Undo data are stored in the main memory.

Recovery is off. Undo is not possible.

The following list contains the conditions, under which no UNDO, or after the
occur- rence of which UNDO is no longer possible:

– If a SAVE command is by manual input issued or by an edit macro, all undo


information will deleted.

– Changes performed by an Initial Edit Macro or a Recovery Edit Macro cannot


be restored by undo.

– When a global change is performed using the ALL option, the changed lines
are marked with a CHG==> indication in the line command column. These
indications can deleted using the RESET or RES command. The display of the
CHG==> indication cannot using the undo command be resumed.

– Because all changes during an edit session only refer to the data stored in
memory, changes made in other data sets performed by the edit command
CREATE, REPLACE, MOVE, cannot be withdrawn using undo.

– However, if you removed some lines just located in the edit data set using the
MOVE line command (e.g. CUT or CREATE), you can get them back again using
undo. The target content in the other data sets will retained even when you
retrieve moved data.
8.8 FIND AND CHANGE
The commands FIND and CHANGE only differ by the fact that even the
replacement text is behind the search string in the change command specified.
Therefore, the following descriptions apply to both commands.

8.8.1 DEFINITION OF SEARCH OPERANDS


The structure of the operands for the following commands is almost the same
and can be discussed together. These commands are:

FIND, CHANGE, EXCLUDE with their abbreviations F, C, X


Usable command abbreviations:
CHANGE CHA, CHG, C,

FIND F

EXCLUDE EXC, EX, X


The command structure looks like this:

string

For a change command, string consists of two texts, namely the search text and
the replacement text. All other commands governed by this structure string
only consist of a single text.

[range]

When this operand specified is, it must consist of a pair of line labels (.a .b). The
command operates only within the rows specified by the range. The order of
the labels is arbitrary. The operation always works from the line with the
smaller line number to the line with the higher line number defined by the
labels.
[NEXT]

Specifies the operation direction downwards. In repeated executions using


RFIND or RCHANGE only one command is executed.

[ALL]

Specifies that the entire edited data set be used by the command. So also
the ex- cluded lines.

[FIRST]

Specifies that only the line containing the first occurrence of the search text
should be by the command processed.

[LAST]

Specifies that only the line that contains the last occurrence of the search text
should be by the command processed.

[PREV]

Specifies the direction upwards. In repeated executions using RFIND or


RCHANGE only one command is always executed.

[CHARS]

Use this option to find all characters of the search text.

[PREFIX]

Use this option to find only those texts where the search text at the beginning
of a word is contained.
[SUFFIX]

Use this option to find only those texts where the search text at the end of a
word is contained.

[WORD]

Use this option to find only those texts where the search text appears as a
complete word.

[X]

Use this option to search only in excluded lines.

[NX]

Use this option to search only in NOT excluded lines.

[col-1] [col-2]

It searches only within the specified columns. When only col-1 specified is, only
these rows will found, in which the search text starts exactly in this column.
When col-2 is greater than the LRECL of the data set col-2 is automatically set
to LRECL.

8.8.2 Definition of simple search texts


When a plain text searched is, it is sufficient to specify this in the search text as
well as in the replacement text.

Example: c Jim will all

Jim is replaced by will in the entire data set, where will is always set in
lowercase, even if JIM or jim or Jim is found.

If texts contain blanks or special characters, you should always specify them in
quotes.
It is possible to use in string pairs the ' (apostrophe) character as well as the "
(quotation mark) character. This opens the possibility also to replace these
characters by making use of the respective other character as a delimiter.

Example:

Result: 'CAFOPEN' will replaced by "CAFOPEN" in the entire edited data set.

8.8.3 DEFINITION OF SPECIAL SEARCH TEXTS


As in the following versions to use the change command shown, you can search
texts build up so sophisticatedly, that really no wish remains unfulfilled. These
specific definitions are into five categories divided.

1. Delimited strings

A delimited string begins and ends with a single apostrophe (') or a single
quotation mark ("). There are some special cases, where a delimited string must
be used as search or replace text. In case of doubt use delimited strings, then
you are always on the safe side.
For the following cases, you must use delimited strings:

– If the search string contains the following characters: blanks, commas,


apostro- phes or quotation marks.

– If the text can be interpreted as keyword or column specification.

– If the text contains asterisks (*).


2. Hex strings

To find or replace hexadecimal characters use hex strings. A hex string is a


string enclosed by quotes, front or rear contains an X. The string of hex strings
must be consist of an even number of characters and may only contain the
characters 0-9 and A-F.

3. Picture strings

Use picture strings to search for a specific type of character and not for a
specific character. A picture string is one character enclosed by quotation
marks. The first or last character must be a P. The picture string can contain
blanks and other characters that will stand on their own as well as one or more
special picture characters, which the following table shows:
Table 8.5: Definition of picture strings for FIND and CHANGE commands

The following table shows some typical examples for the definition of picture
strings:

Tip:
If the editor find characters in a string when searching, it displays them in the
short message line (top right of the screen) in hex representation. It searches
only within the specified columns. When only col-1 specified is, only these rows
will found, in which the search text starts exactly in this column.
The following example will show that:

The search is looking for four consecutive nonprintable characters.

Screen 8.4: Looking for nonprintable characters

You can also use picture strings in a limited way by the replacement text of a
change command. The following rules must observed:

Rules:

The replacement text must be exactly as long as the search text.


Only the characters =, <, and > can be used.

Example:

The command c all p'<' p'>' converts all lowercase letters in a data set to
uppercase letters. That goes with this command in any case faster than with the
CC block line command in the first and last line.

4. Character strings

Character strings in the search text must be case-sensitive.

8.9 EXCLUDE
One of the best facilities of the editor is the ability to exclude selected rows from
the display or display only certain rows. The remarkable thing is that various
commands, and here is mainly the CHANGE command called, are applicable to
both the excluded lines and the not excluded lines. The excluded lines must not
be in a contiguous area. Furthermore, you can exclude any line groups or
individual lines from the display and reinsert them successively in the display.
The EXCLUDE command can abbreviated to X. The EXCLUDE command is
available as edit primary command and as line command. Let us look at some
examples:
I started an edit session of a JCL member and I excluded all lines using the
primary command x all. Then the following display appears on the screen:
Screen 8.5: Exclude all lines in an edit

Now I want to know how many steps the job has and what programs called are.
To achieve this, I make all lines visible that contain the search string PGM=:
I enter the command f pgm= all. As a result, I get the following display:
Screen 8.6: Display excludes lines selectively

The following commands can used to display the invisible lines immediately
before or after a visible line:
Ln This line command makes n lines before a visible line also visible. L means
last.
Fn This line command makes n lines after a visible line also visible. F means
first.
These line commands must be in the line representing excluded lines entered.
In the above screen, the line command L3 makes the last 3 excluded lines of a
total of 8 excluded lines visible again on the screen. After entering the above
shown line command L3, the following display appears:

Tip: If you want to bring all excluded lines between two lines that are visible
on the screen to display, first check out how many rows are excluded, then enter
one of the two commands with a number that is equal or higher than the
number of excluded lines. This closes the gap completely in the display.
Remarks concerning excluded lines:

– If you want to make all excluded lines in an edited data set visible again, then
enter the edit primary command RES or RESET and press ENTER.

– If you want to delete all excluded lines between two visible lines, then you
just need to enter a D in the line representing the excluded lines and press
ENTER. Use this delete action with care!
Tip:
When only such lines should be displayed, which the search string contain, do
the following: Exclude all lines with x all and then perform the search.

8.10 SHIFT and OVERLAY


Preliminary remark:
In the next chapters many RENAME statements will generated, which must be
by the TSO processor executed. These rename statements are in REXX
procedures however. For those of the readers who are not familiar with the
REXX programming in z/OS, I must first explain how the rename statements
come from the REXX procedure to TSO for execution. However, it is quite
simple: If the REXX processor a command line that in quotation marks enclosed
is detects, then it assumes that this a TSO command is and it is immediately to
the TSO processor for execution sent.
It happens very often that you have to rename several or many data sets or
members. This can be done manually. Such a practice is, however, tedious and
error prone. Even if there are more than one or two names that need to be
changed, it is worthwhile to build a procedure and perform this job by
executing only this procedure. A procedure for a rename action has the
following advantages:

– It is relatively safe from clerical errors, as the new names were generated
using CHANGE commands in the procedure. The accuracy of the new names can
be before the procedure runs checked. When you have manually performed a
rename, and a character in the new name is typed in wrong and you have
pressed ENTER without noticing the error, it may happen that you will never
find the renamed element again.
– The procedure is still available after first-time use. This means if something
went wrong, you can still detect and correct the error by checking the rename
protocol.

– If there is a large number of names to rename, the only practical way is to use
a procedure.

8.10.1 Example one for using OVERLAY Task:


Task:
In the course of a reorganization of a collection of data sets, the data set names
should be in such a way amended that a further qualifier can be behind the first
qualifier inserted. Assume that all data sets named TEST.LOGON.* shall be
renamed in TEST.HUGO.LOGON.*.
We get the file names of the data sets renamed due to entering a suitable mask
to display the data sets involved in the menu 3.4. Thus, we get the following
screen:

Now we store the data set names using the mouse to the windows clipboard.
Then we call in our data set for executable REXX procedures, the prepared
member RENAME to carry out rename actions in the editor:

Then we repeat the line 000007 at least as often as we have to edit the data set
names. In our example, we repeat the line four times. Now we set by inserting
the DSNs from the windows clipboard with a blank interval to the right of the
first RENAME and the following screen shows up:
In the next step, we pick the data set name again from the clipboard and insert
it as far to the right of the existing names that after the longest name at least
one blank space remains.
Caution:
To prevent the editor moving up the blanks before the second name to the
left in the subsequent ENTER, we must set a NULLS OFF command previously.
Because of this action, we get the following screen output:

Now, we must ensure that the new names appear in the second column of the
names. To do so, we enter in the line 000007 the line command BNDS and press
ENTER. Then the BNDS line appears as a data line and the first column contains
the character <.
Move this character to the right as far as it is exactly in the column in which the
second group of DSNs begins. From now on act all change commands only to
the second group of DSNs. Now you can rename the right group of DSNs so that
the new names appear due to use the following change command:

After pressing ENTER, we get the following picture:

In the lines marked with ==CHG> you can see which lines were by the change
action changed. The DSNs in the procedure can stay in lowercase letters. TSO
accepts this during the execution of the rename command. Because the
procedure is performed as a REXX procedure and RENAME statements are TSO
commands, we now need to ensure that any RENAME statement is terminated
with a " (quotation mark). To do this, proceed as follows:
1. Enter in the =BNDS> line an I (for insert) and press ENTER.
2. Then position the cursor in the inserted row as far right until it is behind the
longest name of the RENAME instructions and enter there a quotation mark (").
3. In the same line, go to the beginning and enter an m (for move).
4. Then put the block command oo into the first and last line of the RENAME
statements.

The screen now looks like this:

Now complete the creation of the rename procedure by first pressing ENTER
again. Thus, the overlay is running and the rename commands are ready for
processing. If you now enter on the command line RES and press ENTER, then
you get the following picture:

Now you can submit this procedure as a batch job using the edit macro #TSOB
of the SMART ISPF utilities. With a call of SDSF, you can check the correct
execution of the rename action.
The use of the windows clipboard is practical if only a few data sets have to be
renamed. If very many data sets must be renamed this is a very tedious way
because only a small number of lines can be transferred in one-step using the
windows clipboard. In the next chapter, I will show you a procedure to build a
rename job with many lines.
8.10.2 EXAMPLE TWO FOR USING OVERLAY
The first rename example is good if there only a few elements must renamed be
and their names can be transferred using copy and paste via the windows
clipboard. However, if you have to rename even hundreds of data sets, then you
have to use a somewhat different procedure.

These are the steps:

1. Generating a data set that contains all DSNs that are to be renamed.
2. Produce the rename statements using OVERLAY.
We will perform this example with only four names. It also works for 4000 or
more names.

Step 1: Create the data set containing the data set names.

1. Produce in the ISPF menu 3.4 (DSLIST) a display of the data set names that
needs to be rename.
2. Type in the command line the command save dsnlist and press ENTER. On
the top right of the screen the message appears Data set list saved.
3. Then press the PF1 button. In a frame at the lower area of the screen a line
containing the DSN of our listed DSNs appears.
Screen 8.7: Example for the generation of a data set list using a DSLIST panel

To save space, I combined in the above display the two successively displayed
screens.

Step 2: Edit the data set containing our DSNs

Bring the name of the list data set via the windows clipboard in the DSLIST
panel, press enter and edit this data set. The following screen appears:
Now you see a display in which not only the DSNs are that we need, but also in
a separate line for each of the DSN the name of the catalog in which the DSN is.
Remove the catalog lines from the data set first. Two steps are to perform for
this:
1. Exclude the catalog lines: Enter the edit command x ucat all and see that all
lines containing the text ucat excluded are.
2. Delete the excluded lines: Enter the command del x all. The ucat lines were
deleted and the screen looks as follows:

Now remove the additional information contained after each DSN in the data
set. Three steps are required:
1. Display the bounds line in the first data line by entering BNDS there.
2. Move the left bounding sign < so far to the right until it is behind the longest
DSN.
3. Then enter in the first and the last data line the shift left command ((999 and
press ENTER. The following display shows the screen before ENTER is pressed:

After ENTER the unneeded information is cleared away. Our data set now only
con- tains the DSNs that we need for further work.
Caution:
We must absolutely restore the left BNDS margin to the first data position. This
is necessary be- cause the editor saves this setting permanently for all data sets
with the LLQ datasets.
Before we continue our work, the edit screen must look like this:

Step 3: Create the rename statements in the rename procedure

Now edit the standard member of rename commands and copy the in step 2
generated data set into the edited data set after the last row.

Because the LRECL of both data sets are inconsistent, a warning screen shows
up. Respond to this screen with ENTER. The rows of the renamed DSNs are now
posi- tioned after the "RENAME line. Now stay in this edit up until the rename
procedure is completed. Perform the following steps:

1. Repeat all lines containing the DSN using the RR block commands on the first
and the last line of DSN. We now have all DSN lines twice in the edit data set.
2. Then exclude all lines in the edit except the second group of DSN lines using
the XX block command.
3. Change the visible DSNs to the new names used for the rename process using
the following command:
4. Then set at each end of the renamed DSN a " (quotation mark) because the
re- name command need this.
5. Redisplay all lines of the edited data set using the main command RES
(RESET). All lines are now visible again.
6. Then shift all DSN lines using the block command ))10 so far to the right that
they are at least one blank behind the "RENAME in line 7.
7. Then shift all changed DSN lines using the block command ))14 so far to the
right that they are at least one blank behind the longest DSN of the original ones.
8. No, set the lines containing the new names behind the lines containing the
old names so that they each fit by using the OO and the MM block commands.
The following screen shows this before the commands are executed:
Screen 8.8: Overlay of many lines

9. A last action brings the "RENAME statement in front of each DSN line. To do
this we set in the "RENAME line an M for move and in the DSN lines the OO
block command in the first and the last line. After ENTER our rename procedure
is ready for execution. See the following screen.
Caution:
In this action, you must absolutely be sure that both the OO and the MM block
addresses have exactly the same number of rows (and the right ones). If you
make a mistake here, this may cause a lot of trouble!
10. We execute the REXX procedure as a batch job by using the edit macro
#TSOB.
Notes on this example:

– The statement PROFILE NOPREFIX is required urgently because otherwise


the TSO would pre- cede each DSN with the user prefix (if it were set). You can
avoid the TSO PREFIX problem easi- est by setting the DSNs always in single
quotes ('). Especially when you use TSO commands which contain DSNs online.

– We will assume, in this example, that it is necessary to rename a large number


of names. Therefore, you should run this REXX procedure as a batch job. You
can use the SMART ISPF utility edit macro #TSOB to submit the procedure to
run as batch job. Another advantage of this approach is that you get a list output
of job execution in which you can control the flow of the procedure very
conveniently by using SDSF.

8.11 CUT and PASTE


It often happens while working in the ISPF editor that you want to transfer
individual
lines or whole parts of a data set to another one. In this case, you can use two
methods:

– Copying and pasting via the clipboard of the PC system.

– Using the primary commands CUT and PASTE of the ISPF Editor.
Both methods have their advantages and disadvantages. Therefore, let us take
a closer look at the operation of these two methods:

8.11.1 DATA TRANSPORT VIA THE CLIPBOARD OF THE PC


SYSTEM ADVANTAGES:
– The data can from any PC components be cut out and be inserted into the edit
screen.

– The cuttings need not be carried out line by line. You can snip any blocks from
the screen and paste it as a block at any cursor location in the edit screen. Data
from ISPF systems of other LPARs that are accessible from the same PC can with
this method easily transferred.
Disadvantages:
– With one transmission, only so much data can be as the 3270 screen can
insert transferred.

– During transmission, characters, depending on the used code pages, can be


wrong when they arrive in the target system.

8.11.2 DATA TRANSPORT VIA THE ISPF CLIPBOARD


ADVANTAGES:
– You can cut a large amount of data from one or more edited data sets and
paste them repeatedly in a receiving data set in the same or a different edit
session.

– You can define multiple data collections from various sources and then paste
them in several places in different edit sessions.
Disadvantages:

– Data can only be CUT and PASTE line by line.

– Data between LPARs cannot directly transferred be. This would work only
with a CUT action to a data set on a shared disk, which is in all participating
LPARs known.

8.11.2.1 The CUT and PASTE commands

Copies or moves a selected block of rows from the edited data to the ISPF
clipboard. [lprt range]
Here a pair of line labels of the format .a and .b can be specified, which must of
course previously be defined. The row selection is normally using the line block
commands CC or MM performed. When neither a range is specified, nor a
selection has been made by CC or MM, then the completely edited data set is
placed in the ISPF clipboard.

[DEFAULT | clipboardname]

You can assign up to nine separately named clipboards. These can then add
additional parts using the APPEND option to edit or insert individual PASTE.
Additional lines can be added to each clipboard. The shelves can be edited and
then into different data sets be inserted.

[REPLACE]

This means that the existing default or named clipboard content is by the data
of the current CUT operation overwritten.

[DISPLAY]

Use this option to display the clipboard manager panel. See example below!
PASTE [clipboardname] [AFTER label] [BEFORE label] [DELETE] [KEEP]
Copies or moves the data created with CUT in the edited data set.

[clipboardname]

This is the name of the clipboard data set, which should be inserted. If nothing
spec- ified is, the default clipboard is used.

[AFTER label], [BEFORE label]

These two options specify whether the data will copied before or after a row
with a predefined label. The line where the inserted data copied are is normally
defined using an A (after) or a B (before) line command. If neither a label nor a
line command A or B are defined, an error message is displayed on the right top
of the screen and the PASTE command will be not executed.

[DELETE] [KEEP]

These options determine whether the data will be deleted from the ISPF
clipboard or remain there for further copying when the PASTE command is
executed.
Note:
In each edit session, two labels .ZFIRST (addressing the first line of edit) and
.ZLAST (addressing the last line of edit) will automatically defined. They are
usable without defining them.
8.11.2.2 The CUT and PASTE default settings using EDSET

The present default CUT and PASTE options can be by the corresponding
entries in EDSET panel overwritten. The default values, which are set in the
EDSET panel, will always use if they are not explicitly overwritten when calling
the commands. There- fore, let us look at this panel again here:
Screen 8.9: Setting CUT and PASTE defaults in EDSET panel

8.11.2.3 Example of CUT and PASTE

Task: Create a batch job containing the following steps:

– Use the utility IEBCOPY to copy different PDS.

– Use the TSO processor IKJEFT01 to call procedure HUGO for execution.
I know there are examples of the necessary steps elsewhere in my ISPF data
sets. I use this now and put the necessary statements to the clipboard.
Therefore, I can illustrate the operation of the ISPF clipboard well. I put each of
the required steps to a named clipboard data set that is exactly as the executed
programs named.

Step one: Produce the clipboard entries JOBCARD, IEBCOPY and IKJEFT01.

– First, a complete job statement is required. The simplest way is to copy a job
statement that is guaranteed correct from a list output of a recently run job
found in SDSF. I know that one of the recently submitted and run jobs contains
a step with a call for the program IKJEFT01. I call the SDSF hold queue and
display the desired job output list by entering the line command SJ in the
relevant line. Then the list containing the JCL is in an edit session displayed. I
now prepare this list to CUT the lines containing the whole job statement to the
clipboard named JOBCARD. The following screen shows this situation before
ENTER is press:

JCL 8.1: Example JCL of a TSO execution in batch

– Now press ENTER and the lines 1 through 4 are under the name JOBCARD in
the ISPF clipboard written.

– To get the clipboard entry IKJEFT01 now, copy the rows 8 to 20 of the above
edit to the clipboard under the name IKJEFT01.

– To produce the IEBCOPY clipboard entry, edit an appropriate member of the


JCL data set, which contains an IEBCOPY step and cut the necessary lines.
The command CUT DISPLAY displays a panel showing the clipboard contents.
The clipboard contains now the following entries:
Screen 8.10: Clipboard containing some entries

Step two: Assemble the new job.

Now all needed parts have been collected for the new job on the clipboard and
they now will assembled. In order to get the desired job, start a new edit data
set and paste all necessary clipboard entries in. When everything is ready, the
edited data set looks as follows:
JCL 8.2: Assembled job using clipboard entries

Note:
I manually inserted the gray-shaded rows for better identification. Since the
option KEEP was not used in the PASTE commands the clipboard is empty now,
as the following screen shows:

As you can see, the designated clipboard entries are still there. They can be for
further actions used.

9 Utilities for allocated data sets


There are three Utilities available for displaying and controlling the data sets
allocated to your TSO user. These commands are actually TSO commands.
These can be, Unlike some other TSO commands, invoked directly in an ISPF
command line.
These commands are DDLIST, ISRDDN and ISRFIND.
Basics:
– DDLIST and ISRDDN are synonyms for exactly the same function, which
means you can use either one of them. In further explaining, I will always use
DDLIST. Calls to ISRDDN and ISRFIND must always be by TSO preceded.
E.g. TSO ISRDDN and TSO ISRFIND.
– ISRFIND plays no role in daily work within ISPF because its functions can
also be achieved via using the normal ISPF DSLIST function. Therefore, I will
not go into details about ISRFIND. If you are interested in ISRFIND, you can
simply test the program yourself by typing in TSO ISRFIND in the ISPF
command line.
As you may have noticed in the description of the TSO/ISPF logon process, the
data sets that allocated are there probably play an important role for your
TSO/ISPF user. Therefore, it would be important to have a tool with which you
can display the names of the data sets allocated. There are two possibilities to
display your allocated data sets.
– With the TSO, command LISTALC (List Allocation). This command is
described in the IBM manual TSO / E Command Reference. It provides,
depending on which parameters are used, a list of allocated data sets. If you
want to try LISTALC once, you can do it as follows in any ISPF command line
using the command: tso listalc st h.
– With the program DDLIST
The LISTALC command will not explained here because the program DDLIST
provides much better information and possibilities to work with the displayed
data sets.

9.1 DDLIST – Description and call


The program DDLIST is described in the brochure ISPF User’s Guide Volume
1 in appendix G. There is a description of all possibilities, which DDLIST offers.
I copied this description here:
DDLIST can used to manipulate the allocated data sets, but it also provides the
ability to answer questions like:
– Where did a module, which the user has loaded, come from?
– What data sets contain a specific member?
– Are the I/O errors and ABENDs the user is getting due to mixed record format
allocations?
– Who is currently allocated to SYS1.BRODCAST?
– Where and how often will a member in the currently allocated files found?
– How many members are in the allocated libraries and which libraries are
empty?
– Is the user running ISPF out of LPA or from STEPLIB?
Although DDLIST is a TSO program and must therefore as a TSO program be
called, but it can only run under the ISPF interface because it ISPF services uses.
To start the program enter into any ISPF panel in the ISPF command line TSO
ISRDDN or DDLIST and then press ENTER.
Then the following or a similar panel appears:

Screen 9.1: DDLIST panel display

This display will from left to right divided into three main columns:
1. The columns Blksz Lrecl RCFM Org show the data set characteristics of the
data sets appearing in the column Data Set Name. Pressing the PF11 key, you
can get more information here about the data sets and their status.
2. In the column Act, can individual commands entered, referring to the
rightmost data sets.
3. The columns DDname and Data Set Name contain the relevant information
just as the name says.

Tip:
The help function called by pressing PF1 contains comprehensive
descriptions the DDLIST program offers.
9.2 DDLIST operation
I want to show the most important uses of DDLIST, as I usually need in practice:
The DDLIST program provides answers to the following questions:
– Which DSNs are under which DD names allocated?
– In which of all allocated data sets is a specific member contained?
– What ENQs do exist now?
– Does a particular data set have ENQs?
– Is a specific load program present in the LPA chain; or is it present in the
LINKLIST chain; or does it not exist?
– Which data sets belong to the LINKLIST chain?
– Which data sets are APF authorized?
The line commands listed in the following table can be before a DD name or a
single DSN entered.
Table 9.1: Table of DDLIST line commands

The following chapters contain examples of some of the main functions you can
perform with the program DDLIST/ISRDDN.

9.3 Find a member


Sometimes it happens that you execute a procedure online, but you do not get
the expected result. This may perhaps be because you accidentally caught an
old version of this procedure or an entirely different one of the same name.
Such a case can be with the help of DDLIST quite easily identified.

To do this, follow these steps:


– You call DDLIST.
– You enter in the command line the command member name or shorter m
name. Name is the name of the searched member.

DDLIST will then begin to search all the allocated PDS for the member name.
After completion of the search, there are two possible results:
– The member was in all data sets not found.
– The member has been found one or more times.

When a particular member has been found at least once, its name will appear
in the left part of the panel next to each PDS in which the member is contained.
The previously stationed details are there hidden. You can now enter in the Act
column of each of these lines a B for Browse to look at the individual member.

We now search for the member HUGO. We enter DDLIST in an ISPF command
line and enter m hugo in the command line of the displayed DDLIST panel. We
see the following result:
Screen 9.2: DDLIST search example

We can investigate each of the displayed members by using browse and


determine the case, why in the execution of hugo a false result was achieved.

Short cut to find a member:

If you want to find a member very fast, use the following command in the ISPF
command line:
ddlist m hugo
When entering this command the following will happen:
– The DDLIST panel appears and the search run starts immediately.
– If the search is successful, the display of the DDLIST screen remains and the
members found are in the left column displayed.
– If the search is not successful, the display of the DDLIST screen disappears
and the message Member not found appears in the top right corner of the ISPF
panel.

9.4 Free a data set allocation


Sometimes it happens that in a running program, a file allocation is carried out,
which is not freed for any reason at the end of the program, this allocation still
exists.
Now, if we want to use this data set in a batch job, we get the message that this
data set is not free and the job remains at WAITING FOR DATA SETS. This
problem can be solved using the program DDLIST by entering a FREE command
in the line where the allocated data set appears.
We want to see once a case where we allocate an existing data set with
DISP=OLD in TSO online. Thereafter, we submit a batch job, which also use this
data set in a SYSPROC DD statement.

To allocate the data set allocation we enter in the ISPF menu 6 the following
statement and press ENTER:

alloc dd(input) dsn('PROX.LANZ.REXX') old reuse


By using the option OLD in the alloc statement, the data set is firmly exclusively
bound to the user who has executed this statement. Now, when a batch job tries
to use this data set, the job execution is paused and the following message
appears in the job log:
IEF861I FOLLOWING RESERVED DATA SET NAMES UNAVAILABLE TO
LANZTC
IEF863I DSN - PROX.LANZ.REXX LANZTC
IEF099I JOB LANZTC WAITING FOR DATA SETS
If we do not know exactly who holds the data set in exclusive access, we can
also enlist DDLIST to answer this question. To do so, call DDLIST and enter ENQ
in the command line. In the System ENQ Status panel that appears, we enter in
the line Minor name prefix the name of the DSN. All other lines remain empty.
If we then press ENTER, the following panel appears:
Screen 9.3: Use DDLIST to determine ENQs

In the column Job name we find the names of the jobs or users who are holding
this data set. To release this data set we call in our TSO user DDLIST. In the
display, we find the data set under the DD associated name INPUT:
We now enter F (FREE) into the Act column in front of the DD name INPUT and
press ENTER. This will release this data set in our TSO user and the batch job
can proceed.

9.5 Warning when inconsistent data set structures exist


If the CHECK option is set to ON when calling the DDLIST program, it is possible
that the following screen display appears:
Screen 9.4: DDLIST shows inconsistent data set characteristics in a
concatenated DD

The message in the frame of the above panel means that DDLIST has an
inconsistency in the data set characteristics of the data sets in the concatenation
of the DD statement SYSEXEC found. This condition can cause that you may not
be able to call procedures of this data set chain. This is only a warning. If you
ever work in your TSO user with such chains that contain inconsistent data set
characteristics, these warnings will be automatically on each call to DDLIST
displayed. If you can work perfectly with this structure, this message can be
very annoying with the time. Therefore, it is possible to suppress the display of
these warnings by entering the command CHECK OFF in the command line of
DDLIST.
Remark:
If you get unexplained crashes when running REXX procedures that are not
based on errors in the procedures itself, then you should pay attention to the
characteristics of the concatenated data set in the DD names SYSPROC and
SYSEXEC. To make this check, enter the command CHECK ON. Then all
inconsistent data set characteristics will displayed immediately.

9.6 The display options SHORT and LONG


These two options control the display of DD names with the corresponding DSN
to the effect that the DD name is either in front of the first DSN or in a separate
line above the first DSN. We want to first look at the display of a DD name when
the option is set to SHORT. We enter in the command line first SHORT and then
ONLY ISPSLIB and get the following screen:
Screen 9.5: Display of the ISPSLIB chain when option SHORT is active

If we now enter a B for browse in the column Act before the DD name ISPSLIB,
we get a screen that contains all members at their initial appearance within all
concatenated data sets of ISPSLIB. Here is an excerpt of this display:

The Lib column indicates the relative position within the allocated data sets, in
which each member was first found. This means that the displayed members
may occur again several times in further behind data sets. These members are
with this type of display hidden. If you now want to perform a browse only for
the first data set in the chain, then it did not work in a panel that was with the
display option SHORT created. It is only possible if no DD name comes in front
of the DSN in the first chain line. To adjust the display so that the DD name is on
a separate line before each DSN chain, we now enter the command LONG and
get the following picture:

Screen 9.6: DDLIST panel with display LONG set

If we now again enter b before the DD name, then we get the list shown above
with the member display from all DSNs in the ISPSLIB chain.
Now we can also enter a b before the first DSN and thus get only the member
list of this single data set:

9.7 Display system library chains


In z/OS, there are three very important library chains. These are:
LINKLIST, PARMLIB and PROCLIB. These three libraries are as follows used:

LINKLIST

This library chain contains all load modules that are available to all users within
a z/OS LPAR. By default, only the programs of the z/OS are included there.
Normal users can only execute the programs contained therein. The system-
programming department can add data sets used in this computer center for
production and user needs.

PARMLIB

PARMLIB is a required partitioned data set chain that contains IBM-supplied


and installation-created members. It must reside on a direct access volume,
which can be the system residence volume. PARMLIB is an important data set
in a z/OS operating system.
The purpose of the PARMLIB is to provide many initialization parameters in a
pre-specified form in a single data set, and thus minimize the need for the
operator to enter parameters. The most important PDS in the PARMLIB is
SYS1.PARMLIB. There can be as many PDS in the chain as necessary.

PROCLIB

PROCLIB is a collection of required partitioned data set chains that contain the
JCL procedures used to perform certain system functions. The JCL can be for
system tasks or for processing program tasks invoked by the operator or the
programmer.
The PROCLIB chains are in the JES2 start job defined. See the following JCL:

JCL 9.1: JES2 start JCL

The DD names must be in the range PROC00 to PROC99.

Remark:
Unfortunately, up to now no command is available in the DDLIST to
display the PROCLIB chain. The only way to get information
concerning the contents of the PARMLIB chain is to look into the above
shown member SYS1.PROCLIB(JES2). On the internet, there are some
REXX procedures available for displaying the PROCLIB chains.

9.7.1 DISPLAY OF PARMLIB MEMBER ALLOCXX


When we talked earlier in the book about the concatenated data sets, a
PARMLIB member named ALLOCxx in which the maximum number of
sequential concatenated datasets for an LPAR is set mentioned was. We want
to display this member now and use the special command PARMLIB of DDLIST:

Screen 9.7: Parmlib display using DDLIST


The program DDLIST inserts based on this instruction the DD name PARMLIB
with the corresponding DSN chain in our ad, although this DD name was not
available in our logon procedure. The possibility of PARMLIB display is a special
service of the DDLIST program.

We now specifically search for the member ALLOCxx and only in the DD name
Parmlib, by using the command m alloc* parmlib and press ENTER command
shown above. By specifying alloc* a generic search is performed for all
members that start with ALLOC. The following screen appears:

If we enter in the column Act in the line displaying Member: ALLOC* a b and
press ENTER, we obtain the display of a BROWSE panel with a member list in
which only the member ALLOC00 can be seen. If, as in this case, only one
member in the member list is available, you can be sure that this ALLOC00
member is also actively used. Should several members appear, you must ask
your system programming department, which member is actively used.

We call now the member ALLOC00, by entering an s before the members name
and press ENTER. In the browse display panel appearing, we look for the word
TIOT until the following display appears:
The TIOT contains an entry for each DD statement. The size of the TIOT controls
how many DDs are per jobstep allowed. By specifying an integer from 16 to 64
as the value of this parameter, the installation controls the default DD
allowance. Table 9.2 shows the relationship between the size of the TIOT and
the maximum number of DDs allowed. The following table is an excerpt from
the IBM manual MVS Initialization and Tuning Reference. The table shows the
relationship between TIOT size and allowed DD and unit elements.

Table 9.2: Relationship size of TIOT and maximum number of DDs allowed

Remark:
Single unit DD statements contain only one DSN and therefore one
unit.

9.7.2 DISPLAY THE LINKLIST CHAIN


DDLIST offers the ability to display the LINKLIST chain within the current
display. The display of the LINKLIST can be using the DDLIST command linklist
performed. The LINKLIST will immediately displayed using the command
ddlist linklist. In this
case, not only the LINKLIST will appear in the display, but also all other
libraries. See the following excerpt of the DDLIST screen:

Screen 9.8: DDLIST LINKLIST display example


Conclusion:
As you can see from these few examples discussed here, the program DDLIST
is a very useful tool. Take advantage of it. I recommend familiarizing yourself
with additional exercises with the program. To do this, use the extensive help
facility of DDLIST program, which is accessible via the PF1 key.

9.7.3 BROWSING STORAGE AND LOADED MODULES


DDLIST offers a wide range of commands to display virtual storage contents.
Only IBM system programmers use this feature. Here the general description of
this feature copied from the ISPF User’s Guide Volume I, Appendix G:
You can use the BROWSE command within DDLIST to view the contents of storage
within your address space. When you are browsing storage, you can use any of the
standard ISPF Browse primary commands. In addition, there are several
commands you can use to format and move around in the storage list.

10 Secret Programs
In this chapter, I would like to show you some programs and their call
parameters, which are in the standard literature not described. These programs
and commands can be very helpful. From the PC world, you perhaps know the
expression of the secret programs and commands. Some authors try to suggest
that they now tell you what is secret, and they are only familiar with this
mystery.

Where do these programs and commands come from? That is easy to explain:

In order to accelerate the daily work of the developers in the development


departments of the manufacturers, programs are written for own use. Then it
happens that supervisors and colleagues think that these programs are just fine
for their own work and suggest making these useful programs available to the
public.

The software manufacturer can do then two things:


– He can launch these programs officially. However, this also means he must
stand straight for the functionality of these programs. In addition, customers
expect a corresponding support, and that costs money.
– He can release these programs unofficially. This mostly excludes any
warranty, support and maintenance. In the PC world, such collections of
programs are tool kits called.

I would now like to introduce on the following pages some of some programs
that provide excellent services in the TSO/ISPF environment, but they are in
any official brochure of IBM not described. It involves the following commands
and programs:
– The TSO command CONCATD that we have already used at logon procedure.
– The DSLIST program ISRDSLST.
– The TSO/ISPF program TASID.

10.1 The TSO command CONCATD


If you want to add to the existing library allocations of the TSO user dynamically
additional data sets, then there is the problem that it is no official command
available to do this. However, there is the unofficial command CONCATD, which
you can use to do so. Here is an announcement of the IBM about this command:

CONCATD is in TSO not contained. It will usually installed from the MVSTOOLS
disk – CONCATD IBM Version 410 for 0S/390. Customers using the z/OS
platform will not have CONCATD available.Of course, the program CONCATD
runs on z/OS TSO. It only needs to installed be. You can check this easily by
calling the ISPF menu 6/TSO, and then enter H CONCATD and press ENTER.
Then, when the help information about CONCATD appears, the command is also
available. Let us look at the description of the CONCATD command:

Figure 10.1: Description of program CONCATD


As is apparent from the description, you can add DSN chains before front and
after rear existing assignments. In practice, however, mostly front DSN chains
are added to provide our own libraries positioned before the system level.

Here again the example of our logon procedure:


If we now look which concatenations are present after the above procedure
execution, the effects of CONCATD command will displayed. The front attached
data sets have been in gray highlighted.
10.2 Program ISRDSLST
The ISRDSLST program will used to display personal data set lists also called
DSLISTs. DSLISTs are collections of DSNs, which can be defined using masks in
ISPF to display groups of data set names. See also chapter 6 DSLIST – Data set
lists on page 85. You can use the ISRDSLST program in two ways:
– If you want to display a DSLIST within a procedure. To this end, it is unusual
to use this program.
– Within an ISPF command table. You can then call specific target DSLISTs
using a short command. Use in command tables is the main area of use for the
ISRDSLST program.

We now want to look at an example of how to use the program in a REXX


procedure. It is a pure sample procedure. Here the DSLIST ADMIN will called.

Program 10.1: Example to call DSLIST in a REXX program

The first parameter in the PARM field is the type of call and the second word is
the name of the displayed DSLIST. To call DSLISTs the first parameter is always
DSL. When the above procedure will executed, the following display appears:
If we now display the currently open ISPF levels using SWAP LIST, then we see
that the option SCRNAME ($ ADMIN), which we have specified in the call, is in
the display shown:

Examples to insert DSLIST calls into the ISPF command table. The fastest way
to call a single DSLIST entry is to insert the call into the ISPF command table.

Here some examples:

Example 1:

This entry causes the following:


Call in the ISPF command line: ++
Result: All available DSLISTs are offering the ability to use them displayed. See
the following screen:

Screen 10.1: General display of all DSLISTs


example 2

This entry causes the following:


Call in the ISPF command line: +prog or at least +pr
Result: All in the DSLIST PROG defined data sets. See the following panel:

Remark:
I have in chapter 7 The Object/Action Workplace on page 115 already
mentioned that the action workplace tool much better suited is for
calling DSLISTs. However, if you want to display only single DSLISTs,
the use of the ISPF command table is quite reasonable.

10.3 The TASID program


The TASID program is a very useful program if you want to find out information
about the z/OS system on which you are currently working. It is also an
unpublished program from IBM. However, it is not included with the TSO, but
you have to get it from your system-programming department. You need two
things to run TASID:
– The TASID program as a load module.
– The corresponding panel library.

If you have both sources, you must decide how you want to call the TASID
program.
There are the following possibilities to install and call the program TASID:
– You copy the program into a load library that is already in your TSO assigned
user and copy the 170 panels in your panel library. Then you can just call the
program with TSO TASID in the ISPF command line.
– You generate a small REXX procedure in your personal REXX library, which
performs the necessary assignments and call the program by calling this
procedure.

I chose the second path. See the small REXX procedure below:

Program 10.2: REXX procedure to call TASID

You can create the procedure as it is here. You only need to adjust the shaded
filenames to your needs. Just play around a little with TASID and you will see
that in the depths of tools much useful information can be found. You should go
through all the display options once.
Here an example of calling the TASID program. I have shaded some interesting
values:
Screen 10.2: TASID display screen

Here are the explanations of the greyed values:

Z/OS 04 This is the installed release of z/OS.

The name of the LPAR on which TASID has been


SMF ID LPRT
invoked.

User ID LANZT This is the USERID of the TSO user.

Proc LOGONXX This is the name of the logon procedure.


Region 6800 K The TSO user can up to 6800 K storage use.

ISPF Level 5.2.0 The ISPF release installed.

List of JCL
JCL 2.1: Copy job for concatenated data sets

Example job to copy a chain of concatenated data sets to one


JCL 2.2:
data set

JCL 3.1: JCL to start a TSO user

JCL 3.2: JES2 start job

JCL 3.3: TSO user start procedure

JCL 5.1: JCL to execute TEST1 in a native TSO environment

JCL 5.2: JCL to execute TEST2 in a TSO/ISPF environment

JCL 8.1: Example JCL of a TSO execution in batch

JCL 8.2: Assembled job using clipboard entries

JCL 9.1: JES2 start JCL

List of programs
Program 3.1: CLIST logon procedure

Program 3.2: Logon procedure XYZLOGON

Program 3.3: LOGON procedure example


TEST1: Simple program using the TSO
Program 5.1:
environment only

TEST2: Simple program using the ISPF


Program 5.2:
environment

Program 10.1: Example to call DSLIST in a REXX program

Program 10.2: REXX procedure to call TASID

Program 11.1: Member SLOGDSN

List of screens
Screen 1.1: ISPF tutorial help index

Screen 1.2: ISPF help display of all ISPF commands

Screen 1.3: Description of DSLIST command

Screen 1.4: SDSF primary option menu

Screen 2.1: Data set information panel of a PDS

Screen 2.2: Data set information of a PDSE

ISPF primary option menu showing the TSO


Screen 3.1:
logonprocedure name

TSO/E logon screen showing the TSO logon procedure


Screen 3.2:
name

Screen 3.3: Display existing ISPF library allocations

Screen 3.4: Display existing ALTLIB allocation

Screen 3.5: ISPF profile data set information panel


Screen 4.1: ISPF options setting

Screen 4.2: POP UP panel with view warning

Screen 4.3: Display a POP up help panel

Screen 4.4: Help display of a panel

Screen 4.5: Primary option menu with CUA line

Primary option menu with unfolded Status CUA


Screen 4.6:
selection

Screen 4.7: Primary option menu with calendar display

Screen 4.8: ISPF task list with eight ISPF logical screens

Screen 4.9: Function key definition panel

Screen 4.10: Example for command PFSHOW ON

Screen 4.11: Screen showing the PF key assignment

Screen 4.12: Display the current KEYLIST

Screen 4.13: The KEYLIST edit panel

Screen 4.14: My PF key assignment in SDSF

Screen 5.1: Command table utility

Screen 5.2: Member list of ISPTABL library

Screen 5.3: The command table utility panel

Screen 5.4: Contents of the ISP command table

Screen 5.5: SDSF command table update

Screen 5.6: SICMD working panel


Screen 5.7: Panel ISPUCMX – change ISPF commands

Screen 5.8: Display a list of all ISPF user commands

Screen 6.1: The data set list utility panel

Screen 6.2: RefList pull down panel

Screen 6.3: Personal data set list panel

Screen 6.4: Pull down menu for DSLIST View selection

Screen 6.5: Personal List Settings panel

DSLIST display when additional qualifiers option is


Screen 6.6:
OFF

Screen 6.7: DSLIST display when additional qualifiers option is ON

Screen 6.8: DSLIST primary commands

Screen 6.9: Member search in a DSLIST display

Screen 6.10: Text string search using SRCHFOR

Screen 6.11: Example of a SRCHFOR list output

Screen 6.12: Table of DSLIST line commands

Screen 6.13: Data set list actions

Screen 6.14: Example of a command call in a DSLIST display panel

Screen 6.15: Options pull down menu in a DSLIST panel

Screen 6.16: DSLIST options setting panel

Screen 6.17: The edit/view entry panel

Screen 6.18: The Reset Member Statistics panel


Screen 6.19: PDS members list with enhanced option ON

Screen 6.20: PDS members list with enhanced option OFF

Screen 6.21: Confirm member delete panel

Screen 6.22: Create a personal data set List

Screen 6.23: SAVE AS confirmation panel

Screen 6.24: Description of the DSLIST command

Screen 6.25: Direct call of a DSLIST by name

Screen 6.26: DSLIST command without parameters

Screen 6.27: Display of SWAP LIST command

Screen 6.28: Using the volume serial field in DSLIST panel

Screen 6.29: Use REFLIST to start defining an own DSLIST

Define ISPF command table entries using the program


Screen 6.30:
SICMD

Screen 7.1: The ISPF workplace panel

Screen 7.2: Call of a DSLIST from the ISPF workplace

Call of DSLIST editor for a DSLIST of the workplace


Screen 7.3:
panel

Screen 7.4: Select a DSN from the DSLIST editor panel

Screen 7.5: Display the member list of a PDS from the workplace

Display the data set information of a DSN from the


Screen 7.6:
workplace

Screen 8.1: Edit and view settings


Screen 8.2: Display the edit profile

Screen 8.3: Edit color settings panel

Screen 8.4: Looking for nonprintable characters

Screen 8.5: Exclude all lines in an edit

Screen 8.6: Display excludes lines selectively

Example for the generation of a data set list using a


Screen 8.7:
DSLIST panel

Screen 8.8: Overlay of many lines

Screen 8.9: Setting CUT and PASTE defaults in EDSET panel

Screen 8.10: Clipboard containing some entries

Screen 9.1: DDLIST panel display

Screen 9.2: DDLIST search example

Screen 9.3: Use DDLIST to determine ENQs

DDLIST shows inconsistent data set characteristics in


Screen 9.4:
a concatenated DD

Display of the ISPSLIB chain when option SHORT is


Screen 9.5:
active

Screen 9.6: DDLIST panel with display LONG set

Screen 9.7: Parmlib display using DDLIST

Screen 9.8: DDLIST LINKLIST display example

Screen 10.1: General display of all DSLISTs

Screen 10.2: TASID display screen


Screen 11.1: Set activation of #IMACROA

Screen 11.2: Panel IMACRO11 for edit macro #IMACRO1

Screen 11.3: SCURSOR selection panel

Screen 11.4: SLE working panel

Screen 11.5: SSC working screen

Screen 11.6: SSS input panel

Screen 11.7: Examples of unpack SMART ISPF utilities members

Screen 11.8: PF key setting to execute ALTLIB

Screen 11.9: PF key settings to use the ALTLIB command

List of tables
Table 1.1: ISPF reference books

Table 1.2: ISPF service groups

Table 1.3: 3270 screen layouts

Table 2.1: Necessary data sets when ISPF starts

Table 2.2: Abbreviations concerning data sets

Table 3.1: All mandatory library allocations to start ISPF

Table 3.2: Important members in ISPPROF library

Table 3.3: ISPF start commands

Table 4.1: 3270 screen layout selection


Table 6.1: Examples of DSLIST masks

Table 6.2: DSLIST action characters for data sets

Workplace action commands to control the panel


Table 7.1:
display

Table 7.2: Workplace action commands

Table 8.1: Edit primary commands

Table 8.2: Operands of edit primary commands

Table 8.3: Edit line command summary

Table 8.4: Proposals for last level qualifiers

Definition of picture strings for FIND and CHANGE


Table 8.5:
commands

Table 9.1: Table of DDLIST line commands

Relationship size of TIOT and maximum number of


Table 9.2 :
DDs allowed

Table 11.1: List of SMART utility programs

Bibliography
This bibliography contains excerpts from some IBM manuals concerning the
z/OS
TSO/ISPF complex:
TSO/E Publications
– z/OS TSO/E Administration, SA22-7780
– z/OS TSO/E CLISTs, SA22-7781
– z/OS TSO/E Command Reference, SA22-7782
– z/OS TSO/E Customization, SA22-7783
– z/OS TSO/E General Information, SA22-7784
– z/OS TSO/E Guide to SRPI, SA22-7785
– z/OS TSO/E Messages, SA22-7786
– z/OS TSO/E Primer, SA22-7787
– z/OS TSO/E Programming Guide, SA22-7788
– z/OS TSO/E Programming Services, SA22-7789
– z/OS TSO/E REXX Reference, SA22-7790
– z/OS TSO/E REXX User’s Guide, SA22-7791
– z/OS TSO/E System Programming Command Reference, SA22-7793
– z/OS TSO/E System Diagnosis: Data Areas, GA22-7792
– z/OS TSO/E User’s Guide, SA22-7794
z/OS MVS Publications
– z/OS MVS Planning: APPC/MVS Management, SA22-7599
– z/OS MVS Programming: Writing Transaction Programs for APPC/MVS,
SA22-7621
– z/OS MVS Initialization and Tuning Reference, SA22-7592
– z/OS MVS Programming: Authorized Assembler Services Guide, SA22-7608
– z/OS MVS Programming: Authorized Assembler Services Reference ALE-
DYN, SA22-7609
– z/OS MVS System Messages, Vol 1 (ABA-AOM), SA22-7631
– z/OS MVS System Messages, Vol 2 (ARC-ASA), SA22-7632
– z/OS MVS System Messages, Vol 3 (ASB-BPX), SA22-7633
– z/OS MVS System Messages, Vol 4 (CBD-DMO), SA22-7634
– z/OS MVS System Messages, Vol 5 (EDG-GFS), SA22-7635
– z/OS MVS System Messages, Vol 6 (GOS-IEA), SA22-7636
– z/OS MVS System Messages, Vol 7 (IEB-IEE), SA22-7637
– z/OS MVS System Messages, Vol 8 (IEF-IGD), SA22-7638
– z/OS MVS System Messages, Vol 9 (IGF-IWM), SA22-7639
– z/OS MVS System Messages, Vol 10 (IXC-IZP), SA22-7640
– z/OS MVS System Codes, SA22-7626
ISPF Publications
– z/OS ISPF Dialog Developer’s Guide and Reference, SC19-3619-00
– z/OS ISPF Dialog Tag Language Guide and Reference, SC19-3620-00
– z/OS ISPF Edit and Edit Macros, SC19-3621-00
– z/OS ISPF Messages and Codes, SC19-3622-00
– z/OS ISPF Reference Summary, SC19-3624-00
– z/OS ISPF Services Guide, SC19-3626-00
– z/OS ISPF User’s Guide Vol I, SC19-3627-00
– z/OS ISPF User’s Guide Vol II, SC19-3628-00
Bibliography
This bibliography contains excerpts from some IBM manuals concerning the
z/OS
TSO/ISPF complex:
TSO/E Publications
– z/OS TSO/E Administration, SA22-7780
– z/OS TSO/E CLISTs, SA22-7781
– z/OS TSO/E Command Reference, SA22-7782
– z/OS TSO/E Customization, SA22-7783
– z/OS TSO/E General Information, SA22-7784
– z/OS TSO/E Guide to SRPI, SA22-7785
– z/OS TSO/E Messages, SA22-7786
– z/OS TSO/E Primer, SA22-7787
– z/OS TSO/E Programming Guide, SA22-7788
– z/OS TSO/E Programming Services, SA22-7789
– z/OS TSO/E REXX Reference, SA22-7790
– z/OS TSO/E REXX User’s Guide, SA22-7791
– z/OS TSO/E System Programming Command Reference, SA22-7793
– z/OS TSO/E System Diagnosis: Data Areas, GA22-7792
– z/OS TSO/E User’s Guide, SA22-7794
z/OS MVS Publications
– z/OS MVS Planning: APPC/MVS Management, SA22-7599
– z/OS MVS Programming: Writing Transaction Programs for APPC/MVS,
SA22-7621
– z/OS MVS Initialization and Tuning Reference, SA22-7592
– z/OS MVS Programming: Authorized Assembler Services Guide, SA22-7608
– z/OS MVS Programming: Authorized Assembler Services Reference ALE-
DYN, SA22-7609
– z/OS MVS System Messages, Vol 1 (ABA-AOM), SA22-7631
– z/OS MVS System Messages, Vol 2 (ARC-ASA), SA22-7632
– z/OS MVS System Messages, Vol 3 (ASB-BPX), SA22-7633
– z/OS MVS System Messages, Vol 4 (CBD-DMO), SA22-7634
– z/OS MVS System Messages, Vol 5 (EDG-GFS), SA22-7635
– z/OS MVS System Messages, Vol 6 (GOS-IEA), SA22-7636
– z/OS MVS System Messages, Vol 7 (IEB-IEE), SA22-7637
– z/OS MVS System Messages, Vol 8 (IEF-IGD), SA22-7638
– z/OS MVS System Messages, Vol 9 (IGF-IWM), SA22-7639
– z/OS MVS System Messages, Vol 10 (IXC-IZP), SA22-7640
– z/OS MVS System Codes, SA22-7626
ISPF Publications
– z/OS ISPF Dialog Developer’s Guide and Reference, SC19-3619-00
– z/OS ISPF Dialog Tag Language Guide and Reference, SC19-3620-00
– z/OS ISPF Edit and Edit Macros, SC19-3621-00
– z/OS ISPF Messages and Codes, SC19-3622-00
– z/OS ISPF Reference Summary, SC19-3624-00
– z/OS ISPF Services Guide, SC19-3626-00
– z/OS ISPF User’s Guide Vol I, SC19-3627-00
– z/OS ISPF User’s Guide Vol II, SC19-3628-00

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy