ISPF - Users Guide
ISPF - Users Guide
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
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
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
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.
Boxes without icons indicate conclusions and similar contents. These notes
describe sometimes also input rules or the sequence of difficult procedures.
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.
The following listing shows such manuals you should have as an ISPF user or
an ISPF programmer:
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.
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.
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:
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.
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.
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)
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.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:
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:
Remark:
PDS and PDSE members processing is sequential.
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:
programs used by
ISPLLIB read only chain
ISPF
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.
Remark:
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
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.
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.
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:
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
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.
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.
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:
Member Contents
ISFCMDS ISPF command table 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
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.
The following table contains descriptions for some lines in the above
procedure:
Lines Description
6–8 Set contents of variables lpar, user, pdsn
13–
If no, create and allocate it.
15
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.
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.
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.
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.
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 (?).
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.
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.
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!
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.
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.
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.
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.
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.
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.
Here we can now make changes to the PF key assignments and save the
assignment.
The next figure shows the PF key assignment for my ISPF Application ISF, so for
the 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.
Program 5.1: TEST1: Simple program using the TSO environment only
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.
#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.
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.
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:
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)
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.
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:
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.
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:
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.
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.
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!
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.
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.
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.
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
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.
Then the following screen appears with which we can call the edit function for
DSLISTs:
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:
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:
We will deal with this panel more detailed later when we discuss the creation
and editing of personal data set lists.
Example 1:
Display a DSLIST with the Include Additional Qualifiers option when set to OFF
using the mask PROX.*.REXX:
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.
As you can see, only the Alias entry appears. See also chapter 2.1.3.1 The high
level qualifier (HLQ) on page 18.
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.
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.
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:
As you can see, the member HUGO stays in the data set PROX.LOGON.REXX.
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:
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:
The following input options can be in front of a data set name entered:
You can enter a slash (/) and get the following panel:
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:
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:
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
We position the cursor in the action bar in the options field and press enter.
Then the following pull-down menu appears:
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:
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.
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!
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.
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.
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 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.
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:
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.
According to the information provided above, you can call individual DSLISTs
using three ways. However, there are some other ways to work with DSLISTs.
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
To display a DSLIST, type in an s before the name of a DSLIST and press ENTER.
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
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.
The shaded entries have special significance as explained in the following table:
Call Meaning
++ Calls all available DSLISTs in administration mode.
+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.
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
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.
In this way, you can call the workplace using the command WP everywhere in
the ISPF.
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.
Command Function
Thus, you can switch on and off the display of the
ACTBAR
action bar in the work-
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.
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.
E, EP Edit.
M Move.
ML Member list.
P, PP Print.
V, VP View
Z Compress
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
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
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.
EDIT
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.
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 operands can be used optionally. If none of these operands are selected
then the default operand applies.
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.
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.
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.
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 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>
– 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.
– Pairing of brackets will reviewed and if the pairing is not valid, it will be
marked with different colors.
– 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:
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.
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:
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
C C C programs
– 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.
– 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.
– The entry in the member ISREDRT will deleted and the member will
immediately written back into the profile data set ISPPROF.
Under what circumstances these two possible sources tapped are, depends on
the status command, which has been last with the SETUNDO command used.
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.
The following list contains the conditions, under which no UNDO, or after the
occur- rence of which UNDO is no longer possible:
– 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.
FIND F
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]
[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]
[CHARS]
[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]
[NX]
[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.
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.
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:
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:
You can also use picture strings in a limited way by the replacement text of a
change command. The following rules must observed:
Rules:
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
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.
– 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.
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:
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.
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.
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.
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:
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:
– 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:
– 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.
– You can define multiple data collections from various sources and then paste
them in several places in different edit sessions.
Disadvantages:
– 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.
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.
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
– 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:
– 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.
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.
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.
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
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.
To allocate the data set allocation we enter in the ISPF menu 6 the following
statement and press ENTER:
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.
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.
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:
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:
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
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:
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.
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.
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:
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.
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:
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.
Example 1:
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.
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:
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
List of JCL
JCL 2.1: Copy job for concatenated data sets
List of programs
Program 3.1: CLIST logon procedure
List of screens
Screen 1.1: ISPF tutorial help index
Screen 4.8: ISPF task list with eight ISPF logical screens
Screen 7.5: Display the member list of a PDS from the workplace
List of tables
Table 1.1: ISPF reference books
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