338 100 1MB
English Pages 233 [234] Year 2015
Franz Lanz IBM z/OS ISPF Smart Practices
Also of Interest IBM z/OS ISPF Smart Practices, Vol. 2 Franz Lanz, 2015 ISBN 978-3-11-040753-2, e-ISBN (PDF) 978-3-11-040761-7, e-ISBN (EPUB) 978-3-11-040765-5, Set-ISBN 978-3-11-040762-4
Industrial Software Applications Rainer Geisler, 2015 ISBN 978-3-11-037098-0, e-ISBN (PDF) 978-3-11-037099-7, e-ISBN (EPUB) 978-3-11-039678-2
Entrepreneurship for Engineers Helmut Kohlert, Dawud Fadai, Hans-Ulrich Sachs, 2013 ISBN 978-3-486-73298-6, e-ISBN (PDF) 978-3-486-76972-2
Analog Computing Bernd Ullman, 2013 ISBN 978-3-486-72897-2, e-ISBN 978-3-486-75518-3
Franz Lanz
IBM z/OS ISPF Smart Practices
Volume 1: User’s Guide
Author Franz Lanz Panoramaweg 27 72658 Bempflingen Germany [email protected]
ISBN 978-3-11-037548-0 e-ISBN (PDF) 978-3-11-037559-6 e-ISBN (EPUB) 978-3-11-039788-8 Library of Congress Cataloging-in-Publication Data A CIP catalog record for this book has been applied for at the Library of Congress. Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de abrufbar. © 2015 Walter de Gruyter GmbH, Berlin/Boston Coverabbildung: OlgaYakovenko/iStock/thinkstok Satz: PTP-Berlin Protago-TEX-Production GmbH, Berlin Druck und Bindung: CPI books GmbH, Leck ♾ Gedruckt auf säurefreiem Papier Printed in Germany 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 | V 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.8.1 1.8.2 1.9 1.10 1.11 1.12 1.13 1.13.1 1.13.2 1.14 1.14.1 1.14.2 1.14.3 1.15 1.15.1 1.15.2 1.15.3 1.15.4 1.16
Introduction | 1 Readers previous knowledge of ISPF | 1 Using this book | 1 Screens, source codes, JCL and other displays | 1 Labeling of important tips | 2 Citations from other publications | 2 IBM glossary | 2 z/OS basic information | 2 ISPF reference books | 4 ISPF books for ISPF users | 5 ISPF books for ISPF application programmers | 6 TSO reference books | 6 The ISPF services | 6 Working with ISPF | 7 ISPF interaction | 8 The 3270 screen | 8 3270 screen layout | 9 The full screen technology | 9 The ISPF online help facility | 9 Call the online help facility | 10 Overview of all commands and functions of ISPF | 10 Description of the DSLIST command | 12 ISPF sub-systems | 12 SDSF – System Display and Search Facility | 13 IBM Data Set Commander for z/OS | 13 File Manager for z/OS | 14 MVS/QuickRef | 15 Information sources | 15
2 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9
Technical basics | 17 Data sets | 17 Allocation of data sets | 17 Naming conventions for data set names | 17 The relevance of qualifiers | 18 Data set types | 19 Other data set types | 23 Concatenated data sets basics | 23 Partitioned concatenated data sets | 24 Sequential concatenated data sets | 26 Abbreviations concerning data sets | 27
VIII | Contents
3 The TSO/ISPF logon process | 29 3.1 The logon procedure | 29 3.2 TSO start and the user logon process in detail | 30 3.3 ISPF start | 33 3.3.1 Necessary ISPF libraries | 33 3.3.2 Display currently existing library structures | 34 3.3.3 ISPF table service data sets | 35 3.3.4 The user profile library ISPPROF | 36 3.3.5 Contents of ISPF profile library | 38 3.3.6 The ISPF start command | 38 3.3.7 The initial logon procedure XYZLOGON | 39 3.3.8 Rules how a logon procedure may end | 40 3.3.9 The private logon procedure SLOGON | 40 3.3.10 Example of a LOGON procedure | 41 3.4 The SLOGON procedure of the SMART ISPF utilities | 42 3.4.1 Install the SLOGON procedure | 43 4 4.1 4.2 4.3 4.4 4.5 4.5.1 4.6 4.7 4.7.1 4.7.2 4.7.3 4.8 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5
Customize ISPF | 47 Available 3270 screen formats | 47 ISPF options setting | 47 The ISPF settings panel (Selection 0) | 47 Panels and their handling | 50 The structure of ISPF panels | 50 Using HELP panels | 51 The primary option menu | 53 Screen splitting | 55 Essential rules and tips for split screen | 55 Direct activation of an ISPF logical screen | 56 Example, with eight logical screens of ISPF | 56 The program function keys of ISPF | 58 Optimize PF key settings | 58 Switching on the PF key setting display | 59 Utilize KEYLISTs for PF keys | 61 Display the PF key assignment in a KEYLIST | 61 PF keys use without using KEYLIST | 63
5 5.1 5.1.1 5.1.2 5.2 5.2.1 5.2.2 5.2.3
ISPF command tables | 67 Execute programs in a TSOP/ISPF environment | 67 Online execution | 68 Batch execution | 69 Introduction to the ISPF command technology | 71 The member ISPCONF | 73 Datasets for command tables | 74 Creating your own ISPF commands | 76
Contents | IX
5.3 5.3.1 5.3.2 5.3.3 5.3.4
Program SICMD | 78 Edit ISPF commands using SICMD | 79 Display the list of all standard ISPF commands | 81 Define the call of SICMD as command | 81 Generating a list of commands | 82
6 6.1 6.2 6.3 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.5 6.5.1 6.5.2 6.6 6.6.1 6.6.2 6.7 6.7.1 6.7.2
DSLIST – Data set lists | 85 The DSLIST panel | 86 The possibilities of the action bar for DSLISTs | 86 The DSLIST panel fields | 89 DSLIST panel processing | 93 The DSLIST primary commands | 94 The commands MEMBER and SRCHFOR | 95 DSLIST line commands | 97 DSLIST settings | 100 Examples of the data set list settings | 102 Personal data set lists | 105 Creating personal data set lists | 106 Call DSLISTs | 108 Entering the DSLIST command with the name of a DSLIST | 109 Entering the DSLIST command without parameters | 110 Using the volume serial field | 111 DSLIST optimal use with command tables | 112 Organization and naming conventions | 112 Call DSLISTs using the ISPF command table | 113
7 7.1 7.1.1 7.1.2 7.1.3 7.2
The Object/Action Workplace | 115 The ISPF workplace panel | 116 Calling the workplace via the command table | 116 Operation of the workplace panel | 117 Action commands in the workplace panel | 118 Examples of workplace operation | 119
8 8.1 8.2 8.3 8.3.1 8.3.2 8.4 8.4.1 8.4.2 8.4.3 8.5 8.6
The ISPF editor | 123 Table of EDIT primary commands | 123 Table of EDIT line commands | 128 Displaying and maintaining an edit profile | 130 Setting EDIT options with EDSET/EDITSET | 130 EDIT profile settings and their use | 132 Colored code for EDIT and VIEW | 135 Colored code - what is it? | 135 Setting the colored code | 136 Uniform last level qualifier | 139 Edit recovery | 139 The UNDO function | 141
X | Contents
8.7 8.8 8.8.1 8.8.2 8.8.3 8.9 8.10 8.10.1 8.10.2 8.11 8.11.1 8.11.2
Turn the UNDO function on and off | 141 FIND and CHANGE | 143 Definition of search operands | 143 Definition of simple search texts | 145 Definition of special search texts | 146 Exclude | 149 SHIFT and OVERLAY | 150 Example one for using OVERLAY | 151 Example two for using OVERLAY | 154 CUT and PASTE | 159 Data transport via the clipboard of the PC system | 159 Data transport via the ISPF clipboard | 159
9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.7.1 9.7.2 9.7.3
Utilities for allocated data sets | 165 DDLIST – Description and call | 165 DDLIST operation | 167 Find a member | 168 Free a data set allocation | 169 Warning when inconsistent data set structures exist | 170 The display options SHORT and LONG | 171 Display system library chains | 173 Display of parmlib member ALLOCxx | 174 Display the LINKLIST chain | 176 Browsing storage and loaded modules | 177
10 10.1 10.2 10.3
Secret Programs | 179 The TSO command CONCATD | 179 Program ISRDSLST | 182 The TASID program | 185
11 The SMART ISPF utilities | 187 11.1 Naming conventions | 187 11.2 The dynamic panel concept | 187 11.3 List of programs | 188 11.4 Program descriptions | 189 11.4.1 Edit macro ## | 190 11.4.2 Edit macro #ALTXT | 190 11.4.3 Edit macro #EDMEM | 190 11.4.4 Edit macro #IMACROA | 190 11.4.5 Edit macro #IMACRO1 | 191 11.4.6 Edit macro #IMACRO2 | 192 11.4.7 Edit macro #ISPFB | 193 11.4.8 Edit macro #LCH | 193 11.4.9 Edit macro #SPLJ | 193 11.4.10 Edit macro #SSS | 194
Contents | XI
11.4.11 11.4.12 11.4.13 11.4.14 11.4.15 11.4.16 11.4.17 11.4.18 11.4.19 11.4.20 11.4.21 11.4.22 11.4.23 11.5 11.5.1 11.5.2 11.5.3 11.5.4
Edit macro #SSSCH | 194 Edit macro #SU | 194 Edit macro #TSOB | 195 Edit macro #VERASE | 196 Program SCURSOR | 196 Program SDOC | 197 Program SLE | 197 Data member SLOGDSN | 199 Program SLOGON | 200 Program SPROFEDT | 200 ISPF variables load member SPROFVAR | 200 Program SSC | 201 Program SSS | 202 Installation of SMART ISPF utilities | 203 Download and unzip | 203 Installation | 204 ALTLIB command | 205 Make the SMART ISPF utilities ready to run | 208
List of screens | 211 List of programs | 213 List of tables | 213 List of JCL | 213 Bibliography | 215 Index | 217
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, ISPF, JCL, Data Sets and so on. There are some books on the market designed to introduce beginners in the mentioned systems and subsystems. Advanced users: These persons have a multi-year experience in z/OS and its subsystems. These readers can use this book as a reference book to learn advanced methods in practical using of ISPF.
1.2 Using this book 1. You can use this book as a traditional manual to learn systematically how to use ISPF. In this case, you will use the book by executing the examples showed in the book to become an advanced ISPF user. 2. However, you can use this book by selecting special parts of interest for you. I myself use the book as a reference when I am searching for a special procedure. You will find many examples for nearly all tasks in ISPF during your daily work. You should use the index dictionary to find descriptions of special advanced techniques in using ISPF. I included many examples for these cases. I have tested all examples very thoroughly.
1.3 Screens, source codes, JCL and other displays This book contains many texts that are with the courier new font formatted. These texts always come from an ISPF screen display. These text parts often consist of whole ISPF screens, program sections, entered commands, JCL and printouts of results of an action on the z/OS system. Texts that span multiple screen displays I have assembled accordingly. Important texts I have each grayed out so you can find them easily.
2 | 1 Introduction
1.4 Labeling of important tips When I explain special procedures or tricky techniques, you will find a box in the text, marked with one of these Icons: 1 for hints, tips, recommendations 4 to indicate important warnings and “caution!” 3
for notes and remarks.
Boxes without icons indicate conclusions and similar contents. These notes describe sometimes also input rules or the sequence of difficult procedures.
1.5 Citations from other publications In this book, you will sometimes find excerpts from other publications or the Internet. These excerpts are always set in italics and its source is mentioned.
1.6 IBM glossary It is impossible for me to explain all special words contained in this book. You can find all such words in the Dictionary of IBM & Computing Terminology. You can download this dictionary from the following URL: http://www-03.ibm.com/ibm/history/documents/pdf/glossary.pdf
1.7 z/OS basic information If you are a newcomer to z/OS, it may be helpful for you to get basic information about this system. IBM has produced an internet entry to learn basics for z/OS: http://www-01.ibm.com/support/knowledgecenter/zosbasics/ com.ibm.zos.zbasics/homepage.html? cp=zosbasics%2F0 The first page looks like this: IBM z/OS basic skills education Welcome. New to z/OS? You have come to the right place! The z/OS basic skills Knowledge Center is the fastest way to learn and become productive on z/OS. Once you have learned the basic z/OS concepts and skills presented here, you can find the z/OS product documentation in this IBM Knowledge Center.
1.7 z/OS basic information | 3
How ISPF runs: ISPF is a subsystem of z/OS. To run, ISPF requires a terminal control program (TCP). The TCP for ISPF is TSO/E → Time Sharing Option Extended. Sometimes an ISPF user needs the assistance of TSO: e.g., when the ISPF user would have access to a data set he must use the Allocation Service of TSO. Also during logon: TSO have to process a Logon Procedure. At the end of this procedure, ISPF starts using a special TSO command. The section 3.3.6 The ISPF start command on page 38 describes the ISPF start command in detail. To learn more about TSO see the following URL: http://en.wikipedia.org/wiki/IBM_TSO User’s rights in z/OS: A TSO user (maybe running ISPF), a job or an internal start of a task initiates each work on z/OS. The z/OS Security Server (RACF → Resource Access Control Facility) controls all users’ rights. Each user has its own rights. Normally, his rights deduce from a RACF group. All TSO (and therefore all ISPF) users are members in a RACF group. Each user can manipulate his rights for his own resources to grant access rights for other users, but he can never expand his rights beyond the group rights. Display of panels: You will find many panel displays within this book. These screen shots always displayed in a frame and in fixed font “Courier New”. Sometimes I deleted needless lines of the screen. Program function keys: In the 1970ies, when the 3270 terminal layout was developed, the keyboard contains so-called Program Function Keys. By pressing such a key, the following happens: 1. An Enter is to the application program sent. 2. The program reads screen contents altered by the user and gets information about the pressed PF key. Some keyboards of 3270 terminals in the late 1970ies were equipped with real 24 PF keys. Since the 3270 screens used together with 3270 emulator software on PC terminals only 12 F keys are available on the PC keyboard. The PF keys 13 to 24 could normally simulated by pressing the uppercase key together with an F key. In the last years, IBMs literature uses also the notation F key instead of PF key. Up to now, you will find in the most IBM brochures the PF notation for ISPF. Therefore, I will still use this term in this book. In later chapters, you will see a comprehensive description of PF key using.
4 | 1 Introduction
1.8 ISPF reference books Of course, for such a big subsystem as the ISPF many reference books are available. You can find these books free of charge in IBMs internet books libraries. They are available in two types: 1. As PDF books for downloading to your PC. 2. Direct to display with an internet browser. If you use this book here for your work in ISPF, you normally do not need any ISPF book published by IBM. I described all procedures you need here. All functions used, and the necessary parameters for practical work, are described here. However, if you cannot find the solution for a task, then you should use the original reference books. In the following chapter, I show you where you can find all information to use ISPF. Unfortunately, IBM changes from time to time methods to find a certain type of reference books. Now you can use the following steps: 1. With the following URL you come into the general z/OS literature frame: http://www-03.ibm.com/systems/z/os/zos/library/bkserv/ You can click on the line z/OS V2R1 documentation in PDF format. This action leads you to z/OS V2R1 Elements and Features selection menu. 2. Press now Cntrl+F and enter the search text ISPF. The browser positions the cursor on z/OS ISPF. 3. Click on this line and see the group of available ISPF publications. 4. Click on the book you want and the book is opened in your PDF reader. You can now save it to your PC for later use. Direct link to the ISPF library: There is a direct link to the ISPF Library: http://www-01.ibm.com/software/awdtools/ispf/library/ Under this link, you will find ONLY ISPF reference books. However, there are also books for earlier releases listed. IBM form number All books within the IBM z/OS library have a dedicated Form Number. The form number consists of three blocks of information each separated by a hyphen: 1. The first part is a four-character item: two alpha characters and a two-digit number. e.g., SC19 stands for all ISPF books. 2. The second part is a four-digit number defining the book within its group. 3. The third part is a two-digit number continuously upward counted for this book.
1.8 ISPF reference books | 5
Table 1.1 on page 5 shows the ISPF reference books and their form numbers for z/OS release V2R1: Table 1.1: ISPF reference books Title
Form number
z/OS ISPF Dialog Developer’s Guide 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
1 Hint: If you are searching for a book using the form number then you should use only the basic number without the release appendix. The system then shows all available titles and you can choose the proper exemplar.
The following listing shows such manuals you should have as an ISPF user or an ISPF programmer:
1.8.1 ISPF books for ISPF users SC19-3627 → ISPF User’s Guide Volume I SC19-3628 → ISPF User’s Guide Volume II These both books contain all information to use ISPF. Only the explanation of the ISPF Editor is in another book: SC19-3621 → ISPF Edit and Edit Macros This book contains both the normal handling procedures for the ISPF editor as well as the programming rules for Edit Macros. As you will see later, many Edit macros are included in the SMART ISPF utilities.
6 | 1 Introduction
1.8.2 ISPF books for ISPF application programmers As a normal user of ISPF, you do not need these books. If you plan developing ISPF applications, see the book title ISPF Programmer’s Guide by the same author. SC19-3624 → ISPF Reference Summary This manual contains short references for all commands and their parameters. This is the right book if a programmer is familiar in developing ISPF applications. SC19-3619 → ISPF Dialog Developer’s Guide and Reference This manual describes the development of applications in an ISPF environment. The description for producing panels is without using the Dialog Tag Language. SC19-3626 → ISPF Services Guide This manual contains descriptions of all facilities, rules and techniques used for ISPF programming.
1.9 TSO reference books As I mentioned above, ISPF is running under control of TSO. Sometimes you need the assistance of TSO, e.g. for data set access. Therefore, it is necessary to know where you can find information concerning TSO commands. You need only one book from the wide range of available TSO reference books: TSO/E Command Reference Form Number: SA22-7782
1.10 The ISPF services ISPF offers many services to program ISPF applications. As mentioned above service groups define services. The Table 1.2 on page 7 shows the ISPF service groups and their usage:
1.11 Working with ISPF | 7
Table 1.2: ISPF service groups Service Group
Used for
Display Service LM Service Table Service FT Service Q Service V Service
display of panels and tables working with libraries (LM stands for Library Management) working with ISPF tables dynamic production of JCL by using skeletons query services handling of ISPF Variables
1.11 Working with ISPF ISPF is a comprehensive and comfortable subsystem of z/OS. You can enter commands, start programs and procedures, use full screen panels for input and output of data. It is able to perform big applications for all purposes used on z/OS computers. The following categories define working with ISPF: Command Execute a TSO or ISPF command e.g. ALLOC, FREE, SWAP NEXT, SPLIT NEW, ISPFWORK, ISRDDN and so on. Function Execute a program or a procedure as a single task. The program or procedure ends when the work is finished. For instance enter command Z in front of a DSN in a DSLIST panel to execute a compress. Dialog Execute a program or a procedure to start a dialog. A dedicated action must always end a dialog by pressing a PF key or entering an END command. E.g. DDLIST, LCMDSMOD. Application Execute an ISPF application. An ISPF application may consist of a range of programs and panels called in sequence on demand by the application. Each ISPF application runs under a dedicated Application ID. E.g., SDSF, EDIT Remark: Each Application has its own pool of ISPF variables. Only the Application knows their variables.
3
8 | 1 Introduction
1.12 ISPF interaction ISPF is an online dialog system. Its programs are always online during the whole ISPF session. Each action by the user on the terminal sends the contents of the screen to the system called an ISPF interaction. An interaction ends, when the screen is again ready for input. There are two ways to start an ISPF interaction: 1. By pressing the enter key. When this key is pressed, all changed contents of the screen are to the application sent. The data are processed and a new screen will be send to the terminal. 2. By pressing a PF key. The same work happens as when the enter key is pressed. Additionally the application program can check what PF key is pressed.
1.13 The 3270 screen Introduction to 3270 Screen: The following text is from URL: http://en.wikipedia.org/wiki/IBM_3270 copied. The IBM 3270 is a class of block oriented computer terminal (sometimes called display devices) made by IBM originally introduced in 1971 normally used to communicate with IBM mainframes. The 3270 was the successor to the IBM 2260 display terminal. Due to the text color on the original models, these terminals are as green screen terminals informally known. Unlike a character-oriented terminal, the 3270 minimizes the number of I/O interrupts required by transferring large blocks of data known as data streams, and uses a high speed proprietary communications interface, using coaxial cable. Although IBM no longer manufactures 3270 terminals, the IBM 3270 protocol is still commonly used via terminal emulation to access some mainframe-based applications. Accordingly, such applications are to as green screen applications sometimes referred. Use of 3270 is slowly diminishing over time as more and more mainframe applications acquire Web interfaces, but some web applications use the technique of screen scraping to capture old screens and transfer the data to modern front-ends. You can use this URL to get more information concerning the 3270 screen history.
1.14 The ISPF online help facility | 9
1.13.1 3270 screen layout IBM designed the 1st 3270 screen layout in the early 1970ies. It consists of 24 lines and 80 characters on each line. Later the display ability of 3270 screens expands to more lines and more characters on a line. The Table 1.3 on page 9 shows the current available screen layouts: Table 1.3: 3270 screen layouts Lines
Characters/line
24 32 43 27 62
80 80 80 132 160
1.13.2 The full screen technology Many years ago, the full screen technology on the z/OS IBM Mainframe systems came together with ISPF. This offers the ability to enter much data on a screen and send these data in one go to the system. We can differ between the following entry actions: 1. Start actions or set ISPF options using the pull down menus of the CUA line on an ISPF panel. CUA → Common User Access. The CUA line appears as top line on ISPF panels. 2. Enter primary commands at the command line and press enter. Alternatively, press a PF key, which starts a primary command. 3. Enter line commands. Enter line commands only at those lines prepared for entering such commands. For example in front of a DSN in a DSLIST panel. 4. Enter data on panels containing many input fields or data input areas like the ISPF editor.
1.14 The ISPF online help facility Learning to use ISPF is by the online help and tutorial facilities easier made, which are available while using ISPF. For example, if you need help filling in the data requested by an ISPF utility, you can use the tutorial to help you understand the data entry requirements for that utility.
10 | 1 Introduction
1.14.1 Call the online help facility When you push PF1 on the Primary Option Menu, the ISPF Help Facility appears. The most ISPF panels are also offering the Help function by pressing PF1. You should use this facility when you need help on a panel. The most panels also contain an action bar line. On this line is a help button. In the primary option menu, you can move the cursor to this help button and press enter. A pull down selection column appears. Screentext 1.1: Selection of help themes Help --------------------------------- 1. General 2. Settings 3. View 4. Edit 5. Utilities 6. Foreground 7. Batch 8. Command 9. Dialog Test 10. IBM Products 11. SCLM 12. Workplace 13. Exit 14. Status Area 15. About... 16. Changes for this Release 17. Tutorial 18. Appendices 19. Index
Enter the number of a theme in the first line and press enter. This leads you into the area explaining the selected topic. Example: You can find the changes for this ISPF release by typing 16 and pressing enter. The appearing selections depend on the panel type. You should use this help function to get targeted help within an ISPF application.
1.14.2 Overview of all commands and functions of ISPF You can use the Online Help Facility to get an overview of all commands and functions of ISPF. Perform the following steps: 1. Press PF1 when you are in the primary option menu. The panel table of contents appears. 2. Enter i to select the alphabetical index of tutorial topics and press enter.
1.14 The ISPF online help facility | 11
Screen 1.1: ISPF tutorial help index ISR91000 ------------------------COMMAND ===>
INDEX
---------------------- TUTORIAL
----------------------------------| INDEX | ----------------------------------Selected topics discussed in the tutorial can be found in this index. To use the index, enter the first letter of the topic of interest. The index page containing subjects starting with that letter is displayed. On an index page, any subject can be selected by entering the two character option preceding that selection. When you are on one index page, you can access any other index page by entering its letter identification. If you are in the tutorial but not on an index page, you can get to the index by entering INDEX or I in the command field. The index pages are presented in sequence if you press the ENTER key.
3.
Enter i again and press enter. A group selection of I group of ISPF help is displayed. 4. Then enter i8 to select the display of all ISPF commands. The next table shows the list of commands. Screen 1.2: ISPF help display of all ISPF commands 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
ACTIONS command CANCEL command CMDE command COLOR command CRETRIEV command CUAATTR command CURSOR command DSLIST command DTEST command END command ENVIRON command EXHELP and KEYSHELP commands EXIT command EXPAND command HELP command ISPDTLC command ISPFVAR command ISPLIBD command ISPFWORK command ISPPREP command ISRRLIST command ISRROUTE command Jump function ("=option") KEYLIST command KEYS command LIST and LOG commands MSGID command PANELID command PFSHOW and FKA commands PRINT and PRINT-HI commands PRINTG command PRINTL and PRINTLHI commands
33 PSCOLOR command 34 REFADDD, REFADDL, REFACTD, REFACTL, REFLISTD, REFLISTL, REFOPEND, and REFOPENL commands 35 RESIZE command 36 RETF command 37 RETP command 38 RETRIEVE command 39 RETURN command 40 RFIND and RCHANGE commands 41 SAREA command 42 SCRNAME command 43 SETTINGS command 44 SHRPROF command 45 SPLIT command 46 SPLITV command 47 START command 48 SWAP command 49 SWITCH command 50 SYSNAME command 51 TSO command 52 TSOCMD command 53 TSOGUI command 54 TUTOR command 55 UP, DOWN, LEFT, and RIGHT commands 56 USERID command 57 WINDOW command 58 WS command 59 WSCON command 60 WSDISCON command 61 ZKEYS command
12 | 1 Introduction
1 Tip: ISPF has a very comfortable short cut method to jump directly to a dedicated target panel. You can enter a string of commands separated by the so-called ISPF Command Delimiter. This delimiter is normally a semicolon → (;). The entered commands (separated by a semicolon each) execute automatically in sequence and the target panel displays. To reach the lists of ISPF commands directly perform the following steps: In Primary Option Menu press PF1 Type in the following character string in the command line without blanks: i;i;i8 and press enter. The ISPF commands panel displays.
1.14.3 Description of the DSLIST command When the panel of the ISPF command summary is displayed type in 8 in the input field and presses enter. The description of the DSLIST command appears: Screen 1.3: Description of DSLIST command TUTORIAL ------------ ISPF COMMAND - DSLIST --------------------- TUTORIAL OPTION ===> You can use the DSLIST command to display a DSLIST based on a personal data set list or a data set level. Command ===> DSLIST Displays a list of personal lists for Selection Command ===> DSLIST BOB Builds a DSLIST based on entries contained in personal data set list "BOB" Command ===> DSLIST 'BOB.*' Builds a DSLIST based on data sets matching data set level BOB.* If you enter a parameter, the DSLIST command first looks for a personal data set list with that name. If it does not find the list, it uses the parameter as a DSNAME LEVEL using TSO naming conventions. For example, if you enter DSLIST CLIST and there is no personal data set list named CLIST, then if you have the TSO prefix set to your user id, the DSLIST command will look for data sets matching the name 'LANZT.CLIST' The DSLIST view can be set by the ISPF Workplace Settings panel or the ISPF Referral List Settings panel.
1.15 ISPF sub-systems ISPF contains some very helpful sub-systems. I will give you in later chapters more information about these subsystems. Maybe in your ISPF are some other subsystems available. I give here only information about such systems I have worked with.
1.15 ISPF sub-systems | 13
1.15.1 SDSF – System Display and Search Facility Producer: IBM SDSF provides a powerful and secure way to monitor and manage your z/OS sysplex, in both JES2 and JES3 environments. SDSF's easy-to-use interface lets you control: – Jobs and output – Devices, such as printers, readers, lines, and spool dischargers – Checks from IBM Health Checker for z/OS – System resources, such as WLM scheduling environments, the members of your MAS, and JES job classes – System log and action messages SDSF is the bridge between JES2 and ISPF. In the most z/OS installations is a direct call to SDSF available in the Primary Option Menu of ISPF. The CUA line at top of the SDSF panel offers many options to change the contents of panel display in SDSF. See the SDSF Primary Option Menu: Screen 1.4: SDSF primary option menu Display Filter View Print Options Help ------------------------------------------------------------------------HQX7707 ----------------- SDSF PRIMARY OPTION MENU -------------------COMMAND INPUT ===> SCROLL ===> CSR DA I O H ST
Active users Input queue Output queue Held output queue Status of jobs
LOG SR MAS JC SE RES ENC PS END
System log System requests Members in the MAS Job classes Scheduling environments WLM resources Enclaves Processes Exit SDSF
INIT PR PUN RDR LINE NODE SO SP
Initiators Printers Punches Readers Lines Nodes Spool offload Spool volumes
ULOG
User session log
1.15.2 IBM Data Set Commander for z/OS Description of this sub-system from the following URL: http://www-03.ibm.com/software/products/en/data-set-commander
14 | 1 Introduction
At a glance: (copied from IBM’s internet page): IBM® Data Set Commander for z/OS® extends IBM interactive and batch capabilities for performing operations on partitioned data sets (PDSs) and partitioned data set extended (PDSEs) and their members. IBM Data Set Commander for z/OS was formerly named IBM ISPF Productivity Tool for z/OS. IBM Data Set Commander for z/OS: – Provides batch processing capability for managing and manipulating PDS and PDSE data sets. – Manages the synchronization of the LLA cache for updated LLA directory entries across the sysplex. – Exploits new z/OS support for PDSE member generations. – Provides an integrated interface to Interactive System Productivity Facility (ISPF).
1.15.3 File Manager for z/OS Description of this sub-system from the following URL: http://www-03.ibm.com/software/products/en/filemanager/ At a glance: (copied from IBM’s internet page): IBM® File Manager for z/OS® provides flexible, user-friendly tools for enhanced file processing when working with z/OS data sets, DB2®, CICS, IMS™ or WebSphere® MQ data of the IBM Determination Tools suite. File Manager extends the standard browse, edit, copy, batch and print utilities of Interactive System Productivity Facility (ISPF) to help developers work with that structured data more efficiently. File Manager for z/OS: – – – – –
Has extensive editing, browsing and batch and interactive capabilities that support development and production. Finds, copies, edits, prints, compares and displays data quickly and easily. Helps users manipulate data using COBOL and PL/I record layouts interactively or in batch. Enhances usability by enabling customization of which fields to display, copy or print. Offers templates that provide a particular interpretation of a data set, defining a logical view that you can use to view and manipulate the data in records as discrete fields. Use the following URL to get a short description of the File Manager for z/OS: ftp://public.dhe.ibm.com/software/htp/pdtools/info/DatasheetFM.pdf
1.16 Information sources | 15
If the File Manager for z/OS is available on your z/OS, you can find the manuals on the following URL: http://www-01.ibm.com/software/awdtools/filemanager/library/
1.15.4 MVS/QuickRef Producer and Distributor: © 2002 Chicago-Soft You can get an overview for this product from this URL: http://quickref.com/newQuickRef/helpdocs/help?thisDoc=r7_overview A short description of this subsystem follows here: What is MVS/QuickRef? MVS/QuickRef is Chicago-Soft's online quick reference tool for ISPF and CAROSCOE users under the z/OS operating system. MVS/QuickRef enables you to invoke it over the active ISPF application, get a quick answer to a z/OS-related question, then terminate it without affecting the active ISPF application. Why do I need MVS/QuickRef? It saves you time and money! You no longer need to stop work at your PC to look up a message or abend code in a manual or find the proper manual to look in. The most frequently needed z/OS reference information is instantly displayed by MVS/QuickRef in a concise and easy-to-read format.
1.16 Information sources The both user’s guides for ISPF have summarized perhaps 800 pages of text. It is not my intention to copy parts of these manuals into my book. During the description of procedures and methods in using ISPF, I give you tips where you can find more information. On the following pages, I explain where you will find exact descriptions of commands and procedures helpful for your daily work with ISPF. The ISPF help facility: As explained in the section 1.14 The 3270 screen on page 9, this feature is an excellent way to get help on each point within ISPF. ISPF panels of applications should offer a help text for each field where an input value be entered.
16 | 1 Introduction
Command sequences and solution examples: The command descriptions and examples you will find in the IBM Reference Books are sometimes for a beginner a little bit difficult to understand. Therefore, I bother to insert many practical examples to give you a good understanding. During my very long time working with computers I was often thinking: When and where did I use the right procedure for my current task? Therefore, remember the solutions contained in this book! To get a proper result, the most tasks do not need execution of only one command. Rather you need a sequence of consecutive commands. Each time when I show a command or a sequence of commands, I give you information where you can find the descriptions of these commands.
2 Technical basics Although I said above that the user of this book should have some skills in z/OS, I will give hereafter introductions to some important technical things.
2.1 Data sets Processing of data is the main task of a z/OS system. Therefore, data sets are very important elements of this computing system. Remark: All information concerning data sets are containing in the following manual: z/OS V2R1 DFSMS Using Data Sets Form Number: SC23-6855
2.1.1 Allocation of data sets The most used methods to allocate a data set are: – Using JCL during running of a batch job Example: Create a new sequential data set on disk. //OUT //
– –
DD DSN=TESTUSR.TEST.X01,DISP=(NEW,CATLG,DELETE), SPACE=(CYL,(1,1)),RECFM=FB,LRECL=80,BLKSIZE=8000
By a TSO/ISPF user using ISPF menus or running procedures that contain ALLOC statements. Example: Create the same data set as above within a REXX program: dsn = "TESTUSR.TE33ST.X01" "delete '"dsn"'" "alloc dd(out) dsn('"dsn"') reuse new cat dsorg(ps)", "recfm(f,b) blksize(8000) lrecl(80)", "space(10,1) cyl" "free dd(out)"
2.1.2 Naming conventions for data set names Basic structure of a DSN: – – –
A DSN is a structure of qualifiers subdivided by dots. A DSN is maximally 44 characters long including the dots between the qualifiers but without an eventually available member name with its brackets. A DSN consists of minimal two qualifiers.
3
18 | 2 Technical basics
–
–
–
Each qualifier in a DSN is one to eight characters long, the first must be alphabetic (A to Z) or national (# @ $). The remaining seven characters are either alphabetic, numeric (0 - 9), national or hyphen (-). The number of qualifiers may be generally unlimited but the 44 character maximum length of the DSN bound it. This means there are maximal 22 qualifiers possible because a dot follows each qualifier without the last one. A DSN may expand by a member name enclosed in brackets.
DSN examples: LANZT.LOGON.CLIST PROX.LOGON.PANEL(HUGO) PXX0.#030908.WHA59.NS-WH1.D0908.T143510.$$$$ = 44 Characters A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V = 22 Qualifiers ....5...10...15...20...25...30...35...40...45
For example, the following names are invalid data set names: A name that is longer than eight characters (HLQ.ABCDEFGHI.XYZ) A name that contains two successive periods (HLQ..ABC) A name that ends with a period (HLQ.ABC.). A name that contains a segment that does not start with an alphabetic or national character (HLQ.123.XYZ)
2.1.3 The relevance of qualifiers Two parts of a DSN have a special impact when the z/OS system handles the data set. These parts are the first and the last qualifier. They are abbreviated → HLQ and →LLQ.
2.1.3.1 The high level qualifier (HLQ) The first qualifier of a DSN is the High Level Qualifier. This qualifier has an important impact when the system handles the data set: – The master catalog contains an alias entry for each HLQ used by TSO/ISPF users. – This entry is normally the user’s name. – This entry points to a user catalog. – All information of user data sets then contains the user catalog. – All data sets with the same HLQ are in the same user catalog.
2.1 Data sets | 19
Example: LISTCAT of an alias entry in a Master Catalog: ALIAS --------- USER001 IN-CAT --- CATALOG.MASTER.SYS1 HISTORY RELEASE----------------2 ASSOCIATIONS USERCAT--UCAT.USERS.SYS1 4 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: ICH408I USER(XYZ1234 ) GROUP(XYZUSER ) NAME(FRANZ LANZ) CATALOG.MASTER.SYS1 CL(DATASET ) VOL(XYZCAT) INSUFFICIENT ACCESS AUTHORITY FROM CATALOG.** (G) ACCESS INTENT(UPDATE ) ACCESS ALLOWED(READ ) IEF344I XYZMSTR0 IDCAMS DAT1 - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR
2.1.3.2 The last level qualifier (LLQ) The LLQ is relevant to the data set characteristics and contents. Especially for ISPF data sets containing source codes of some programming languages e.g. COBOL, PL1, REXX and JCL. Example: The ISPF Editor interprets the LLQ to set the correct language depending on colored code for sources. The SMS (Storage Management Service) system may contain standard allocation values for data sets with special LLQs.
2.1.4 Data set types Before I explain how you can work with data sets, I give a short description of data set types. A comprehensive description of data set types is in the following manual found: z/OS V2R1 DFSMS Using Data Sets Form Number: SC23-6855
2.1.4.1 Partitioned data sets (PDS and PDSE) At a glance: – –
This is the most used data set type when we work with ISPF. The name means: These data sets are partitioned.
20 | 2 Technical basics
– – – – – –
A partitioned data set contains in its space members together with their data. A partitioned data set must reside on ONE disk volume. You can concatenate multiple data sets for input operations that are on the same or different volumes. Each member logically builds a complete data set. Therefore, the system handles it as a discrete collection of data. A partitioned data set arranges member names in ascending alphabetical order. The member names can have up to eight alphanumeric characters. The rules to build alphanumeric names can be above in section 2.1.2 Naming conventions for data set names on page 17 found. The same rules are also valid for member names.
There are two types of Partitioned Data sets: PDS and PDSE.
2.1.4.2 PDS Description: – – – – –
–
–
A PDS can have maximal 16 extents. The space of a PDS is into two areas divided: The directory and the data area. The directory contains the member names with pointers to the data part of the member in the data area. The member’s directory of a PDS has a discrete number of directory blocks. The SPACE parameter of the allocation statement defines the number of blocks. The directory is located within the first extent of the PDS space. The directory can only contain a limited number of member names. When the directory has reached the maximum of member names, it is impossible to store more members in this PDS. There is no simple way to extent the number of directory blocks. There are utilities on the marked to expand a PDS directory dynamically. One of these utilities is PDSFAST sold by the company: Software Engineering of Amerika (SEA). The system writes the data of new or changed members always behind the data area of the last stored member. When a member changed and then restored under the same name, the data area that the member occupied earlier becomes free. This free space cannot be reclaimed until the PDS is compressed (online, or batch using the IEBCOPY utility). A store operation for a member fails if: – The directory is full – All 16 extents are full – The disk is full
2.1 Data sets | 21
This method to put the data of each new or again stored member to the end of the data area has important benefits: The NEWCOPY technique: It is possible to update a PDS concurrently by more than one user working on some LPARs. Active programs on load libraries of transaction servers as CICS and IMS may be updated even these systems are running. The transaction system uses the old program until the operator refreshes it manually, because the server has saved the position of all programs when it starts. The server does not use the new version of such a program until it is by an operator command refreshed. In CICS, the refresh is by the command NEWCOPY performed. Of course, a PDS can only be compressed when all affected systems are shut down.
Screen 2.1: Data set information panel of a PDS Data Set Information Command ===> Data Set Name . . . . : SMQP.USER.REXX.PDS General Data Management class . . : Storage class . . . : Volume serial . . . : Device type . . . . : Data class . . . . . : Organization . . . : Record format . . . : Record length . . . : Block size . . . . : 1st extent cylinders: Secondary cylinders : Data set name type :
**None** XYZPOOL XYZ15D 3390 **None** PO FB 80 27920 100 50 PDS
Creation date . . . : 2014/03/12 Expiration date . . : ***None***
Current Allocation Allocated cylinders : 100 Allocated extents . : 1 Maximum dir. blocks : 100
Current Utilization Used cylinders . . Used extents . . . Used dir. blocks . Number of members .
: : : :
46 1 72 427
Referenced date . . : 2014/03/12
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.
22 | 2 Technical basics
Advantages of a PDSE: – – –
The directory is physically located in the data space. Due to this, there is no limit for the number of members stored in a PDSE. The data space can grow up to a maximum of 123 extents on one disk volume. A compress is not necessary and not allowed.
Disadvantages of a PDSE: – –
Concurrent updating of a PDSE by more than one LPAR is critical. This leads to a destruction of this data set. The performance of a very large PDSE containing thousands of members is remarkably lower than a same PDS is.
Example: Data Set Information of a PDSE: I copied the data set of the PDS example to a PDSE. See the differences:
Screen 2.2: Data set information of a PDSE Data Set Information Command ===> Data Set Name
. . . : SMQP.USER.REXX.PDSE
General Data Management class . . : Storage class . . . : Volume serial . . . : Device type . . . . : Data class . . . . . : Organization . . . : Record format . . . : Record length . . . : Block size . . . . : 1st extent cylinders: Secondary cylinders : Data set name type :
**None** XYZPOOL XYZ110 3390 **None** PO FB 80 27920 100 50 LIBRARY
Creation date . . . : 2002/09/16
Current Allocation Allocated cylinders : 100 Allocated extents . : 1 Maximum dir. blocks : NOLIMIT
Current Utilization Used pages . . . . : 9,279 % Utilized . . . . : 51 Number of members . : 427
Referenced date . . : 2004/03/12
Tips for using PDS versus PDSE: – – – –
Load libraries for transactional server systems must be of type PDS. If several LPARS must use the same load library, allocate a PDS. User libraries only updated by one LPAR should be as PDSE allocated. The managing of a PDSE is much more convenient for the user. A library of thousands of members works faster when it is a PDS.
2.1 Data sets | 23
PDS/PDSE allocation rules: Consider the following rules when you allocate a PDS/PDSE: – LRECL: 0 to 32760 Bytes (0 only for RECFM=U → Load libraries) – RECFM: F, FB, FBA, V, VB, VBA, U – DSORG: always PO Remark: PDS and PDSE members processing is sequential.
3
To allocate a PDS/PDSE member use the following statements: TSO JCL
ALLOC DD(IN) DSN('PROX.USER.REXX(HUGO)') SHR REUSE //IN DD DISP=SHR,DSN=PROX.USER.REXX(HUGO)
2.1.5 Other data set types Sequential data sets This data set type is for ISPF user not very important. The LOG and LIST data sets in ISPF are sequential organized. The ISPF Edit and Browse facilities processes this data set type. Sequential data sets are expandable to over more than one volume. VSAM data sets The EDIT and BROWSE functions of ISPF cannot handle this data set type. DB2 databases The EDIT and BROWSE functions of ISPF cannot handle this data set type. 3 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.
24 | 2 Technical basics
The following data set types may be concatenated: – Sequential Data sets – Partitioned Data sets Rules: – – – –
A string of concatenated data sets can only for input opened. It is unusable for output operations. All concatenated data sets must have the same record format (RECFM). The block size (BLKSIZE) may be different. If the RECFM is FB then the LRECL of all concatenated data sets must have the same length. Members of partitioned data sets as well as sequential data sets can appear in the same concatenation several times.
See a sample JCL using the IDCAMS utility to copy a combination of members and sequential data sets to one sequential output data set: JCL 2.1: Copy job for concatenated data sets //********************** JCL: IDCAMS *********************** //* DOC: COPY CONCATENATED DATA SETS TO ONE OUTPUT DATA SET //* DOC: THERE ARE SEQUENTIAL DATA SETS AND PARTITIONED DATA SET //* DOC: MEMBERS MIXED IN THE INPUT STREAM //* (C) FRANZ LANZ AT: 4 OCT 2014 //*********************************************************** //IDCAMS EXEC PGM=IDCAMS //IN DD DSN=LANZUSR.TEST.X01,DISP=SHR // DD DSN=LANZUSR.USER(#END),DISP=SHR // DD DSN=LANZUSR.LOGON.PROTSAVE,DISP=SHR // DD DSN=LANZUSR.ASM(GETLPAR),DISP=SHR //OUT DD DSN=LANZUSR.TEST.OUTPUT,DISP=OLD //SYSPRINT DD SYSOUT=* //SYSIN DD * REPRO INFILE(IN) OUTFILE(OUT)
2.1.7 Partitioned concatenated data sets For ISPF, concatenated data sets are very important. Before ISPF can start, allocations of many data sets are required. The LOGON procedure runs under control of TSO and allocates all necessary data sets. The following DD allocations must be available before ISPF starts. If ONE of these DD is not available, the ISPF start fails.
2.1 Data sets | 25
Table 2.1: Necessary data sets when ISPF starts Name
Used for
Remarks
ISPPROF ISPLLIB ISPMLIB ISPPLIB ISPSLIB ISPTLIB SYSPROC or SYSEXEC
user profiles programs used by ISPF message texts panel definitions ISPF skeletons ISPF tables input command procedures
output and input, no concatenation read only chain read only chain read only chain read only chain read only chain read only chain
1 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:
ISPLLIB USER1.LOAD SYS1.LOADLIB SYS1.DFQLLIB SYS1.DGTLLIB ISPMLIB USER1.MSGS SYS1.ISPMLIB ISPPLIB USER1.NEW.PANELS USER1.PANELS SYS1.ISPPLIB ISPSLIB
ISPTABL ISPTLIB
SYS1.ISPSLIB SYS1.SBLSKEL0 USER1.ISPPROF USER1.ISPPROF SYS1.ISPTLIB
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.
26 | 2 Technical basics
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: Member: $DOC Member: $DOC Member: $DOC
> > > > >
SYSEXEC USER1.NEW.REXX USER1.REXX UNIVER.REXX SYS1.SBPXEXEC
When the procedure $DOC called for execution by ISPF the first occurrence contained in data set USER1.NEW.REXX is found and executed.
2.1.8 Sequential concatenated data sets Basics: The reading program sees the chain of concatenated data sets as one data set. The I/O system of z/OS reads sequential concatenated data sets as one data set. This means, there are all records of a chain of data sets read. – The records are coming in, as they are located in the sequence of the data sets. – The end of file condition is indicated when the last record of the last data set in the chain is reached. Advantage of sequential concatenated data sets: The I/O system reads collections of sequential data sets in one go. 3 Remark: Members of partitioned data sets may be as a normal sequential data set used. Therefore, the input in the example below can be a mix of PDS members and sequential data sets.
2.1 Data sets | 27
4 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 //********************** JCL: IDCAMS ****************************** //* DOC: COPY CONCATENATED DATA SETS TO ONE OUTPUT DATA SET //* DOC: THERE ARE SEQUENTIAL DATA SETS AND PDS MEMBERS MIXED //* DOC: IN THE INPUT STREAM //* (C) FRANZ LANZ DATE: 4 OCT 2014 //***************************************************************** //IDCAMS EXEC PGM=IDCAMS //IN DD DSN=USER1.TEST.X01,DISP=SHR // DD DSN=USER1.USER(#END),DISP=SHR // DD DSN=USER1.USER(ERA),DISP=SHR // DD DSN=USER1.USER(ERATOPT),DISP=SHR // DD DSN=USER1.LOGON.PROTSAVE,DISP=SHR // DD DSN=USER1.ASM(GETLPAR),DISP=SHR //OUT DD DSN=USER1.TEST.OUTPUT,DISP=OLD //SYSPRINT DD SYSOUT=* //SYSIN DD * REPRO INFILE(IN) OUTFILE(OUT)
2.1.9 Abbreviations concerning data sets The following table shows some abbreviations and their meaning for data set handling: Table 2.2: Abbreviations concerning data sets Abbr.
Full Name
Description
DSN PDS PDSE HLQ LLQ VOLSER ENQ DEQ DSLIST
Data Set Name Partitioned Data Set Partitioned Data Set Extended High Level Qualifier Last Level Qualifier Volume Serial Number enqueue dequeue Data Set List
name of a data set partitioned Data Set partitioned Data Set Extended 1st qualifier of a DSN last qualifier of a DSN name of a disk volume term to hold a resource term to free a resource collection of data set names
3 The TSO/ISPF logon process Before we can work with ISPF on our z/OS, we have to run through some steps: 1. We call the 3270 emulation software on our PC. 2. The 3270 emulation software connects to a Mainframe Session Manager. 3. The session manager offers some systems to which we have access. 4. We select a path to a TSO on that z/OS we want to logon. 5. The TSO start handler assembles the start job for our TSO user and submits it. The name of the start job is the TSO user ID. The JCL EXEC statement contains the name of the started task of the LOGON procedure. JES2 finds the task in one of the SYSPROC chains. 6. JES2 starts the logon job. The TSO processor IKJEFT01 is loaded. 7. TSO processes the logon procedure. 8. The logon procedure starts ISPF. Steps 1 to 4 may differ from installation to installation in a z/OS computing center. However, steps 5 to 8 are always the same. The most elegant way to come into an ISPF on a z/OS operating system is the Host on Demand (HOD) system offered by IBM. The ISPF logon procedures differ from company to company. I describe here only the general steps. The most important element of an ISPF logon process is the logon procedure:
3.1 The logon procedure The system programmers department designs and installs the start process of TSO/ISPF. An important element within this process is the logon procedure. It starts automatically when a user logs on. The LOGON procedure… – – –
uses programs developed in CLIST or REXX language. allocates all necessary basic data sets to run ISPF and those for all subsystems that can run under ISPF’s control (SDSF, GDDM and others). calls ISPF
Your own LOGON procedure: In the most z/OS computing centers is it possible to use an own by the user developed logon procedure. To do this the user must be able to develop programs in REXX or CLIST. Volume 2 ISPF Application Programmer’s Guide explains this technique in detail.
30 | 3 The TSO/ISPF logon process
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. USER1.SPFLOG2.LIST has been deleted. READY exec 'user1.clist(logon)'
Example 2: Logon to another TSO user ID: The current TSO user is left and a LOGON to user2 starts: (of course, the same user may repeat its logon here) USER1.SPFLOG2.LIST has been deleted. READY logon user2
When a user enters a LOGON command like this, the standard TSO logon panel appears and the user has to enter the necessary values for the new called TSO user.
3.2 TSO start and the user logon process in detail In this chapter, I will explain how the logon process works in detail and what resources and requirements are necessary. As I mentioned above, the most important thing to logon to TSO/ISPF is the logon procedure. Where do we find the name of the logon procedure? There are two locations where we can find the name of the logon procedure:
3.2 TSO start and the user logon process in detail | 31
The first available location is the ISPF primary option menu:
Screen 3.1: ISPF primary option menu showing the TSO logon procedure name Menu Utilities Compilers Options Status Help -------------------------------------------------------------------------ISR@PRIM ISPF Primary Option Menu Option ===> 0 1 2 3 4 5 6 7 P 10 11 12 13 S
Settings View Edit Utilities Foreground Batch Command Dialog Test IBM Products SCLM Workplace z/OS System z/OS User SDSF
Terminal and user parameters Display source data or listings Create or change source data Perform utility functions Interactive language processing Submit job for language processing Enter TSO or Workstation commands Perform dialog testing IBM program development products SW Configuration Library Manager ISPF Object/Action Workplace z/OS system programmer applications z/OS user applications System Display and Search Facility
User ID . : Time. . . : Terminal. : Screen. . : Language. : Appl ID . : TSO logon : TSO prefix: System ID : MVS acct. : Release . :
XYZMSTR 15:55 3278 1 ENGLISH ISR XYZLOGON MVS1 XYZSYS ISPF 5.9
Enter X to Terminate using log/list defaults
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 ------------------------------- TSO/E LOGON ----------------------------Enter LOGON parameters below: RACF LOGON parameters: Userid ===> XYZ0001 Password ===> ********* New Password ===> Procedure ===> XYZLOGON Group Ident ===> Acct Nmbr ===> 09806462 Size ===> 6000 Perform ===> Command ===> Enter an 'S' before each option desired below: -Nomail -Nonotice -Reconnect
-OIDcard
PF1/PF13 ==> Help PF3/PF15 ==> Logoff PA1 ==> Attention PA2 ==> Reshow You may request specific help information by entering a '?' in any entry field
32 | 3 The TSO/ISPF logon process
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. 2.
The start processor for TSO users assembles a start job for the user and submits it to JES2. Example with parameter values from the above logon panel: JCL 3.1: JCL to start a TSO user
//XYZ0001 //XYZ0001
3.
JOB '09806462',REGION=6000K EXEC XYZLOGON
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.
3 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
//JES2 PROC P=JES2PARM,N=JES2NODE,R=(WARM,NOREQ) //******************************************************* //* JES2 PROC //******************************************************* //JES2 EXEC PGM=HASJES20,TIME=1440,PARM=&R //HASPLIST DD DDNAME=IEFRDER //HASPPARM DD DSN=SYS1.PARMLIB(&P),DISP=SHR // DD DSN=SYS1.PARMLIB(&N),DISP=SHR // DD DSN=SYS1.SHASPARM,DISP=SHR //PROC00 DD DSN=SYS1.PROCLIB,DISP=SHR // DD DSN=USER.PROCLIB,DISP=SHR //PROC01 DD DSN=TSO.PROCLIB,DISP=SHR //IEFRDER DD DUMMY
3.3 ISPF start | 33
4. JES2 starts the task XYZLOGON (see the JCL below). JCL 3.3: TSO user start procedure
//XYZLOGON PROC //********************************************************** //* XYZLOGON LOGON JCL //********************************************************** //XYZLOGON EXEC PGM=IKJEFT01,DYNAMNBR=250,PARM='%XYZLOGON' //SYSPROC DD DSN=NORMAL.CLIST,DISP=SHR // DD DSN=UNIXYZ.CLIST,DISP=SHR //SYSHELP DD DSN=SYS1.HELP,DISP=SHR //SYSLBC DD DSN=SYS1.BRODCAST,DISP=SHR //SYSPRINT DD TERM=TS,SYSOUT=X //SYSTERM DD TERM=TS,SYSOUT=X //SYSIN DD TERM=TS
5.
The program IKJEFT01 (it is the TSO processor) searches in its SYSPROC chain the member named in the parm field of the EXEC statement. This is the Logon Procedure written in CLIST or REXX. 6. The logon procedure XYZLOGON runs and ISPF starts.
3.3 ISPF start Hereafter I give information about prerequisites and preparations to start ISPF. Additionally I will explain several possibilities to start ISPF online.
3.3.1 Necessary ISPF libraries For a start, each TSO user (like each BATCH job) has access to all programs found in systems LINKLIB library chain. This ability does not fulfill the requirements of TSO and least of all for ISPF. TSO is able to run procedures and programs found in SYSPROC or SYSEXEC allocation. However, this is nowhere near enough for ISPF. This system needs many additional allocations to start and run in a usable manner. All necessary data sets must be previously allocated, before ISPF can start. Why is this necessary? – ISPF is in contrast to TSO panel driven. Therefore, ISPF needs the DD allocation for ISPPLIB. The ISPPLIB chain contains the basic panels for ISPF itself as well as the panels for the ISPF subsystems (SDSF, GDDM …) and user application panels.
34 | 3 The TSO/ISPF logon process
– – – – –
Applications may produce messages embedded in panels. The library ISPMLIB contains these message definitions. Many ISPF applications use ISPF tables. These tables are stored in the ISPTLIB library. The skeleton library ISPSLIB is necessary when applications use the skeleton method. To execute procedures ISPF needs the allocation of SYSEXEC or SYSPROC (or both). When an application and ISPF itself ends, ISPF writes the Profile Pool Variables back into the profile data set. Therefore, ISPF needs the allocation of DD for ISPPROF.
All libraries except ISPPROF and ISPTABL are normally concatenated data sets and ISPF opens all when started. 3 Remark: When the ISPF is already running, more LIBRARIES may be temporarily allocated and deallocated. The commands to do this are LIBDEF and ALTLIB.
Table 3.1: All mandatory library allocations to start ISPF DDNAME
Content and use
ISPPROF ISPPLIB ISPMLIB ISPSLIB ISPTLIB ISPTABL SYSPROC, SYSEXEC
User profile library Panel definitions Messages Skeletons for JCL generation Table input library Table output library Executable procedures
3 Remark: If one allocation for DDNAME beginning with ISP is not available, ISPF will not start! The allocated libraries may be empty, but they must exist and now allocated.
3.3.2 Display currently existing library structures The currently existing library structures can as follows displayed: – The command ISPLIBD is to display the currently allocated ISPF libraries used. Enter this command in the ISPF command line. After enter the following screen is displayed:
3.3 ISPF start | 35
Screen 3.3: Display existing ISPF library allocations *--------------------------- LIBDEF Utility ----------------------------* | ISPLLSA ISPF LIBDEF Display Row 1 to 14 of 14 | | Command ===> Scroll ===> CSR | | | | Library Type USR Identifier | | ISPFILE ** LIBDEF not active ** | | ISPILIB ** LIBDEF not active ** | | ISPLLIB ** LIBDEF not active ** | | ISPMLIB LIBRARY $$DYNPAN | | SYS15059.T072259.RA000.LANZUSR.R0130670 | | S ISPMLIB ** LIBDEF not active ** | | ISPPLIB LIBRARY $$DYNPAN | | SYS15059.T072259.RA000.LANZUSR.R0130670 | | S ISPPLIB LIBRARY $$DYNPAN | | SYS15059.T072259.RA000.LANZUSR.R0130670 | | S ISPPLIB ** LIBDEF not active ** | | ISPSLIB ** LIBDEF not active ** | | ISPTABL ** LIBDEF not active ** | | ISPTLIB ** LIBDEF not active ** | | **End** | *-----------------------------------------------------------------------*
–
The command TSO ALTLIB DISPLAY is to display the currently existing ALTLIB allocation used. This command is in the ISPF command line entered. After enter the following screen is displayed:
Screen 3.4: Display existing ALTLIB allocation Menu List Mode Functions Utilities Help ----------------------------------------------------------------------------ISPF Command Shell Enter TSO or Workstation commands below: ===> TSO ALTLIB DISPLAY Place cursor on choice and press enter to Retrieve command => altlib deact application(exec) => altlib deact => LISTCAT CAT(CATALOG.MASTER.MCAT) ALIAS ALL ENT(LANZUSR) IKJ79322I Current search order (by DDNAME) is: IKJ79325I Application-level EXEC DDNAME=SYS00267 IKJ79327I System-level EXEC DDNAME=SYSEXEC IKJ79328I System-level CLIST DDNAME=SYSPROC ***
3.3.3 ISPF table service data sets The above table contains the ISPTLIB allocation. This DD is used to READ ISPF tables. The allocation of ISPTLIB normally contains a chain of data sets. Nevertheless, it is impossible to write tables back to a chain of data sets. To WRITE a table a DD definition containing only ONE data set must exist. Therefore, another DD name called ISPTABL allocates the table output data set.
36 | 3 The TSO/ISPF logon process
To read and write tables the following method is used: – –
There is a table output data set allocated using the DD name ISPTABL containing only ONE data set. This data set is the first one in the ISPTLIB chain.
The following excerpt from a DDLIST utility display shows the allocations of ISPTLIB and ISPTABL: 27920
80 FB
27920 8800 8800
80 FB 80 FB 80 FB
LIB > > LIB > PO > PO >
ISPTABL ISPTLIB
LANZT.USER.TABL LANZT.USER.TABL ISP.SISPTENU ISF.SISFTLIB
3 Remark: To start ISPF, an allocation of ISPTABL is not necessary, but the ISPTLIB allocation is mandatory.
3.3.4 The user profile library ISPPROF To start ISPF the user profile library is mandatory. This means, an allocation of ISPPROF must exist. When first starting ISPF, the user profile library may be empty, but the allocation ISPPROF must exist. ISPF uses the profile library to store information from session to session. This data set is a PDSE with the following allocation values: RECFM=FB, LRECL=80, BLKSIZE=27920 ISPF creates the members in an empty ISPPROF library when ISPF or an application starts the first time. ISPF updates the members each time when an application or ISPF ends. Table 3.2: Important members in ISPPROF library Member
Contents
ISFCMDS ISFPROF ISPEDIT ISPPROF ISPCMDS
ISPF command table for SDSF Profile variables for SDSF Profile variables for the ISPF Editor when ISPF runs with APPLID ISP Profile variables for the ISPF when ISPF runs with APPLID ISP ISPF command table when ISPF runs with APPLID ISP
3.3 ISPF start | 37
Screen 3.5: ISPF profile data set information panel Data Set Information Command ===> Data Set Name
. . . : XYZ0001.ISPF.PROFILE
General Data Management class . . : Storage class . . . : Volume serial . . . : Device type . . . . : Data class . . . . . : Organization . . . : Record format . . . : Record length . . . : Block size . . . . : 1st extent cylinders: Secondary cylinders : Data set name type :
**None** ISPFPOOL TNN011 3390 **None** PO FB 80 27920 2 5 LIBRARY
Creation date . . . : 2014/10/08 Expiration date . . : ***Perm***
Current Allocation Allocated cylinders : 2 Allocated extents . : 1 Maximum dir. blocks : NOLIMIT Current Utilization Used pages . . . . : 177 % Utilized . . . . : 49 Number of members . : 70
Referenced date . . : 2014/11/24
4 Warning: I strongly recommend allocate this data set as PDSE. When you use a PDS, it is sometimes necessary to compress this data set. This necessity brings a lot of trouble because the data set is always OPEN when ISPF runs.
The logon procedure allocates the data set for the ISPF profile. See the following excerpt from a CLIST logon procedure: Program 3.1: CLIST logon procedure /*******************************************************************/ /* ALLOCATE ISPPROF DATA SET */ /*******************************************************************/ SET &ISPPROF = &SYSUID..ISPPROF ALLOC FI(ISPPROF) SHR DA('&ISPPROF.') IF &LASTCC ^= 0 THEN + DO FREE FI(ISPCRTE) CONTROL MSG ATTRIB ISPCRTE DSORG(PO) RECFM(F B) LRECL(80) BLKSIZE(27920) ALLOC DA('&ISPPROF.') SP(1,1) CYLINDERS DIR(5) USING(ISPCRTE) + FI(ISPPROF) DSNTYPE(LIBRARY) IF &LASTCC = 0 THEN + DO WRITE *** ISPF PROFILE DATA SET '&ISPPROF.' HAS BEEN CREATED END ELSE + DO WRITE *** UNABLE TO ALLOCATE ISPF PROFILE DATA SET '&ISPPROF.' FREE FI(ISPCRTE) EXIT CODE(12) END FREE FI(ISPCRTE) END
38 | 3 The TSO/ISPF logon process
3.3.5 Contents of ISPF profile library The ISPF profile library contains the following value types: – ISPF system variables. – Variables of ISPF applications. – User variables. The values are stored in application dependent members. ISPF builds the member names automatically. The type of each ISPF variable is character string. The length of each variable can be up to 32760 bytes. 3 Remark: When ISPF itself or an application in ISPF starts, all ISPF variables are loaded from the ISPPROF library into the virtual storage. They stay there until the application or ISPF ends. When the application ends, ISPF writes all the application variables back to the appropriate member. When an application ends with a severe error, there is no chance to write the variables back. Therefore, all changes of variables are lost. The same happens for variables of all running ISPF applications when ISPF itself ends with a severe error or when an operator cancels ISPF or the TSO user. When ISPF or an application after a demolition starts again, the variables stored last are loaded.
3.3.6 The ISPF start command There are three TSO commands to start ISPF: 1. ISPSTART 2. ISPF 3. PDF Each of these commands is usable to start ISPF. If one of these commands is without any parameters used, the default options are in effect. The Table 3.3 on page 38 shows all three ISPF start commands and their default options. Table 3.3: ISPF start commands Command
Default option
Used ISPF applid
ISPSTART ISPF PDF
PANEL(ISP@MSTR) PANEL(ISP@PRIM) NEWAPPL(ISR) PANEL(ISP@PRIM) NEWAPPL(ISR)
ISP ISR ISR
There are many options available when one of these commands is used. You can find these options in the manual ISPF Dialog Developer’s Guide and Reference in chapter 2: Controlling ISPF Sessions.
3.3 ISPF start | 39
3.3.7 The initial logon procedure XYZLOGON After we are familiar with how TSO/ISPF starts, we shall look how the logon procedure works. ISPF user start sequence: 1. 2. 3.
First, the logon procedure checks the availability of an ISPPROF data set. If this data set exists, the procedure allocates ISPPROF. If the data set does not exist, the procedure creates the data set and allocates it as ISPPROF.
4 Caution: In our example, EVERY TSO logon uses the procedure XYZLOGON. Therefore, the procedure must not contain any statements containing the actual user name as a constant. There are only such allocation statements allowed which use the user name extracted by the REXX function USERID() or the CLIST variable &SYSUID.
We used the procedure language REXX to develop the procedure XYZLOGON. Sometimes CLIST may also be used. If you are not familiar with one of these languages, I added some explanations below the figure. These explanations should help you to understand the most important statements. The line numbers are normally not part of the statements. I added these line numbers only for the explanation of their contents for you. Program 3.2: Logon procedure XYZLOGON 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/* DOC: REXX XYZLOGON */ /* DOC: General TSO/ISPF Logon Procedure */ /*******************************************************************/ /* Set basics */ /*******************************************************************/ lpar = mvsvar ("SYSNAME") /* get lpar name */ user = userid() /* get TSO User-ID */ pdsn = "'"user".ISPF.PROFILE” /* build DSN for ISPPROF */ /*******************************************************************/ /* Allocate ISPPROF as PDSE */ /*******************************************************************/ if sysdsn(pdsn) = "OK" then "alloc dd(ispprof) dsn("pdsn") shr reuse" else "alloc dd(ispprof) dsn("pdsn") new catalog unit(sysda)", "storclas(ispfpool) space(5,5) cylinders dsntype(library)", "recfm(f b) lrecl(80) blksize(3120) dir(10)" /*******************************************************************/ /* Ask wether a private logon procedure exists. */ /* If yes then execute this procedure */ /* If no then call ISPF immediately. */ /*******************************************************************/ logo = "'"user".LOGON.CLIST(LOGON)'" if sysdsn(logo) = "OK" then "exec "logo /* private logon procedure */ else "ISPF" /* start ISPF */ exit
40 | 3 The TSO/ISPF logon process
The following table contains descriptions for some lines in the above procedure: Lines
Description
6–8 12
Set contents of variables lpar, user, pdsn Check whether the data set for ISPPLIB is available. If yes, allocate it. If no, create and allocate it. Check whether a private logon procedure is available. If yes, then call it up. If there is no private logon procedure, then call ISPF immediately.
13–15 22 23
3.3.8 Rules how a logon procedure may end Each logon procedure stays active in background as long as ISPF is running. When ISPF quits, the control comes back into the logon procedure behind the ISPF call command. Depending on the exit programming of one of the procedures, the following happens: – If the general logon procedure XYZLOGON or the private logon procedure performs a TSO LOGOFF command after the ISPF call statement, the TSO user becomes throwing back to the session manager and he has no chance to get a TSO READY prompt panel. – If the private logon procedure AND the general logon procedure are both ending without performing a TSO LOGOFF the user gets a TSO READY prompt.
3.3.9 The private logon procedure SLOGON An own logon procedure is necessary if you plan to do the following: – Develop own ISPF applications. – Use ISPF applications frequently which executing elements are not contained in the standard ISPF libraries. – Modify existing ISPF applications. First, you have to investigate which TSO environment is available in your z/OS system. The questions are: 1. Is there a standard way available to use an own logon procedure? Do the following if such an environment is available: Look into the standard logon procedure for installing your own logon procedure and what name you has to use. In our example above XYZLOGON is the name of the standard logon procedure and the name of your private logon procedure member must be SLOGON in the data set userid.LOGON.CLIST. The ISPF
3.3 ISPF start | 41
2.
3.
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 userid.LOGON.CLIST and modify it as necessary. When you leave ISPF, do you get the TSO READY PROMPT? You can enter the command exec 'userid.clist(slogon)' to start your own Logon Procedure after ISPF quits. When you leave ISPF, do you fall back to the session manager? If this happens, you have no chance to use a private logon procedure. The only chance to use your own logon procedure is to ask your system programmers whether they are willing to install a special logon environment for you. A possible circumvention in this situation may be the use of ISPFs LIBDEF commands in all your own application procedures. To reach your procedures, you must use the ALTLIB command first.
Rules to develop your own logon procedure: – – –
Write the logon procedure in CLIST or REXX. Other languages are not useable. You are free in designing the procedure. The procedure must call ISPF. Use one of the ISPF start commands shown above in Table 3.3 on page 38.
1 Recommendation: If you plan on developing own ISPF applications, you should install a test and a production logical level for each ISPF library. This would especially useful if there are several users working on the same project. The first logical levelcontains your own programming elements and the second logical levelis the group one.
3.3.10 Example of a LOGON procedure 3 Remark: This logon procedure uses the CONCATD command to allocate private libraries. This command is able to position additional data sets BEFORE the existing one in a DD element. See the description of CONCATD in the section 10.1 The TSO command CONCATD on page 179.
42 | 3 The TSO/ISPF logon process
Program 3.3: LOGON procedure example /* DOC: REXX LOGON */ /* DOC: Private LOGON procedure for user LANZT */ /******************************************************************/ "CONCATD DDN(SYSEXEC) DSN('LANZT.TEST.REXX'", "'LANZT.PROD.REXX') CONCAT BEFORE SHR LIST" "CONCATD DDN(ISPPLIB) DSN('LANZT.TEST.PANEL'", "'LANZT.PROD.PANEL') CONCAT BEFORE SHR LIST" "CONCATD DDN(ISPMLIB) DSN('LANZT.TEST.MSGS'", "'LANZT.PROD.MSGS') CONCAT BEFORE SHR LIST" "CONCATD DDN(ISPSLIB) DSN('LANZT.TEST.SKEL'", "'LANZT.PROD.SKEL') CONCAT BEFORE SHR LIST" "CONCATD DDN(ISPTLIB) DSN('LANZT.TEST.TABL') CONCAT BEFORE SHR LIST" "CONCATD DDN(ISPTABL) DSN('LANZT.TEST.TABL') CONCAT BEFORE SHR LIST" "ISPF" /* Call ISPF */ Exit
3.4 The SLOGON procedure of the SMART ISPF utilities On the previous pages, you learned a lot concerning logon procedures. You are now aware how important a reliable private logon procedure is. All procedures we discussed have a weakness: If the name of one of the data sets in the systems logon procedure has changed, your private logon procedure fails with the error Data set not found. Therefore, I wrote a special logon procedure, which avoids this chink. Requirements for such a procedure: Persons without REXX knowledge should be able to use the procedure. – The existing data set chains must be conserved and new added data sets must be before the origin ones for each affected DD allocation positioned. – If an additionally to allocate data set is not found, the procedure must display an error message and continue the allocation with the available data sets. – The CONCATD command is not necessary. The SLOGON procedure of the SMART ISPF utilities fulfills all these requirements. Functions of the SLOGON procedure of the SMART ISPF utilities: 1. Read all existing DD together with their allocated data sets and save all. 2. Read a control file containing data set names that should allocated BEFORE the current ones for each DD element. 3. Assemble a complete new data set allocation structure. 4. Allocate this structure using the TSO ALLOC command with REUSE option. 5. Call ISPF.
3.4 The SLOGON procedure of the SMART ISPF utilities | 43
4 Caution: This logon procedure can never be under control of ISPF executed because the affected libraries are OPEN when ISPF is running.
3.4.1 Install the SLOGON procedure First, edit the control member SLOGDSN. You can copy the example member shown below from the SMART ISPF utility data set.
3.4.1.1 The control member SLOGDSN The logon procedure reads the control member SLOGDSN. It must reside in the same data set where the logon procedure is. The control member contains DD names and DSNs designed to allocate in front of existing allocations in the DSN chain for the relevant DD element. This method avoids the necessity to insert the variable DDNAMES and DSNs into the logon procedure itself. The logon procedure therefore always remains unchanged. Figure 3.1: SLOGDSN control member example * DOC: SLOGDSN Control member used by the procedure SLOGON of ISPF * DOC: SMART utilities. *---------------------------------------------------------------------* Author & copyright: Franz Lanz, Bempflingen, Germany *---------------------------------------------------------------------* Description: * * This Member contains DD names and DSNs assigned to these DD names. * The DD names and their assigned DSNs are used by the logon * procedure SLOGON to allocate these elements in front of existing * library allocations. If this member is missing there are no * additional allocations possible. * Lines beginning with an asterisk are skipped by the SLOGON program. *********************************************************************** * * The definitions have the following structure: * DDNAMEN1 DSN1 [ONLY] * DSN2 * DDNAMEN2 DSN1 * DSN2 * DSN3 *---------------------------------------------------------------------* If the third word in a line is ONLY then are all existing allocations * for this DD discarded and only the DD with the here defined * DSNs are allocated. * If the HLQ is &USERID the logon procedure replaces this with the * real user-ID. ***********************************************************************
44 | 3 The TSO/ISPF logon process
SYSEXEC ISPPLIB ISPMLIB ISPTLIB ISPLLIB ISPTABL
PROX.LANZ.CEXEC ONLY PROX.LOGON.CEXEC &USERID.LANZ.PANEL PROX.LOGON.PANEL &USERID.LOGON.MSGS LANZT.USER.TABL PROX.LANZ.LOAD PROX.LOGON.LOAD LANZT.USER.TABL
3.4.1.2 Install the SMART ISPF utilities logon procedure There are two logon scenarios possible: Scenario 1: There is an environment available to install an own logon procedure as described in the section 3.3.9 The initial logon procedure XYZLOGON on page 40. 1. Identify the data set to which you must the LOGON procedure copy and copy it. 2. Copy the SMART ISPF utilities SLOGDSN member into the same data set as the LOGON procedure. 3. Modify this member as needed for your requirements. 4. Perform a new logon. 5. Use the DDLIST utility to check whether the allocations are correct. Scenario 2: There is NO environment available to install an own logon procedure as described in the section 3.3.9 The initial logon procedure XYZLOGON on page 40. However, you get the TSO READY PROMPT when you leave ISPF. 1. Copy the SMART ISPF utilities logon procedure SLOGON and the SLOGDSN member into a PDS/PDSE of your choice. The PDS/PDSE must have a LRECL=80. e.g. userid.REXX 2. Modify the member SLOGDSN as needed for your requirements. 3. Leave ISPF. 4. At the TSO READY PROMPT enter the command: exec 'userid.REXX(SLOGON)'. 5. The logon procedure runs and ISPF starts again. During running, the logon procedure displays an echo print of all allocations as well as error messages that are eventually appearing. 6. Use the DDLIST utility to check whether the allocations are correct. The figure Screentext 3.1 on page 45 shows an excerpt of a DDLIST printout when the above SLOGDSN control member is during a logon used. All additionally assigned allocations are in gray.
3.4 The SLOGON procedure of the SMART ISPF utilities | 45
Screentext 3.1: Allocated ISPF libraries Blksz Lrecl RCFM Org 32760 32760
** U ** U
LIB PO
27920 8800 8800
80 FB 80 FB 80 FB
LIB PO PO
27920 27920 8800 8800 27920
80 80 80 80 80
FB FB FB FB FB
LIB LIB PO PO LIB
27920 8800 8800
80 FB 80 FB 80 FB
LIB PO PO
27998 27998
255 VB 255 VB
LIB PO
> > > > > > > > > > > > > > > > > > > >
Act DDname Data Set Name Actions: B E V M F C I Q ISPLLIB PROX.LANZ.LOAD PROX.LOGON.LOAD ISPMLIB LANZ.MSGS ISF.SISFMLIB ISP.SISPMENU ISPPLIB LANZ.PANEL PROX.LOGON.PANEL ISP.SISPPENU ISF.SISFPLIB ISPTABL LANZT.USER.TABL ISPTLIB LANZT.USER.TABL ISP.SISPTENU ISF.SISFTLIB SYSEXEC PROX.LANZ.CEXEC PROX.LOGON.CEXEC
See also the chapter 11.5 Installation of SMART ISPF utilities on page 203.
4 Customize ISPF I will show you in this chapter what to do to have a practicable ISPF for optimal use. I will go through the most important ISPF panels and give you my recommendations for the practical use of these panels.
4.1 Available 3270 screen formats As I mentioned in the section 1.13 The 3270 screen on page 8, there are some possibilities how to customize the ISPF screen layout, as you like within the shown limits. Available screen layouts: Table 4.1: 3270 screen layout selection Lines / screen
Char. / line
Remark
24 32 43 27
80 80 80 132
Standard layout 1. Enlargement 2. Enlargement 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. 4 Warning: If you used a screen format and you leave the session without an ISPF logoff (perhaps due to connection interruption), the system memorizes the layout you were using. When you perform a logon again and you select another screen layout as you used in the last (interrupted) session, the ISPF will reject the logon.
4.2 ISPF options setting Unfortunately, there is no central point to set all ISPF options. In fact, there are many positions to define options. Now we look into the basic options.
4.3 The ISPF settings panel (Selection 0) If you call up ISPF for the first time, the Primary Option Menu does not look not very user friendly:
48 | 4 Customize ISPF
– –
The Command line ====> appears at bottom of the screen. It is not reachable there by pressing the POS1 key. If you press the POS1 key, the cursor jumps to the CUA line. In most cases the cursor should jump to the Command line = when POS1 is pressed.
Fortunately, these options are changeable. In the following panel, I will show you the best practice for ISPF settings: To do this, enter in Primary Option Menu a 0 Settings and press enter. You see now the ISPF Settings menu. I recommend setting the options as you can see in the gray lines in the panel below. Screen 4.1: ISPF options setting Log/List Function keys Colors Environ Workstation Identifier Help ───────────────────────────────────────────────────────────────────── ISPF Settings Command ===> Options Enter "/" to select option _ Command line at bottom / Panel display CUA mode / Long message in pop-up _ Tab to action bar choices _ Tab to point-and-shoot fields / Restore TEST/TRACE options / Session Manager mode / Jump from leader dots Edit PRINTDS Command / Always show split line / Enable EURO sign Terminal Characteristics Screen format 1 1. Data
2. Std
Print Graphics Family printer type 2 Device name . . . . Aspect ratio . . . 0
General Input field pad . . N Command delimiter . ;
3. Max
4. Part
3 Remark: A slash (/) sets an option to ON, blank sets it to OFF.
Explanations concerning some of these options: Command line at bottom The standard position for this line is BOTTOM. To bring this line to top, set the option OFF. Additionally, the option Tab to action bar choices must be set OFF. With these two options set as mentioned and pressing the POS1 key brings the cursor to the Command line on each ISPF panel.
4.3 The ISPF settings panel (Selection 0) | 49
Panel display CUA mode To position the CUA line at top, set this option to ON. Long message in pop-up ISPF messages consists of two parts: The Short Message Text and the Long Message Text. If this option is set to ON, The Long Message Text always appears in a box instead on the upper region in the panel. Sometimes the long messages are very long (up to 512 characters). In this case, they do not fit into the upper region and are in a box displayed. Here a comprehensive description of this option in an ISPF manual: Displaying long messages in pop-ups ISPF displays short messages at the top right of a panel, next to the panel title. ISPF usually displays long messages in a pop-up window. However, if a long message is less than the screen width, then, by default, ISPF displays it just below or above the command line. If you always want long messages in a pop-up window: 1. Enter the ISPF settings command to display the ISPF settings panel. 2. Select Long message in pop-up. Tab to action bar choices When POS1 is pressed and this option is set to ON, the cursor always jumps to the CUA line. If you want, that the cursor always jumps to the command line when you press POS1, set this option to OFF. Tab to point-and-shoot fields There are panels defined with point and shoot fields. In the most cases, these fields are to pre-define actions (e.g. UPDATE or CANCEL) used. To reach these fields using the TAB key set this option to ON. Always show split line During working in ISPF, you can define more than one open working logical screen at the same time. To display this situation a dotted line additionally appears on the screen. Command Delimiter As I mentioned above in the section 1.14.2 Overview of all commands and functions of ISPF on page 10 ISPF can execute more than one command with one input action.
50 | 4 Customize ISPF
A Command delimiter character must delimit these commands. By default, this delimiter character is a semicolon (;). However, programs sometimes use a semicolon to delimit their input parameters. If this happens, you should change the ISPF Command delimiter character to another one e.g. Question mark (?).
4.4 Panels and their handling Panels are into three groups classified: 1. The panels of the ISPF basic system are most important. There are thousands of them. The library ISP.SISPPxxU normally contains these panels. The two characters xx define the language in which the panels appear. xx = EN English. Other languages are available. 2. The panels of the ISPF subsystems are contained in dedicated libraries. They are usually stored in ISPF subsystem libraries. E.g. the panels for SDSF are in the library ISF.SISFPLIB 3. The third is the group of private panels. ISPF users developing themselves and they are stored in the appropriate user libraries. ISPF loads all panels from the library definition of ISPPLIB.
4.5 The structure of ISPF panels Unlike the TSO, ISPF works with full-screen menus, so-called panels. These panels are generally freely definable. You can also create panels in order to develop own applications in ISPF. There are three different types of panels: The normal full screen panels These panels replace when called the currently displayed panel completely disregarding how big the previously displayed panel was. The POP up windows As the name says, these panels overlay only a part of the current panel. Depending of their format, they let parts of the overplayed panel still displayed. The following display will illustrate this: I called a file with VIEW, deleted a line and then I tried to write the file with END (PF3) back.
4.5 The structure of ISPF panels | 51
Screen 4.2: POP UP panel with view warning VIEW SQMT.JCL(TT) - 01.01 Columns 00001 00072 C ┌─────────────────────── View Warning ──────────────────────┐ oll ===> CSR * │ │ ************* 0 │ Command ===> │ 567890 123456 0 │ │ 567890 123456 0 │ You are currently in View mode: │ 567890 123456 0 │ │ 567890 123456 0 │ Press Enter to confirm exit from View. No changes │ 567890 123456 0 │ will be saved. │ 567890 123456 0 │ │ 567890 123456 0 │ Enter the END or EXIT command to return to View, │ 567890 123456 0 │ where you can use the CREATE or REPLACE primary │ 567890 123456 0 │ commands to save your changes. │ 567890 123456 0 └───────────────────────────────────────────────────────────┘ 567890 123456 000014 LINE 15 1234567890 1234567890 1234567890 12345678901234567890 12345 ****** **************************** Bottom of Data *************************
The grayed part is a POP up Panel. It overlays the previous screen. These windows can of course also contain input fields. POP Up panels are very useful for displaying warnings and instructions, or a program requires a confirmation of an impending processing by the operator. The HELP Panels A special technique is for creating help panels used. An entry in the definition of a normal panel defines the HELP panel. HELP panels can be defined for an entire panel and for individual input or output fields in a panel.
4.5.1 Using HELP panels Depending on the HELP definitions in the source code of panels and the position of the cursor, different displays can appear when you press the PF1 key. – A dedicated description relating the field of the cursor position does appear. In this case a help entry exists in the panel definition for such a field: )HELP field(function) panel(SLEt2)
–
If the cursor is not in a HELP sensitive field, a dedicated description relating to the panel appears. In this case a help entry exists in the panel definition like this: )INIT .zvars .help .csrrow
–
= '(dynpan lesort maxrows imacroi function)' = SLET1 = &line
If the PF1 key is pressed and no HELP definitions are available, neither for the panel nor for the field in which the cursor is currently located then the general ISPF help panel appears.
52 | 4 Customize ISPF
Examples for help display:
4.5.1.1 HELP display for a panel field: The panel SLEP1 contains the HELP definition for the field “function” as you can see above. To get the display below I did the following: 1. I called up the application SLE (SMART Last Edit). ISPF displays the main panel SLEP1. 2. I positioned the cursor in the underlined column of the line XYZ001.REXX(LOGON) and pressed PF1 key. 3. The POP up HELP panel SLET2 appeared. I grayed out this panel in the figure below. Screen 4.3: Display a POP up help panel SLEP1 S -------------- Table display of recently edited data sets Row 1 of 122 COMMAND ===> SCROLL ===> CSR Dynpan= YES-VIO Compile state of SLE Sort: D=Date or N=Name D Max lines shown: 122 NOT COMPILED Insert control for edited data sets ----> All or Change: ALL C Recent DSN in Edit Help with PF1 for all fields Date Time -----------------------------------------------------------------------------_ XYZ001.REXX(LOGON) 14/09/22 15:09:08 *-----------------------------------------------------------------------* 01 | SLET2 Help panel for entering function code | 35 | | 43 | Following function codes may be entered: | 55 | | 17 | --> D --> Display the DSLIST panel (like 3.4) for this dataset. | 44 | --> M --> Display a datasets MEMLIST with NINE columns to enter. | 33 | --> E --> Edit this dataset or member. | 47 | --> B --> Browse this dataset or member. | 50 | --> V --> View this dataset or member. | 48 | --> S --> Display the member list of this dataset for EDIT. | 55 | --> R --> Remove this line from display. Multiple R are possible. | 42 | --> I --> Display dataset information. | 47 | | 27 | Note: | 42 | If the cursor is positioned in this field and ENTER is pressed | 26 | the dataset or member is edited. | 25 | ---------------------- End of Help Panel SLET2 ---------------------- | 14 *-----------------------------------------------------------------------* 04
4.5.1.2 HELP display for a panel The panel SLEP1 contains the HELP definition for the panel as you can see above. For the display below, I did the following: 1. I called the application SLE (SMART Last Edit). ISPF displays the main panel SLEP1. 2. I positioned the cursor in the first line of the panel and pressed PF1 key. 3. The HELP panel SLET2 appeared. I cut some lines to shorten the text here.
4.6 The primary option menu | 53
Screen 4.4: Help display of a panel SLET1 IAL ----------------- Help panel no. one for program SLE --------------Command ===> End with PF3 or PF15, Scrolling with PF10/11. At last page enter B and press ENTER leads back to first page. -----------------------------------------------------------------------------More: + This panel is used by program SLE to display a table containing names of last edited datasets. The display can be used to perform some functions using the displayed datasets. The following functions may be started by selecting them using these characters:
4.6 The primary option menu The Primary Option Menu is the first panel that in an online environment appears on your screen after the start of ISPF. The system programmers department usually adjusts this panel for specific user groups. The panel name can be different depending on the ISPF start method. See the section 3.3.6 The ISPF start command on page 38. You see here a typical ISPF Primary Option Menu with CUA line. Screen 4.5: Primary option menu with CUA line Menu Utilities Compilers Options Status Help ────────────────────────────────────────────────────────────────────────────── ISPF Primary Option Menu Option ===> 0 Settings Terminal and user parameters 1 View Display source data or listings 2 Edit Create or change source data 3 Utilities Perform utility functions 4 Foreground Interactive language processing 5 Batch Submit job for language processing 6 Command Enter TSO or Workstation commands 7 Dialog Test Perform dialog testing 8 SDSF System Display and Search Facility 9 IBM Products IBM program development products 10 SCLM SW Configuration Library Manager 11 Workplace ISPF Object/Action Workplace L LM Facility Library administrator functions Enter X to Terminate using log/list defaults
User ID . : Time. . . : Terminal. : Screen. . : Language. : Appl ID . : TSO logon : TSO prefix: System ID : MVS acct. : Release . :
LANZT 08:12 3278A 1 ENGLISH ISR LOGONXX LPRT 09806462 ISPF 5.2
The first line (CUA row) contains individual choices for pull down menus. One of the choices is the Status menu. We use the status menu to control the information that appears in the right area of the ISPF primary options menu. We now want to see what options the Status menu of the CUA line offer. To do this we position the cursor anywhere in the word Status and press ENTER. Now the following screen with unfolded Status POP up window appears, the cursor is on the first line of the pull down sections positioned. The place where the cursor is, I left white in the gray window.
54 | 4 Customize ISPF
Screen 4.6: Primary option menu with unfolded Status CUA selection Menu Utilities Compilers Options Status Help ──────────────────────────────────── ┌────────────────────────────┐ ───────── ISPF Prim │ 3 *. Session │ Option ===> │ 2. Function keys │ │ 3. Calendar │ 0 Settings Terminal and user p │ 4. User status │ USER001 1 View Display source data │ 5. User point and shoot │ 08:12 2 Edit Create or change so │ 6. None │ 3278A 3 Utilities Perform utility fun └────────────────────────────┘ 1 4 Foreground Interactive language processing Language. : ENGLISH 5 Batch Submit job for language processing Appl ID . : ISR 6 Command Enter TSO or Workstation commands TSO logon : XYZLOGON 7 Dialog Test Perform dialog testing TSO prefix: 8 SDSF System Display and Search Facility System ID : LPRT 9 IBM Products IBM program development products MVS acct. : 09806462 10 SCLM SW Configuration Library Manager Release . : ISPF 5.2 11 Workplace ISPF Object/Action Workplace L LM Facility Library administrator functions Enter X to Terminate using log/list defaults
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 Menu Utilities Compilers Options Status Help ───────────────────────────────────────────────────────────────────────────── ISPF Primary Option Menu Option ===> 0 Settings Terminal and user parameters 1 View Display source data or listings 2 Edit Create or change source data 3 Utilities Perform utility functions 4 Foreground Interactive language processing 5 Batch Submit job for language processing 6 Command Enter TSO or Workstation commands 7 Dialog Test Perform dialog testing 8 SDSF System Display and Search Facility 9 IBM Products IBM program development products 10 SCLM SW Configuration Library Manager 11 Workplace ISPF Object/Action Workplace L LM Facility Library administrator functions Enter X to Terminate using log/list defaults
< Su 4 11 18 25
Calendar January 2004 Mo Tu We Th Fr 1 2 5 6 7 8 9 12 13 14 15 16 19 20 21 22 23 26 27 28 29 30
> Sa 3 10 17 24 31
Time . . . . : 09:09 Day of year. : 023
As you can see, we now have the current calendar on the right side. This status indicator looks different for each by SPLIT NEW or START produced panel. The ISPF remembers this setting for each SPLIT logical screen separately in the profile options. These settings are also available after a re-login. The small example leads us to our next topic, namely the Screen splitting.
4.7 Screen splitting | 55
4.7 Screen splitting Imagine you just edited a file and the same time you need at information from another file that you want to take over into the currently edited file. How does screen splitting work? There are two ISPF commands to open a new ISPF logical screen. – The command START always opens, independent of the cursor position, a new logical screen displaying a new ISPF primary option menu as a full screen. – The command SPLIT NEW opens a new logical screen but the ISPF primary option menu appears below the line where the cursor is. The screen splits and shows two logical screens simultaneously. Due to this behavior of SPLIT NEW, PF2 should include the command START. Whenever you need a new ISPF logical screen, press the PF2 key! A new ISPF Primary Option Menu opens. This indicates the fact that the top or bottom row consists of dotted lines. This line is the Split Screen Indication Line. 3 Remark: If this split screen indication line does not appear on your screen, you can use the option Always show split line in Menu 0 of ISPFs primary option menu to switch on the display of this line.
4.7.1 Essential rules and tips for split screen –
–
–
You can work with up to eight or more ISPF logical screens. This depends on customizing of your ISPF in your z/OS system. The ISPF system variable ZSCRMAX contains the information how many logical screens you can open. Use the ISPF menu 7.3 to query this variable. By default, the PF9 key contains the text SWAP. I urge you to change the PF9 key to text SWAP NEXT. With SWAP, you can only shuttle between two logical screens. If there are more than two logical screens open, with SWAP, you will never reach all logical screens. If you set up the PF9 key assigned SWAP NEXT, you can jump through all the logical screens by repeatedly pressing the PF9 key. If you have the screen somewhere in the middle split with SPLIT NEW and you want to come back to a full screen display with the split-screen indication line at the top or bottom, you can use the following trick:
56 | 4 Customize ISPF
1. 2.
3. 4.
If the PF2 key contains SPLIT NEW, position the cursor on the top line and then press the PF2 key. 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. Through each of the two operations, you get a new primary option menu in full screen mode. If you leave this new primary option menu now with the PF3 key (END), you again get displays that the Split Screen Indication Line have at top or bottom of the screen. This trick has already stood the test for me very often!
4.7.2 Direct activation of an ISPF logical screen Let us assume that we have opened more than two logical screens of ISPF. This causes the problem that we can achieve a logical screen that we want to address directly only by pressing the PF9 key repeatedly until the desired logical screen appears. 1 Tip: To scroll continuously with the PF9 key through all the logical screens, the PF9 key must in all ISPF applications in all traversed logical screens set to SWAP NEXT and not only to SWAP. If this is not the case, even in one application, then it can happen that you cannot reach some logical screens when leafing through the logical screens. The PF key assignment is application-based. Therefore, if you start a new application in ISPF, a new APPLID opens, and then you need to adjust the PF keys assignment there. By way of example, here is the SDSF with its APPLID ISF.
In the following chapter, we want to look at a case in which eight levels are open.
4.7.3 Example, with eight logical screens of ISPF To display a list of all currently available ISPF logical screens enter SWAP LIST in the command line (or press the PF key containing the SWAP LIST command). The following example shows eight current logical screens with an application started in each logical screen:
4.7 Screen splitting | 57
Screen 4.8: ISPF task list with eight ISPF logical screens Display Filter View Print Options Help - ┌─────────────────── ISPF Task List ────────────────────┐ ------------------S │ Active ISPF Logical Sessions │ 1-3 (3) C │ │ SCROLL ===> CSR P │ . Start a new screen │ TST* N │ . Start a new application │ CPU-Time C Pos DP │ Application Name │ 7.37 A IN EB │ _____________________________________________ │ 1452.60 7 LO FF │ │ 1557.70 7 LO FF │ ID Name Panelid Applid Session Type │ │ . 6* SDSF ISFPCU41 ISF 3270 │ │ . 7 LASTED ISREDDE4 ISR 3270 │ │ . 8 XYZPROD XYZMMENU XYZP 3270 │ │ . 3 #COMMBOX ISREDDE4 ISR 3270 │ │ . 4 #IMACROA ISREDDE4 ISR 3270 │ │ . 5 VOLINFO VOLINF1 ISR 3270 │ │ . 1- JULDATE ISREDDE4 ISR 3270 │ │ . 2 REXX ISRUDSM ISR 3270 │ └───────────────────────────────────────────────────────┘
If you want to activate a certain level, then position the cursor just before the appropriate level and press ENTER. You achieve the same effect with a double click with the mouse on the corresponding position. The columns show the following entries: ID The serial number of the logical screen. Behind the number are an asterisk (*) or a hyphen (-). These have the following meanings: * This is our current logical screen. - This level was with the last SWAP or SWAP NEXT command left. With a SWAP command, we can only shuttle between these two logical screens. Only by using SWAP NEXT, we can leave this shuttle cycle. The ID numbers do not appear continuously from top to bottom, I had closed and reopened some levels in this example during my last work. Name The application name. This name is, when available, very helpful, because you can specifically e.g. jump in the SDSF. The application displayed in this level must define the name. Panelid This is the name of the ISPF panel, which is currently active in this logical screen. If you are familiar with the panel IDs, you can specifically jump to an application. Applid This application starts with this Apple ID. Please note that each ISPF application has its own PF key assignment.
58 | 4 Customize ISPF
Session Type This is normally always 3270 1 Tip: If you intend to use more than two logical screens in ISPF, I urge you to perform the following two preparations: Prepare in all applications with a separate ISPF application ID the PF2 key with the command START and the PF9 key with the command SWAP NEXT. Prepare analogous to this the PF15 key with the command SWAP LIST.
4.8 The program function keys of ISPF We have now customized a well-functioning ISPF system. For our daily work, we should continue the optimization process to speed up our using of ISPF. What can and should we do to reach this target? – We should optimize our PF key assignment. – We should customize the ISPF command table to optimize repetitive tasks using the assistance of the ISPF command table. – We should learn to use ISPF Personal Data Set Lists to display frequently needed DSNs with low effort.
4.8.1 Optimize PF key settings When dealing with the ISPF PF key assignments, you must first make a fundamental decision: A few years ago, the KEYLISTs in the ISPF came up. I have been experimenting for some time with this new ISPF feature. However, I could not find any significant advantage over the conventional KEYs use and I therefore stayed with the old form of the use of PF keys. What are the differences between KEYLISTs and KEYs? Here a short introduction into both methods. However, before we deal with the issue KEYLIST versus KEYS, let us look into making the assignment of the PF keys on the screen visible and letting this display disappear again. Especially beginners in the ISPF appreciate it if the PF key assignment is visible on the screen for some time. This technique is in fact the same for both methods of the PF key using. Full information on the PF key assignments is in the brochure ISPF User’s Guide Volume II in the chapter Settings option (0) explained.
4.8 The program function keys of ISPF | 59
4.8.2 Switching on the PF key setting display To display the PF key assignment on the screen, we enter the PFSHOW ON command and press ENTER. This command toggles the display of the PF keys for our entire ISPF. With PFSHOW OFF and ENTER, the display can be switched off again. The display you get by entering the PFSHOW ON command, however, depends on several settings that you can make in a special panel. To access this setting screen, proceed as follows: Enter into any ISPF panel in the command line the command PFSHOW TAILOR and press ENTER. The following POP Up panel will appear where you make the white-backed settings and press ENTER. Screen 4.9: Function key definition panel Menu Utilities Compilers Options Status Help s ┌───────────────────────────── ISPF Settings ─────────────────────────────┐ │ Tailor Function Key Definition Display Top of data │ O │ Command ===> │ │ │ 0 │ For all terminals: │ 1 │ Number of keys . . 2 1. 12 │ 2 │ 2. 24 │ 4 │ Keys per line . . . 2 1. Six │ 5 │ 2. Maximum possible │ 7 │ Primary range . . . 1 1. Lower - 1 to 12 │ 8 │ 2. Upper - 13 to 24 │ 1 │ For terminals with 24 PF keys: │ 1 │ Display set . . . . 3 1. Primary - display keys 1 to 12 │ L │ 2. Alternate - display keys 13 to 24 │ P │ 3. All - display all keys │ U │ │ │ Press ENTER key to save changes. Enter END to save changes and exit. │ │ F1=Help F3=Exit F8=Forward F12=Cancel F13=Help │ e │ F15=End F16=Return F17=Rfind F18=Rchange F22=Left │ │ F23=Right F24=Cretriev │ └─────────────────────────────────────────────────────────────────────────┘ F1=Help F3=Exit F8=Down F10=Actions F12=Cretriev F13=Help F15=End F16=Return F17=Rfind F18=Rchange F22=Left F23=Right
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.
60 | 4 Customize ISPF
Screen 4.10: Example for command PFSHOW ON Menu Utilities Compilers Options Status Help ───────────────────────────────────────────────────────────────────────────── ISPF Primary Option Menu Option ===> pfshow on 0 1 2 3 4 5 6 7 8 9 10 11 L
Settings View Edit Utilities Foreground Batch Command Dialog Test SDSF IBM Products SCLM Workplace LM Facility
Terminal and user parameters Display source data or listings Create or change source data Perform utility functions Interactive language processing Submit job for language processing Enter TSO or Workstation commands Perform dialog testing System Display and Search Facility IBM program development products SW Configuration Library Manager ISPF Object/Action Workplace Library administrator functions
< Su 7 14 21 28
Calendar March 2004 Mo Tu We Th Fr 1 2 3 4 5 8 9 10 11 12 15 16 17 18 19 22 23 24 25 26 29 30 31
> Sa 6 13 20 27
Time . . . . : 03:54 Day of year. : 063
Enter X to Terminate using log/list defaults
To activate the PF key assignments display, type in the command line PFSHOW ON and press ENTER. Then the following screen display appears. Screen 4.11: Screen showing the PF key assignment Menu Utilities Compilers Options Status Help ────────────────────────────────────────────────────────────────────────────── ISPF Primary Option Menu Option ===> 0 1 2 3 4 5 6 7 8 9 10 11 L
Settings View Edit Utilities Foreground Batch Command Dialog Test SDSF IBM Products SCLM Workplace LM Facility
Terminal and user parameters Display source data or listings Create or change source data Perform utility functions Interactive language processing Submit job for language processing Enter TSO or Workstation commands Perform dialog testing System Display and Search Facility IBM program development products SW Configuration Library Manager ISPF Object/Action Workplace Library administrator functions
< Su 7 14 21 28
Calendar March 2004 Mo Tu We Th Fr 1 2 3 4 5 8 9 10 11 12 15 16 17 18 19 22 23 24 25 26 29 30 31
> Sa 6 13 20 27
Time . . . . : 03:54 Day of year. : 063
Enter X to Terminate using log/list defaults F1=Help F10=Actions F17=Rfind F23=Right
F2=Split F3=Exit F12=Cretriev F13=Help F18=Rchange F19=Up F24=Cretriev
F7=Backward F14=Split F20=Down
F8=Down F15=End F21=Swap
F9=Swap F16=Return F22=Left
4.8 The program function keys of ISPF | 61
4.8.3 Utilize KEYLISTs for PF keys In this type of key assignment, the contents of the PF keys are stored in special KEYLIST members. A panel definition may contain the name of such a member so that the PF keys setting is loaded with the information stored in the key list members at the start of this panel. This means the PF keys contents can change from panel to panel. However, it also means that you never know what PF key assignment you have going on. Therefore, the use of PFSHOW ON is always necessary. This measure takes four lines of the available screen off. We now want to look how to turn on the use of KEYLIST and what the panels look like: We activate the KEYLISTs in a panel by typing in the Command Line KEYLIST ON and pressing ENTER. Thus, from now on the use of KEYLISTs turns on for this ISPF application. We use the command PFSHOW ON to switch on the permanent display of the PF key assignment. 1 Recommendation: If you work with KEYLISTs always and everywhere, you should enter the command KEYLIST ON in the ISPF primary option menu. If you work without KEYLISTs, then enter KEYLIST OFF.
4.8.4 Display the PF key assignment in a KEYLIST Let us now see on the name of the KEYLIST from which definitions the PF keys are loaded when the current panel calls up. To do so, type the command keylist in the command line and press ENTER. A POP-UP Panel will appear where we scroll down for so long until a line with the text *** Currently active keylist *** appears. The first word in this line denotes the current KEYLIST. We see this in the following display:
62 | 4 Customize ISPF
Screen 4.12: Display the current KEYLIST Menu Utilities Compilers Options Status Help ─ ┌─────────────────────────── Keylist Utility ───────────────────────────┐ │ File View │ O │ ──────────────────────────────────────────────────────────────────── │ │ Keylist Utility for ISR Row 1 to 10 of 15 │ 0 │ Command ===> Scroll ===> CSR │ 1 │ │ 2 │ Actions: N=New E=Edit V=View D=Delete /=None │ 3 │ │ 4 │ Keylist Type │ 5 │ ISRHELP SHARED │ 6 │ ISRHLP2 SHARED │ 7 │ ISRNAB SHARED │ 8 │ ISRNSAB SHARED │ 9 │ ISRREFL SHARED │ 1 │ ISRREFO SHARED │ 1 │ ISRSAB PRIVATE *** Currently active keylist *** │ L │ ISRSLAPP SHARED │ P │ ISRSNAB PRIVATE │ U │ ISRSPBC PRIVATE │ │ F1=Help F2=Split F3=Exit F7=Backward F8=Down │ │ F9=Swap F10=Actions F12=Cretriev F13=Help F14=Split │ E │ F15=End F16=Return F17=Rfind F18=Rchange F19=Up │ │ F20=Down F21=Swap F22=Left F23=Right F24=Cretriev │ └───────────────────────────────────────────────────────────────────────┘ F1=Help F10=Actions F17=Rfind
F2=Split F3=Exit F12=Cretriev F13=Help F18=Rchange F19=Up
F7=Backward F8=Down F14=Split F15=End F20=Down F21=Swap
─
> a 6 3 0 7
4 3
F9=Swap F16=Return F22=Left
We now see that the KEYLIST ISRSAB is active, which means that the PF key commands defined in this key list are when we press one by this member set PF keys executed. To display and edit the contents of key list ISRSAB now, position the cursor before this name, there enter an e (for edit) and press ENTER. Further down a key list edit panel appears. The columns have the following meaning: Definition Here the command is defined which executes when pressing the appropriate PF key. Format This option sets the display format of the dedicated PF key. Here the original description of this definition from the ISPF help panel: Type LONG to indicate that you want this key label to display only when the user requests the long form of the function key area. Long is the default. Type SHORT to indicate that you want this key label to display when the user requests either the short or the long form of the function key area. Type NO to indicate that the key label should never be in the function key area displayed.
4.8 The program function keys of ISPF | 63
Label This value is for the dedicated key displayed when the PF key setting display is active. Screen 4.13: The KEYLIST edit panel ────────────────────────────── Keylist Utility ─────────────────────── File ─────────────────────────────────────────────────────────────────────── PRIVATE ISR Keylist ISRSAB Change Row 1 to 12 of 24 Command ===> Scroll ===> CSR Make changes and then select File action bar. Keylist Help Panel Name . . . ISRSABH Key F1 . F2 . F3 . F4 . F5 . F6 . F7 . F8 . F9 . F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
Definition HELP SPLIT EXIT
Format SHORT LONG SHORT
Label Help Split Exit
BACKWARD down SWAP ACTIONS
LONG SHORT LONG SHORT
Backward Down Swap Actions
CRETRIEV HELP SPLIT END RETURN RFIND RCHANGE UP DOWN SWAP LEFT RIGHT CRETRIEV
SHORT SHORT LONG SHORT SHORT SHORT SHORT LONG LONG LONG SHORT SHORT SHORT
Cretriev Help Split End Return Rfind Rchange Up Down Swap Left Right Cretriev
Here we can now make changes to the PF key assignments and save the assignment.
4.8.5 PF keys use without using KEYLIST If you want to prove PF keys with the old method, then you have to switch off the use of key lists by typing in the command line of an ISPF panel concerned the ISPF application the KEYLIST OFF command and press ENTER. By entering KEYS and ENTER in the command line the current assignment of the PF keys will be displayed. You can then change the PF key assignment here directly and set by pressing the PF3. The next figure shows the PF key assignment for my ISPF Application ISF, so for the SDSF:
64 | 4 Customize ISPF
Screen 4.14: My PF key assignment in SDSF ISPOPT3E Command ===>
PF Key Definitions and Labels - Primary Keys
Number of PF Keys . . . 24 Enter "/" to select . . / PF1 . PF2 . PF3 . PF4 . PF5 . PF6 . PF7 . PF8 . PF9 . PF10 PF11 PF12 PF13 PF14 PF15 PF16 PF17 PF18 PF19 PF20 PF21 PF22 PF23 PF24 PF1 PF4 PF7 PF10 PF13 PF16 PF19 PF22
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
Terminal type (Enable EURO sign)
. . 3278A
HELP START END RETURN RFIND RCHANGE UP DOWN SWAP NEXT LEFT RIGHT CRETRIEVE HELP SWAP LIST END RETURN TSO %SYSID RVHANGE UP DOWN #SPLJ #EDMEM RIGHT TSO %SCURSOR
label label label label label label label label
. . . . . . . .
. . . . . . . .
PF2 PF5 PF8 PF11 PF14 PF17 PF20 PF23
label label label label label label label label
. . . . . . . .
. . . . . . . .
PF3 PF6 PF9 PF12 PF15 PF18 PF21 PF24
label label label label label label label label
. . . .
. . . .
. . . . . .
Press ENTER key to display alternate keys. Enter END command to exit.
3 Note: This key setting will performed when you use the REXX program SPROFVAR of the SMART ISPF utilities to install the ISPF variables that the SMART utilities need to run correctly. Of course, you can change the program so that your own KEY settings are set.
Mnemonics for PF keys using: –
–
The on and off switching for the display of the PF keys assignment on the screen using PFSHOW ON/OFF always applies to the entire ISPF. If the programmer in the IBM laboratory would bound this setting to the application that as in the KEYLIST, that would be nice. However, this is unfortunately not the case! The on and off setting for KEYLISTs using the KEYLIST ON / OFF command is only valid for the current ISPF application (ISP, ISF, ISR, etc.).
4.8 The program function keys of ISPF | 65
– –
– – – –
Individual panels can define their own KEYLISTs. The standard PF key setting is used when a panel has the KEYLIST ON set and calls another panel where no KEYLIST available is. This panel will then work as if working with KEYLIST off. In this case, the PF Key Definitions from the ZPF variables of the application are used. If in an ISPF application there are no KEYLISTS used, e.g., when KEYLIST OFF activated is, the ZPFxx variables from the profile of the ISPF user are used. Individual applications can work with their own PF Key Settings. Therefore, for example, use the SDSF always for own PF key assignment. The brochure ISPF User’s Guide Volume II contains the chapter Settings (Option 0) a detailed description of the PF key assignment technique.
5 ISPF command tables Before I can explain the functionality of the command table technology, I think it is important to explain the different methods of executing programs in a TSO/ISPF environment.
5.1 Execute programs in a TSOP/ISPF environment Any programs that are available in a z/OS system are executable in a TSO/ISPF environment. There are two types of programs: – Programs are executable directly in z/OS without any additional support. These are all compiled programs and z/OS utilities. – Programs needing the assistance of an interpreter are all programs written in REXX or CLIST. The latter are divided into two groups: – REXX and CLIST programs that only need the TSO interpreter environment. – REXX and CLIST programs that additionally need the ISPF environment. All programs are executable online and in batch. Programs written in REXX or CLIST need for an execution in batch, of course, the appropriate interpreter. When these programs use ISPF services, the ISPF environment must also be available. For means of explaining the entire complex of program execution under a number of conditions, I have developed two REXX programs. Both are very small. They take a parameter and print its content. – TEST1: This program only needs the TSO environment. – TEST2: This program additionally needs the ISPF environment. Here the source code lists of both programs: Program 5.1: TEST1: Simple program using the TSO environment only /* DOC: TEST1 REXX MAIN * /* DOC: Needs only the TSO environment * /*-------------------------------------------------------------------* /* Franz Lanz 3 Apr 2015 * /********************************************************************* arg text if text = "" then say "Required parameter is missing. Program exits!" else say "Entered parameter is: "text exit
68 | 5 ISPF command tables
Program 5.2: TEST2: Simple program using the ISPF environment /* DOC: TEST2 REXX MAIN */ /* DOC: Needs ISPF environment */ /*-------------------------------------------------------------------*/ /* Franz Lanz 3 Apr 2015 */ /*********************************************************************/ arg text if text = "" then zedlmsg =, "Required parameter is missing. Program exits!" else zedlmsg = "Entered parameter is: "text if sysvar("SYSENV") = "FORE" then "ISPEXEC SETMSG MSG(ISRZ001)" else say "Program TEST2 needs ISPF to run ONLINE. Program exits!" exit 3 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 ## test1 This is a text.
– – –
Type in the ISPF command line tso test1 This is a text. 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 ===> line test1 This is a text.
–
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: _ SLE
2 SELECT CMD(%SLE) REXX SLE
CALL THE LASTEDIT FUNCTION
5.1 Execute programs in a TSOP/ISPF environment | 69
I will not demonstrate the online execution of the above program here. This is so simple that I really do not have to show it.
5.1.2 Batch execution To execute a REXX program in a batch job is not as easy as in the online environment because an appropriate JCL program is required which is to the batch system environment for execution submitted. This is first a difficult matter because you have to know how this JCL needs to be to work properly constructed. Having had this problem many times using TSO/ISPF, I developed two edit macros, which relieve me of all this work. These two edit macros are: #TSOB to submit and execute REXX programs which only need the TSO environment. #ISPFB to submit and execute REXX programs which additionally need the ISPF environment. If a program requires input parameters, these can be when calling entered. I have the two above-mentioned programs TEST1 and TEST2 each executed with the correct edit macro. I have added the resulted JCL programs below. JCL 5.1: JCL to execute TEST1 in a native TSO environment //USER001U JOB (UNIVER),'#TSOB: TEST1',CLASS=A, // NOTIFY=USER001,MSGLEVEL=(0,0),MSGCLASS=H, // COND=(0,LT),TIME=100,USER=USER001 //******************************************************************** //* JOBPARM S=TESTMVS //TSOBATCH EXEC PGM=IKJEFT01,REGION=80M,DYNAMNBR=99, // ACCT=(UNIVER),TIME=100 //STEPLIB DD DISP=SHR,DSN=ALLUSR.LOAD //SYSEXEC DD DISP=SHR,DSN=USER001.TEMP.SUBMIT // DD DISP=SHR,DSN=USER001.REXX // DD DISP=SHR,DSN=ALLUSR.REXX //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUDUMP DD DUMMY //SYSOUT DD SYSOUT=* //SYSTSIN DD * PROFILE NOPREFIX NOMSGID /* Executed REXX Program: USER001.TEMP.SUBMIT(TEST1) %TEST1 param1 param2
70 | 5 ISPF command tables
When running this program, the following list is printed. It can be found in SDSF. ********************* TOP OF DATA ***************************** READY PROFILE NOPREFIX NOMSGID READY /* Executed REXX Program: USER001.TEMP.SUBMIT(TEST1) READY %TEST1 param1 parama2 Entered parameter is: PARAM1 PARAM2 READY END ********************* BOTTOM OF DATA **************************
JCL 5.2: JCL to execute TEST2 in a TSO/ISPF environment //USER001R JOB (UNIVER),'#ISPFB: TEST2',CLASS=A, // NOTIFY=USER001,MSGLEVEL=(1,1),MSGCLASS=H, // COND=(0,LT),TIME=100,USER=USER001 //* JOBPARM S=TESTMVS //ISPF EXEC PGM=IKJEFT01,REGION=80M,DYNAMNBR=99, // ACCT=(UNIVER),TIME=100 //STEPLIB DD DISP=SHR,DSN=USER001.LOAD //SYSEXEC DD DISP=SHR,DSN=USER001.TEMP.SUBMIT // DD DISP=SHR,DSN=USER001.BOOK1.REXX // DD DISP=SHR,DSN=USER001.REXX // DD DISP=SHR,DSN=ISP.SISPEXEC // DD DISP=SHR,DSN=ISF.SISFEXEC //ISPSLIB DD DISP=SHR,DSN=CENTER.ISPSLIB // DD DISP=SHR,DSN=ISP.SISPSENU // DD DISP=SHR,DSN=ISP.SISPSLIB // DD DISP=SHR,DSN=ISF.SISFSLIB //ISPMLIB DD DISP=SHR,DSN=USER001.MSGS // DD DISP=SHR,DSN=ISP.SISPMENU // DD DISP=SHR,DSN=ISF.SISFMLIB //ISPPLIB DD DISP=SHR,DSN=USER001.BOOK.PANELS // DD DISP=SHR,DSN=USER001.PANELS // DD DISP=SHR,DSN=ISP.SISPPENU // DD DISP=SHR,DSN=ISF.SISFPLIB //ISPPROF DD SPACE=(CYL,(3,1,20)),UNIT=VIO, // DCB=(LRECL=080,BLKSIZE=3120,RECFM=FB,DSORG=PO) //ISPTLIB DD DISP=(SHR,PASS),DSN=*.ISPPROF,VOL=REF=*.ISPPROF // DD DISP=SHR,DSN=USER001.ISPPROF // DD DISP=SHR,DSN=ISP.SISPTENU // DD DISP=SHR,DSN=ISF.SISFTLIB //ISPLOG DD SYSOUT=*,DCB=(LRECL=121,RECFM=FB) //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUDUMP DD DUMMY //SYSTSIN DD * PROFILE NOPREFIX NOMSGID /* Executed REXX Program: USER001.TEMP.SUBMIT(TEST2) ISPSTART CMD(%TEST2 param1 param2) NEWAPPL(ISR)
5.2 Introduction to the ISPF command technology | 71
When running this program, the following list is printed. It can be in SDSF found. ******************************* TOP OF DATA **************************** READY PROFILE NOPREFIX NOMSGID READY /* Executed REXX Program: USER001.TEMP.SUBMIT(TEST2) READY ISPSTART CMD(%TEST2 param1 param2) NEWAPPL(ISR) Program TEST2 needs ISPF to run ONLINE. Program exits! USER001.USER001O.JOB08672.D0000102.? was preallocated (no free was done). READY END ****************************** BOTTOM OF DATA **************************
I think you now have the necessary knowledge to understand the following chapters.
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. 1 Tip: If you are not yet familiar with the ISPF table technique, I recommend that you first look into the chapter Tables – Create and edit in volume 2 of my book SMART ISPF Application Programming.
As you may have already noticed, almost every ISPF screen has an upper left line that begins with Command ==> or option ==>. The line in which this input option is available, I will refer to in the following text as a Command Line. In this command line, you can always enter one or more ISPF commands. If you want to have several ISPF commands executed at once, then you have to separate the individual commands by the ISPF command delimiter character. Behind Command ==> you can always enter two different types of commands: 1. ISPF Primary Commands: The commands are like a TSO, KEYLIST, KEYS, DSLIST, = 3.4, ISPFWORK etc. The brochure z/OS ISPF User's Guide Volume I contains a description of the ISPF Primary Commands. You will also find these commands in the ISPF help system. 2. User Commands: The ISPF user has created these commands. Which user commands do you now have available?
72 | 5 ISPF command tables
You can easily determine: Enter the ISPF menu 3.9 and you receive the following POP UP Panel: Screen 5.1: Command table utility ┌─────────────────────────────── Commands ────────────────────────────────┐ │ Command Table Utility │ │ Command ===> │ │ │ │ Specifications Command search order │ │ Application ID . . ISR Application table : ISR │ │ Enter "/" to select option User table . . . . : │ │ Show description field Site table . . . . : │ │ System table . . . : ISP │ │ │ │ If no application ID is specified, the current application ID will be │ │ used. The name of the command table to be processed is formed by │ │ prefixing the application id to the string 'CMDS'. For example: │ │ Application ID . . TST results in a command table name of 'TSTCMDS'. │ └─────────────────────────────────────────────────────────────────────────┘
This panel covers two purposes simultaneously: 1. It serves as an entry screen for displaying or modifying individual command tables. Behind Application ID is the name of an application ID entered whose command table is displayed. Therefore, if we no press ENTER in the above panel, the command table ISRCMDS appears. 2. It displays in the Command Search Order column, which command table levels are used and the order in which the command tables are searched (top to bottom). As we see, we can define user commands in four different levels (and thus in four different command tables). These levels are: 1. 3. 4. 5.
Application used User NOT used Site NOT used System used
We see that only the application level and the system level have a table prefix entry, and thus only these two levels are usable. It becomes obvious from the statement in the screen above that the commands in the two tables ISRCMDS and ISPCMDS are now used.
5.2 Introduction to the ISPF command technology | 73
5.2.1 The member ISPCONF I already mentioned several times in this book the fact that the ISPF system programmer department customizes some definitions and options within your ISPF. Of course, there must be a location defining these options. It is a member named ISPCONF. This member contains these options. It is located in a system library and maintained by the ISPF system programmers department. I recommend asking your ISPF system programmers for this member and having a look at it. Most entries are so meaningful that you can easily grasp their meaning. Here is an excerpt from the Member ISPCONF that contains some interesting values: MAXIMUM_NUMBER_OF_SPLIT_SCREENS APPLID_FOR_USER_COMMAND_TABLE APPLID_FOR_SITE_COMMAND_TABLE SITE_COMMAND_TABLE_SEARCH_ORDER
= = = =
8 NONE NONE BEFORE
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 3 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.
74 | 5 ISPF command tables
Depending on this setting, the search order will be: Search Order = BEFORE 1. Application 2. USER (1 to 3) 3. SITE (1 to 3) 4. System
Search Order = AFTER 1. Application 2. USER (1 to 3) 3. System 4. SITE (1 to 3)
5.2.2 Datasets for command tables Where are the command tables located? We have already seen in the establishment of ISPF that some files must be present when starting ISPF. One of these files is the file with the DD name ISPTLIB. When you start an application, ISPF searches in this data set the command table member that belongs to this application. What are the names of the command table members assembled? The name of the command table member is formed using the first three characters from the name of the application ID expanded with the string CMDS. Looking at the panel of the command table utility above, we see the entries ISR and then ISP in the command search order column. Thus, we assume to find in the ISPTLIB chain two members with the name ISRCMDS and ISPCMDS. Let us now check whether these members exist: We use the program DDLIST and search for the members ISRCMDS and ISPCMDS one after the other. I have conducted these searches in my ISPF. After completing these two searches, following display appears: Current Data Set Allocation Command ===> Message Member: ISPCMDS
Member: ISPCMDS Member: ISRCMDS Member: ISPCMDS
Act DDname > ISPTABL > ISPTLIB > > > > > >
Member was found Scroll ===> CSR Data Set Name Actions: B E V M F C I Q LANZT.USER.TABL.LPRT DBT1.DSQTLIBE LANZT.USER.TABL.LPRT SYST1.TSO.ISPTLIB SYST1.JCLPLUS.ISPTLIB ISP.SISPTENU ISF.SISFTLIB
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 set
5.2 Introduction to the ISPF command technology | 75
LANZT.USER.TABL.LPRT allocated with the DD-name ISPTABL as well as in the data set ISP.SISPTENU allocated with the DD-name ISPTLIB. This results in the following situation: – Since the member ISRCMDS is only in the ISPTLIB chain, it means that this ISPF user indeed uses the commands defined in this member. The member ISRCMDS is not in the data set allocated under the DD-name ISPTABL. Therefore, the user has never changed this member. Otherwise, the member would also be in the file associated with ISPTABL because we have already learned in the discussion of concatenated data sets that we cannot write in a chain of files. – Since the member ISPCMDS is to find both under the DD name ISPTABL and under the DD name ISPTLIB, it is clear that the ISPF user has changed this member and wrote it back. However, why did the ISPF user put his own commands just in the Member ISPCMDS and not in the Member ISRCMDS? The following text answers this question: – The commands in ISRCMDS are only available as long as the application ISR active is because this command table is an application command table. Once a new application such as SDSF opens with the application ID ISF, these commands are available in ISFCMDS and not in the table ISRCMDS. – The Table ISPCMDS, as seen above, is on the ISPF system level. This means that the commands are always available regardless of which application opens. – Of course you can prove the Table ISRCMDS with own commands. However, you have to remember that these commands always disappear when you activate another ISPF application. Let us now look at the member list of ISPTABL library: Screen 5.2: Member list of ISPTABL library Menu Functions Confirm Utilities Help ─────────────────────────────────────────────────────────────────── Vol T1T106 LIBRARY LANZT.USER.TABL.LPRT Row 00001 of 00010 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID _________ $DOC 13 2000/04/14 2000/04/14 14:41:56 LANZT _________ $IMLPRT _________ $SICHREC 7 2000/04/14 2000/04/14 14:43:29 LANZT _________ COMPS2 8 2003/01/29 2003/01/29 13:57:06 LANZT _________ DGT1VIEW 3 2003/01/29 2003/01/29 13:57:07 LANZT _________ DGT2VIEW 2 2003/01/29 2003/01/29 13:57:07 LANZT _________ ISPCMDS _________ ISPERROR 5 2003/01/29 2003/01/29 13:57:07 LANZT _________ ISRPLIST 128 2003/01/29 2003/01/29 13:57:07 LANZT _________ QWRFCMDS **End**
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
76 | 5 ISPF command tables
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. 3 Remark: In the list shown above, you can see that no member statistics are available for the members ISPCMDS and QWRFCMDS. The reason is that the ISPF system while saving command members no statistics writes.
5.2.3 Creating your own ISPF commands Let us now again turn to the panel of the command table utility using ISPF selection 3.9. Screen 5.3: The command table utility panel Command Table Utility Command ===> Specifications Application ID . . ISP Enter "/" to select option Show description field
Command search order Application table : ISR User table . . . . : Site table . . . . : System table . . . : ISP
If no application ID is specified, the current application ID will be used. The name of the command table to be processed is formed by prefixing the application id to the string 'CMDS'. For example: Application ID . . TST results in a command table name of 'TSTCMDS'.
With the above screen displayed, we simply press ENTER to see what happens: We then get the following screen, which contains the entries to the current ISP command table: Screen 5.4: Contents of the ISP command table Menu Utilities Help ────────────────────────────────────────────────────────────────────────────── Display ISPCMDS Row 1 to 34 of 116 Command ===> Scroll ===> CSR The command table is currently open, it cannot be modified. Use the view(V) row command to see an entire entry. Verb T Action +A 0 SELECT PGM(ISRDSLST) PARM(DSL ADMIN) SUSPEND +AV 0 SELECT PGM(ISRDSLST) PARM(DSL AVLIBS) SUSPEND +CATT 0 SELECT PGM(ISRDSLST) PARM(DSL CATT) SUSPEND +CA72 0 SELECT PGM(ISRDSLST) PARM(DSL CA72) SUSPEND +CEXEC 2 SELECT PGM(ISRDSLST) PARM(DSL CEXEC) SUSPEND +COB 0 SELECT PGM(ISRDSLST) PARM(DSL COB) SUSPEND +COMP 0 SELECT PGM(ISRDSLST) PARM(DSL COMPJOBS) SUSPEND ..... . ..............................................................
SCRNAME($A) SCRNAME($AV) SCRNAME($CAT SCRNAME($CA7 SCRNAME($CEX SCRNAME($COB SCRNAME($COM
5.2 Introduction to the ISPF command technology | 77
If we look at this panel, the shaded text is conspicuous. This text tells us that it will not be so easy to create own ISPF commands because we cannot directly modify the contents of our table ISPCMDS and then save the changes. We try it again now with the table for the application ISF (SDSF), being certain that at this time the table ISFCMDS of our SDSF is not open in any other ISPF logical screen. Screen 5.5: SDSF command table update File Menu Utilities Help ──────────────────────────────────────────────────────────────────────── Update ISFCMDS Row 1 to 16 of 59 Command ===> Scroll ===> CSR Insert (I), delete (D), repeat (R) and edit (E) command entries. Enter END command to save changes or CANCEL to end without saving. Verb
T
ABEND
0
ACPBRL
0
ACPEDI
0
ACPEDO
0
ACPPRO
0
ACREDI
0
ACREDP
0
Action Description PASSTHRU Abnormally terminate SDSF PASSTHRU ISFACP browse listing PASSTHRU ISFACP edit input PASSTHRU ISFACP edit output PASSTHRU ISFACP profile PASSTHRU ISFACR edit source PASSTHRU ISFACR edit profile descriptions
Here we are now getting a very different picture than for the table ISPCMDS. The reason is that we currently do not have the application SDSF open anywhere in this ISPF. Therefore, the table ISFCMDS is available for update. Thus, you could now enter your own commands or change the existing one. However, they were available only in the SDSF application and the benefit for our ultimate goal, namely own commands available under the application ID ISP (and thus for all levels of ISPF), is unfortunately nothing. How can we change the ISP command table ISPCMDS? If you can only use the standard facilities of ISPF, perform the following steps: 1. First, look whether in your file that is associated with ISPTABL the member ISPCMDS is already present there. If not, then look using the DDLIST utility in the file chain of ISPTLIB and then copy the member ISPCMDS into the data set that is associated with ISPTABL. If you do not have ISPTABL allocated, you cannot change any command tables!
78 | 5 ISPF command tables
2.
3. 4. 5.
6. 7.
8.
Next, create via menu 3.4/M in the ISPTABL data set (which you can also call directly into the DDLIST display with the input m) a copy of ISPCMDS named XXXCMDS. Then go to the ISPF menu 3.9, enter XXX as an application ID and press ENTER. Now the contents of the current ISPCMDS table appear (the contents you copied to the member XXXCMDS) with the ability to make updates. Perform your intended updates and exit the panel with the PF3 key. The member XXXCMDS is now in your ISPTABL data set and has the content you would like to have inside the member ISPCMDS. Copy the member XXXCMDS as member ISPCMDS in the ISPTABL data set using the REPLACE option. Now leave the ISPF and start using the TSO command ISPF again. If the TSO READY prompt does not appear immediately when you leave ISPF perform a new TSO+ISPF logon. In the future, you can always make changes in the XXXCMDS member and then copy this member to ISPCMDS. Remember: The new or changed commands are not available until you perform a new start of ISPF or a new LOGON.
Your originally created commands in the members XXXCMDS are now under the Application ID ISP and thus throughout ISPF available. Although this is a lot of work, it is worth doing!
5.3 Program SICMD It would be nice if there were a tool that allows you to always create ISPF commands to be done regardless of whether the concerning application is currently active or not. I developed such a tool a long time ago for my own use. This tool is available under the name SICMD in the SMART ISPF utilities as REXX procedure. The description of this program is in the general descriptions of SMART ISPF utilities. 3 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!
5.3 Program SICMD | 79
Screen 5.6: SICMD working panel SICMD --------------- Alter ISPF Command Tables ----------- Row 1 of 111 Command = Scroll = CSR Dynpan = YES SysPlex = TESTXYZ Sysid = TESTXYZ Node = XYZ19 ISPF Command Table Member = ISPCMDS Active APPLID = ISP Found in DSN = XYZUSER.ISPPROF is saved to = XYZUSER.ISPPROF C >> S=Display, R=Repeat, I=Insert, U=Update, D=Delete C Verb T Command and Description -------------------------------------------------------------------------_ ++ 0 SELECT PGM(ISRDSLST) PARM(PL2) SUSPEND SCRNAME(DSLISTS) DSLIST STANDARD PERSONNAL DATA SET OPEN _ +++ 0 ALIAS APPEND DSLIST ADMIN CALL APPEND PANEL FOR DSLIST _ +A 0 SELECT PGM(ISRDSLST) PARM(DSL ADMIN) SUSPEND SCRNAME($A) DSLIST ADMIN ADMIN DATASETS
5.3.1 Edit ISPF commands using SICMD You can perform the following actions in this panel by entering one of the action characters in column C: S Display the definitions for this command. R Repeat this command. I Insert a new command. U Update the definitions of this command. D Delete a command from the command table.
5.3.1.1 The panel ISPUCMX The command table utility panel ISPUCMX appears when you enter one of the action characters S, R, I or U in column C on panel SICMD. Depending on the entered action character, the following happens: S Panel ISPUCMX displays the definitions for this command. No changes are saved if you leave this panel by entering ENTER or pressing PF3. R Create a new command by copying the definitions of the current command. You should change the copied definitions to define the new one. I Panel ISPUCMX appears containing empty input fields. U Panel ISPUCMX appears containing the current command definitions. You should change these values to define a new command before you leave the panel by ENTER or PF3. The following display shows the panel ISPUCMX called to update the ISPF command ++. I use this command for the quick call of my mostly used Personal Data Set Lists.
80 | 5 ISPF command tables
Screen 5.7: Panel ISPUCMX – change ISPF commands *--------------------------- Command Table Utility ---------------------------* | ISPUCMX Extended Command Entry | | Command ===> | | | | Make changes to the command and select Update to update the entry or | | Cancel to ignore the changes. | | | | Verb . . . ++ | | Trunc . . . 0 | | Action . . SELECT PGM(ISRDSLST) PARM(PL2) SUSPEND SCRNAME(DSLI | | STS) | | | | | | Description DSLIST STANDARD PERSONNAL DATA SET OPEN | | | | | | Enter / to select option | | Allow mixed-case in Action field | | | | Update Cancel | | | | | *-----------------------------------------------------------------------------*
This is a standard panel of ISPF designed to administer ISPF command tables. In the panel ISPUCMX, each input field is sensitive for HELP. If you put the cursor in one of those fields and press PF1, you will get dedicated help information concerning this field.
5.3.1.2 Description of input fields for panel ISPUCMX Each entry for an ISPF command consists of four elements: 1. Verb The command name: Up to 8 characters long. This name is mandatory. 2. Trunc Indication of a minimum length of the entered command. 3. Action The actual statement what ISPF should execute (max. 240 characters). 4. Description A description text (max. 80 characters). Example: _ ++++++ 2 SELECT PGM(ISRDSLST) PARM(DSL &ZPARM) SUSPEND SCRNAME(&ZPARM) DSLIST STANDARD DISPLAY ALL DSLISTS 3 Remark: This command definition installs an ISPF command to display DSLISTs with the ability to add a DSLIST name as a parameter together with the command. If the command call contains a DSLIST name, this DSLIST appears only when available. An error message appears if there is no DSLIST of the entered name found. When you enter the command without a parameter, ISPF displays all known DSLISTs.
5.3 Program SICMD | 81
Example: The entering of ++hugo in the ISPF command line displays the DSLIST HUGO. As we see in the command definition above, a minimum abbreviation of two characters is necessary to execute this command. Therefore, it is sufficient to enter the two characters ++ to execute the command. In this case, if we display the SWAP LIST panel, the name HUGO appears in the NAME column in the SWAP LIST panel. 4 Important warning: You must make sure that you do not define by mistake a command name, which is the same as an original ISPF command. If you do that, the original ISPF command will not found and therefore it cannot executed because the ISPF searches the command tables first when a command comes in.
5.3.2 Display the list of all standard ISPF commands As I mentioned above, you should avoid designing an original ISPF command as your own command. Always when a new release of ISPF appears, new commands can possible be added. Therefore, you should be able to get a list of all current available standard ISPF commands. In an earlier chapter, I explained the display of all ISPF commands. My tip you here again is to get a list of all commands: 1. In the ISPF Primary Option Menu press PF1 to call the ISPF help system. 2. Enter the following command: i;i;i8. A panel displaying all current available standard ISPF commands appears. 4 Attention: If the above command does not lead to the desired result, it may be that, in the new ISPF release, number I8 has changed. In this case, perform the above command chain systematically and see how the new way to display the command list is.
5.3.3 Define the call of SICMD as command Of course, we can define the call for the REXX procedure SICMD as ISPF command. This entry must look like this: SICMD_ 3
SELECT CMD(%SICMD &ZPARM) SUSPEND SCRNAME(SICMD) REXX SICMD EDIT THE ISPF COMMAND TABLE
82 | 5 ISPF command tables
As you can see, the call to the procedure SICMD is expandable by adding a parameter represented by the ISPF system variable &ZPARM. This parameter may be an APPLID. If there is no parameter specified, then the program sets the APPLID automatically to ISP.
5.3.4 Generating a list of commands With the program SICMD, you can generate a list of commands from the currently edited ISPF command table. Simply enter in the command line the SAVELIST command and press ENTER. This command creates a file that contains the commands contained in the command table, each in a record of a sequential data set. This file can then be to the PC transferred, edited with a word processor and printed. The data set name of the output file will as follows composed: userid.tablename.LIST Two examples of the generated files: LANZT ISFCMDS.LIST LANZT.ISPCMDS.LIST
Command list of the application ISF (SDSF) Command list of the application ISP.
Example of a SAVELIST call: If you enter SAVELIST and press ENTER, SICMD creates the output data set and the name appears in a small frame at the bottom of the screen.
5.3 Program SICMD | 83
Screen 5.8: Display a list of all ISPF user commands SICMD ------------------ Alter ISPF Command Tables Command = SAVELIST ISPF Command Table Member = ISPCMDS Found in DSN = LANZT.USER.TABL.LPRT is saved to = LANZT.USER.TABL.LPRT
----- Row 1 to 8 of 123 Scroll = CSR Active APPLID = ISR
Cmd >> R=Repeat, I=Insert, D=Delete Cmd Description -------------------------------------------------------------------------++______ 0 SELECT PGM(ISRDSLST) PARM(PL2) SUSPEND SCRNAME(DSLISTS) DSLIST STANDARD PERSONNAL DATA SET OPEN +++_____ 0 ALIAS APPEND DSLIST ADMIN CALL APPEND PANEL FOR DSLIST +A______ 0 SELECT PGM(ISRDSLST) PARM(DSL ADMIN) SUSPEND SCRNAME($A) DSLIST ADMIN ADMIN DATA SETS +AV_____ 0 SELECT PGM(ISRDSLST) PARM(DSL AVLIBS) SUSPEND SCRNAME($AV) DSLIST AVLIBS ALL AV DATA SETS +CATT___ 0 SELECT PGM(ISRDSLST) PARM(DSL CATT) SUSPEND SCRNAME($CATT) DSLIST CATT VINT JOB DATA SETS FOR TEST +CA72___ 0 SELECT PGM(ISRDSLST) PARM(DSL CA72) SUSPEND SCRNAME($CA72) DSLIST CA72 VINT JOB DATA SETS FOR PROD +CEXEC__ 2 SELECT PGM(ISRDSLST) PARM(DSL CEXEC) SUSPEND SCRNAME($CEXEC) DSLIST CEXEC COMPILED REXX PROCEDURES ┌────────────────────────────────────────────────────────────────────────┐ │ The ISPF command table ISPCMDS is written to file 'LANZT.ISPCMDS.LIST' │ └────────────────────────────────────────────────────────────────────────┘
6 DSLIST – Data set lists Here some chapters begin dealing with the handling of files in ISPF. All chapters above act on the benefits you can gain by skillful use of the possibilities available in ISPF. Make sure you use the opportunity to work with DSLISTs. The DSLISTs are one of the most powerful tools to speed up and optimize your work in ISPF. Fundamentals to the DSLISTs: The main using of ISPF is working with data sets. Therefore, the first action that many ISPF users start when they have completed the logon process, and have not read this chapter in this book is the selecting of menu 3.4 in the primary option menu. This means nothing else than they go straightway to the DSLIST Utility to display the DSNs with which they want to start their work. Because the ISPF 3.4 screen represents exactly the DSLIST utility panel. I have heard of people who are not very familiar with ISPF that they do not know anything except the ISPF menu 3.4. In addition, you might get the impression that behind this part of the ISPF a lot of power must exist. As you will read later in this chapter, DSLISTs are for – Creating data set lists in many ways. – Use them to combine the different combinations of data set names and to display them for processing. – Call them from all panels in ISPF. The maximum benefit from the DSLISTs is only possible when you can call them directly by using an ISPF command. In the above chapter, you learned the definition of ISPF commands. For example, when I enter ++, all DSLISTs appear that I have already created.
86 | 6 DSLIST – Data set lists
6.1 The DSLIST panel Once we have the 3.4 command entered in the primary option menu of ISPF and pressed ENTER, the following panel appears: Screen 6.1: The data set list utility panel Menu RefList RefMode Utilities Help ───────────────────────────────────────────────────────────────────────────── Data Set List Utility Option ===> blank Display data set list V Display VTOC information
P Print data set list PV Print VTOC information
Enter one or both of the parameters below: Dsname Level . . . PROX.*.REXX Volume serial . . Data set list options Initial View . . . 1
1. 2. 3. 4.
Volume Space Attrib Total
Enter "/" to select option / Confirm Data Set Delete / Confirm Member Delete / Include Additional Qualifiers
When the data set list is displayed, enter either: "/" on the data set list command field for the command prompt pop-up, an ISPF line command, the name of a TSO command, CLIST, or REXX exec, or "=" to execute the previous command.
This panel offers some important input fields and selectable options that we want to look at in the sequence from top to bottom now:
6.2 The possibilities of the action bar for DSLISTs Here we consider only the point RefList precisely: Under RefList, we find one of the most important tools of the entire DSLIST system or even the entire ISPF. This option represents one of the ways, to create and manage Personal Data Set Lists. Another way to manage DSLISTs is later in this chapter explained. We move the cursor in the text RefList and press ENTER. Then the following screen appears with which we can call the edit function for DSLISTs:
6.2 The possibilities of the action bar for DSLISTs | 87
Screen 6.2: RefList pull down panel Menu RefList RefMode Utilities Help ───── ┌────────────────────────────────────────────────┐ │ 2 1. Current Personal Data Set List (CEXEC) │ Optio │ 2. List of Personal Data Set Lists │ └────────────────────────────────────────────────┘ blank Display data set list P Print data set list V Display VTOC information PV Print VTOC information Enter one or both of the parameters below: Dsname Level . . . LANZT.** Volume serial . . Data set list options Initial View 1 1. Volume 2. Space 3. Attrib 4. Total
Enter "/" to select option / Confirm Data Set Delete / Confirm Member Delete / Include Additional Qualifiers / Display Catalog Name / Display Total Tracks
When the data set list is displayed, enter either: "/" on the data set list command field for the command prompt pop-up, an ISPF line command, the name of a TSO command, CLIST, or REXX exec, or "=" to execute the previous command.
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 File View Options Help ───────────────────────────────────────────────────────────────────────── Active: CEXEC Personal Data Set Lists List 1 of 2 Command ===> Scroll ===> PAG Action: O=Open
_
_
_
A=Save As
D=Delete
E=Edit
L=DSLIST
Name Description Created Referenced REFLIST Last 30 referenced data sets 14/10/10 08:59 'ALLUSR.REXX(SICMD)' 'LANZUSR.ISRCMDS.LIST' 'ALLUSR.REXX' 'LANZUSR.ISPPROF' 'LANZUSR.REXX(TEST)' 'LANZUSR.REXX' STUTREXX Alle REXX der Studenten 08/10/22 14/10/10 08:38 'ess0*.rexx' ALLUSR 'ALLUSR.**'
ALLUSR.** Datasets
10/04/19
14/10/10 08:24
**End**
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 and
88 | 6 DSLIST – Data set lists
Options pull down menus. The above panel display appears with the following settings in the View pull down: Screen 6.4: Pull down menu for DSLIST View selection e
View Options Help *---------------------------* | 2 *. Standard View | | 2. Extended View | | 3. Sort by name | | 4. Sort by description | | 5. Sort by created | | 6. Sort by referenced | *---------------------------*
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:
Action: O=Open Name _ PROG _ REFLIST _ STUTREXX __ UNIXXX
A=Save As
D=Delete
E=Edit
L=DSLIST
Description Created DSN for programming 08/10/20 Last 30 referenced data sets All REXX for students 08/10/22 UNIXXX.** Datasets 10/04/19
Referenced 13/10/29 13:12 14/10/13 15:57 14/10/10 08:38 14/10/13 15:43
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: Action: O=Open _ _
_
A=Save As
D=Delete
E=Edit
L=DSLIST
Name Description Created NEWREXX New REXX Programs 11/02/03 'LANZUSR.new.**' PROG DSN for programming 08/10/20 rexx panels msgs ispprof jcl pli REFLIST Last 30 referenced data sets 'SYS1' 'ALLUSR.**' 'LANZUSR.ASM'
Referenced 14/10/13 15:44 13/10/29 13:12
14/10/13 15:57
6.3 The DSLIST panel fields | 89
The following selection in Options … w
Options Help *---------------------------------* | 1 1. Personal List Settings... | | 2. Browse shared lists... | *---------------------------------*
… leads to this selection panel: Screen 6.5: Personal List Settings panel *-------------------------------------------------------------------* | Personal List Settings | | | | General Options View Options | | Enter "/" to select option Data Set List View | | / Automatically update reference Lists 1 1. Volume | | / Auto-update DSLIST patterns 2. Space | | 3. Attrib | | Use selection immediately in VIEW 4. Total | | Use selection immediately in EDIT | | / Use selection immediately in DSLIST | | | | NRETRIEV verifies data set exists | | | | / Display catalog name in Total view | | / Display Total Tracks | | | | Press ENTER to save Personal List options. | | Press EXIT or CANCEL to exit options panel. | *------------------------------------------------------------------*
We will deal with this panel more detailed later when we discuss the creation and editing of personal data set lists.
6.3 The DSLIST panel fields The following descriptions refer to Screen 6.1: The data set list utility panel on page 86. First, I would like to explain the various fields of the Standard DSLIST panel that we reach using the selection 3.4 in the Primary Option Menu. Some entries we make here affect the display of DSLISTs generally. Some of these options change in other panels also.
90 | 6 DSLIST – Data set lists
The DSNAME level Here we can enter a mask that specifies which DSN the DSLIST Utility searches. The DSNs found by this search appear as DSLISTs. For designing of the DSN mask, you have many options. I want to show you some of these options: Before we can do that, we still have something very important to discuss! The display result depends very much on another options that can be set in DSLIST panel. Therefore, we must first look at the importance of the option Include Additional Qualifiers. This option is positioned in the section below the line Enter "/" to select option. – If we set the slash (/) before include additional qualifiers here, all DSNs resulting from the mask definition of all extensions appear on the display. – If we omit the slash, the DSNs having additional characters behind the mask do not appear. Because this affects all ads of DSLIST, this setting must fulfill your needs properly. After all, depending on how this option is set, you must make the selection masks accordingly in the DSLIST panel. I give you no recommendations for the use of the option Include Additional Qualifiers. You have to decide yourself what setting you like more after you have read the following remarks concerning the settings and benefits of DSLISTs. The following two examples will show you the effect of the Include Additional Qualifiers option: Example 1: Display a DSLIST with the Include Additional Qualifiers option when set to OFF using the mask PROX.*.REXX: Screen 6.6: DSLIST display when additional qualifiers option is OFF Menu Options View Utilities Compilers Help ────────────────────────────────────────────────────────────────────────────── DSLIST - Data Sets Matching PROX.*.REXX Row 1 of 2 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------PROX.LANZ.REXX D1D119 PROX.LOGON.REXX D1D135 ***************************** End of Data Set list ****************************
As you can see, in this case only the actual desired DSNs will displayed!
6.3 The DSLIST panel fields | 91
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 Menu Options View Utilities Compilers Help ────────────────────────────────────────────────────────────────────────────── DSLIST - Data Sets Matching PROX.*.REXX Row 1 of 6 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------PROX.LANZ.REXX D1D119 PROX.LANZ.REXX.LISTE.$REXP T1T101 PROX.LANZ.REXX.REXX D1D116 PROX.LOGON.REXX D1D135 PROX.LOGON.REXX.LISTE.#IMACROA T1W121 PROX.LOGON.REXX.REXX D1D104 ***************************** End of Data Set list ****************************
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. 3 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 (%).
92 | 6 DSLIST – Data set lists
– –
One asterisk acts as a wildcard character. This means that from this point one or more characters can occur within only one qualifier. Two asterisks consecutively cause displaying from here DSNs including ALL qualifiers and characters.
Some examples will illustrate this effect: I only enter my user ID LANZT and get the following display: DSLIST - Data Sets Matching LANZT Command ===>
Row 1 of 1 Scroll ===> CSR
Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------LANZT *ALIAS ***************************** End of Data Set list ****************************
As you can see, only the Alias entry appears. See also chapter 2.1.3.1 The high level qualifier (HLQ) on page 18. Then I enter the following mask: LANZT.* DSLIST - Data Sets Matching LANZT.* Command ===>
Row 1 of 1 Scroll ===> CSR
Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------LANZT.SPILL T1W111 ***************************** End of Data Set list ****************************
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. DSLIST - Data Sets Matching LANZT.** Command ===>
Row 1 of 25 Scroll ===> CSR
Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------LANZT *ALIAS LANZT.LANZT.STROBE.SQMTPTST P0XYZ5 LANZT.BTXI.SESSION.LOESCH ?????? LANZT.ISPCMDS.LIST D1D104 LANZT.TEST.TABL D1D128 LANZT.LPRT.SPFLOG1.LIST T1W125 LANZT.USER.TABL.LPRT T1T106 LANZT.USER.TABL.LPRX T1T102 ***************************** End of Data Set list ****************************
6.4 DSLIST panel processing | 93
Examples of DSLIST masks: Include Additional Qualifiers is set to OFF in DSLIST panel. Table 6.1: Examples of DSLIST masks Mask
Shown DSNs
SYS*
Data sets that begin with SYS and have only one qualifier. These are just alias entries. This selection is very good to look for alias entries. Data sets that begin with SYS and have two Qualifiers. All data sets in the whole system, having exactly three qualifiers and their last qualifier REXX is. All data sets in the whole system, who have REXX as the last qualifier. All data sets that begin with SYS. Be careful when trying out. 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 exactly two characters long and still have a third qualifier. All data sets that have PROX as HLQ and REXX as LLQ.
SYS*.* *.*.REXX **.*.REXX SYS*.** LANZT.%%.* PROX.**.REXX
Volume serial We will discuss the use of this field in the section 6.6.2 Using the volume serial field on page 111. Initial view Here we should choose option 1 as this allows the display, particularly with very large DSLISTs, very quickly to go on. When the list appears and you need the extra file information, you can use the keys PF10/11 to display the information. If one of the options is 2-4 set, the system collects namely the data set attributes from catalogs and VTOCs. This can take quite a long time. Enter "/" to select option The entries in the first two lines are particularly important because they again determine whether we get a security question during DELETE operations. You should always leave both options switched on!
6.4 DSLIST panel processing The processing options for the files displayed in the DSLIST panel are very extensive. It is a screen similar to an edit display. A detailed description of the opportunities provided by the DSLIST Panel, see the IBM brochure ISPF User’s Guide Volume II in the main chapter Utilities in the subsection Data Set List Utility (option 3.4). In the
94 | 6 DSLIST – Data set lists
following sections, I will describe only the, in my opinion, for the daily work important options and commands. 3 Remark: These described methods in the following sections apply to ALL DSLIST panels irrespective of whether they were by a simple selection of the Panel 3.4 or by a Personal Data Set List created.
6.4.1 The DSLIST primary commands As you will see, there is a large number of sometimes very useful primary commands. The following panel shows these commands: Screen 6.8: DSLIST primary commands You can use set list is APPEND CONFIRM DSLSET EXCLUDE FIND LOCATE MEMBER
the following commands from the COMMAND line after the data displayed: - Appends a personal list or data set level to a DSLIST. - Confirms data set delete requests (by confirmation panel). - Displays the data set list settings panel. - Excludes a line containing a string within the data set name. - Finds a string within the data set name. - Locates an entry in the list based upon sorted order. - Searches all partitioned data sets in the list for a member name or pattern. REFRESH - Refreshes the displayed list with any changes that have occurred. RESET - Redisplays excluded data sets and removes line commands. SAVE - Writes the data set list to the ISPF list data set or to a sequential data set. SHOWCMD - Shows the line command before it is invoked. SORT - Sorts the list of data sets by the specified field. SRCHFOR - Search for strings in data sets. LC VA VS VT VV
-
Displays Displays Displays Displays Displays
data data data data data
set set set set set
list list list list list
color change utility. attribute view. space view. total view. volume view.
3 Remark: The shaded commands are interesting. I recommend doing some practical exercises. The LC function is useful if you do not like the displayed colors and you want to customize it to your taste. The commands VA, VS, VT and VV listed at the end of the panel may ignored because the keys PF10/11 (LEFT/RIGHT) can meet these functions better.
I would like to address you on two relatively new commands. Namely, the commands MEMBER and SRCHFOR:
6.4 DSLIST panel processing | 95
6.4.2 The commands MEMBER and SRCHFOR In a DSLIST display and only then, you can use these commands in the following manner: Enter the Command MEMBER as Primary Command. That means, enter at the command line MEMBER, MEM or M and add a member name or a mask to search for members in all in this DSLIST displayed PDS. The result will appear directly in the DSLIST panel. Example for member lookup with MEMBER: I have searched for the member HUGO by entering M HUGO. Then I get the following display: Screen 6.9: Member search in a DSLIST display ISRUDSL0 Data Sets Matched in list REXX Command ===>
Member(s) found Scroll ===> CSR
Command - Enter "/" to select action Message Volume -----------------------------------------------------------------------PROX.LOGON.REXX Member: HUGO D1D135 SMQP.PROD.REXX D1D104 SMQP.USER.REXX D1D110 SQMT.USER.REXX D1D131 ***************************** End of Data Set list ********************* ┌────────────────────────────────────────┐ │ Member HUGO found in 1 data sets. │ └────────────────────────────────────────┘
As you can see, the member HUGO stays in the data set PROX.LOGON.REXX. Example of a text search with SRCHFOR: When creating a REXX procedure that should run under ISPF, I use the QBASELIB command. Because I do not know exactly how this command can used, but remember to have used it before, I search for it in my REXX data sets by first displaying the DSLIST for REXX procedures and then enter the command SRCHFOR. In contrast to member searches, text searches require more information. For this reason, the following panel appears first after entering the command SRCHFOR: (in the panel, I already filled out the search and display options to save space).
96 | 6 DSLIST – Data set lists
Screen 6.10: Text string search using SRCHFOR Command ===> You are about to search multiple data sets. Specify search string(s) and options and press ENTER to run the search. Enter the END or the CANCEL command to cancel the search. More: ==> QBASELIB ==> Listing DSN: LANZT.SRCHFOR.LIST Select Process Options with / Mixed Mode / Any case Totals only
Search Migrated 1 1. None 2. First level 3. All
Search Excluded 3 1. Excluded 2. Non-excluded 3. Both
+
Select Display Options with / / View output Exclude not found
I have entered the grayed lines.
Very important here is that you ENTER in this panel behind the text Listing DSN: a DSN that the system can create. When this panel is for the first time displayed, the DSN SRCHDSL.LIST stands here. However, you can usually not create a file with this name because you have no RACF authorization for the HLQ SRCHDSL. The best is you choose as the DSN name userid.SRCHFOR.LIST. If the file does not exist, it is automatically by the application created. When you call up the command SRCHFOR next time, DSN will always be available and displayed here. If you put a slash before the view output field, then the file with the search results are conveniently displayed immediately after the end of the search process in View mode. This display follows here: Screen 6.11: Example of a SRCHFOR list output VIEW LANZT.SRCHFOR.LIST Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 ISRSUPC MVS/PDF FILE/LINE/WORD/BYTE/SFOR COMPARE UTILITY- ISPF F 000002 LINE-# SOURCE SECTION SRCH DSN:PROX.REXX 000003 000004 000005 PACKNUM2 --------- STRING(S) FOUND ----------------000006 000007 134 "QBASELIB BINDPACK ID(QDSNS)" /* DSNs of Bind Package Mems */ 000008 135 if rc > 0 then call ispf_error rc " QBASELIB at BINDPACK " 000009 314 "QBASELIB ISPFILE ID(QDSNS)" /* DSN ISPFILE 000010 315 if rc > 0 then call ispf_error rc " from QBASELIB at ISPFILE 000011 000012 VINTBEDT --------- STRING(S) FOUND ----------------000013 000014 79 "ISPEXEC QBASELIB BGIN ID(QDSNS)" 000015 88 "ISPEXEC QBASELIB SYSUT2 ID(QDSNS)" 000016
6.4 DSLIST panel processing | 97
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.
3 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 PF1: Screen 6.12: Table of DSLIST line commands After the list displays, you can select data sets for processing by entering any of the following line commands to the left of the data set name. A "/" may also be entered to prompt for the following commands: V - View data set RA B - Browse data set C E - Edit data set U D - Delete data set P R - Rename data set PX I - Data set information M S - Information (short) X SC - SUPERC SCE SFE - Search-ForE TSO commands, CLIST, or REXX
Refadd to Reflist Catalog data set Uncatalog data set Print data set Print index listing Display member list Exclude data set SUPERCE
Z F = CO MO RS NX SF
-
Compress data set Free unused space Repeat last command Copy data set Move data set Reset statistics Unexclude data set Search-For
exec
The following input options can be in front of a data set name entered:
98 | 6 DSLIST – Data set lists
You can enter a slash (/) and get the following panel: Screen 6.13: Data set list actions *---------------------------------------------------------------* | ISRUDABC Data Set List Actions | | | | Data Set: ALLUSR.CLIST | | | | DSLIST Action | | 1. Edit 14. Print Index | | 2. View 15. Reset | | 3. Browse 16. Move | | 4. Member List 17. Copy | | 5. Delete 18. Refadd | | 6. Rename 19. Exclude | | 7. Info 20. Unexclude 'NX' | | 8. Short Info 21. Unexclude first 'NXF' | | 9. Print 22. Unexclude last 'NXL' | | 10. Catalog 23. SuperC 'SC' | | 11. Uncatalog 24. SuperCE 'SCE' | | 12. Compress 25. Search-For 'SF' | | 13. Free 26. Search-ForE 'SFE' | | | | Select a choice and press ENTER to process data set action. | *---------------------------------------------------------------*
As you can see, many actions can be on the selected file performed. However, I particularly draw attention to the Actions 18-22. These commands allow you to manipulate the list. In particular, the action 18 is interesting. Use this command to add the selected file name to an already existing DSLIST. This DSN remains permanently registered in the specified DSLIST. You should carefully consider whether you want this. The actions 1-17 are self-explanatory so far and I do not need to go into details. I recommend that you simply perform some tests using these options! You can enter an action character: The following table shows the most important action characters: Table 6.2: DSLIST action characters for data sets Char.
Action
Remarks
e
Call the editor
b v m r i c u
Call browse Call view Show the member list Rename Info Catalog Uncatalog
Sequential data set: the edit panel appears immediately PDS: the member list is displayed ditto as in Edit ditto as in Edit Error message, if data set is sequential Rename the data set Show data set attributes Catalog the data set Uncatalog the data set
6.4 DSLIST panel processing | 99
You can enter a procedure name: In this case, the procedure will called up and the DSN will forwarded to the procedure. However, the called up procedure must be able to do something with the DSN. This means the procedure has the DSN take as an argument and will used accordingly. 3 Note: You need to know when calling the procedure at which position within the list of parameters the procedure expects the DSN and you must also know if other parameters passed are.
Suppose the procedure expects the DSN in the first place and it is to provide yet another parameter. Then you have to enter the call as follows: PROC1 / PARM Here, the slash represents the DSN. If the procedure expects the DSN as the second parameter, then enter the following: PROC1 PARM / To be able to give long parameter lists in such calls, you can overwrite this DSN field. The DSN will then internally correctly to the procedure as parameter passed. The following panel shows such a call with overwriting the DSN: Screen 6.14: Example of a command call in a DSLIST display panel Menu Options View Utilities Compilers Help ───────────────────────────────────────────────────────────────────────── DSLIST - Data Sets MatchingPROX.PACKTIME.* Row 1 of 6 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume -------------------------------------------------------------------------PROX.PACKTIME.DB2P P0XYZ6 compdate / april KTIME.DGP1 P0XYZ6 PROX.PACKTIME.DGP2 P0XYZ6 PROX.PACKTIME.DGP3 P0XYZ6 PROX.PACKTIME.DGP5 P0XYZ6 PROX.PACKTIME.DGP6 P0XYZ6 ***************************** End of Data Set list **********************
What happens here? 1. The program compdate will start. 2. The parameters 'PEVP.PACKTIME.DGP1' and april are passed to procedure as arguments. We have here 54 characters available. You may ask now: How can I make such calls if the input requires more than 54 characters? To do so, look at the option Do not show expanded command in the next chapter
100 | 6 DSLIST – Data set lists
6.4.4 DSLIST settings Already in DSLIST basic menu (selection 3.4), you can specify some options that affect the appearance and working with the DSLIST panels. However, there is another way of setting the DSLIST display panel and the member list panel callable from the DSLIST display panels. In addition, other options for the commands and actions are executable in the panels mentioned above. These options can only be set when a DSLIST panel currently is displayed. To access this panel, proceed as follows: We position the cursor in the action bar in the options field and press enter. Then the following pull-down menu appears: Screen 6.15: Options pull down menu in a DSLIST panel Menu Options View Utilities Compilers Help ───── ┌──────────────────────────┐ ─────────────────────────────────────────── DSLIS │ 1 1. DSLIST Settings... │ REXX Row 1 of 7 Comma │ 2. Refresh List │ Scroll ===> CSR │ 3. Append to List... │ Comma │ 4. Save List │ n Message Volume ----- │ 5. Reset │ ------------------------------------------└──────────────────────────┘ D1D148 PRTT.REXX D1D115 ***************************** End of Data Set list ****************************
In this pull-down menu, we select option 1 for DSLIST settings and press enter. Then we get the settings menu for the DSLIST options: Screen 6.16: DSLIST options setting panel *------------------------------------------------------------------* | File Colors Workstation Help | | --------------------------------------------------------------- | | ISRDLSET Data Set List Settings Main | | | | General Options | | Enter "/" to select option | | Display Edit/View entry panel (*) | | / Automatically update reference lists | | / List pattern for MO, CO, D, and RS actions | | / Show status for MO, CO, D, and RS actions | | / Confirm Member delete | | / Confirm Data Set delete | | / Do not show expanded command | | Enhanced member list for Edit, View, and Browse | | / Display Total Tracks | | | | (*) Requires enhanced member list option to be selected | | | | Press EXIT to save, CANCEL to cancel changes. | | | *------------------------------------------------------------------*
6.4 DSLIST panel processing | 101
With a (/) in front of their text, the options turn on. When a blank entered is, this option will turned off. The effects and meanings of these options are in the following pages explained: Display Edit/View entry panel (*) When a direct edit/view call to a sequential data set or a member will performed and this option is ON, the edit/view entry panel appears before the edit/view session starts. You then have the opportunity to enter additional options. This option has no effect on a call of a member from a member list. Automatically update reference lists This option controls the automatic update behavior of ISPF for DSLIST REFLIST. If this option is on, then whenever a data set will edited, the DSN is to the standard DSLIST called REFLIST written. List pattern for MO, CO, and RS actions If this option is on, the member list appears before one of the above operations on a PDS executed are so that you can select individual members for the planned operation. Show status for MO, CO, and RS actions If this option is on, the process activity of the above operations is in a POP UP panel displayed. Confirm Member delete This option has the same effect as the same option in the DSLIST basic panel. Changing this option will automatically update each in both places. This option can be set specifically using the CONFIRM command. Confirm Data Set delete This option has the same effect as the same option in the DSLIST basic panel. Changing this option will automatically update each in both places. This option can be set specifically using the CONFIRM command. Do not show expanded command If this option is off, then an additional panel appears in which you can modify the command before executing. This facility provides the ability for a program or procedure call of to pass a long parameter list as is possible in a DSLIST panel with its maximum of 54 characters.
102 | 6 DSLIST – Data set lists
Enhanced member list for Edit, View, and Browse If this option is enabled, all displays of member lists which were called up with e for edit, v for view and b for browse in one line of a DSN appear with a eight character long call box in front of the member name. Recapitulation: The advantage of this enhanced member list is that you can perform other functions in the same member list directly after returning from a member. The disadvantage is that after creating a new member in an editor or view session, the member list will, after returning from the session, not updated automatically. Therefore, if you want to use the new members immediately, you have to rebuild the member list using the REFRESH command. I set these options in my ISPF as they as can be seen see in the above panel. However, this is a matter of taste. Find out your own favorite setting!
6.4.5 Examples of the data set list settings On the following pages, I want to show you some examples of the effect regarding the options discussed above. I recommend trying these examples on your system. You may have use for them someday! The edit/view entry panel: When edit/view calls a sequential data set and this option is set to ON, then the below panel always appears before the contents of the file displayed is: Screen 6.17: The edit/view entry panel EDIT Entry Panel Object Name: 'LANZT.ISFCMDS.LIST' * No workstation connection Initial Macro . . ________ Profile Name . . . ________ Format Name . . . ________ Panel Name . . . . ________
(Blank defaults to Type) (Leave blank for default)
Options / Confirm Cancel/Move/Replace _ EDIT Mixed Mode EDIT host file on Workstation _ Preserve VB record length / Warn on First Data Change Press ENTER to continue. Press CANCEL to cancel action.
6.4 DSLIST panel processing | 103
As you see on the panel, you can now set some options before you start with the edit/view session. If you have entered the options, it goes directly to the editor by pressing ENTER. List Pattern for MO, CO and RS actions This option is especially important for the application of RS to update the member statistics in a PDS. If you want to edit all members at once with this RS action, then you should disable this option. If you want the member statistics renew only for selected members, then you should enable this option. If the option will turned on, the following panel that is already filled in for the next step appears when you invoke RS in front of a PDS: Menu Functions Confirm Utilities Help ─────────────────────────────────────────────────────────────────── Vol D1D139 RESET LANZT.LOGON.TRANS Row 00001 of 00004 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID _________ AEPQMS 116 2003/09/11 2004/03/25 15:14:37 LANZT s________ CEPQMS s________ HEPQMS _________ XXXX 116 2004/03/25 2004/03/25 15:14:36 LANZT **End**
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 Reset Member Statistics Data Set Name: 'LANZT.LOGON.TRANS(CEPQMS)' Multiple Reset actions will be processed Options 1 1. Reset ISPF statistics 2. Delete ISPF statistics New Userid . . . LANZT New Version . . . 02 New Mod . . . . . 55
(If userid is to be changed) (If version number is to be changed) (If mod number is to be changed)
Press ENTER to process action. Press CANCEL to cancel reset.
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.
104 | 6 DSLIST – Data set lists
Menu Functions Confirm Utilities Help ─────────────────────────────────────────────────────────────────── Vol D1D139 RESET LANZT.LOGON.TRANS Row 00001 of 00004 Command ===> Scroll ===> CSR Name Prompt Size Init Mod VV MM ID _________ AEPQMS 116 113 0 01.02 LANZT _________ CEPQMS *Reset 69 69 0 02.55 LANZT _________ HEPQMS *Reset 44 44 0 02.55 LANZT _________ XXXX 116 116 0 01.00 LANZT **End**
1 Tip: If you renew with RS many member statistics, I recommend to set Show status for MO, CO, and RS actions to on. You can then track the processing progress on the screen in a POP UP menu by whizzing the names of the members treated.
Enhanced member list for Edit, View, and Browse: I want to illustrate to you with the following two figures how this option affects the display of the member list. You can then decide with which you prefer to work. Pros and cons of both displays types were explained above. Screen 6.19: PDS members list with enhanced option ON Menu Functions Confirm Utilities Help ─────────────────────────────────────────────────────────────────── Vol D1D139 EDIT LANZT.LOGON.TRANS Row 00001 of 00004 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID _________ AEPQMS 116 2003/09/11 2004/03/25 15:14:37 LANZT _________ CEPQMS 69 2004/03/25 2004/03/25 16:18:44 LANZT _________ HEPQMS 44 2004/03/25 2004/03/25 16:18:44 LANZT _________ XXXX 116 2004/03/25 2004/03/25 15:14:36 LANZT **End**
Screen 6.20: PDS members list with enhanced option OFF Menu Functions Utilities Help ─────────────────────────────────────────────────────────────────── Vol D1D139 EDIT LANZT.LOGON.TRANS Row 00001 of 00004 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID . AEPQMS 116 2003/09/11 2004/03/25 15:14:37 LANZT . CEPQMS 69 2004/03/25 2004/03/25 16:18:44 LANZT . HEPQMS 44 2004/03/25 2004/03/25 16:18:44 LANZT . XXXX 116 2004/03/25 2004/03/25 15:14:36 LANZT **End**
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 dis-
6.5 Personal data set lists | 105
play is immediately refreshed and thus the new members immediately appear in the member list after leaving the current edit session. Confirm member delete: Normally, you should always have this option enabled. This means, if you type in an enhanced member list against a member or several members d for delete and press ENTER, the following POP UP appears: Screen 6.21: Confirm member delete panel ISPF Utilities Confirm Member Delete Data Set Name: LANZT.LOGON.TRANS Member to be Deleted: AEPQMS _
Set member delete confirmation off
Press ENTER to confirm delete. Press CANCEL or EXIT to cancel delete.
Pressing ENTER deletes the member. If you even enter before the line set member delete confirmation off an s before you press ENTER, then the delete confirmation fuse remains off for the duration of the DSLIST session. Only when you leave this DSLIST session and call it up again will the general security setting taken up again.
6.5 Personal data set lists In this chapter, we will deal with one of the most efficient tools in the entire ISPF. First, here are the basics of the personal data set lists: When working in ISPF we need many data sets and we can usually group them by any rule. For example, it makes sense to group the data sets according to their use as follows: – Data sets containing procedures. – Data sets containing panels – Data sets containing skeletons – Data sets containing messages In addition, we have the following groups of data sets: – Data sets for source codes – JCL data sets
106 | 6 DSLIST – Data set lists
– –
Data sets for the maintenance of IMS, CICS, DB2, etc. Data sets for test data
In the course of working with the ISPF, we always have ideas for new groups. You should note that a DSN might appear in several DSLISTs. Create your DSLISTs as you need for a particular activity. What are the advantages of using Personal Data Set Lists? – – – –
You only need to remember one command to make a whole group of very different DSNs available. You can add or remove additional DSLISTs to the current DSLIST. You can install the call to a DSLIST in your private command table and in this way call it up very fast. Find DSLISTs using the selection 11 in the Primary Option Menu and hold it permanently available in an ISPF logical screen. Customize and display them directly from the ISPF Workplace.
6.5.1 Creating personal data set lists For creating your own Personal Data Set List, proceed as follows: You move the cursor in a DSLIST panel (3.4) to the text RefList in the CUA line and press ENTER. The following panel will displayed: Screen 6.22: Create a personal data set List Menu RefList RefMode Utilities Help ───── ┌────────────────────────────────────────────────┐ ───────────────────── │ 2 1. Current Personal Data Set List (CEXEC) │ Optio │ 2. List of Personal Data Set Lists │ └────────────────────────────────────────────────┘ blank Display data set list P Print data set list V Display VTOC information PV Print VTOC information Enter one or both of the parameters below: Dsname Level . . . LANZT.** Volume serial . . Data set list options Initial View . . . 1
1. 2. 3. 4.
Volume Space Attrib Total
Enter "/" to select option / Confirm Data Set Delete / Confirm Member Delete / Include Additional Qualifiers
When the data set list is displayed, enter either: "/" on the data set list command field for the command prompt pop-up, an ISPF line command, the name of a TSO command, CLIST, or REXX exec, or "=" to execute the previous command.
6.5 Personal data set lists | 107
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: Active: CEXEC Command ===> Action: O=Open
_
Personal Data Set Lists
A=Save As
D=Delete
E=Edit
List 3 of 25 Scroll ===> PAGE
L=DSLIST
Name Description REFLIST Last 30 referenced data sets 'LANZT.ISPF.PROFILE.LPRT' 'SMQP.COMPILES.D040308.NOT' 'SMQP.COMPILES.D040303.PIL.QBMERVES.$I' 'SMQP.COMPILES.D040303.PIL.QBMERVAI.$2' 'SMQP.COMPILES.D040126.NOT' 'LANZT.LOGON.CLIST'
Created --------
Referenced -------- -----
If you place the cursor in the line with the name RefList and enter the character a (for Save As) and press ENTER, then you get the following screen: Screen 6.23: SAVE AS confirmation panel File View Options Help ─ ┌─────────────────────────────────────────────────┐ A │ Personal Data Set List Save As │ C │ │ │ List . . . . . NEWREXX │ A │ │ │ Description . . My REXX Data sets │ │ │ A │ │ │ Enter a new list name and optionally a list │ │ description. │ │ │ │ Press ENTER to save, EXIT to cancel Save as. │ │ │ │ │ _ │ │ │ │ └─────────────────────────────────────────────────┘
──────────────────────── List 3 of 25 Scroll ===> PAGE
eated ------
Referenced -------- -----
/10/05
04/03/09 16:52
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.
108 | 6 DSLIST – Data set lists
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: Active: CEXEC Command ===> Action: O=Open
_
Personal Data Set Lists
A=Save As
D=Delete
E=Edit
List 1 of 26 Scroll ===> PAGE
L=DSLIST
Name Description NEWREXX Meine REXX Dateien 'LANZT.ISPF.PROFILE.LPRT' 'SMQP.COMPILES.D040308.NOT' 'SMQP.COMPILES.D040303.PIL.QBMERVES.$I' 'SMQP.COMPILES.D040303.PIL.QBMERVAI.$2' 'SMQP.COMPILES.D040126.NOT' 'LANZT.LOGON.CLIST'
Created 04/03/10
Referenced 04/03/10 14:02
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: Active: NEWREXX Command ===> Action: O=Open
_
Personal Data Set Lists
A=Save As
Name NEWREXX PROX.*.REXX
D=Delete
E=Edit
Description My REXX Data sets
List 1 of 26 Scroll ===> PAGE
L=DSLIST Created 04/03/10
Referenced 04/03/10 14:18
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. DSLIST - Data Sets Matched in list NEWREXX Command ===>
Row 1 of 2 Scroll ===> CSR
Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------PROX.LANZ.REXX D1D119 PROX.LOGON.REXX D1D135 ***************************** End of Data Set list ****************************
6.5.2 Call DSLISTs DSLISTs can be in various ways displayed. We must differentiate: – Views for using one DSLIST. – Views for maintaining all DSLISTs. Views of DSLISTs using the command DSLIST. Here is the description of the DSLIST command from the associated tutorial panel.
6.6 Entering the DSLIST command with the name of a DSLIST | 109
Screen 6.24: Description of the DSLIST command TUTORIAL ---------------- ISPF COMMAND - DSLIST --------------------- TUTORIAL OPTION ===> You can use the DSLIST command to display a DSLIST based on a personal data set list or a data set level. Command ===> DSLIST Displays a list of personal lists for Selection Command ===> DSLIST BOB Builds a DSLIST based on entries contained in personal data set list "BOB" Command ===> DSLIST 'BOB.*' Builds a DSLIST based on data sets matching data set level BOB.* If you enter a parameter, the DSLIST command first looks for a personal data set list with that name. If it does not find the list, it uses the parameter as a DSNAME LEVEL using TSO naming conventions. For example, if you enter DSLIST CLIST and there is no personal data set list named CLIST, then if you have the TSO prefix set to your user id, the DSLIST command will look for data sets matching the name 'LANZT.CLIST' The DSLIST view can be set by the ISPF Workplace Settings panel or the ISPF Referral List Settings panel.
According to the information provided above, you can call individual DSLISTs using three ways. However, there are some other ways to work with DSLISTs.
6.6 Entering the DSLIST command with the name of a DSLIST Screen 6.25: Direct call of a DSLIST by name Data Set List Utility Option ===> dslist newrexx blank Display data set list V Display VTOC information
P Print data set list PV Print VTOC information
Enter one or both of the parameters below: Dsname Level . . . AV* Volume serial . . Data set list options Initial View . . . 1
1. 2. 3. 4.
Volume Space Attrib Total
Enter "/" to select option / Confirm Data Set Delete / Confirm Member Delete Include Additional Qualifiers
When the data set list is displayed, enter either: "/" on the data set list command field for the command prompt pop-up, an ISPF line command, the name of a TSO command, CLIST, or REXX exec, or "=" to execute the previous command.
When you type in the gray highlighted command and press ENTER, the DSLIST NEWREXX appears immediately.
110 | 6 DSLIST – Data set lists
6.6.1 Entering the DSLIST command without parameters Then the following panel appears. Screen 6.26: DSLIST command without parameters Menu RefList RefMode Utilities Help ─ ┌───────────────────────────────────────────────────────────────────────┐ │ Personal Data Set Lists for Append List 1 of 2 │ O │ Command ===> Scroll ===> PAGE │ │ │ │ Select a personal data set list as a filter for DSLIST: │ │ │ │ Name Description Created Referenced │ E │ s NEWREXX My REXX Data sets 04/03/10 04/03/10 15:07 │ │ . REFLIST Last 30 referenced data sets -------- -------- ----│ │ │ └───────────────────────────────────────────────────────────────────────┘
To display a DSLIST, type in an s before the name of a DSLIST and press ENTER.
6.6.1.1 Integrating a DSLIST call in the command table ISPCMDS You should use a short and concise name for this entry such as +R. This name may be a good choice. The entry might look like this: +R______ 0
SELECT PGM(ISRDSLST) PARM(DSL NEWREXX) DSLIST REXX REXX DATA SETS
SUSPEND SCRNAME($NEWREXX)
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:
6.6 Entering the DSLIST command with the name of a DSLIST | 111
Screen 6.27: Display of SWAP LIST command Menu Options View Utilities Compilers Help ─ ┌─────────────────── ISPF Task List ────────────────────┐────────────────── D │ Active ISPF Logical Sessions │ entries not used C │ │ Scroll ===> CSR │ . Start a new screen │ C │ . Start a new application │ Volume - │ Application Name │ ----------------│ _____________________________________________ │ D1D117 │ │ D1D127 │ ID Name Panelid Applid Session Type │ D1D128 │ . 1 $NEWREXX ISRUDSL0 ISR 3270 │ D1D111 │ . 2 $SKELS ISRUDSL0 ISR 3270 │ D1D144 │ . 3 $P ISRUDSL0 ISR 3270 │ D1D133 │ . 7- DSLISTS ISRPVTAB ISR 3270 │ IMD1A0 │ . 8* $IMS ISRUDSL0 ISR 3270 │ D1D152 * └───────────────────────────────────────────────────────┘ *****************
6.6.2 Using the volume serial field Let us look at the DSLIST basic panel: Screen 6.28: Using the volume serial field in DSLIST panel Data Set List Utility Option ===> blank Display data set list V Display VTOC information
P Print data set list PV Print VTOC information
Enter one or both of the parameters below: Dsname Level . . ._____________________________________________ Volume serial . .______ Data set list options Initial View . . . 1
1. 2. 3. 4.
Volume Space Attrib Total
Enter "/" to select option / Confirm Data Set Delete / Confirm Member Delete Include Additional Qualifiers
When the data set list is displayed, enter either: "/" on the data set list command field for the command prompt pop-up, an ISPF line command, the name of a TSO command, CLIST, or REXX exec, or "=" to execute the previous 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.
112 | 6 DSLIST – Data set lists
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. 3 Remarks: The setting of the Include Additional Qualifiers option also determines the ads in the data set lists. You must always this setting keep in mind when you use a DSN mask. I would like to repeat that you should always set the Initial View in the Data Set List Utility panel to 1 (Volume). If you have mistakenly used a wrong mask and thus very many DSNs will displayed, this option reduced the wait time considerably.
6.7 DSLIST optimal use with command tables After learning how to use DSLISTs and ISPF command tables intelligently, we can simplify and accelerate our work in ISPF significantly. It is probably easiest if I explain my system working with ISPF, in daily work as part of a very complex ISPF application at a customer. The use of the ISPF tools is in my opinion on a very high level and is of course not the same it was at the beginning of the project, but I gradually brought him in the course of about 15 years to this level. Therefore, if you follow this proposal in setting up your ISPF, you get the maximum benefit immediately.
6.7.1 Organization and naming conventions Before we install the entries in our ISPF command table for calling DSLISTs, we should worry about the command texts we want to define to call our individual DSLISTs. To do so, see the following comments: – We should distinguish all calls to DSLISTs of the other commands that are indeed in the ISPF command table, preceded by a special character. – These calls should be as simple as possible and be entered quickly. This special character should not require the shift key and be as close as possible to the ENTER key. Two keys fulfill these conditions for using to build the names for com-
6.7 DSLIST optimal use with command tables | 113
mands (we cannot use any special characters). These characters are the plus sign (+) and the minus sign (-). I defined the following scheme for myself: –
–
The plus sign (+) precedes all calls for my own commands to call DSLISTs. The rest of the call name consists of a letter or letters that give an indication of the type of data sets, which this command should display. For example, +R stands for all REXX data sets, +P for all panel data sets, +S for all skeleton data sets etc. The minus sign (-) is used to reset. For example, I use the three characters --- to depose the REFRESH command.
6.7.2 Call DSLISTs using the ISPF command table Calling DSLISTs using an ISPF command table entry is with the secret program ISRDSLST done. See the section 10.2 Program ISRDSLST on page 182. If no own DSLISTs defined are, we can use the ever-present DSLIST REFLIST as a starting point: Screen 6.29: Use REFLIST to start defining an own DSLIST ISRPDSLB Command ===>
Personal Data Set Lists for Append
List 1 of 26 Scroll ===> PAGE
Select a personal data set list as a filter for DSLIST: Name . REFLIST **End**
Description Last 30 referenced data sets
Created --------
Referenced -------- -----
Here is an excerpt from my own ISPF command table as represented by the SMART ISPF utility SICMD where you will find some DSLISTs, corresponding to the naming conventions that we have above discussed:
114 | 6 DSLIST – Data set lists
Screen 6.30: Define ISPF command table entries using the program SICMD -------------------------- Alter ISPF Command Tables Command = ISPF Command Table Member = ISPCMDS Found in DSN = LANZT.USER.TABL.LPRT is saved to = LANZT.USER.TABL.LPRT
----- Row 1 to 16 of 122 Scroll = CSR Active APPLID = ISR
Cmd >> R=Repeat, I=Insert, D=Delete Cmd Description -----------------------------------------------------------------------------++______ 0 SELECT PGM(ISRDSLST) PARM(PL2) SUSPEND SCRNAME(DSLISTEN) DSLIST STANDARD PERSONNAL DATA SET OPEN +LU_____ 0 SELECT PGM(ISRDSLST) PARM(DSL REFLIST) SUSPEND SCRNAME($REFLIST) DSLIST REFLIST LETZTE 30 DATA SETS +M______ 0 SELECT PGM(ISRDSLST) PARM(DSL MSGS) SUSPEND SCRNAME($M) DSLIST MSGS ISPF MESSAGE DATA SETS +P______ 0 SELECT PGM(ISRDSLST) PARM(DSL PANEL) SUSPEND SCRNAME($P) DSLIST PANEL ISPF PANEL DATA SETS +R______ 0 SELECT PGM(ISRDSLST) PARM(DSL REXX) SUSPEND SCRNAME($REXX) DSLIST REXX REXX DATA SETS +S______ 0 SELECT PGM(ISRDSLST) PARM(DSL SKEL) SUSPEND SCRNAME($SKELS) DSLIST SKEL SKELETON DATA SETS SICMD 3 SELECT CMD(%SICMD &ZPARM) SUSPEND SCRNAME(SICMD) REXX SICMD EDIT ISPF COMMAND TABLE
Here follow more entries!
The shaded entries have special significance as explained in the following table: Call
Meaning
++ +P +LU SICMD
Calls all available DSLISTs in administration mode. Calls a DSLIST containing all panel definition data sets. Calls the DSLIST REFLIST containing the last 30 referenced data sets. Calls the command SICMD to maintain the ISPF command table.
If you use the possibilities of DSLISTs optimally together with the ISPF command tables, you can gain the following benefits: – 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. 1 Recommendation: Take advantage of the opportunities using personal data set lists. This allows you to speed up your daily work significantly. Group your DSLISTs by different criteria as working sets for optimal use in many activities.
7 The Object/Action Workplace Learn about one of the newest tools of the ISPF. It provides a standardized interface for working with DSLISTs. I can highly recommend this tool, because it simplifies working with DSLISTs extraordinary. It is a real power user tool! In the previous chapter, you became familiar with the DSLISTs, now we can discuss a tool that makes the use of the DSLISTs elegant. Through the workplace, we gain access to the well-equipped ISPF Object/Action Workplace facility. This is a relatively new tool in the ISPF. It is an object-oriented processing installation in the ISPF. Objects in this context are data sets, members, volsers and DSLISTs. The ISPF Object/Action Workplace can be in three ways called up: – Using selection 11 in the primary option menu. – Using the ISPF command ISPFWORK in any ISPF Panel. – Using an appropriate entry in the ISPF command table. You need to insert this entry by yourself. See the section 7.1.1 Calling the workplace via the command table on page 116. After you have selected the tool using one of the above mentioned call types, you see a menu that represents a combination between the traditional DSLIST access menu, selected by using the ISPF menu 3.4 and the command DSLIST, which directly shows the DSLISTs. Through this combination, this panel has become my absolute favorite menu. From here, I can do almost anything that has to do with data sets. For example: – – – –
– –
Call of a DSLIST by entering an appropriate mask behind Object Name. Selection of a DSLIST from the list of my DSLISTs by entering the line command DL in the action column of the displayed DSLISTs. Manage a DSLIST by typing a slash (/) as the line command in one of the displayed DSLIST rows. Get out a certain DSLIST mask or a DSN from the amount of the existing DSLISTs and paste as object name by typing a slash (/) as the line command and select an object from the displayed DSLIST content. View the contents of a VTOC by entering a VOLSER in the volume serial field and blank out the field behind object name. Displaying specific data sets, selected through a mask from a VTOC, by entering a VOLSER behind volume serial and setting the mask in the field object name.
116 | 7 The Object/Action Workplace
7.1 The ISPF workplace panel The following image shows my own workplace panel: Screen 7.1: The ISPF workplace panel File View Options Space SuperC Test Help ────────────────────────────────────────────────────────────────────────────── Smart Action ISPF Workplace DSLIST processed Action ===> Scroll ===> CSR Data Set, DSLIST Level, or Workstation File Object Name . . . lanzt.** Volume Serial . . ______ (For actions that require a volume serial) ┌───────────────── ISPF Referral lists for object selection ─────────────────┐ ! Data Set View Action #1-30=Retrieve Entry DL=DSLIST /=Open List ! ! LANZT . . . _________ DSNs of User LANZT 04/03/24 11:00 ! ! CEXEC . . . _________ Compiled REXX Procedures 04/03/15 15:07 ! ! COB . . . _________ Data sets for Cobol Test 04/03/09 13:10 ! ! COMPJOBS . . . _________ Data sets of the Compile Jobs 04/03/17 15:27 ! ! DB2BG . . . _________ DB2 Package, Plan, Grant 04/03/15 15:44 ! ! DB2P . . . _________ DB2 data sets for production 04/03/24 10:18 ! ! DB2T . . . _________ DB2 data sets for Test 04/03/15 15:45 ! ! INFO . . . _________ Information data sets 04/03/15 15:47 ! ! LANZ . . . _________ Data sets PROX.LANZ.** 04/03/24 09:58 ! ! LINK . . . _________ EPQMS compile link libs 04/03/11 09:56 ! ! LOAD . . . _________ All load libs 04/01/29 08:15 ! ! LOGON . . . _________ PROX.LOGON/LANZ DSNs 04/03/24 10:04 ! ! MSGS . . . _________ ISPF panel messages 04/03/15 15:49 ! ! NEWREXX . . . _________ For test only 04/03/16 13:18 ! ! PANEL . . . _________ ISPF panels data sets 04/03/23 09:48 ! ! PCSAVE . . . _________ PC backup data sets 04/03/23 12:34 ! ! PROCLIB . . . _________ All PEV*.PROCLIB.JCL 04/03/24 10:38 ! ! PROGRAM . . . _________ Program data sets 04/03/16 10:08 ! ! REFLIST . . . _________ Last 30 referenced data sets -------- ----- ! ! REXX . . . _________ REXX data sets 04/03/23 17:59 ! ! SKEL . . . _________ ISPF sekeleton data set 04/03/24 08:29 ! ************************* End of ISPF Referral lists *************************
1 Tip: In contrast to the DSLIST command, the workplace has a weighty advantage: If you select a DSLIST via the workplace and you come back by pressing the PF3 button, you land again in the workplace with the display of all DSLISTs. You can then start the next action from here without previously having to recall the workplace.
7.1.1 Calling the workplace via the command table If you want to set up a short command to the call of the workplace, you can achieve this through the following entry in the ISPF command table: WP______ 0
SELECT PGM(ISRUDA) PARM(ISRWORK) SUSPEND SCRNAME(ISPFWORK) NATIVE CALL THE ISPF WORKPLACE PANEL
In this way, you can call the workplace using the command WP everywhere in the ISPF.
7.1 The ISPF workplace panel | 117
7.1.2 Operation of the workplace panel Two terms are very important when operating this panel. Therefore, I will explain these first: Objects: In the Workplace – when no DSLIST selected is – all refers to the object that is after Object Name entered. This means that operations relating to an existing data set, like, for example, showing the data set characteristic can started only if the registered data set actually exists. On the other hand, you must enter the name of a nonexistent data set as an object if you want to create this with an action command. There are two ways to start actions. – Using the pull down menus in the action bar. – By entering an action command in the line Action ===_> There are about 85 action commands. Because you can always enable it, also menudriven, 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.
118 | 7 The Object/Action Workplace
7.1.3 Action commands in the workplace panel As I have mentioned above, there are approximately 85 action commands. For a full description of these commands, see the brochure ISPF User’s Guide Volume II in the chapter workplace (option 11). I would like to explain some of these commands here. I first classify these commands into categories and then explain my opinion concerning the most important commands. For completeness, I point out that each original ISPF command can also be as action command entered.
7.1.3.1 Action commands to control the display. Table 7.1: Workplace action commands to control the panel display Command
Function
ACTBAR NOACTBAR LV or LISTVIEW
Thus, you can switch on and off the display of the action bar in the workplace panel. Toggle the workplace panel between the display of the data set and the library display. Normally, you need only the data set display. Provides the ability to change the color of the screen displays.
COLOR
7.1.3.2 Action commands of the workplace Some of these commands come in two versions, once as a call with one character and as a call with two characters. When the call with two characters is used, the second character is always a p. The p stands for prompt, meaning that before executing the command still a pop-up panel appears, that offers several choices for the actual execution of the command. The following examples demonstrate this effect. Many of these commands are actually unnecessary because you can directly access the functions such as RENAME, EDIT, BROWSE and so on when a DSLIST is displayed.
7.2 Examples of workplace operation | 119
Table 7.2: Workplace action commands Command
Function
A, AP B C, CP D, DP DL DVT E, EP G I ICS ICT IP J LP M ML N O P, PP PVT R, RP S SC, SCE SETTINGS SF, SFE T U V, VP Z
A stands for allocate and is used to create a new data set. Browse. Copy. Delete. The traditional DSLIST panel. VTOC display of a Volume. A Volume Serial must also entered. Edit. Reset member statistics. Viewing data set information. Turns on the TSO command shell (such as menu 6). Leads to the display of ISPF command tables. Shows a POP UP panel for selecting the display of data set information Shows the members list of the registered object for the purpose of submit Shows a POP menu to select some displays of data sets. Move. Member list. Rename of a data set. Open (shows member list). Print. Print VTOC content. Rename members and sequential data sets. Short data set information. SuperC call. Call of the panel to adjust the settings of the ISPF. SearchFor call. TSO command call, when a members list is displayed. Uncatalog of a data set. View Compress
7.2 Examples of workplace operation The following four examples should give you an idea, what type of work can quickly and elegantly carried out using the Workplace: Example 1: Call of a DSLIST We move the cursor to the row of the desired DSLIST, type DL there and press ENTER.
120 | 7 The Object/Action Workplace
Screen 7.2: Call of a DSLIST from the ISPF workplace File View Options Space SuperC Test Help ──────────────────────────────────────────────────────────────────────────── Smart Action Ex ISPF Workplace Action ===> Scroll ===> CSR Data Set, DSLIST Level, or Workstation File Object Name . . . pevx.lanz.rexx Volume Serial . . (For actions that require a volume serial) ┌───────────────── ISPF Referral lists for object selection ──────────────┐ ! Data Set View Action #1-30=Retrieve Entry DL=DSLIST /=Open List ! ! REFLIST . . . dl Last 30 referenced data sets -------- ----- ! ! REXX . . . REXX Data sets 04/03/24 12:57 ! ! SKEL . . . ISPF Sekeleton Data sets 04/03/24 16:15 ! ! UMS . . . Umstellungs JCL 04/03/24 16:15 ! ********************** End of ISPF Referral lists *************************
Thus, we get the following result display. Only the last few lines will displayed: Menu Options View Utilities Compilers Help ──────────────────────────────────────────────────────────────────────────── DSLIST - Data Sets Matched in list REFLIST Row 24 of 29 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume ---------------------------------------------------------------------------PEV6.CA72.JCL P0XYZ1 PEV6.UMS.JCL P0XYZ1 SMQP.DOKU D1D121 SMQP.JCL D1D118 SMQP.MASENTN D1D144 UCAT.PEV P0S003 *************************** End of Data Set list ***************************
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 Smart Action Ex Action ===>
ISPF Workplace
DSLIST processed Scroll ===> CSR
Data Set, DSLIST Level, or Workstation File Object Name . . . pevx.lanz.rexx Volume Serial . . (For actions that require a volume serial) ┌───────────────── ISPF Referral lists for object selection ──────────────┐ ! Data Set View Action #1-30=Retrieve Entry DL=DSLIST /=Open List ! ! REFLIST . . . Last 30 referenced data sets ! ! REXX . . . / REXX Data sets 04/03/24 12:57 ! ! SKEL . . . ISPF Sekeleton Data sets 04/03/24 16:15 ! ! UMS . . . Conversion JCL data sets 04/03/24 16:15 ! ************************ End of ISPF Referral lists ***********************
The DSLIST maintenance panel for the DSLIST REXX appears.
7.2 Examples of workplace operation | 121
Screen 7.4: Select a DSN from the DSLIST editor panel File View Options Help ────────────────────────────────────────────────────────────────────────────── Personal Data Set List Command ===> Enter a list action to perform or select a data set entry to retrieve. Action: S=Save A=Save As D=Delete this list E=Extended Edit L=DSLIST Action
Name REXX
Description REXX Data sets
Created 99/10/05
Select Partitioned, Sequential Data Set or DSLIST Level . SMQP.*.REXX* . SQMT.*.REXX* . PRTT.REXX s PROX.REXX . pevx.*.rexx
Referenced 04/03/24 17:59 More: + Volume
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 Menu Functions Confirm Utilities Help ──────────────────────────────────────────────────────────────── Vol D1D148 LIST PROX.REXX Row 00001 of 00051 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID _________ $CONREXX 12 2002/07/04 2004/03/09 09:37:09 LANZT _________ $CONSKEL 11 2002/07/04 2003/04/01 10:16:42 LANZT _________ $DOC 200 2003/09/10 2003/09/10 17:58:41 LANZT _________ $PDSHIST 123 2004/03/17 2004/03/17 23:56:08 SQMTP _________ $PDSSICH 50 2004/03/17 2004/03/17 23:56:08 SQMTP _________ $README 17 2000/03/15 2003/12/04 10:18:05 LANZT _________ $SICHDAT 51 2003/09/10 2003/09/10 17:58:43 LANZT _________ $SICHNOT 12 2003/09/11 2003/09/11 10:55:36 LANZT _________ $SICHREC 26 2003/09/10 2003/09/10 17:58:43 LANZT _________ $TESTDSN 12 2002/01/23 2002/09/12 17:28:04 LANZT _________ #BUILDD 35 2000/04/13 2000/10/10 17:06:17 LANZT _________ §GETDB2S 19 2003/04/02 2003/04/02 09:36:37 LANZT
Example 3: Display the data set information: If we leave the above member selection panel with the PF3 key, then the previously selected DSN in DSLIST maintenance window is in the object name field. For this data set, we can now perform an action ===>. We choose the action code i to display the data set information and press ENTER. Then the data set information for this data set appears:
122 | 7 The Object/Action Workplace
Screen 7.6: Display the data set information of a DSN from the workplace Data Set Information Command ===> Data Set Name . . . :PROX.REXX General Data Management class . . : **None** Storage class . . . : DPPOOL Volume serial . . . : D1D148 Device type . . . . : 3390 Data class . . . . . : **None** Organization . . . : PO Record format . . . : FB Record length . . . : 80 Block size . . . . : 27920 1st extent cylinders: 5 Secondary cylinders : 5 Data set name type : LIBRARY Creation date . . . : 2002/09/12 Expiration date . . : ***Perm***
Current Allocation Allocated cylinders : 5 Allocated extents . : 1 Maximum dir. blocks : NOLIMIT Current Utilization Used pages . . . . : 182 % Utilized . . . . : 20 Number of members . : 51
Referenced date . . : 2004/03/25
Example 4: Show the DSLIST when using a generic mask in the DSLISTs maintenance window. If we enter the maintenance window instead of the above selection of PROX.REXX a generic mask, such as PROX.*.REXX, we get the following screen: Menu Options View Utilities Compilers Help ─────────────────────────────────────────────────────────────────────────── DSLIST - Data Sets Matching PROX.*.REXX Row 1 of 2 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume --------------------------------------------------------------------------PROX.LANZ.REXX D1D119 PROX.LOGON.REXX D1D135 ************************** End of Data Set list ****************************
Highlights relating to object/action workplace: – This system combines the advantages of the DSLIST panel, which we reach using the 3.4 selection with those of the DSLIST command. – In addition, it offers the possibility of directly maintaining DSLISTs by entering the selection (/) in a DSLIST row. – The object/action workplace can be by means of several routes reached. Here are the possibilities of the call using the commands ISPFWORK and WP in opposition to the selection of the ISPF option menu command 11 especially interesting, because this surface must not leave the current ISPF logical screen. It comes back to the same point as soon as you leave the workplace panel. – Compared with the DSLIST command to display the DSLISTs, the workplace panel has another advantage that opens the workplace panel not only to the choice of the DSLISTs, but is also still there, coming back from the selected DSLIST, which is not the case when using the DSLIST command. – The workplace panel is a dialog panel, while the DSLIST panel is a pure display and selection panel.
8 The ISPF editor The ISPF editor is the most powerful line-oriented data set editor in the world. It is therefore ideally suited to edit program source code, test data, JCL, and so on. In the following sections, I will give you different examples that show the performance of the ISPF editor. In these examples, the windows clipboard is in different ways used as a passing memory. We work here with the 3270 emulator software from IBM under Windows. The following chapters show the editor with its great features. I would like to mention for the sake of completeness: You reach the editor by selecting option 2 from the primary option menu. Usually, the editor will started directly by entering an e in front of the name of a data set in a DSLIST display. On this occasion, we might as well mention two relatives of the editor, so that we have to consider three tools: EDIT The editor itself VIEW The VIEW is usable like the editor. The difference is that the data set can be changed but not written back to the original data set of the same name. Of course, it can be under another name saved. The numbering in the left column will in a different color than in the editor displayed. All editor commands and features can used. BROWSE BROWSE only displays data. The display structure is completely different than in the editor or view, such as the colors, line numbering, etc. Other than editor and view it does, the BROWSE loads not the entire data set into the memory before the contents displayed are. Only the data part that fills one screen will be loaded. Therefore, use BROWSE if you want to see the contents of very large data set.
8.1 Table of EDIT primary commands As you already learned in the introduction section, there is a distinction between primary commands entered at the command line and the line commands that will entered in the rows (lines) within the data region of a panel. We now want to turn to the primary commands by telling you this first in the form of a table. For the detailed description of the primary commands, see the IBM brochure: ISPF edit and edit macros, Chapter 10: Edit Primary Commands.
124 | 8 The ISPF editor
Rules: Using rules concerning the syntax of the commands that are in the following tables of the primary commands and line commands listed: Uppercase letters: These texts must exactly be entered as they listed are. However, they can be in lowercase entered. Lowercase letters: These variables can be by the current values replaced. Lowercase is usable. Highlighted in grey: These are the default values (default options). In square brackets []: These operands are optional. In curly braces {}: These operands may be used alternatively. Among themselves standing operands: These operands can be used optionally. If none of these operands are selected then the default operand applies. The OR symbol (|): One of the specified operands must entered here. Table 8.1 on page 125contains the most important primary commands. The shortest possible abbreviation for the commands and the default operands are in grey highlighted: 3 Remark: For the sake of simplicity, I copied some of the original command descriptions from the IBM manual Edit and Edit Macros. I have added useful information to some commands.
8.1 Table of EDIT primary commands | 125
Table 8.1: Edit primary commands
Command
Description
AUTONUM ON] [OFF].
Controls the automatic renumbering of data when they saved be.
AUTOSAVE [ON] [OFF PROMPT] [OFF NOPROMPT]
If the data was during edit changed, the data are when you issue an END command (PF3) automatically saved.
BOUNDS [left-col right-col]
Sets the left and right boundaries.
BROWSE [member]
Browse a data set or a member of the edited PDS without leaving the current edit session. If the option member not specified is, a member selection menu will appear.
CANCEL
Ends an edit session without saving any of the changes.
CAPS [ON ] [OFF]
This command determines whether the entered text is automatically to uppercase changed. ON = yes, OFF = NO. When creating JCL this is a very useful tool.
CHANGE txt1 txt2 [range] [NEXT] [PREV]
Changes data strings. The detailed description is below.
[CHARS] [X] [NX] [col-1 [col 2]] [ALL] [FIRST] [PREFIX] [SUFFIX] [LOAD] [WORD] COPY [member] [AFTER label] [(member)] [BEFORE label] [data set name (member)] [data set
Copies a member or a sequential data set in the currently edited data set.
name] [linenum range] CRE ATE [member] [range] [data_set(member)] [data_set name]
CUT [lptr range] [DEFAULT | clipboardname] [REPLACE] [DISPLAY]
Writes the data you are editing into a library member or data set only if it does not already exist. Copies or moves selected lines from the edited data to the ISPF clipboard for later retrieval by PASTE command. See the detailed description below.
DELETE {ALL X | NX} {range X | NX} {ALL range}
Deletes lines specified in the operands from the currently edited data set.
EDIT [member]
Edits a data set or member without leaving your current edit session (recursive edit). When member not specified is, a selection menu appears.
EDITSET / EDSET
Displays the edit settings panel.
END
Ends the current edit session. This command is normally on the PF3 button.
126 | 8 The ISPF editor
Command
Description
EXCLUDE [range] [NEXT] [CHARS]
Excludes selected lines from the display in the edit panel. See the description below.
[col-1 [col 2]] [ALL] [PREFIX] [FIRST] [SUFFIX] [LOAD] [WORD] [PREV] FIND string [range] [NEXT ] [CHARS ] [X] [col-1 [col-2][ALL] [PREFIX] [NX] [FIRST] [SUFFIX]
Searches for text. Below the description of the search technology.
[LOAD] [WORD] [PREV]
FLIP [label range]
Toggles the display between the lines of the excluded and the non-excluded lines as a FLIP-FLOP.
HEX [ON DATA] [ON VERT] [OFF]
Switches the hexadecimal display of the data to on or off.
HILITE
Calls the panel to control the colored code settings.
IMACRO {name | NONE}
Saves the name of an initial macro in the edit profile.
LOCATE {label | line-number} [FIRST]
Locates a specific line of the line label or line number.
{CHANGE} [LAST] {COMMAND} [NEXT ] {ERROR} [PREV] {EXCLUDED} {LABEL} {SPECIAL} MODEL [model name [qualifier...]] {AFTER label} [NOTES] {BEFORE label} [NONOTES] or
Copies a prepared model of a command in the edit data set.
MODEL [CLASS [class name]] MOVE [member] [AFTER label] (member) [BEFORE Moves a member or a sequential data set label]
into the data you are editing.
[data set name (member)] [data set name] NONUMBER
Turns line numbering off.
NOTES [ON ][OFF]
Determines whether the rows as lines of notes or as program lines will inserted be when inserting a model.
NULLS [ON STD] [ON ALL] [OFF]
Controls null spaces.
NUMBER [ON] [STD] [DISPLAY] [OFF] [COBOL]
Sets the line-numbering mode.
[STD COBOL] [NOSTD] [NOCOBOL] [NOSTD NOCOBOL] PACK [ON ][OFF]
Determines whether the data in the store are compressed.
PASTE [clipboardname][AFTER label] [BEFORE
Moves or copies the data from the clipboard into the currently edited data set. Previously must data be stored in the clipboard using CUT.
label] [KEEP]
PRESERVE [ON ][OFF]
Determines whether trailing blanks when the data are stored saved are.
8.1 Table of EDIT primary commands | 127
Command
Description
PROFILE [name] [number] or
Calls the profile editor. Sets the profile mode LOCK / UNLOCK.
PROFILE {LOCK | UNLOCK} RCHANGE
Repeats the most recently processed CHANGE command. Is normally located on the PF6 button.
RECOVERY [ON | OFF] [WARN | NOWARN | SUSP]
Controls edit recovery.
RENUM [ON ] [STD] [DISPLAY] [COBOL] [STD
Renumbers currently edited lines.
COBOL] REPLACE [member] [range] or REPLACE [data set name (member)] [range] or REPLACE [data set (member)] [range] or REPLACE [data set] [range] RESET [CHANGE] [range] [COMMAND] [ERROR] [EXCLUDED] [FIND] [LABEL] [SPECIAL]
Replaces a member or a sequential data set with data from the edited data set. Acts the same as CREATE. The receiving data set will overwritten. Resets various display states in the edited data set. RES without operands resets everything.
RFIND
Locates the data string defined by the most recently processed SEEK, FIND, or CHANGE command or excludes a line that contains the data string from the previous EXCLUDE command.
SAVE
Saves the edited data. The UNDO information will revoked be.
SETUNDO [STORAGE | RECOVER] [OFF]
Sets the UNDO options.
SORT [range] [X] [sort-field1... sort
Sorts the currently edited data.
field5] [NX] STATS [ON ] [OFF]
Specifies whether PDF library statistics are, when this member saved is, created.
SUB[Range]
Submits a section or the entire data you are editing to run as a batch job.
TABS [ON] [STD][OFF] [ALL] [tab-character]
Defines tab positions for software, hardware and logical tabs.
UNDO
Removes the data modifications of a previous interaction. The UNDO command may repeatedly entered to restore the changed data systematically.
UNNUMBER
Removes sequence numbers in the edited data set.
VIEW [member]
Views a data set or member without leaving your current edit session.
128 | 8 The ISPF editor
Operands of the edit primary commands: Table 8.2 provides a brief description of the main operands to the above commands: Table 8.2: Operands of edit primary commands Operand
Description
[member]
Here you must specify the name of a member. This name must not be longer than 8 characters. Searches for the first or last occurrence of the text.
[first] [last] [next] [prev] [PREFIX] [SUFFIX] [x] [nx] all col 1 col 2 data_set label label range linenum range lptr col lptr range string
This operation should carried out only up to the next or to the previous occurrence of the condition. The specified text is in finding as a PREFIX or as a SUFFIX considered. The operation shall work only on the excluded rows(x) or on the not excluded rows (nx). This operation will affect all lines of the data set. Two integers limiting an operation within the specified columns. Data set name. Name of a designated line. Consists of a pair of edit labels of the form .LA and .LB. Standard labels can be either .ZF and .ZL or custom edit labels. Only letters may follow the point! Two integer variables or constants representing a starting and an ending line for an operation. Integers that contain a line number and a column number. Two integers that specify the first and last line for an operation. Text that must not enclosed in quotes.
8.2 Table of EDIT line commands The first six columns of the editor are used for entering line commands. These commands occur separately or in pairs. If they occur in pairs, they are called block commands. A block command consists of two consecutive single-line command characters in one line. Block commands combine multiple lines into a block to be edited together. A block of lines begins with a block command in a line and ends with the same block command in a different line. All operations of both individual line commands and block commands will only pertain to the conditions laid down in the BOUNDS zones! The command syntax is the same as for the primary commands. Here is the table of the edit line commands. The default assumptions are highlighted grey:
8.2 Table of EDIT line commands | 129
Table 8.3: Edit line command summary
Command
Description
([n] [2] (([n] [2]
Shifts columns two positions to the left or the specified number of positions defined by n.
) [n] [2] ))[n] [2]
Shifts columns two positions to the right or the specified number of positions defined by n.
< [n] [2] < < [n]
The < (data shift left) line command moves the body of a program
[2]
statement to the left without shifting the label or comments. This command attempts to prevent loss of data.
> [n] [2] > > [n]
The < (data shift right) line command moves the body of a program
[2]
statement to the left without shifting the label or comments. This command attempts to prevent loss of data.
A [n] B [n]
Identifies the row behind the (A) or before (B) an insertion will made.
BOUNDS
Displays the definition line for the column boundaries.
C [n] CC
Copies one or more lines to another location, which must be addressed before with A or B.
COLS
Displays the column identification line.
D [n] DD
Deletes one or more rows (D = delete).
F [n]
Displays one or more lines at the beginning (F = first) of a block of EXCLUDED lines again.
I [n]
Adds one or more blank lines to the purpose of data entry (I = insert).
L [n]
Displays one or more lines at the end (L = last) of a block of EXCLUDED lines again.
LC [n] LCC LCLC
Converts one or more lines of capital letters in lowercase. (LC = lowercase))
M [n] MM
Moves one or more rows to another location, which must be addressed before with A or B.
MASK
Displays the mask line.
MD [n] MDD
Converts (MD = make one model line) one or several (MDD = make a block of model lines) like ==MSG, =NOTE=, = COLS, and ==== (information) rows into rows of data so that it (they) can be saved as part of your data set.
O [n] OO
Defines one or a set of lines to the destination of an overlay (O = overlay) by other lines that are previously selected by M, MM, C, or CC.
R [n] RR [n]
Repeats one or a block of lines (R = repeat).
TABS
Displays the tab definition line.
TE [n]
Inserts blank lines for the purpose of quick entry (TE = text entry).
UC [n] UCC UCUC
Converts all lowercase alphabetic characters in a line or a block of lines to uppercase
X [n] XX
Excludes one or more lines from display. All EXCLUDED lines are again brought to display with RES.
130 | 8 The ISPF editor
8.3 Displaying and maintaining an edit profile Like all complex systems, the editor also has a control element called Profile. You can of course look at these profiles and the options contained therein can to your needs be changed. There are two different commands with which you can control the profile options for the editor. Both commands are only usable if an EDIT or VIEW session is active. 1. Command: EDSET/EDITSET 2. Command: PR/profiles
8.3.1 Setting EDIT options with EDSET/EDITSET EDSET sets the global settings for the work with the editor within the environment of an ISPF user. These settings then apply for all edit sessions of the ISPF user. The call to this function is by entering the commands EDSET or EDITSET carried out in the command line of an edit session and pressing ENTER. Then, the following POP UP panel appears: Screen 8.1: Edit and view settings Edit and View Settings Command ===> More:
+
Settings for current and future Edit and View sessions: User session initial macro . . . . . . . . . . . . . . #LIMACA Maximum initial storage allowed for Edit and View . . 0 Target line for Find/Change/Exclude string . . . . . . 5 Enter "/" to select option _ Always position Find/Change/Exclude string to target line / Remove action bars in ISPF edit and view panels _ Force ISRE776 if RCHANGE passed arguments CUT default . . 1
1. Append 2. Replace
PASTE default . . 1
1. Delete 2. Keep
Settings for future sessions. Select Apply Setting Immediately for the setting to affect the current session as well. Enter "/" to select option / Confirm Cancel/Move/Replace _ Preserve VB record length
/ /
Apply Setting Immediately Apply Setting Immediately
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.
8.3 Displaying and maintaining an edit profile | 131
Maximum initial storage allowed for edit and view ... 0 This number identifies the maximum amount of memory in kilobytes, which the system makes available for EDIT/VIEW sessions. If a called data set is too large for the specified memory size then the system automatically switches to a BROWSE session. If the specified number is zero then the system uses all available memory. If this space is not sufficient then the call attempt ends with an error. I suggest leave this option always on zero. Target line for find/change/exclude string ... 5 This statement works only when the following option enabled is: Always position find/change/exclude line string to target If this is the case, the editor automatically positions the first line found out when the above-mentioned operations performed are, as the fifth row from the top of the display. This option is something for fans of this function. Test the function and decide whether you want to work with it or not. Always position find/change/exclude line string to target If this option is set, the pointer will always jump in a seek to the localized position Remove action bars in ISPF edit and view panel Through this option, you can set that in the EDIT/VIEW panels the action bars are hidden. As a result, you have a line more in the EDIT/VIEW display available. I like using this option. CUT default / PASTE default Understand these entries if you are to do this. See the chapter CUT and PASTE on page 159. Then use this option at your own convenience. Confirm Cancel/move/replace This option sets that, if during the execution of one of the above operations, you would overwrite data, you will prompted with a panel for confirmation. Let this option always set to on. Apply setting immediately With these two options, you can determine that changes you make in this panel made immediately after pressing the PF3 button to be effective or at the next EDIT session. I let these options always on.
132 | 8 The ISPF editor
8.3.2 EDIT profile settings and their use The EDIT profile set specific processing rules for the EDIT sessions. You can name the EDIT profiles and attach them to certain data set types. Then, you can use the name when calling these data set types in the edit panel (option 2 in the ISPF). This is normally unnecessary, however, because the different profiles are automatically associated to the data set types (LLQs) of the ISPF. This automatic function requires that you use a consistent data set name concept however. We want to look at such a profile. To do this, proceed as follows: 1. We edit a member in a JCL data set. 2. We enter the command profiles 9 in the command line and press ENTER. With the 9 behind the command, we tell the editor to show us all the rows of the profile. The maximum number of lines in the profile display is in fact nine. He would otherwise show only the first five lines. 3. And the following screen is displayed: Screen 8.2: Display the edit profile EDIT SQMT.JCL(IDCAMS) - 01.02 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** =PROF> ....JCL (FIXED - 80)....RECOVERY ON....NUMBER OFF =PROF> ....CAPS ON....HEX OFF....NULLS ON STD....TABS OFF....SETUNDO STG =PROF> ....AUTOSAVE ON....AUTONUM OFF....AUTOLIST OFF....STATS ON. =PROF> ....PROFILE LOCK......IMACRO #LIMAC1....PACK OFF....NOTE ON. =PROF> ....HILITE JCL PAREN CURSOR FIND =TABS> =MASK> =BNDS> < > =COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-000001 //* DOC: JCL IDCAMS ************************************************* 000002 //* DOC: EXECUTE PROGRAM IDCAMS * 000003 //* (C) LANZT AT: 7 MAY 2002 * 000004 //********************************************************************* 000005 //IDCAMS EXEC PGM=IDCAMS 000006 //SYSPRINT DD SYSOUT=* ==CHG> //IN DD DISP=SHR,DSN=SQMT.LOAD(ENRDB200) 000008 //SYSIN DD * 000009 PRINT INFILE(IN) DUMP ****** **************************** Bottom of Data ****************************
In the edit profile, there are two groups of entries: – The =PROF> lines containing the related profile options. – Miscellaneous lines.
8.3 Displaying and maintaining an edit profile | 133
The most important = PROF> options: JCL (FIXED - 80) The data set name type of this data set is JCL. This is from the last qualifier of the DSN SQMT.JCL derived. The records are FIXED and the LRECL is 80 bytes. Starting from this type of data the JCL lines will displayed in cooperation with the option defined with HILITE JCL data according to the type of JCL as colored code. RECOVERY ON RECOVERY ON means that all changes are during editing logged. This has two advantages: – You may withdraw all changes with UNDO while editing systematically. – If during an edit session a system crash occurs, you can continue this edit session, when the system is running again. This recovery action is automatically by the system offered when you call the editor the first time after a restart. I recommend to always working with RECOVERY ON. NUMBER OFF The lines of the data set are not numbered. NUMBER ON STD would number lines on the columns 73-80. CAPS ON When entering text while editing, each ENTER will transfer the entered characters to uppercase. This is of course important for JCL lines because these lines must always be in uppercase created. The editor when calling an edit session of a JCL data set may automatically set this mode. This option works in the following way: When you edit a data set in which CAPS OFF was during the last session used and the editor finds that only text with uppercase letters exist in this data set, the editor uses then CAPS ON autonomous. Conversely, it works the same with CAPS OFF. This effect will be with a warning announced. NULLS ON STD NULLS ON means that blanks will with NULLS filled at the end of the text of the line. When NULLS is active, text can be in a row inserted without deleting previously the required number of characters. PROFILE LOCK With this option, you can protect the profile from override. If this option is set to LOCK the profile, when leaving an edit session, is not during the profile changes
134 | 8 The ISPF editor
made in the edit session overwritten. You can still change the profile during the session, and these changes remain active during the session. This option prevents that changes in the profile lead at later edit sessions to surprises. Here above all the =BNDS> line is mentioned, which is explained below. When PROFILES LOCK is set, the current contents of the profile will saved. IMACRO #IMACRO1 MACRO stands for Initial Macro and means that the edit macro #IMACRO1 will executed before the display of the edited data set appears. The macro #IMACRO1 is in Volume 2 in the chapter on the edit macros in detail discussed. HILITE JCL This means that the lines in this data set are color designed along the lines of JCL. See the section 8.4 Colored code for EDIT and VIEW on page 135. SETUNDO STG The information for undo changes made are stored in the main memory (STG = storage). The miscellaneous lines: The miscellaneous lines can be as input and structuring help used. You can as often as needed insert them in the edit text. If you save the data set, they will not save together with the data and will therefore not contain in the data set when it is in the next edit session reused. =TABS> They contain tab items that are bound to when entering new lines. =MASK> This line contains a mask that is already contained in new inserted rows. =BNDS> This line defines the left and right column boundaries within which the edit command works. =COLS> This line is a mask that contains a column counter.
8.4 Colored code for EDIT and VIEW | 135
3 Remarks to edit profiles: – You can turn off the display of profile lines with the RESET or RES command. – When leaving the edit session will the content of the profile only then saved in the profile ISPF pool when PROFILE LOCK is not set. – The profile definitions apply automatically to all data sets with the same data set type, thus the same LLQ (last level qualifier) within our ISPF sessions. If a different TSO user calls up the same data set it can use entirely different profile options for this data set type. – You should use the LOCK PROFILE option so that you do not experience through an even leftover incorrectly set =BNDS> line unpleasant surprises. – PROFILE LOCK does not save the CAPS, NUMBER, STATS and PACK modes. They are set automatically according to the content of the data from the editor.
8.4 Colored code for EDIT and VIEW After we have briefly handled the topic of the colored design of the lines of specific data set types by the editor in the chapter about the profiles of the editor, we now want to concentrate on this topic. Unfortunately, I cannot demonstrate these beautiful assistant features because colored printing would have pushed up the price of this book significantly. However, I will try to lead you to the benefits of this institution through appropriate references in mind.
8.4.1 Colored code - what is it? Perhaps you have an editor already in another system seen who has offered the colored code representation for programs in C or Java. If this is not the case, I want to explain what benefits are in the display of the ISPF editor colored code. – Pairing of brackets will reviewed and if the pairing is not valid, it will be marked with different colors. – The commands of programming language might appear in a different color than the other texts. – Comments might be shown in different colors. The beginning and end of comments can be readily detected. – The pairing of DO-END sections is easily checkable. – Incorrect continuation lines could be marked. All this and much more is offers the colored code feature of the ISPF editor! For a comprehensive description of this topic, see the brochure of ISPF edit and edit macros in the chapter: Enhanced and Language-sensitive Edit coloring. On the following pages, I will introduce this technique, and I will give you some tips and tricks.
136 | 8 The ISPF editor
8.4.2 Setting the colored code For setting up the colored code the edit command HILITE is used. This command can be in two ways applied: – As a command to set individual options by typing in the command HILITE in the command line accompanied by one or more operands. – As a command to invoke the HILITE dialog. To do this, just type in the HILITE command in the command line without operands. 1 Tip: I recommend to always using the HILITE dialog because this dialog panel offers you more options. You are able to perform your desired settings specifically in this panel.
Now we want to look at this dialog. For this purpose, I have called a REXX procedure in the editor and entered the HILITE command without any operands. The following pop-up panel appears: Screen 8.3: Edit color settings panel ISREDDE4 XYZMSTR.BOOK.REXX(SSC) - 01.01 Columns 00001 00072 *----------------------------------------------------------------------------* | File Languages Colors Help | | ------------------------------------------------------------------------- | | ISREP1 Edit Color Settings | | Command ===> | | | | | | More: + | | Language: 14 1. Automatic Coloring: 3 1. Do not color program | | 2. Assembler 2. Color program | | 3. BookMaster 3. Both IF and DO logic | | 4. C 4. DO logic only | | 5. COBOL 5. IF logic only | | 6. HTML | | 7. IDL Enter "/" to select option | | 8. ISPF DTL / Parentheses matching | | 9. ISPF Panel / Highlight FIND strings | | 10. ISPF Skeleton / Highlight cursor phrase | | 11. JCL | | 12. Pascal Note: Information from this panel is | | 13. PL/I saved in the edit profile. | | 14. REXX | | 15. SuperC | | 16. XML | | 17. Other | | 18. Default | *----------------------------------------------------------------------------* 000024 /* Check availability of the model data set. */ 000025 /*******************************************************************/ 000026 "LMINIT DATAID(INID) DATASET('"olddsn"')"
8.4 Colored code for EDIT and VIEW | 137
I have grayed out the important points in this Panel: REXX This is the LLQ (last level qualifier) in the data set XYZMSTR.BOOK.REXX(SSC), from which I have called the member SSC in the editor. When I dialog settings in the HILITE dialogue have performed and I press then the PF3 button to leave the edit session, then will these HILITE settings in the ISPF profile data sets saved.. Henceforth these HILITE settings apply to all data sets with LLQ REXX. They are also applied to members who are in the same data set but do not contain REXX program code. Language: Here we must specify for which language the colored code is defined. In that case, we select 14 for REXX. Coloring: With this choice we set, the kind of monitoring with the corresponding color design we want to have displayed. Best is to choose 3 because we want to get the optimal benefit from colored code facility. For example, I added too many END statements in the following part of the program. This odd END is marked therefore inverse: do i = 1 to 20 If xxx = yyy then do end end i end 1 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
138 | 8 The ISPF editor
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. //ISPPROF // //
DD DISP=(NEW,PASS), DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)), SPACE=(TRK,(5,5,10,RLSE),UNIT=VIODA
Highlight FIND strings If this option enabled is, then will all texts, which a FIND command finds, shown in highlight inverse. Example: In an edit session of a JCL data set, I have entered the command find iefrder. The found bodies will then represented as highlight inverse. Here, they are in grey highlighted: //SYSIN //IEFRDER
DD DD
DDNAME=IEFRDER DUMMY,DCB=BLKSIZE=80
Highlight cursor phrase This option makes the part of the text where the cursor after an ENTER is, represented with highlight invers. 3 Remarks to the colored code and HILITE: – The settings you make with the HILITE tool always apply to all data sets that have the same LLQ. – When you create backups or clones of data sets and a colored code is set up for that, then make sure that the LLQ in the new data set name is maintained. For example, if you create a copy of the USERID.JCL, then name the new data set USERID.SAVE.JCL and not USERID.JCL.SAVE. When I create backup files, I frequently define the DSN of the backup file so that I append the LLQ additionally to the original DSN, regardless of whether the original file already has the same LLQ. E.g. is the name of the original data set USERID.JCL, then I choose for the backup data set USERID.JCL.JCL. You can assign the same HILITE options to different LLQs. For example, in the data set – LANZT.LOGON.CLIST the most members are REXX procedures. Therefore, here the HILITE options are the same as for the data sets with the LLQ REXX. – You should define a naming concept for the LLQs of the data sets for which you want to use colored code. Select DSNs as short as possible. This facilitates the overview and saves a lot of typing. – You should never save your JCL members in the same data sets where the REXX source codes are. When doing so, you must either permanently change the colored code settings or accept a slightly odd colored code representation for one of the two types of data sets. – On the following page you will find recommendations how to select the LLQs for your program data sets
8.5 Edit recovery | 139
8.4.3 Uniform last level qualifier As you can see from the above, it is very important to choose the right LLQs when creating data sets that are for use program libraries and JCL. The proposals in the following table can be as a guidance used: Table 8.4: Proposals for last level qualifiers HILITE selection
LLQ
Contents of the data sets
Assembler C COBOL ISPF panel ISPF skeleton JCL PL/I REXX
ASM C COBOL, COB PANELS SKELS PROCLIB, JCL, CNTL PLI, PL1 REXX, CLIST
Assembler programs C programs COBOL programs Data sets of the ISPF panels Data sets of the ISPF skeletons Data sets with JCL members PL1 programs REXX programs
8.5 Edit recovery We have looked at the treatment of profile options already under option RECOVERY ON/OFF. Now we want to take a closer look at the subject of edit recovery. You probably already worked with text systems in the PC area and what the function of the Edit/Undo offers. Exactly the same function will also found in the IPSF with the establishment of the Edit Recovery. Establishment of the ISPF edit recovery offers the following possibilities: – Changes in the current edit operation you may withdraw gradually. – You can recover the edit after a system crash at the point at which it interrupted was. The requirement for the availability of this function is that you have in the edit profile option RECOVERY ON set. SETUNDO RECOVERY can switch on the recovery function even indirectly. See the next chapter. What happens when a file is edited, for which RECOVERY ON is already active or re-set? As soon as a first change is made in the data set and this change is activated through an ENTER or PF button a recovery data set is created. Henceforth, all changes will be logged during the edit session in this data set. It is used as a data
140 | 8 The ISPF editor
source for the UNDO command (in the SETUNDO RECOVERY) and as a backup for the RECOVERY process after a hard crash of the editing session. Examples of recovery data sets: I have totally four edit sessions in my TSO user open and carried out a change in each. After that, I could find the following recovery data sets: LANZT.ISR8195.BACKUP LANZT.ISR8203.BACKUP LANZT.ISR8211.BACKUP LANZT.ISR8217.BACKUP
PS PS PS PS
U U U U
0 0 0 0
13680 13680 13680 13680
If my TSO user would now be shot down by an operator intervention or by a system crash, I could continue editing, when the ISPF is available again, using my four edit sessions. However, here do you ask How does the system know after a restart that edit recovery data sets are pending? To answer this question, I need to explain the operation of the recovery mechanism: As soon as the first change of data in an edit session carried out is, happens the following: – The ISPF editor creates an Edit Recovery Data Set. – An entry will in the user PROFILE member ISREDRT inserted containing the name of the edited data set and the name of the corresponding recovery data set. Thereafter, the member ISREDRT is immediately to the profile data set ISPPROF saved. If the edit session terminates, the following normally occurs: – The entry in the member ISREDRT will deleted and the member will immediately written back into the profile data set ISPPROF. – The editor deletes the edit recovery data set. 4 Caution: With this recovery mechanism, a difficult situation can arise: If your TSO session aborted was and one of the recovery data sets is for whatever reasons no longer available after restarting your ISPF, then ISPF tries on each editor invocation to start the recovery for the aborted edit session, but the corresponding data set cannot be found. In this case, you only have the possibility to abort the recovery process with CANCEL. In this case, the changes contained in the data set recovery are irretrievably lost.
8.7 Turn the UNDO function on and off | 141
8.6 The UNDO function You probably know the UNDO function of systems in the PC area. The almost same functionality is available in the ISPF editor. Just like in PC systems, you can in the ISPF editor with UNDO your last made changes to the edited data set systematically and in reverse order take them back. The main difference is that once redeemed with UNDO, changes cannot be restored as with most PC systems. However, unlike the systems in the PC area, the UNDO function must explicitly activated by enabling it. Nevertheless, when the UNDO function once enabled is, it remains for the edit profile that was in use, permanently on because this status will in the edit profile saved. The undo function can retrieve the data for canceling the changes from two different sources: – From the recovery data set. – From main memory. Under what circumstances these two possible sources tapped are, depends on the status command, which has been last with the SETUNDO command used.
8.7 Turn the UNDO function on and off The UNDO state will with the edit primary command SETUNDO changed. This command has some operands: SETUNDO STORAGE | RECOVER | ON | OFF The operands: STORAGE ON Enables the UNDO function and addresses the main memory for storing the UNDO data. In the edit profile the entry SETUNDO STG appears. As of now, the changes made in the edit session are stored independently of the RECOVERY status in the main memory and retrieved from there when entering the UNDO command. STORAGE OFF Disables the main memory as storage location for the undo data and defines the disk storage as memory for the undo information. Depending on the current recovery status, there are two possibilities: – The recovery status is OFF. Then SETUNDO will turned OFF and the undo command is no longer applicable. – The recovery status is ON. Then automatically SET UNDO RECOVER will turned on and the undo information is stored from now on in the recovery data set.
142 | 8 The ISPF editor
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: ....REXX (FIXED - 80)....RECOVERY ON....NUMBER OFF ....CAPS OFF....HEX OFF....NULLS ON STD....TABS OFF....SETUNDO REC ....AUTOSAVE ON....AUTONUM OFF....AUTOLIST OFF....STATS ON. ....PROFILE UNLOCK....IMACRO #IMACRO1....PACK OFF....NOTE ON ....HILITE REXX LOGIC PAREN CURSOR FIND
Recovery is on. The undo data set is the recovery data set ....REXX (FIXED - 80)....RECOVERY ON....NUMBER OFF ....CAPS OFF....HEX OFF....NULLS ON STD....TABS OFF....SETUNDO STG. ....AUTOSAVE ON....AUTONUM OFF....AUTOLIST OFF....STATS ON ....PROFILE UNLOCK....IMACRO #IMACRO1....PACK OFF....NOTE ON ....HILITE REXX LOGIC PAREN CURSOR FIND
Recovery is on. Undo data are stored in the main memory. ....REXX (FIXED - 80)....RECOVERY OFF....NUMBER OFF ....CAPS OFF....HEX OFF....NULLS ON STD....TABS OFF....SETUNDO STG. ....AUTOSAVE ON....AUTONUM OFF....AUTOLIST OFF....STATS ON ....PROFILE UNLOCK....IMACRO #IMACRO1....PACK OFF....NOTE ON ....HILITE REXX LOGIC PAREN CURSOR FIND
Recovery off. Undo data are stored in the main memory.
8.8 FIND and CHANGE | 143
....REXX (FIXED - 80)....RECOVERY OFF....NUMBER OFF ....CAPS OFF....HEX OFF....NULLS ON STD....TABS OFF....SETUNDO OFF. ....AUTOSAVE ON....AUTONUM OFF....AUTOLIST OFF....STATS ON ....PROFILE UNLOCK....IMACRO #IMACRO1....PACK OFF....NOTE ON ....HILITE REXX LOGIC PAREN CURSOR FIND
Recovery is off. Undo is not possible. The following list contains the conditions, under which no UNDO, or after the occurrence of which UNDO is no longer possible: – If a SAVE command is by manual input issued or by an edit macro, all undo information will deleted. – Changes performed by an Initial Edit Macro or a Recovery Edit Macro cannot be restored by undo. – When a global change is performed using the ALL option, the changed lines are marked with a CHG==> indication in the line command column. These indications can deleted using the RESET or RES command. The display of the CHG==> indication cannot using the undo command be resumed. – Because all changes during an edit session only refer to the data stored in memory, changes made in other data sets performed by the edit command CREATE, REPLACE, MOVE, cannot be withdrawn using undo. – However, if you removed some lines just located in the edit data set using the MOVE line command (e.g. CUT or CREATE), you can get them back again using undo. The target content in the other data sets will retained even when you retrieve moved data.
8.8 FIND and CHANGE The commands FIND and CHANGE only differ by the fact that even the replacement text is behind the search string in the change command specified. Therefore, the following descriptions apply to both commands.
8.8.1 Definition of search operands The structure of the operands for the following commands is almost the same and can be discussed together. These commands are: FIND, CHANGE, EXCLUDE with their abbreviations F, C, X
144 | 8 The ISPF editor
Usable command abbreviations: CHANGE CHA, CHG, C, FIND F EXCLUDE EXC, EX, X The command structure looks like this: string [range] [NEXT ] [ALL ] [FIRST] [LAST ] [PREV ]
[CHARS ] [X ] [col-1] [col-2]] [PREFIX] [NX] [SUFFIX] [WORD ]
string For a change command, string consists of two texts, namely the search text and the replacement text. All other commands governed by this structure string only consist of a single text. [range] When this operand specified is, it must consist of a pair of line labels (.a .b). The command operates only within the rows specified by the range. The order of the labels is arbitrary. The operation always works from the line with the smaller line number to the line with the higher line number defined by the labels. [NEXT] Specifies the operation direction downwards. In repeated executions using RFIND or RCHANGE only one command is executed. [ALL] Specifies that the entire edited data set be used by the command. So also the excluded 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.
8.8 FIND and CHANGE | 145
[PREV] Specifies the direction upwards. In repeated executions using RFIND or RCHANGE only one command is always executed. [CHARS] Use this option to find all characters of the search text. [PREFIX] Use this option to find only those texts where the search text at the beginning of a word is contained. [SUFFIX] Use this option to find only those texts where the search text at the end of a word is contained. [WORD] Use this option to find only those texts where the search text appears as a complete word. [X] Use this option to search only in excluded lines. [NX] Use this option to search only in NOT excluded lines. [col-1] [col-2] It searches only within the specified columns. When only col-1 specified is, only these rows will found, in which the search text starts exactly in this column. When col-2 is greater than the LRECL of the data set col-2 is automatically set to LRECL.
8.8.2 Definition of simple search texts When a plain text searched is, it is sufficient to specify this in the search text as well as in the replacement text.
146 | 8 The ISPF editor
Example: c Jim will all Jim is replaced by will in the entire data set, where will is always set in lowercase, even if JIM or jim or Jim is found. If texts contain blanks or special characters, you should always specify them in quotes. It is possible to use in string pairs the ' (apostrophe) character as well as the " (quotation mark) character. This opens the possibility also to replace these characters by making use of the respective other character as a delimiter. Example: c "'CAFOPEN'" '"CAFOPEN"'all Result: 'CAFOPEN' will replaced by "CAFOPEN" in the entire edited data set.
8.8.3 Definition of special search texts As in the following versions to use the change command shown, you can search texts build up so sophisticatedly, that really no wish remains unfulfilled. These specific definitions are into five categories divided.
1. Delimited strings A delimited string begins and ends with a single apostrophe (') or a single quotation mark ("). There are some special cases, where a delimited string must be used as search or replace text. In case of doubt use delimited strings, then you are always on the safe side. For the following cases, you must use delimited strings: – If the search string contains the following characters: blanks, commas, apostrophes or quotation marks. – If the text can be interpreted as keyword or column specification. – If the text contains asterisks (*). Examples: find find find find find find
"do it" '*' 'all' first all 'first' "Willie's" 'Part "A"'
Search a text containing a blank. Search a text contains an asterisk. Search the first occurrence of the text all. Search all lines that contain the text first. Search a text containing an apostrophe. Search a text containing a quotation mark.
8.8 FIND and CHANGE | 147
2. Hex strings To find or replace hexadecimal characters use hex strings. A hex string is a string enclosed by quotes, front or rear contains an X. The string of hex strings must be consist of an even number of characters and may only contain the characters 0-9 and A-F. Examples: find x'00' f 'ffff'x c x"f1f2" AB c "a1a4"x "44"
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 String
Used for
P'=' P'¬' P'.' P'#' P'-' P'@' P'' P'$'
any sign any character except blank unrepresentable special characters numeric characters nonnumeric characters each alpha character lowercase letters uppercase letters special characters
The following table shows some typical examples for the definition of picture strings: String
Looking for
FIND P'###' FIND P'¬ ¬' FIND P'.' FIND P' #' FIND P'#AB' FIND P'¬' 72 C ALL P'='''73 80 FIND P' ¬' 1
a three-digit number a blank between two characters unrepresentable characters a blank that is followed by a number a number that is followed by the sign off the first non-blank character in column 72 replaces all characters in columns 73-80 that are not blank a row that has a blank in column 1 and in column 2 a character other than blank
148 | 8 The ISPF editor
1 Tip: If the editor find characters in a string when searching, it displays them in the short message line (top right of the screen) in hex representation. It searches only within the specified columns. When only col-1 specified is, only these rows will found, in which the search text starts exactly in this column.
The following example will show that: The search is looking for four consecutive nonprintable characters. Screen 8.4: Looking for nonprintable characters VIEW PROX.CEXEC(ALIASUM) - 01.00 CHARS X'001F1623' found Command ===> f p'....' Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 å ÐEXECPROCEAGRTPRC Compiled REXX 3.0 11 Dec 2001 13:49:43 MVS REXX 000002 i ÂhÂì0ä áÖ0 & Âåø& & q ü Ú k 000003 " Ø µ ° ü ü « q 000004 i dJÇì0äYáÖ0 ìøµ¢ì0ä4áÖ0 øÿm ØR ì0A áÖ0äì0äðáÖ0 i d|Çì0äðá
You can also use picture strings in a limited way by the replacement text of a change command. The following rules must observed: Rules: The replacement text must be exactly as long as the search text. Only the characters =, can be used. Example: The command c all p'' converts all lowercase letters in a data set to uppercase letters. That goes with this command in any case faster than with the CC block line command in the first and last line.
4. Character strings Character strings in the search text must be case-sensitive.
8.9 Exclude | 149
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 EDIT SMQP.JCL(BNDUMSPP) - 01.03 All lines excluded Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** - - - - - - - - - - - - - - - - - 121 Line(s) not Displayed ****** **************************** Bottom of Data ****************************
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 EDIT SMQP.JCL(BNDUMSPP) - 01.03 2 CHARS 'PGM=' Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** - - - - - - - - - - - - - - - - - - - 14 Line(s) not Displayed 000015 //IEBCOPY EXEC PGM=IEBCOPY,REGION=20M,PARM='COPY,LIST=NO' L3- - - - - - - - - - - - - - - - - - 8 Line(s) not Displayed 000024 //PRODUMS EXEC PGM=IKJEFT01,REGION=20M,DYNAMNBR=99 - - - - - - - - - - - - - - - - - - - 48 Line(s) not Displayed ****** **************************** Bottom of Data ****************************
The following commands can used to display the invisible lines immediately before or after a visible line: Ln Fn
This line command makes n lines before a visible line also visible. L means last. This line command makes n lines after a visible line also visible. F means first.
150 | 8 The ISPF editor
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: EDIT SMQP.JCL(BNDUMSPP) - 01.03 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** - - - - - - - - - - - - - - - - - - - 14 Line(s) not Displayed 000015 //IEBCOPY EXEC PGM=IEBCOPY,REGION=20M,PARM='COPY,LIST=NO' - - - - - - - - - - - - - - - - - - - 5 Line(s) not Displayed 000021 //********************************************************************* 000022 //* PRODUCE NEW MEMBERS 000023 //********************************************************************* 000024 //PRODMEM EXEC PGM=IKJEFT01,REGION=20M,DYNAMNBR=99 - - - - - - - - - - - - - - - - - - - 48 Line(s) not Displayed ****** **************************** Bottom of Data ****************************
1 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.
3 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!
1 Tip: When only such lines should be displayed, which the search string contain, do the following: Exclude all lines with x all and then perform the search.
8.10 SHIFT and OVERLAY 3 Preliminary remark: In the next chapters many RENAME statements will generated, which must be by the TSO processor executed. These rename statements are in REXX procedures however. For those of the readers who are not familiar with the REXX programming in z/OS, I must first explain how the rename statements come from the REXX procedure to TSO for execution. However, it is quite simple: If the REXX processor a command line that in quotation marks enclosed is detects, then it assumes that this a TSO command is and it is immediately to the TSO processor for execution sent.
8.10 SHIFT and OVERLAY | 151
It happens very often that you have to rename several or many data sets or members. This can be done manually. Such a practice is, however, tedious and error prone. Even if there are more than one or two names that need to be changed, it is worthwhile to build a procedure and perform this job by executing only this procedure. A procedure for a rename action has the following advantages: – It is relatively safe from clerical errors, as the new names were generated using CHANGE commands in the procedure. The accuracy of the new names can be before the procedure runs checked. When you have manually performed a rename, and a character in the new name is typed in wrong and you have pressed ENTER without noticing the error, it may happen that you will never find the renamed element again. – The procedure is still available after first-time use. This means if something went wrong, you can still detect and correct the error by checking the rename protocol. – If there is a large number of names to rename, the only practical way is to use a procedure.
8.10.1 Example one for using OVERLAY Task: In the course of a reorganization of a collection of data sets, the data set names should be in such a way amended that a further qualifier can be behind the first qualifier inserted. Assume that all data sets named TEST.LOGON.* shall be renamed in TEST.HUGO.LOGON.*. We get the file names of the data sets renamed due to entering a suitable mask to display the data sets involved in the menu 3.4. Thus, we get the following screen: DSLIST - Data Sets Matching TEST.LOGON Command ===>
Row 1 of 16 Scroll ===> CSR
Command - Enter "/" to select action Message Volume -----------------------------------------------------------------------------TEST.LOGON.ASM D1D156 TEST.LOGON.ASM.ASM D1D120 TEST.LOGON.CEXEC P0XYZ1 TEST.LOGON.CEXEC.CEXEC D1D139 ***************************** End of Data Set list ****************************
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:
152 | 8 The ISPF editor
EDIT TEST.LANZ.REXX(RENAME) - 01.09 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 /* DOC: REXX RENAME ************************************************/ 000002 /* DOC: Perform Mass Data set RENAME */ 000003 /* (c) LANZ am: 7 May 2012 */ 000004 /*********************************************************************/ 000005 trace i 000006 "PROFILE NOPREFIX" 000007 "RENAME ****** **************************** Bottom of Data ****************************
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: EDIT TEST.LANZ.REXX(RENAME) - 01.09 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** xx0001 /* DOC: REXX RENAME ************************************************/ 000002 /* DOC: Perform Mass Data set RENAME */ 000003 /* (c) LANZ am: 7 May 2002 */ 000004 /*********************************************************************/ 000005 trace i xx0006 "PROFILE NOPREFIX" 000007 "RENAME TEST.LOGON.ASM 000008 "RENAME TEST.LOGON.ASM.ASM 000009 "RENAME TEST.LOGON.CEXEC 000010 "RENAME TEST.LOGON.CEXEC.CEXEC ****** **************************** Bottom of Data ****************************
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. 4 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: EDIT TEST.LANZ.REXX(RENAME) - 01.09 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** - - - - - - - - - - - - - - - - - - - 6 Line(s) not Displayed bnds07 "RENAME TEST.LOGON.ASM TEST.LOGON.ASM 000008 "RENAME TEST.LOGON.ASM.ASM TEST.LOGON.ASM.ASM 000009 "RENAME TEST.LOGON.CEXEC TEST.LOGON.CEXEC 000010 "RENAME TEST.LOGON.CEXEC.CEXEC TEST.LOGON.CEXEC.CEXEC ****** **************************** Bottom of Data ****************************
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 Scroll ===> CSR ****** ***************************** Top of Data ****************************** - - - - - - - - - - - - - - - - - - - 6 Line(s) not Displayed =BNDS> < ==CHG> "RENAME TEST.LOGON.ASM TEST.hugo.logon.ASM ==CHG> "RENAME TEST.LOGON.ASM.ASM TEST.hugo.logon.ASM.ASM ==CHG> "RENAME TEST.LOGON.CEXEC TEST.hugo.logon.CEXEC ==CHG> "RENAME TEST.LOGON.CEXEC.CEXEC TEST.hugo.logon.CEXEC.CEXEC ****** **************************** Bottom of Data ****************************
In the lines marked with ==CHG> you can see which lines were by the change action changed. The DSNs in the procedure can stay in lowercase letters. TSO accepts this during the execution of the rename command. Because the procedure is performed as a REXX procedure and RENAME statements are TSO commands, we now need to ensure that any RENAME statement is terminated with a " (quotation mark). To do this, proceed as follows: 1. Enter in the =BNDS> line an I (for insert) and press ENTER. 2. Then position the cursor in the inserted row as far right until it is behind the longest name of the RENAME instructions and enter there a quotation mark ("). 3. In the same line, go to the beginning and enter an m (for move). 4. Then put the block command oo into the first and last line of the RENAME statements. The screen now looks like this: EDIT TEST.LANZ.REXX(RENAME) - 01.09 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** - - - - - - - - - - - - - - - - - - - 6 Line(s) not Displayed =BNDS> < m''''' " ooCHG> "RENAME TEST.LOGON.ASM TEST.hugo.logon.ASM ==CHG> "RENAME TEST.LOGON.ASM.ASM TEST.hugo.logon.ASM.ASM ==CHG> "RENAME TEST.LOGON.CEXEC TEST.hugo.logon.CEXEC ooCHG> "RENAME TEST.LOGON.CEXEC.CEXEC TEST.hugo.logon.CEXEC.CEXEC ****** **************************** Bottom of Data ****************************
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:
154 | 8 The ISPF editor
EDIT TEST.LANZ.REXX(RENAME) - 01.09 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 /* DOC: REXX RENAME ************************************************/ 000002 /* DOC: Perform Mass Data set RENAME */ 000003 /* (c) LANZ am: 7 May 2002 */ 000004 /*********************************************************************/ 000005 trace ?i 000006 "PROFILE NOPREFIX" 000007 "RENAME TEST.LOGON.ASM TEST.hugo.logon.ASM " 000008 "RENAME TEST.LOGON.ASM.ASM TEST.hugo.logon.ASM.ASM " 000009 "RENAME TEST.LOGON.CEXEC TEST.hugo.logon.CEXEC " 000010 "RENAME TEST.LOGON.CEXEC.CEXEC TEST.hugo.logon.CEXEC.CEXEC " ****** **************************** Bottom of Data ****************************
Now you can submit this procedure as a batch job using the edit macro #TSOB of the SMART ISPF utilities. With a call of SDSF, you can check the correct execution of the rename action. The use of the windows clipboard is practical if only a few data sets have to be renamed. If very many data sets must be renamed this is a very tedious way because only a small number of lines can be transferred in one-step using the windows clipboard. In the next chapter, I will show you a procedure to build a rename job with many lines.
8.10.2 Example two for using OVERLAY The first rename example is good if there only a few elements must renamed be and their names can be transferred using copy and paste via the windows clipboard. However, if you have to rename even hundreds of data sets, then you have to use a somewhat different procedure. These are the steps: 1. Generating a data set that contains all DSNs that are to be renamed. 2. Produce the rename statements using OVERLAY. We will perform this example with only four names. It also works for 4000 or more names. Step 1: Create the data set containing the data set names. 1. Produce in the ISPF menu 3.4 (DSLIST) a display of the data set names that needs to be rename. 2. Type in the command line the command save dsnlist and press ENTER. On the top right of the screen the message appears Data set list saved.
8.10 SHIFT and OVERLAY | 155
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 Menu Options View Utilities Compilers Help -----------------------------------------------------------------------------ISRUDSL0 Data Sets Matching TESTXX.* Row 1 of 6 Command ===> save dsnlist Scroll ===> CSR Command - Enter "/" to select action Message Volume -----------------------------------------------------------------------------TESTXX.CLIST DMTU01 TESTXX.LOAD DMTU03 TESTXX.MSGS DMTU03 TESTXX.PANELS DMTU03 TESTXX.REXX DMTU02 ***************************** End of Data Set list *************************** *-------------------------------------------------------------------* | The listing of data sets was placed in 'TESTXX.DSNLIST.DATASETS' | *-------------------------------------------------------------------*
To save space, I combined in the above display the two successively displayed screens. Step 2: Edit the data set containing our DSNs Bring the name of the list data set via the windows clipboard in the DSLIST panel, press enter and edit this data set. The following screen appears: ISREDDE4 TESTXX.DSNLIST.DATASETS Columns 00001 00072 Command ===> Scroll ===> CSR ****** **************************** Top of Data ****************************** 000001 TESTXX.CLIST DMTU01 PO FB 80 279 000002 UCAT.TESTXX 000003 TESTXX.LOAD DMTU03 PO U 0 327 000004 UCAT.TESTXX 000005 TESTXX.MSGS DMTU03 PO-E FB 80 61 000006 UCAT.TESTXX 000007 TESTXX.PANELS DMTU03 PO-E FB 80 61 000008 UCAT.TESTXX 000009 TESTXX.REXX DMTU02 PO-E FB 80 61 000010 UCAT.TESTXX 000011 TESTXX.STUDNAME DMTU03 PO-E FB 80 279 000012 UCAT.TESTXX ****** *************************** Bottom of Data ****************************
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.
156 | 8 The ISPF editor
2. Delete the excluded lines: Enter the command del x all. The ucat lines were deleted and the screen looks as follows: ISREDDE4 TESTXX.DSNLIST.DATASETS Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 TESTXX.CLIST DMTU01 PO FB 80 279 000002 TESTXX.LOAD DMTU03 PO U 0 327 000003 TESTXX.MSGS DMTU03 PO-E FB 80 61 000004 TESTXX.PANELS DMTU03 PO-E FB 80 61 000005 TESTXX.REXX DMTU02 PO-E FB 80 61 ****** **************************** Bottom of Data ****************************
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: ISREDDE4 TESTXX.DSNLIST.DATASETS Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** =BNDS> < ((999 TESTXX.CLIST DMTU01 PO FB 80 279 000002 TESTXX.LOAD DMTU03 PO U 0 327 000003 TESTXX.MSGS DMTU03 PO-E FB 80 61 000004 TESTXX.PANELS DMTU03 PO-E FB 80 61 000005 TESTXX.REXX DMTU02 PO-E FB 80 61 ((999 TESTXX.STUDNAME DMTU03 PO-E FB 80 279 ****** **************************** Bottom of Data ****************************
After ENTER the unneeded information is cleared away. Our data set now only contains the DSNs that we need for further work. 4 Caution: We must absolutely restore the left BNDS margin to the first data position. This is necessary because 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: ISREDDE4 TESTXX.DSNLIST.DATASETS Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** =BNDS> < 000001 TESTXX.CLIST 000002 TESTXX.LOAD 000003 TESTXX.MSGS 000004 TESTXX.PANELS 000005 TESTXX.REXX 000006 TESTXX.STUDNAME ****** **************************** Bottom of Data ****************************
8.10 SHIFT and OVERLAY | 157
Step 3: Create the rename statements in the rename procedure Now edit the standard member of rename commands and copy the in step 2 generated data set into the edited data set after the last row. EDIT TEST.LANZ.REXX(RENAME) - 01.10 Columns 00001 00072 Command ===> copy TESTXX.DSNLIST.DATASETS Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 /* DOC: REXX RENAME ************************************************/ 000002 /* DOC: Perform data set RENAME */ 000003 /*-------------------------------------------------------------------*/ 000004 /* Franz Lanz 3 Jan 2015 */ 000005 /*********************************************************************/ 000006 "PROFILE NOPREFIX" a00007 "RENAME ****** **************************** Bottom of Data ****************************
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 positioned after the "RENAME line. Now stay in this edit up until the rename procedure is completed. Perform the following steps: ISREDDE4 TESTXX.REXX(RENAME) - 01.01 Columns 00001 00072 Command ===> Scroll ===> CSR 000001 /* DOC: RENAME REXX MAIN */ 000002 /* DOC: Perform data set RENAME */ 000003 /*-------------------------------------------------------------------*/ 000004 /* Franz Lanz 3 Jan 2015 */ 000005 /*********************************************************************/ 000006 "PROFILE NOPREFIX" 000007 "RENAME 000008 TESTXX.CLIST 000009 TESTXX.LOAD 000010 TESTXX.MSGS 000011 TESTXX.PANELS 000012 TESTXX.REXX ****** **************************** Bottom of Data ****************************
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: c 'TESTXX.' 'TESTXX.save.' nx all. 4. Then set at each end of the renamed DSN a " (quotation mark) because the rename 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.
158 | 8 The ISPF editor
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 ISREDDE4 TESTXX.REXX(RENAME) - 01.01 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 /* DOC: RENAME REXX MAIN */ 000002 /* DOC: Perform data set RENAME */ 000003 /*-------------------------------------------------------------------*/ 000004 /* Franz Lanz 3 Jan 2015 */ 000005 /*********************************************************************/ 000006 "PROFILE NOPREFIX" 000007 "RENAME oo0008 TESTXX.CLIST 000009 TESTXX.LOAD 000010 TESTXX.MSGS 000011 TESTXX.PANELS oo0012 TESTXX.REXX mm0013 TESTXX.save.CLIST " ==CHG> TESTXX.save.LOAD " ==CHG> TESTXX.save.MSGS " ==CHG> TESTXX.save.PANELS " mm0017 TESTXX.save.REXX " ****** **************************** Bottom of Data ****************************
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. 4 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!
ISREDDE4 TESTXX.REXX(RENAME) - 01.01 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000002 /* DOC: RENAME REXX MAIN */ 000003 /* DOC: REXX RENAME */ 000004 /* DOC: Perform data set RENAME */ 000005 /*-------------------------------------------------------------------*/ 000006 /* Franz Lanz 3 Jan 2015 */ 000007 /*********************************************************************/ 000008 "PROFILE NOPREFIX" 000009 "RENAME TESTXX.CLIST TESTXX.save.CLIST " 000010 "RENAME TESTXX.LOAD TESTXX.save.LOAD " 000011 "RENAME TESTXX.MSGS TESTXX.save.MSGS " 000012 "RENAME TESTXX.PANELS TESTXX.save.PANELS " 000013 "RENAME TESTXX.REXX TESTXX.save.REXX " ****** **************************** Bottom of Data ****************************
10. We execute the REXX procedure as a batch job by using the edit macro #TSOB.
8.11 CUT and PASTE | 159
3 Notes on this example: – The statement PROFILE NOPREFIX is required urgently because otherwise the TSO would precede each DSN with the user prefix (if it were set). You can avoid the TSO PREFIX problem easiest by setting the DSNs always in single quotes ('). Especially when you use TSO commands which contain DSNs online. – We will assume, in this example, that it is necessary to rename a large number of names. Therefore, you should run this REXX procedure as a batch job. You can use the SMART ISPF utility edit macro #TSOB to submit the procedure to run as batch job. Another advantage of this approach is that you get a list output of job execution in which you can control the flow of the procedure very conveniently by using SDSF.
8.11 CUT and PASTE It often happens while working in the ISPF editor that you want to transfer individual lines or whole parts of a data set to another one. In this case, you can use two methods: – Copying and pasting via the clipboard of the PC system. – Using the primary commands CUT and PASTE of the ISPF Editor. Both methods have their advantages and disadvantages. Therefore, let us take a closer look at the operation of these two methods: 8.11.1 Data transport via the clipboard of the PC system Advantages: – –
The data can from any PC components be cut out and be inserted into the edit screen. The cuttings need not be carried out line by line. You can snip any blocks from the screen and paste it as a block at any cursor location in the edit screen. Data from ISPF systems of other LPARs that are accessible from the same PC can with this method easily transferred.
Disadvantages: – –
With one transmission, only so much data can be as the 3270 screen can insert transferred. During transmission, characters, depending on the used code pages, can be wrong when they arrive in the target system.
8.11.2 Data transport via the ISPF clipboard Advantages: –
You can cut a large amount of data from one or more edited data sets and paste them repeatedly in a receiving data set in the same or a different edit session.
160 | 8 The ISPF editor
–
You can define multiple data collections from various sources and then paste them in several places in different edit sessions.
Disadvantages: – –
Data can only be CUT and PASTE line by line. Data between LPARs cannot directly transferred be. This would work only with a CUT action to a data set on a shared disk, which is in all participating LPARs known.
8.11.2.1 The CUT and PASTE commands CUT [lptr range] [DEFAULT | clipboardname] [REPLACE] [APPEND] [DISPLAY];
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 specified is, the default clipboard is used.
8.11 CUT and PASTE | 161
[AFTER label], [BEFORE label] These two options specify whether the data will copied before or after a row with a predefined label. The line where the inserted data copied are is normally defined using an A (after) or a B (before) line command. If neither a label nor a line command A or B are defined, an error message is displayed on the right top of the screen and the PASTE command will be not executed. [DELETE] [KEEP] These options determine whether the data will be deleted from the ISPF clipboard or remain there for further copying when the PASTE command is executed. 3 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. Therefore, let us look at this panel again here: Screen 8.9: Setting CUT and PASTE defaults in EDSET panel *-----------------------------------------------------------------------------* | ISREDSET Edit and View Settings | | Command ===> | | More: + | | Settings for current and future Edit and View sessions: | | | | User session initial macro . . . . . . . . . . . . . . #LIMACA | | Maximum initial storage allowed for Edit and View . . 0 | | Target line for Find/Change/Exclude string . . . . . . 2 | | Enter "/" to select option | | Always position Find/Change/Exclude string to target line | | / Remove action bars in ISPF edit and view panels | | Force ISRE776 if RCHANGE passed arguments | | | | CUT default . . 2 1. Append PASTE default . . 1 1. Delete | | 2. Replace 2. Keep | | | | Settings for future sessions. Select Apply Setting Immediately for the | | setting to affect the current session as well. | | | | Enter "/" to select option | | / Confirm Cancel/Move/Replace / Apply Setting Immediately | | / Preserve VB record length / Apply Setting Immediately | *-----------------------------------------------------------------------------*
162 | 8 The ISPF editor
8.11.2.3 Example of CUT and PASTE Task: Create a batch job containing the following steps: – Use the utility IEBCOPY to copy different PDS. – Use the TSO processor IKJEFT01 to call procedure HUGO for execution. I know there are examples of the necessary steps elsewhere in my ISPF data sets. I use this now and put the necessary statements to the clipboard. Therefore, I can illustrate the operation of the ISPF clipboard well. I put each of the required steps to a named clipboard data set that is exactly as the executed programs named. Step one: Produce the clipboard entries JOBCARD, IEBCOPY and IKJEFT01. –
First, a complete job statement is required. The simplest way is to copy a job statement that is guaranteed correct from a list output of a recently run job found in SDSF. I know that one of the recently submitted and run jobs contains a step with a call for the program IKJEFT01. I call the SDSF hold queue and display the desired job output list by entering the line command SJ in the relevant line. Then the list containing the JCL is in an edit session displayed. I now prepare this list to CUT the lines containing the whole job statement to the clipboard named JOBCARD. The following screen shows this situation before ENTER is press:
JCL 8.1: Example JCL of a TSO execution in batch SDSF EDIT LANZTB (JOB05338) JCLEDIT Columns 00001 00072 Command ===> cut jobcard Scroll ===> CSR ****** ***************************** Top of Data ****************************** cc0001 //LANZTB JOB (09101999,00000000,46100000),'#TSOB: COMPLOG',CLASS=A, 000002 // NOTIFY=LANZT,MSGLEVEL=(0,0),MSGCLASS=H, 000003 // COND=(0,LT),TIME=100,USER=SQMTP cc0004 /*JOBPARM S=LPRT 000005 //******************************************************************** 000006 //* TSO-BATCH AUS: LANZT.LOGON.CLIST(COMPLOG) 000007 //******************************************************************** 000008 //TSOBATCH EXEC PGM=IKJEFT01,REGION=80M,DYNAMNBR=99 000009 //STEPLIB DD DISP=SHR,DSN=PROX.LOGON.LOAD 000010 //SYSEXEC DD DISP=SHR,DSN=LANZT.LOGON.CLIST 000011 //SYSPRINT DD SYSOUT=* 000012 //SYSTSPRT DD SYSOUT=* 000013 //DUMP DD DUMMY 000014 //SYSUDUMP DD DUMMY 000015 //SYSOUT DD SYSOUT=* 000016 //SYSTSIN DD * 000017 PROFILE NOPREFIX 000018 EXECUTIL SEARCHDD(YES) 000019 %COMPLOG 000020 END ****** **************************** Bottom of Data ****************************
– –
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.
8.11 CUT and PASTE | 163
–
To produce the IEBCOPY clipboard entry, edit an appropriate member of the JCL data set, which contains an IEBCOPY step and cut the necessary lines.
The command CUT DISPLAY displays a panel showing the clipboard contents. The clipboard contains now the following entries: Screen 8.10: Clipboard containing some entries Clipboard manager B - Browse E - Edit Name DEFAULT IEBCOPY IKJEFT01 JOBCARD
C - Clear R - Rename
O - Toggle Read-only D - Delete
Lines User Comment 0 ISPF Default Clipboard 6 13 4
Step two: Assemble the new job. Now all needed parts have been collected for the new job on the clipboard and they now will assembled. In order to get the desired job, start a new edit data set and paste all necessary clipboard entries in. When everything is ready, the edited data set looks as follows: JCL 8.2: Assembled job using clipboard entries EDIT SMQP.JCL(TT) - 01.00 Columns 00001 00072 Command ===> Scroll ===> CSR ****** ***************************** Top of Data ****************************** 000001 //LANZTB JOB (09101999,00000000,46100000),'EXAMPLE',CLASS=A, 000002 // NOTIFY=LANZT,MSGLEVEL=(0,0),MSGCLASS=H, 000003 // COND=(0,LT),TIME=100,USER=SQMTP 000004 /*JOBPARM S=LPRT 000005 //* THE PREVIOUS 4 LINES ARE PASTED FROM THE CLIPBOARD MEMBER JOBCARD 000006 //IEBCOPY EXEC PGM=IEBCOPY,REGION=20M,PARM='COPY,LIST=NO' 000007 //SYSUT1 DD DISP=SHR,DSN=PXX0.DB2BIND.PROD.SQL 000008 //SYSUT2 DD DISP=(NEW,PASS),DSN=&SQLDAT, 000009 // UNIT=VIODA,SPACE=(CYL,(100,300,2000)), 000010 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920,DSORG=PO) 000011 //SYSPRINT DD SYSOUT=* 000012 //* THE PREVIOUS 6 LINES ARE PASTED FROM THE CLIPBOARD MEMBER IEBCOPY 000013 //TSOBATCH EXEC PGM=IKJEFT01,REGION=80M,DYNAMNBR=99 000014 //STEPLIB DD DISP=SHR,DSN=PROX.LOGON.LOAD 000015 //SYSEXEC DD DISP=SHR,DSN=LANZT.LOGON.CLIST 000016 //SYSPRINT DD SYSOUT=* 000017 //SYSTSPRT DD SYSOUT=* 000018 //DUMP DD DUMMY 000019 //SYSUDUMP DD DUMMY 000020 //SYSOUT DD SYSOUT=* 000021 //SYSTSIN DD * 000022 PROFILE NOPREFIX 000023 EXECUTIL SEARCHDD(YES) 000024 %COMPLOG 000025 END 000026 //* THE LINES 13 to 25 ARE PASTED FROM THE CLIPBOARD MEMBER IKJEFT01 ****** **************************** Bottom of Data ****************************
164 | 8 The ISPF editor
3 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:
Clipboard manager B - Browse E - Edit Name DEFAULT IEBCOPY IKJEFT01
C - Clear R - Rename
O - Toggle Read-only D - Delete
Lines User Comment 0 ISPF Default Clipboard 0 0
As you can see, the designated clipboard entries are still there. They can be for further actions used.
9 Utilities for allocated data sets There are three utilities available for displaying and controlling the data sets allocated to your TSO user. These commands are actually TSO commands. These can be, unlike some other TSO commands, invoked directly in an ISPF command line. These commands are DDLIST, ISRDDN and ISRFIND. Basics: –
–
DDLIST and ISRDDN are synonyms for exactly the same function, which means you can use either one of them. In further explaining, I will always use DDLIST. Calls to ISRDDN and ISRFIND must always be by TSO preceded. E.g. TSO ISRDDN and TSO ISRFIND. ISRFIND plays no role in daily work within ISPF because its functions can also be achieved via using the normal ISPF DSLIST function. Therefore, I will not go into details about ISRFIND. If you are interested in ISRFIND, you can simply test the program yourself by typing in TSO ISRFIND in the ISPF command line.
As you may have noticed in the description of the TSO/ISPF logon process, the data sets that allocated are there probably play an important role for your TSO/ISPF user. Therefore, it would be important to have a tool with which you can display the names of the data sets allocated. There are two possibilities to display your allocated data sets. – With the TSO, command LISTALC (List Allocation). This command is described in the IBM manual TSO / E Command Reference. It provides, depending on which parameters are used, a list of allocated data sets. If you want to try LISTALC once, you can do it as follows in any ISPF command line using the command: tso listalc st h. – With the program DDLIST The LISTALC command will not explained here because the program DDLIST provides much better information and possibilities to work with the displayed data sets.
9.1 DDLIST – Description and call The program DDLIST is described in the brochure ISPF User’s Guide Volume 1 in appendix G. There is a description of all possibilities, which DDLIST offers. I copied this description here: DDLIST can used to manipulate the allocated data sets, but it also provides the ability to answer questions like:
166 | 9 Utilities for allocated data sets
– – – – – – –
Where did a module, which the user has loaded, come from? What data sets contain a specific member? Are the I/O errors and ABENDs the user is getting due to mixed record format allocations? Who is currently allocated to SYS1.BRODCAST? Where and how often will a member in the currently allocated files found? How many members are in the allocated libraries and which libraries are empty? Is the user running ISPF out of LPA or from STEPLIB?
Although DDLIST is a TSO program and must therefore as a TSO program be called, but it can only run under the ISPF interface because it ISPF services uses. To start the program enter into any ISPF panel in the ISPF command line TSO ISRDDN or DDLIST and then press ENTER. Then the following or a similar panel appears: Screen 9.1: DDLIST panel display Current Data Set Allocations Command ===> Blksz Lrecl RCFM Org Act 6160 80 FB PO > _ > _ 32760 ** U LIB > _ 32760 ** U PO > _ > _ 27920 80 FB LIB > _ 8800 80 FB PO > _ 8800 80 FB PO > _ > _ 27920 80 FB LIB > _ 27920 80 FB LIB > _ 8800 80 FB PO > _ 8800 80 FB PO > _ 3120 80 FB LIB > _ > _ 8800 80 FB PO > _ 8800 80 FB PO > _ 27920 80 FB LIB > _ > _ 27920 80 FB LIB > _ 8800 80 FB PO > _ 8800 80 FB PO > _
Scroll ===> CSR DDname AVDATA ISPLLIB
Data Set Name SYS1.HELP
Actions: B V M F C I Q
PROX.LANZ.LOAD PROX.LOGON.LOAD ISPMLIB PROX.LOGON.MSGS ISF.SISFMLIB ISP.SISPMENU ISPPLIB
ISPPROF ISPSLIB
ISPTABL ISPTLIB
PROX.LANZ.PANEL PROX.LOGON.PANEL ISP.SISPPENU ISF.SISFPLIB LANZT.ISPF.PROFILE.LPRT ISP.SISPSLIB ISP.SISPSENU LANZT.USER.TABL.LPRT LANZT.USER.TABL.LPRT ISP.SISPTENU ISF.SISFTLIB
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.
9.2 DDLIST operation | 167
3. The columns DDname and Data Set Name contain the relevant information just as the name says. 1 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 Command
Execution of
B E V M F C I Q
Browse of the first 16 data sets of a chain or a single data set. Edit of the first 16 data sets of a chain or a single data set. View of the first 16 data sets of a chain or a single data set. Display of the advanced member list of the first 16 data sets of a chain or a single data set. Execute a free command to the DD name. Compress of a PDS. View the data set description. View the TSO user as well as the jobs that occupy this data set.
The following chapters contain examples of some of the main functions you can perform with the program DDLIST/ISRDDN.
168 | 9 Utilities for allocated data sets
9.3 Find a member Sometimes it happens that you execute a procedure online, but you do not get the expected result. This may perhaps be because you accidentally caught an old version of this procedure or an entirely different one of the same name. Such a case can be with the help of DDLIST quite easily identified. To do this, follow these steps: – You call DDLIST. – You enter in the command line the command member name or shorter m name. Name is the name of the searched member. DDLIST will then begin to search all the allocated PDS for the member name. After completion of the search, there are two possible results: – The member was in all data sets not found. – The member has been found one or more times. When a particular member has been found at least once, its name will appear in the left part of the panel next to each PDS in which the member is contained. The previously stationed details are there hidden. You can now enter in the Act column of each of these lines a B for Browse to look at the individual member. We now search for the member HUGO. We enter DDLIST in an ISPF command line and enter m hugo in the command line of the displayed DDLIST panel. We see the following result: Screen 9.2: DDLIST search example Current Data Set Allocation Command ===> Message Member: HUGO
Member: HUGO
Member: HUGO
Act > _ > _ > _ > _ > _ > _ > _ > _ > b > _ > _
Member was found Scroll ===> CSR
DDname Data Set Name Actions: B E V M F C I Q ISP08532 SMQP.USER.PANEL SMQP.PROD.PANEL SYSEXEC PROX.LANZ.CEXEC PROX.LOGON.CEXEC ISP.SISPEXEC SYS1.SBPXEXEC SYSPROC SYST1.TSO.USERPROC SYST0.TSO.USERPROC SYST1.TSO.REXXDEMO
We can investigate each of the displayed members by using browse and determine the case, why in the execution of hugo a false result was achieved.
9.4 Free a data set allocation | 169
Short cut to find a member: If you want to find a member very fast, use the following command in the ISPF command line: ddlist m hugo
When entering this command the following will happen: – The DDLIST panel appears and the search run starts immediately. – If the search is successful, the display of the DDLIST screen remains and the members found are in the left column displayed. – If the search is not successful, the display of the DDLIST screen disappears and the message Member not found appears in the top right corner of the ISPF panel.
9.4 Free a data set allocation Sometimes it happens that in a running program, a file allocation is carried out, which is not freed for any reason at the end of the program, this allocation still exists. Now, if we want to use this data set in a batch job, we get the message that this data set is not free and the job remains at WAITING FOR DATA SETS. This problem can be solved using the program DDLIST by entering a FREE command in the line where the allocated data set appears. We want to see once a case where we allocate an existing data set with DISP=OLD in TSO online. Thereafter, we submit a batch job, which also use this data set in a SYSPROC DD statement. To allocate the data set allocation we enter in the ISPF menu 6 the following statement and press ENTER: alloc dd(input) dsn('PROX.LANZ.REXX') old reuse
By using the option OLD in the alloc statement, the data set is firmly exclusively bound to the user who has executed this statement. Now, when a batch job tries to use this data set, the job execution is paused and the following message appears in the job log: IEF861I FOLLOWING RESERVED DATA SET NAMES UNAVAILABLE TO LANZTC IEF863I DSN = PROX.LANZ.REXX LANZTC IEF099I JOB LANZTC WAITING FOR DATA SETS
170 | 9 Utilities for allocated data sets
If we do not know exactly who holds the data set in exclusive access, we can also enlist DDLIST to answer this question. To do so, call DDLIST and enter ENQ in the command line. In the System ENQ Status panel that appears, we enter in the line Minor name prefix the name of the DSN. All other lines remain empty. If we then press ENTER, the following panel appears: Screen 9.3: Use DDLIST to determine ENQs System ENQ Status Command ===>
Row 1 of 1 Scroll ===> CSR
Scroll LEFT or RIGHT to see type or system name. Major name prefix . . . (SYSDSN, SPFEDIT, etc) Minor name prefix . . . PROX.LANZ.REXX (dsn etc) Address id prefix . . . (Job name, User id, etc) System prefix . . . . . (System name) Major Minor Job Name ┌──────────┬──────────────────────────────────────────────────────┬──────────┐ │ SYSDSN │ PROX.LANZ.REXX │ LANZT │ └──────────┴──────────────────────────────────────────────────────┴──────────┘
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: Current Data Set Allocations Command ===>
Row 1 of 114 Scroll ===> CSR
Volume T1N017 OST0A9 D1D119
Disposition Act DDname Data Set Name Actions: B E V M F C I Q SHR,KEEP > ADMGGMAP DB21.DSQMAPE SHR,KEEP > AVDATA SYS1.HELP OLD,KEEP > F INPUT PROX.LANZ.REXX > ISPLLIB T1S004 SHR,KEEP > DB21.DT1A.DSNEXIT T1S004 SHR,KEEP > DB21.DT1A.DSNLOAD ...............................................................................
We now enter F (FREE) into the Act column in front of the DD name INPUT and press ENTER. This will release this data set in our TSO user and the batch job can proceed.
9.5 Warning when inconsistent data set structures exist If the CHECK option is set to ON when calling the DDLIST program, it is possible that the following screen display appears:
9.6 The display options SHORT and LONG | 171
Screen 9.4: DDLIST shows inconsistent data set characteristics in a concatenated DD Current Data Set Allocations Command ===> Blksz Lrecl RCFM Org
Act DDname > SYSEXEC LIB > PO > PO > > SYSPROC PO >
Data Set Name
27998 27920 8800
255 VB 80 FB 80 FB
PROX.LANZ.CEXEC SYST1.TSO.EXEC ISP.SISPEXEC
3120
84 VB
Row 86 of 112 Scroll ===> CSR
Actions: B E V M F C I Q
DBT1.DT1A.DSNCLIST
┌─────────────────────────────────────────────────────────────────────────────┐ │ Warning: ISRDDN has detected that one or more concatenations, including DD │ │ name SYSEXEC contain mixed record formats, organizations, or fixed record │ │ lengths. Reading from allocations containing different types of data sets │ │ can cause I/O errors, ABENDs, or other unpredictable results. For further │ │ information, see the z/OS documentation on using data sets. Enter CHECK OFF │ │ to disable this check. │ └─────────────────────────────────────────────────────────────────────────────┘
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. 3 Remark: If you get unexplained crashes when running REXX procedures that are not based on errors in the procedures itself, then you should pay attention to the characteristics of the concatenated data set in the DD names SYSPROC and SYSEXEC. To make this check, enter the command CHECK ON. Then all inconsistent data set characteristics will displayed immediately.
9.6 The display options SHORT and LONG These two options control the display of DD names with the corresponding DSN to the effect that the DD name is either in front of the first DSN or in a separate line above the first DSN. We want to first look at the display of a DD name when the option is set to SHORT. We enter in the command line first SHORT and then ONLY ISPSLIB and get the following screen:
172 | 9 Utilities for allocated data sets
Screen 9.5: Display of the ISPSLIB chain when option SHORT is active Current Data Set Allocations Command ===>
Row 1 of 8 Scroll ===> PAGE
Blksz Lrecl RCFM Org Act DDname Data Set Name Actions: B E V M F C I Q 27920 80 FB PO > b ISPSLIB DBT1.SDSQSLBE 27920 80 FB PO > DBT1.DT1A.DSNSPFS 3120 80 FB PO > SYST1.TSO.ISPSLIB 8800 80 FB PO > ISP.SISPSLIB 8800 80 FB PO > SYS1.DGTSLIB 27920 80 FB PO > SYSPT.CAI.CAIISPS 8800 80 FB PO > CBC.SCBCSKL 8800 80 FB PO > ISP.SISPSENU -------------------------- End of Allocation List -----------------------------
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: Menu Functions Utilities Help ────────────────────────────────────────────────────────────────────────────── BROWSE DBT1.SDSQSLBE Row 00115 of 01192 Command ===> Scroll ===> PAGE Name Prompt Lib Size Created Changed ID . DRUTPL 3 11 1992/07/28 1992/07/29 08:37:24 SY412 . DSNESKL1 2 . DSQABB1P 1 . DSQABB1S 1 . DUDOCLIB 6 . EDGSGSYN 5 . EOF 3 120 1987/03/30 1988/02/02 08:22:00 SY412 . EOF2 3 120 1987/07/27 1988/02/02 08:22:00 SY412 . EOF3 3 120 1987/08/06 1987/12/15 15:10:00 SY412 . EOF3RES 3 120 1987/12/15 1987/12/15 15:07:00 SY412 . EOF4 3 120 1987/08/13 1988/02/02 08:23:00 SY412 . EPIREST 3 49 1989/10/17 1991/10/28 14:08:00 SY412 . EPIREST2 3 53 1989/10/18 1991/10/28 14:11:00 SY412
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:
9.7 Display system library chains | 173
Screen 9.6: DDLIST panel with display LONG set Current Data Set Allocations Command ===> Blksz Lrecl RCFM Org 27920 27920 3120 8800 8800 27920 8800 8800
80 80 80 80 80 80 80 80
FB FB FB FB FB FB FB FB
PO PO PO PO PO PO PO PO
Act DDname > ISPSLIB > b > > > > > > >
Row 1 of 9 Scroll ===> PAGE Data Set Name
Actions: B E V M F C I Q
DBT1.SDSQSLBE DBT1.DT1A.DSNSPFS SYST1.TSO.ISPSLIB ISP.SISPSLIB SYS1.DGTSLIB SYSPT.CAI.CAIISPS CBC.SCBCSKL ISP.SISPSENU
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: Menu Functions Utilities Help ────────────────────────────────────────────────────────────────────────────── BROWSE DBT1.SDSQSLBE Row 00001 of 00003 Command ===> Scroll ===> PAGE Name Prompt Size Created Changed ID . DSQABB1J . DSQABB1P . DSQABB1S **End**
9.7 Display system library chains In z/OS, there are three very important library chains. These are: LINKLIST, PARMLIB and PROCLIB. These three libraries are as follows used: LINKLIST This library chain contains all load modules that are available to all users within a z/OS LPAR. By default, only the programs of the z/OS are included there. Normal users can only execute the programs contained therein. The system-programming department can add data sets used in this computer center for production and user needs. PARMLIB PARMLIB is a required partitioned data set chain that contains IBM-supplied and installation-created members. It must reside on a direct access volume, which can be the system residence volume. PARMLIB is an important data set in a z/OS operating system.
174 | 9 Utilities for allocated data sets
The purpose of the PARMLIB is to provide many initialization parameters in a pre-specified form in a single data set, and thus minimize the need for the operator to enter parameters. The most important PDS in the PARMLIB is SYS1.PARMLIB. There can be as many PDS in the chain as necessary. PROCLIB PROCLIB is a collection of required partitioned data set chains that contain the JCL procedures used to perform certain system functions. The JCL can be for system tasks or for processing program tasks invoked by the operator or the programmer. The PROCLIB chains are in the JES2 start job defined. See the following JCL: JCL 9.1: JES2 start JCL //JES2 PROC P=JES2PARM,N=JES2NODE,R=(WARM,NOREQ) //******************************************************************* //* JES2 PROC //******************************************************************* //JES2 EXEC PGM=HASJES20,TIME=1440,PARM=&R //HASPLIST DD DDNAME=IEFRDER //HASPPARM DD DSN=SYS1.PARMLIB(&P),DISP=SHR // DD DSN=SYS1.PARMLIB(&N),DISP=SHR // DD DSN=SYS1.SHASPARM,DISP=SHR //PROC00 DD DSN=SYS1.PROCLIB,DISP=SHR // DD DSN=MAIN.PROCLIB,DISP=SHR // DD DSN=TIVOLI.PROCLIB,DISP=SHR // DD DSN=USER.PROCLIB,DISP=SHR //PROC01 DD DSN=SYS1.LOGON,DISP=SHR //IEFRDER DD DUMMY
The DD names must be in the range PROC00 to PROC99. 3 Remark: Unfortunately, up to now no command is available in the DDLIST to display the PROCLIB chain. The only way to get information concerning the contents of the PARMLIB chain is to look into the above shown member SYS1.PROCLIB(JES2). On the internet, there are some REXX procedures available for displaying the PROCLIB chains.
9.7.1 Display of parmlib member ALLOCxx When we talked earlier in the book about the concatenated data sets, a PARMLIB member named ALLOCxx in which the maximum number of sequential concatenated datasets for an LPAR is set mentioned was. We want to display this member now and use the special command PARMLIB of DDLIST:
9.7 Display system library chains | 175
Screen 9.7: Parmlib display using DDLIST Current Data Set Allocations Command ===> m alloc* parmlib Volume OST0A8 OST0MC PLPRT1 P0XYZ1 P0XYZ1 T1N017 PLPRT1
Disposition Act DDname > PARMLIB > > > > SYSEXEC SHR,KEEP > SHR,KEEP > SHR,KEEP > SHR,KEEP >
Row 85 of 115 Scroll ===> CSR Data Set Name
Actions: B E V M F C I Q
SYS1.PARMLIB SYS1.TST0.PARMLIB SYS1.LPRT.PARMLIB PROX.LANZ.CEXEC PROX.LOGON.CEXEC DBT1.SDGOEXEC SYST1.TSO.EXEC
The program DDLIST inserts based on this instruction the DD name PARMLIB with the corresponding DSN chain in our ad, although this DD name was not available in our logon procedure. The possibility of PARMLIB display is a special service of the DDLIST program. We now specifically search for the member ALLOCxx and only in the DD name Parmlib, by using the command m alloc* parmlib and press ENTER command shown above. By specifying alloc* a generic search is performed for all members that start with ALLOC. The following screen appears: Current Data Set Allocation Command ===> Message Member: ALLOC*
Act DDname > PARMLIB > b > > > SYSEXEC > > >
Member was found Scroll ===> CSR Data Set Name
Actions: B E V M F C I Q
SYS1.PARMLIB SYS1.TST0.PARMLIB SYS1.LPRT.PARMLIB PROX.LANZ.CEXEC PROX.LOGON.CEXEC DBT1.SDGOEXEC
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. Menu Functions Utilities Help ────────────────────────────────────────────────────────────────────────────── BROWSE SYS1.PARMLIB Row 00001 of 00001 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID s ALLOC00 125 1997/08/01 1999/12/28 13:33:43 SYZ67
176 | 9 Utilities for allocated data sets
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: Menu Utilities Compilers Help ─────────────────────────────────────────────────────────────────── Vol OST0A8 BROWSE SYS1.PARMLIB(ALLOC00) - 01.03 CHARS 'TIOT' found Command ===> Scroll ===> CSR /********************************************************************/ 00450000 TIOT SIZE(64) /* Size of the task I/O table = 64K */ 00460001 00480000
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 Dec
Hex
Size of TIOT
Maximum number of Maximum number of DDs allowed single unit DD Allowed when every DD requests the maximum number of units
16 17 24 25 32 40 48 56 64
10 11 18 19 20 28 30 38 40
16384 (16K) 17408 (17K) 24576 (24K) 25600 (25K) 32768 (32K) 40960 (40K) 49152 (48K) 57344 (56K) 65536 (64K)
816 867 1225 1277 1635 2045 2454 2864 3273
64 68 97 101 129 162 194 227 259
3 Remark: Single unit DD statements contain only one DSN and therefore one unit.
9.7.2 Display the LINKLIST chain DDLIST offers the ability to display the LINKLIST chain within the current display. The display of the LINKLIST can be using the DDLIST command linklist performed. The LINKLIST will immediately displayed using the command ddlist linklist. In this
9.7 Display system library chains | 177
case, not only the LINKLIST will appear in the display, but also all other libraries. See the following excerpt of the DDLIST screen: Screen 9.8: DDLIST LINKLIST display example XYZUSER ISRDDNP Command ===> Volume DMTRES DMTRES DMTRES DMTRES DMTRES DMTRES
Current Data Set Allocations
Disposition Act DDname > LINKLIST *LLA > > > > > >
Data Set Name
Row 112 of 242 Scroll ===> CSR
Actions: B E V M F C I Q
SYS1.LINKLIB SYS1.MIGLIB SYS1.CSSLIB SYS1.SIEALNKE SYS1.SIEAMIGE SYS1.CMDLIB
Conclusion: As you can see from these few examples discussed here, the program DDLIST is a very useful tool. Take advantage of it. I recommend familiarizing yourself with additional exercises with the program. To do this, use the extensive help facility of DDLIST program, which is accessible via the PF1 key.
9.7.3 Browsing storage and loaded modules DDLIST offers a wide range of commands to display virtual storage contents. Only IBM system programmers use this feature. Here the general description of this feature copied from the ISPF User’s Guide Volume I, Appendix G: You can use the BROWSE command within DDLIST to view the contents of storage within your address space. When you are browsing storage, you can use any of the standard ISPF Browse primary commands. In addition, there are several commands you can use to format and move around in the storage list.
10 Secret Programs In this chapter, I would like to show you some programs and their call parameters, which are in the standard literature not described. These programs and commands can be very helpful. From the PC world, you perhaps know the expression of the secret programs and commands. Some authors try to suggest that they now tell you what is secret, and they are only familiar with this mystery. Where do these programs and commands come from? That is easy to explain: In order to accelerate the daily work of the developers in the development departments of the manufacturers, programs are written for own use. Then it happens that supervisors and colleagues think that these programs are just fine for their own work and suggest making these useful programs available to the public. The software manufacturer can do then two things: – He can launch these programs officially. However, this also means he must stand straight for the functionality of these programs. In addition, customers expect a corresponding support, and that costs money. – He can release these programs unofficially. This mostly excludes any warranty, support and maintenance. In the PC world, such collections of programs are tool kits called. I would now like to introduce on the following pages some of some programs that provide excellent services in the TSO/ISPF environment, but they are in any official brochure of IBM not described. It involves the following commands and programs: – The TSO command CONCATD that we have already used at logon procedure. – The DSLIST program ISRDSLST. – The TSO/ISPF program TASID.
10.1 The TSO command CONCATD If you want to add to the existing library allocations of the TSO user dynamically additional data sets, then there is the problem that it is no official command available to do this. However, there is the unofficial command CONCATD, which you can use to do so. Here is an announcement of the IBM about this command: CONCATD is in TSO not contained. It will usually installed from the MVSTOOLS disk – CONCATD IBM Version 410 for OS/390. Customers using the z/OS platform will not have CONCATD available.
180 | 10 Secret Programs
Of course, the program CONCATD runs on z/OS TSO. It only needs to installed be. You can check this easily by calling the ISPF menu 6/TSO, and then enter H CONCATD and press ENTER. Then, when the help information about CONCATD appears, the command is also available. Let us look at the description of the CONCATD command: Figure 10.1: Description of program CONCATD //********************************************************************/ //* */ //* Macro-Name = CONCATD */ //* */ //* Descriptive-Name = HELP text for CONCATD command processor */ //* */ //* Dynamic Concatenation/Deconcatenation */ //* of Data Sets or Files */ //* Copyright = */ //* 5775-DNH (C) COPYRIGHT IBM Germany GmbH */ //* Licence Material – Property of IBM */ //* See IBM Copyright-Rules Form 30617 */ //* */ //* Change Activity = */ //* */ //********************************************************************/ FUNCTIONThe CONCATD command performs the following functions: - Dynamically concatenates a data set or list of data sets before an existing or after an existing allocation. - Deconcatenates from an existing ddname allocation. - Creates an new allocation, if none exists. - Frees the whole file, if the caller deconcatenates all data sets of an existing allocation. - Lists the file allocation, if the file keyword and the list operand were used. - Allocates the file with the permanently allocated attribute, if the PERM keyword was entered, or if the file already exists with an permanently allocated attribute. EXAMPLES: /* allocate MY clist in front of existing allocation */ CONCATD F(SYSPROC) DA(MY.CLIST) /* deconcatenate my MVS.CLIST from file SYSPROC */ DECON F(SYSPROC) DA(MVS.CLIST) /* list my sysproc allocation */ CD F(SYSPROC) LIST ----------------- V=IBM P=TSO/SYSHELP R=V3R3M0 I=CONCATD -------SYNTAXCONCATD FILE(ddname) DSN(dsname) BEFORE/after NOLIST/list CONCAT/deconcat SHR/old BLKSIZE(vvvvv) NOPERM or PERM REQUIRED - FILE/DDN and DSN/DA or FILE/DDN and LIST DEFAULTs - BEFORE, NOLIST, CONCAT, SHR ALIAS
- CD, DECON
10.1 The TSO command CONCATD | 181
RESTRICTIONS - All the data sets to be concatenated must have the same data set organization, if you use or default to the BEFORE option. OPERANDS FILE('ddname') OR DDN('ddname') - DDNAME to be associated with data set. DSN('dsname') OR DA('dsname') - DSNAME is the name of the data set to be concatenated. DSN('dsname-list') OR DA('dsname-list') - DSNAME-LIST is a list of data set names to be concatenated. BEFORE - The names specified with the DA/DSN parameter will be allocated in front of the data sets associated with the filename passed. AFTER - Append the filename specified with the data sets passed via the DA/DSN keyword. NOLIST - Suppress error and information messages and suppress file allocation listing. LIST - Display any error or information message and provide an allocation listing at CONCATDs termination. CONCAT DECONCAT
- Concatenates data sets to the filename passed. - Deconcatenates the requested data sets from the filename passsed. NOTE: If you choose DECON as command name you don't have to specify the keyword DECON. SHR - Use SHARE disposition for allocation. OLD - Use OLD disposition for allocation. BLKSIZE - A block size value from 0 up to 32760 to be used for all data sets in the concatenation. NOPERM - File concatenation will be dynamically allocated. PERM - File concatenation will be permanently allocated. NOTE: If you specify neither PERM nor NOPERM and the file exists, the existing allocation attribute will be kept.
As is apparent from the description, you can add DSN chains before front and after rear existing assignments. In practice, however, mostly front DSN chains are added to provide our own libraries positioned before the system level. Here again the example of our logon procedure: "CONCATD DDN(SYSEXEC) DSN('LANZT.TEST.REXX'", "'LANZT.PROD.REXX') CONCAT "CONCATD DDN(ISPPLIB) DSN('LANZT.TEST.PANEL'", "'LANZT.PROD.PANEL') CONCAT "CONCATD DDN(ISPMLIB) DSN('LANZT.TEST.MSGS'", "'LANZT.PROD.MSGS') CONCAT "CONCATD DDN(ISPSLIB) DSN('LANZT.TEST.SKEL'", "'LANZT.PROD.SKEL') CONCAT "CONCATD DDN(ISPTLIB) DSN('LANZT.TEST.TABL') CONCAT "CONCATD DDN(ISPTABL) DSN('LANZT.TEST.TABL') CONCAT
BEFORE SHR LIST" BEFORE SHR LIST" BEFORE SHR LIST" BEFORE SHR LIST" BEFORE SHR LIST" BEFORE SHR LIST"
182 | 10 Secret Programs
If we now look which concatenations are present after the above procedure execution, the effects of CONCATD command will displayed. The front attached data sets have been in gray highlighted. D1D138 D1D118 PLPRT1 OST0A8 OST0A8
SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP
D1D151 D1D134 PLPRT1 OST0A8 OST0A8
SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP
D1D117 D1D137 PLPRT1 OST0A8
SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP
D1D128
SHR,KEEP
D1D128 PLPRT1 OST0A8 OST0A8
SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP
D1D122 D1D138 P0XYZ1 P0XYZ1 PLPRT1 OST0A8
SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP SHR,KEEP
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
ISPMLIB LANZT.TEST.MSGS LANZT.PROD.MSGS SYST1.TSO.ISPMLIB ISF.SISFMLIB ISP.SISPMENU ISPPLIB LANZT.TEST.PANEL LANZT.PROD.PANEL SYST1.TSO.PANELS ISP.SISPPENU ISF.SISFPLIB ISPSLIB LANZT.TEST.SKEL LANZT.PROD.SKEL SYST1.TSO.ISPSLIB ISP.SISPSENU ISPTABL LANZT.TEST.TABL ISPTLIB LANZT.TEST.TABL SYST1.TSO.ISPTLIB ISP.SISPTENU ISF.SISFTLIB SYSEXEC LANZT.TEST.REXX LANZT.PROD.REXX PROX.LANZ.CEXEC PROX.LOGON.CEXEC SYST1.TSO.EXEC ISP.SISPEXEC
10.2 Program ISRDSLST The ISRDSLST program will used to display personal data set lists also called DSLISTs. DSLISTs are collections of DSNs, which can be defined using masks in ISPF to display groups of data set names. See also chapter 6 DSLIST – Data set lists on page 85. You can use the ISRDSLST program in two ways: – If you want to display a DSLIST within a procedure. To this end, it is unusual to use this program. – Within an ISPF command table. You can then call specific target DSLISTs using a short command. Use in command tables is the main area of use for the ISRDSLST program. We now want to look at an example of how to use the program in a REXX procedure. It is a pure sample procedure. Here the DSLIST ADMIN will called.
10.2 Program ISRDSLST | 183
Program 10.1: Example to call DSLIST in a REXX program /* DOC: REXX ISRDSLST */ /* DOC: Example to call the DSLIST ADMIN in a REXX procedure */ /* (c) LANZT am: 9 Mar 2004 */ /*******************************************************************/ address "ISPEXEC" "CONTROL ERRORS RETURN" "SELECT PGM(ISRDSLST) PARM(DSL ADMIN) SUSPEND SCRNAME($ADMIN)" exit
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: Menu Options View Utilities Compilers Help ────────────────────────────────────────────────────────────────────────────── DSLIST - Data Sets Matched in list ADMIN Row 1 of 8 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume ------------------------------------------------------------------------------PRTT.PROCLIB.JCL P0XYZ1 PRTT.PROCXXX.JCL P0XYZ1 SMQP.JCL D1D118 SMQP.MASENTN D1D144 SMQP.PAN.JCL D1D126 SQMT.MASENTN D1D148 ***************************** End of Data Set list ****************************
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: Menu Options View Utilities Compilers Help ─ ┌─────────────────── ISPF Task List ────────────────────┐ D │ Active ISPF Logical Sessions │ C │ │ │ . Start a new screen │ C │ . Start a new application │ - │ Application Name │ │ _____________________________________________ │ │ │ │ ID Name Panelid Applid Session Type │ │ . 2* $ADMIN ISRUDSL0 ISR 3270 │ │ . 6- DSLIST ISRUDLP ISR 3270 │ │ . 7 ISR§PRIM ISR 3270 │ │ . │ │ . │ * │ . │ └───────────────────────────────────────────────────────┘
────────────────── Row 1 of 8 Scroll ===> CSR e Volume ------------------P0XYZ1 P0XYZ1 D1D118 D1D144 D1D126 D1D157 D1D117 D1D148 *******************
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.
184 | 10 Secret Programs
Here some examples: Example 1: _ ++
2 SELECT PGM(ISRDSLST) PARM(PL2) DISPLAY ALL CURRENT DSLISTS
SUSPEND SCRNAME(ALLDS)
This entry causes the following: Call in the ISPF command line: ++ Result: All available DSLISTs are offering the ability to use them displayed. See the following screen: Screen 10.1: General display of all DSLISTs File View Options Help -----------------------------------------------------------------------------LANZUSR ISRPLTAB Personal Data Set Lists DSLIST processed Command ===> Scroll ===> CSR Action: O=Open _ _ _ _ _ _ _ _
Name BOOK LANZUSR PANEL PCDAT PROG REFLIST STUDREX ALLUSR **End**
A=Save As
D=Delete
E=Edit
L=DSLIST
Description All data sets for ISPF book All data sets of LANZUSR All panels data sets Files downloaded from PC Programming data sets Last 30 referenced data sets The students REXX data sets ALLUSR.** Data sets
Created 14/12/07 14/10/19 15/01/09 08/11/05 08/10/20 14/11/04 10/04/19
Referenced 15/01/09 10:16 15/01/09 10:18 15/01/09 10:22 14/10/20 10:50 15/01/09 10:23 15/01/09 10:23 15/01/09 10:15 14/12/30 16:29
Example 2: _ +PROG
3 SELECT PGM(ISRDSLST) PARM(DSL PROG) SUSPEND SCRNAME($PROG) DSLIST PROG ALL PROGRAMMING DATA SETS
This entry causes the following: Call in the ISPF command line: +prog or at least +pr Result: All in the DSLIST PROG defined data sets. See the following panel: Menu Options View Utilities Compilers Help -----------------------------------------------------------------------------LANZUSR ISRUDSL0 s Matched in list PROG Row 1 of 19 Command ===> Scroll ===> CSR Command - Enter "/" to select action Message Volume -----------------------------------------------------------------------------LANZUSR.ASM DMTU03 LANZUSR.ISPPROF DMTU02 LANZUSR.JCL DMTU03 LANZUSR.MSGS DMTU02 LANZUSR.PANELS DMTU03 LANZUSR.PLI DMTU03 LANZUSR.REXX DMTU03 LANZUSR.SAVE.REXX DMTU04 ALLUSR.TEST.MSGS DMTU03 ALLUSR.TEST.PANELS DMTU03 ALLUSR.TEST.REXX DMTU02 ***************************** End of Data Set list ***************************
10.3 The TASID program | 185
3 Remark: I have in chapter 7 The Object/Action Workplace on page 115 already mentioned that the action workplace tool much better suited is for calling DSLISTs. However, if you want to display only single DSLISTs, the use of the ISPF command table is quite reasonable.
10.3 The TASID program The TASID program is a very useful program if you want to find out information about the z/OS system on which you are currently working. It is also an unpublished program from IBM. However, it is not included with the TSO, but you have to get it from your system-programming department. You need two things to run TASID: – The TASID program as a load module. – The corresponding panel library. If you have both sources, you must decide how you want to call the TASID program. There are the following possibilities to install and call the program TASID: – You copy the program into a load library that is already in your TSO assigned user and copy the 170 panels in your panel library. Then you can just call the program with TSO TASID in the ISPF command line. – You generate a small REXX procedure in your personal REXX library, which performs the necessary assignments and call the program by calling this procedure. I chose the second path. See the small REXX procedure below: Program 10.2: REXX procedure to call TASID /* DOC: REXX TASID */ /* DOC: Call the TASID System */ /* (c) LANZT am: 23 Jan 2003 */ /*********************************************************************/ address "ISPEXEC" "LIBDEF ISPPLIB DATASET ID('PROX.TASID.PANEL') STACK" "LIBDEF ISPLLIB DATASET ID('PROX.TASID.LOAD') STACK" "SELECT PGM(TASID)" "LIBDEF ISPPLIB" "LIBDEF ISPLLIB"
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.
186 | 10 Secret Programs
Here an example of calling the TASID program. I have shaded some interesting values: Screen 10.2: TASID display screen File Navigate Settings ───────────────────────────────────────────────────────────────────────── CPU=17% TASID option menu End of data Option ===> Select one of the following options: 1 - Address space list 5 2 - System ENQ contention 6 3 - Total system ENQ status 7 4 - Initiator Status List 8 -
Version 5.07c Miscellaneous displays Current data set allocations Storage View Facility Snapshot
+----------------------------------------+-----------------------------+ ! Current time 15:19 on 2004/03/02 ! TSO users 216 ! ! Last IPL time 11:14 on 2004/01/24 ! Started tasks 172 ! ! IPL Parameters 67CB T1 1 ! Jobs 416 ! ! z/OS 01.04.00 JES version JES2 ! System addrs 35 ! ! SMF ID LPRT JES level 1.4Tr ! Free initiators 144 ! ! User ID LANZT RACF level 7.70.7 !-----------------------------! ! Node JES2LPRT TSO version 3.3.0 ! Total 983 ! ! VTAM Adr VTLANZT8 VTAM Level 6.1 !-----------------------------! ! Proc LOGONXX DFSMS level 1.03.0 ! CPU utilization 17% ! ! Region 6800K ! CPU 2064-113 ( 10 CPUs) ! ! RACF Grp XYZ#PART DSF level 1.16.0 ! ENQ Contention 7 ! ! Mode PR/SM ISPF Level 5.2.0 ! Real Storage 4194304K ! ! LPARs 6 ! Expand Storage 0K ! !----------------------------------------+-----------------------------! ! MVS Information: z/OS 01.04.00 z/Arch ! ! JES Information: JES2 / z/OS 1.4 / HJE7707 ! ! Sysres: XYZ0A8 System: LPRT PLEX: AEPLEX ! !----------------------------------------------------------------------! ! This system keeps a history of 3 passwords. ! ! Automatic revocation after 3 invalid logon attempts. ! ! Password warning is 2 days before password expires. ! ! Revocation for inactivity is not in effect. ! ! RACF program control is available. ! !----------------------------------------------------------------------! ! SMS is available with PDSE support. ! ! TASID 5.07c - Compiled at 23.53 on 07/03/01 ! +----------------------------------------------------------------------+ (c) Copyright IBM Corp, 1993, 2001. All Rights Reserved.
Here are the explanations of the greyed values: Z/OS 04 SMF ID LPRT User ID LANZT Proc LOGONXX Region 6800 K ISPF Level 5.2.0
This is the installed release of z/OS. The name of the LPAR on which TASID has been invoked. This is the USERID of the TSO user. This is the name of the logon procedure. The TSO user can up to 6800 K storage use. The ISPF release installed.
11 The SMART ISPF utilities Since the early 1980ies, I have been working with ISPF. Over time, I often missed some practical functions in ISPF. In the early 1980ies, there was no internet available. Therefore, it was very difficult to find appropriate functions to fulfil my needs. Therefore, I began to develop these functions from time to time myself. Now a whole series of programs have accumulated that I use in my daily work in ISPF. They are all REXX programs in which I very often use the functions provided by ISPF. Often there are functions consisting of one program only. Sometimes it happens, however, that in order to fulfill the functions, more programs have to work together. Although there are many utilities for ISPF available on the internet, I think that my programs so far are still unique. In my two books on Smart Practices for ISPF, I make the SMART ISPF utilities available for you to download, so that these utilities provide good services.
11.1 Naming conventions All programs are in REXX language written. There are generally two types of programs: Edit macros: These program names all begin with character # (hash). Using these names rule, the macros are easily distinguishable from the other programs. Direct executable: These program names all begin with character S (stands for smart).
11.2 The dynamic panel concept All panels of SMART ISPF utilities are embedded in the programs REXX code and are automatically loaded in a temporary ISPPLIB of DD Name $$DYNPAN when a program executes. This technique has the advantage that you do not need a separate ISPPLIB version of ISPF panels to run SMART utilities. Another advantage of this procedure is that REXX programs using ISPF panels are easily distributable because the simultaneous distribution of a panel data set is not necessary. The following excerpt from a program of the SMART ISPF utilities shows the part where the decision made is to load the panels:
188 | 11 The SMART ISPF utilities
/*-------------------------------------------------------------------*/ /* Check loading dynamic panels */ /*-------------------------------------------------------------------*/ "VGET (DYNPAN) PROFILE" if rc > 0 then dynpan = "NO" if dynpan = "YES" then call store_panels /* Load embedded panels */ /*-------------------------------------------------------------------*/
To decide whether the panels are to be loaded dynamically, will the variable DYNPAN from the ISPF profile read in. The program SPROFVAR loads this variable together with other variables needed by some SMART utility programs. 1 Urgent recommendation: Before you can use the SMART utilities, you must edit the program SPROFVAR, the values contained therein, customize and run it using the edit macro ##. This program is executable without having to load the ISPF profile variables for the SMART utilities. See the following excerpt from program SPROFVAR:
jobclass msgclass dynpan dynunit
= = = =
"A" "H" "YES" "VIO"
/* /* /* /* /*
Job Run class Job message class Dynamic panel store indicator Unit to alloc dynamic panels data set.
*/ */ */ */ */
See also the description of the installation process on page 204.
11.3 List of programs The following table shows all programs and their functions: Table 11.1: List of SMART utility programs Name
Usage
Description
##
stand alone
#ALTXT #EDMEM
stand alone stand alone
#IMACROA
assist SLE
#IMACRO1 #IMACRO2
assist SDOC assist SLE
#ISPFB
stand alone
Edit macro to execute a currently edited REXX procedure immediately. Realign documentation text within given borders. Edit of a member which name is the first name in a line of an edited list. General ISPF edit macro. Automatically executed by ISPF when an edit session starts even if no initial macro is set for the edited data set. Initial macro to insert DOC: lines into edited data sets. This macro inserts the DSN of an edited data set into the table $SLETAB. Edit macro to submit a batch job to execute the current edited REXX procedure within an ISPF environment.
11.4 Program descriptions | 189
Name
Usage
Description
#LCH #SSS #SSSCH
stand alone assist SSS assist SSS
#SPLJ
stand alone
#SU #TSOB
stand alone stand alone
#VERASE SCURSOR
stand alone stand alone
SDOC
stand alone
SHOSTPAC
stand alone
SHOSTUNP
stand alone
SICMD SIDCAMS
stand alone stand alone
SJOBSUFF SLE SLIBOFF SLISTC
function stand alone stand alone stand alone
SLISTRAC
stand alone
SLOGON SPROFEDT
stand alone stand alone
SPROFVAR SSC SSC01 SSS
stand alone stand alone assist SSC stand alone
Perform edit change with long parameter texts. Purge unnecessary parts of a SRCHFOR list. This macro can be used when a super search list is displayed in edit, to restore the displayed lines back into the members in which the searched lines were found. This macro performs SPLIT and JOIN operations within an edit session. Submit a JCL that does not contain a JOB statement. Edit macro to submit a batch job that executes the currently edited REXX procedure within a TSO environment. Erase an ISPF variable from the profile and the shared pool. Access to a data set by EDIT, VIEW, BROWSE, MEMLIST or DSINFO. The DSN must appear on an ISPF panel. This program reads all members of a PDS and produces the $DOC member in the same PDS. This program packs all members of a PDS into one member of name $PACKED. Unpack a $PCPACK file coming as an upload from a PC which was originally packed at a z/OS by the REXX program SHOSTPAC. Maintaining ISPF command tables. Produce an IDCAMS LISTCAT of a data set and Browse the list. Call in front of a DSN in a DSLIST display. Provide job suffix character for dynamic job assembly. Display recently edited data sets. Reset a LIBDEF. Produce an IDCAMS LISTCAT of a data set and browse the list. Call in front of a DSN in a DSLIST display. Produce a RACF LISTDSD of a data set and browse the list. Call in front of a DSN in a DSLIST display. SMART user logon procedure. Execute program SPROFVAR to store users ISPF profile environment variables into ISPF profile. Store the user’s environment variables into ISPF profile. SMART super clone function for data sets. Messages for panel SSCPP01 called by function SSC. Perform a super-search operation by entering SSS in front of a DSN in a DSLIST panel.
11.4 Program descriptions This chapter contains individual descriptions of the programs of SMART utilities. Most programs include extensive help descriptions displayable using the PF1 key. When calling up some programs, a question mark can be as parameter entered. In this case, the program will not run with its functionality. It will only display a de-
190 | 11 The SMART ISPF utilities
scription of its functions in a help panel. The following description of the programs points out the possibility of displaying a help panel using a question mark. Therefore, the following description of the programs is only a short one to show the basic function.
11.4.1 Edit macro ## Edit macro to execute a currently edited REXX procedure. After typing ##, enter a parameter string which is transferred to the REXX program for execution. This program is executable without having to load the ISPF profile variables for the SMART utilities. Help display with ## ?
11.4.2 Edit macro #ALTXT Edit Macro to realign line parts within given column. Help display with #ALTXT ?
11.4.3 Edit macro #EDMEM Edit of a member which name is the first word in a line of an edited data set. Description: The edited list can come from following sources: – A list output of the procedure SSS and processed by the #SSS macro. – A list output produced by ISPF function SRCHFOR in the resulting display list. – The member $DOC from a PDS. At call, the cursor must be in a line in which the member name as first word occurs. No further help available. 3 Note: For an optimal use of this macro, its call should be set on a PF key. E.g. PF22.
11.4.4 Edit macro #IMACROA General ISPF edit macro. Whenever you start an edit session, this macro will execute, regardless of whether an initial macro is for this file defined or not.
11.4 Program descriptions | 191
Activating of this macro: 1. Start an edit session in an ISPF environment. 2. Enter in line command ===> EDITSET or EDSET 3. Make the necessary entries in the appearing panel. See the following panel: No further help available. Screen 11.1: Set activation of #IMACROA *-----------------------------------------------------------------------------* | ISREDSET Edit and View Settings | | Command ===> | | More: + | | Settings for current and future Edit and View sessions: | | | | User session initial macro . . . . . . . . . . . . . . #IMACROA | | Maximum initial storage allowed for Edit and View . . 0 | | Target line for Find/Change/Exclude string . . . . . . 2 | | Enter "/" to select option | | Always position Find/Change/Exclude string to target line | | / Remove action bars in ISPF edit and view panels | | Force ISRE776 if RCHANGE passed arguments | | | | CUT default . . 2 1. Append PASTE default . . 1 1. Delete | | 2. Replace 2. Keep | | | | Settings for future sessions. Select Apply Setting Immediately for the | | setting to affect the current session as well. | | | | Enter "/" to select option | | / Confirm Cancel/Move/Replace / Apply Setting Immediately | | / Preserve VB record length / Apply Setting Immediately | *-----------------------------------------------------------------------------*
11.4.5 Edit macro #IMACRO1 Initial macro to insert DOC: lines into edited members of partitioned data sets (PDS). When starting an edit session of a PDS member and in the edited member are no DOC lines found within the first 20 lines, this macro displays then a panel that offers the opportunity to insert DOC lines at the beginning of the member, which is edited. Help can be via PF1 displayed when the panel IMACRO11 appears. The following screen shows an example for inserting DOC and REM lines into a member.
192 | 11 The SMART ISPF utilities
Screen 11.2: Panel IMACRO11 for edit macro #IMACRO1 IMACRO11 ----------- Insert DOC: lines into edited data set ---------------COMMAND ===> Dynpan = YES-VIO SysPlex = TESTPLX Sysid = TESTMVS Node = ZOS19 Data-Set-Name = LANZUSR.BOOK.REXX(AAA) Comment-Prefix = *__ Comment-Suffix = ___ Caps = ON_ set CAPS ON or OFF data set type = REXX__ e.g. REXX, JCL, PANELS and so on Function type = MAIN_ e.g. MACRO, MAIN, COPY, SUBR Filling char. = * e.g. * (asterisk), - (hyphen) These DOC: and REM: lines are inserted at beginning of data set Author = Franz Lanz_________________________________ 24 JAN 2015 1. DOC = This is an example__________________________________________ DOC = how DOC lines are inserted__________________________________ DOC = in a new____________________________________________________ DOC = edited member_______________________________________________ DOC = of a PDS____________________________________________________ 2.
REM REM REM REM REM Compile
= Remarks_____________________________________________________ = can also____________________________________________________ = be inserted_________________________________________________ = These remarks are not inserted in the $DOC member of the PDS. = The $DOC member is produced using the program SDOC._________ status of #IMACRO1: NOT COMPILED
The greyed fields show the standard options inserted here by #IMACRO1 depending on LLQ. These options are changeable to fulfil user’s needs. The following screen shows the resulting contents of the new member after ENTER is pressed: ISREDDE4 LANZUSR.BOOK.REXX(AAA) - 01.00 Columns 00001 00072 Command ===> Scroll ===> CSR 000001 /* DOC: AAA REXX MAIN */ 000002 /* DOC: This is an example */ 000003 /* DOC: how DOC lines are inserted */ 000004 /* DOC: in a new */ 000005 /* DOC: edited member */ 000006 /* DOC: of a PDS */ 000007 /*--------------------------------------------------------------------*/ 000008 /* Franz Lanz 24 Jan 2015 */ 000009 /**********************************************************************/ 000010 /* REM: Remarks */ 000011 /* REM: can also */ 000012 /* REM: be inserted */ 000013 /* REM: These remarks are not inserted in the $DOC member of the PDS. */ 000014 /* REM: The $DOC member is produced using the program SDOC. */ 000015 /**********************************************************************/ ****** **************************** Bottom of Data ****************************
11.4.6 Edit macro #IMACRO2 This macro inserts the DSN of an edited data set into the table $SLETAB. This macro is executed when an edit session ends in which the macro #IMACRO1 was executed. No further help available.
11.4 Program descriptions | 193
11.4.7 Edit macro #ISPFB Edit macro to submit a batch job to execute the current edited REXX procedure within an ISPF environment. When the macro is called, a parameter text can be added in the call statement. This text is to the executed REXX procedure as a parameter transferred. Help display with #ISPFB ?
11.4.8 Edit macro #LCH Perform edit change with long parameter texts. Function: When the Command ===> line in the normal edit panel is too short to contain the whole CHANGE command, you can use this program to solve the problem. This program opens a panel for input of two lines each with max 70 characters. The first line is the SEARCH argument for the change and the second line is the replacement value. Additionally, you can enter parameters for the CHANGE in a third line. E.g. 1, ALL, WORD...
11.4.9 Edit macro #SPLJ This macro performs SPLIT and JOIN operations within an edit session. Functional description: When this macro is called, the further processing of the position of the cursor depends on the following: 1. If the cursor is within a line and after this position, characters are on the line, these characters move to a new line after the current one. This is the split function. 2. If after the position of the cursor only blanks are on the line, the line after the current line moves to the current line after the cursors position. This is the join function. There is no other help available.
194 | 11 The SMART ISPF utilities
11.4.10 Edit macro #SSS Remove unnecessary parts from SCHFOR list. Functional description: Delete all unnecessary lines from a list produced by the Super Search Function of ISPF. The procedure SSS calls this macro as initial macro. If you have performed a manual search, you can also use this macro to revise the list output. There is no other help available.
11.4.11 Edit macro #SSSCH 4 This macro offers a very smart functionality: When you have performed a super search and you make some changes in the edited list you can write back the displayed lines completely to its members. With this possibility, you can perform mass changes on many members in one step.
Purpose: This macro can when a super search list is in edit displayed be used to restore the displayed lines back into the members in which the searched lines where found. There is no other help available. 3 Remarks: You can remove rows and members from the edited file. If you delete a member, all lines belonging to this member must also be bulk deleted. New rows cannot be inserted because the row numbers, which are included in the displayed list, contain the relative position of these lines in the member. These line numbers will used when the lines will be back to the member written. The existing lines with the same number will be overwritten. If you do not want to write back changes in individual lines, you can of course delete these lines.
11.4.12 Edit macro #SU Submit a JCL not containing a JOB statement. Parameters: MSHLEVEL in the form: 0,0 / 1,0 / 2,0 / 0,1 / 1,1 / 2,1. This MSGLEVEL is in the JOB statement set.
11.4 Program descriptions | 195
Function description: The program assembles the job statement using user-defined variables from ISPF profile pool. Use the program SPROFVAR to store these variables into the ISPF profile pool. #SU is usable at following positions: As an edit macro. In front of a member in a DSLIST/M display. Special function: EXCLUDED lines of the edited data set are NOT in the submitted job stream inserted. 4 Attention: Due to using the TSO SUBMIT command, all lines of the edited data set are translated to UPPER CASE during SUBMIT. This is a regular effect of SUBMIT.
3 Author’s remark: During my years of consultant activity, I always had all my job statements adapted to varying conditions in the data centers. To have to do this not always I developed the REXX program SPROFVAR. There, I have all the values that apply to a data center inserted as variables and stored them in the ISPF profile. When I installed the SMART ISPF utilities at a new customer, I adapted and executed only the member SPROFVAR. In all the jobs I had to run at the customer’s site, I was able to leave the job statement and start jobs with #SU.
No further help available.
11.4.13 Edit macro #TSOB Edit macro to submit a batch job, which executes the currently edited REXX procedure within a TSO batch environment. A parameter text can be to the macro call added. This text is to the executed REXX procedure transferred. Attention: This macro does not save the source code of the edited file. Hence, the UNDO status of the edit session is by this macro not changed.
4
3 Remark: To avoid the SAVE command, the currently edited REXX procedure is stored to a work file. The batch job will use this work file to execute the REXX procedure.
196 | 11 The SMART ISPF utilities
The description of the 'SUBMIT *' command in the manual TSO/E Command Reference contains the following note: The SUBMIT command converts all characters of the job stream to uppercase before the stream is submitted to the system. 3 Note: To avoid setting all JCL lines in uppercase by command 'SUBMIT *' and thus also the line which contains the parameter text, this procedure writes the job stream to member JOB into a work file and submits the job from this member by using the command: "SUBMIT '"workfile"(JOB)'". In this case, the lines of the members JOB will not be transferred to uppercase.
Help is available with #TSOB ?
11.4.14 Edit macro #VERASE With this edit macro, you can delete an ISPF variable from the profile and the shared pool. At call, you can enter only one variable name.
11.4.15 Program SCURSOR With this program you can call a file which name is somewhere in an ISPF screen. When calling a small panel appears which allows you to select the type of file processing. Description: If a DSN of a data set appears on any ISPF screen, you can get access to this data set by positioning the cursor within the DSN and call SCURSOR. For a comfortable use of this function, I recommend to set a PF KEY to 'TSO %SCURSOR'. If you have positioned the cursor at any position within a DSN and then push the PF key a panel appears to offer you a range of access possibilities to the data set. There are some restrictions for displaying GDGs and VSAM data sets. This function can be in many displays used. Some examples: – – – – –
In an EDIT Panel In a BROWSE Panel In the SDSF display In someone data set display In a POPUP panel
11.4 Program descriptions | 197
See the selection panel below: Screen 11.3: SCURSOR selection panel *---------------------------------------------------* | SCURSOR -------- Select Call Type --------------- | | DYN | | DSN: 'LANZUSR.BOOK.REXX(SCHANGE)' | | | | Select action: | | 1 1. Edit | | 2. View | | 3. Browse | | 4. Memlist | | 5. data set information | | | | Press END to cancel this action. | | | *---------------------------------------------------*
11.4.16 Program SDOC Produce documentation members. This program reads all members of a PDS and produces the $DOC member in the same PDS. Function: The program scans all members of the PDS for lines with keyword DOC: as the second word in a line. Only the first 200 lines in each member will scanned. When during this scan no DOC: lines are found, then only the member name will be stored in the output. When the first DOC: line found is and there are more than five lines following the last found DOC: line without a DOC: the scan of this member ends.
11.4.17 Program SLE Purpose: The program starts by input of SLE in the ISPF command line. It displays an ISPF table containing names of recently edited data sets. The program displays the ISPF table $SLETAB. The EDIT initial macro #IMACRO2 updates this table with DSNs of recently edited data sets. The display panel offers the ability to perform some functions on the data sets displayed. See the help panels available in the programs screen.
198 | 11 The SMART ISPF utilities
Smart Last Edit offers the following functions: Screentext 11.1: Description of SLE functionality 1. Col. C --> --> --> --> --> --> --> -->
D M E B V S R I
--> --> --> --> --> --> --> -->
Display the DSLIST panel (like 3.4) for this data set. Display MEMLIST of a PDS and NINE selection columns. Edit this data set or member. Browse this data set or member. View this data set or member. Display EDIT member list for this PDS. Remove this line from panel (multiple R are allowed). Display data set information.
2. The field Max lines shown shows the current lines in the table $SLETAB By entering a lower number here the lines in the table are reduced to this Note: The program itself NEVER reduces the number of lines held in the table. 3. In the COMMAND line the following commands may be used: a) f name ---> A find for name in column DSN is started. name must always be entered without apostrophe. b) sort DSN ---> The column DSN is temporarily sorted by name. This sorted display is reset to standard at next display. A permanent change of Ordering my be caused by entering it in the Sort: field. 4. After Sort: D = Date or N = Name permanent Ordering is defined here a) D ---> Ordering permanent for Date and Time descending. b) N ---> Ordering permanent for DSN ascending.
The following screen shows the above-mentioned input fields: Screen 11.4: SLE working panel SLEP1 S -------------- Table display of recently edited data sets Row 1 of 73 COMMAND ===> SCROLL ===> CSR Dynpan= YES-VIO Compile state of SLE Sort: D=Date or N=Name D Max lines shown: 73 NOT COMPILED Insert control for edited data sets ----> All or Change: ALL C Recent DSN in Edit Help with PF1 for all fields Date Time -----------------------------------------------------------------------------_ LANZUSR.BOOK.REXX(SLE) 15/01/23 08:55:55 _ LANZUSR.BOOK.REXX(#IMACROA) 15/01/23 08:48:25 _ LANZUSR.BOOK.REXX(#SSSCH) 15/01/23 08:46:46 _ LANZUSR.BOOK.REXX(#PAN) 15/01/23 08:43:03 _ LANZUSR.BOOK.REXX(##) 15/01/23 08:40:43 _ LANZUSR.BOOK.REXX(#ALTXT) 15/01/23 08:36:50 _ LANZUSR.BOOK.REXX(#BOX) 15/01/23 08:36:25 _ LANZUSR.BOOK.REXX(SSS) 15/01/23 08:30:30
3 Remarks: Help screens are available for all greyed fields. Position the cursor in such a field and press PF1 to display the help. The general help screen appears, when the cursor is on any other position on the screen and PF1 is pressed.
11.4 Program descriptions | 199
1 Tip: Insert the following command in the ISPF command table to call the last edit function very fast when you type in SL in the ISPF command line. _ SLE 2 SELECT CMD(%SLE) REXX SLE CALL THE LAST EDIT FUNCTION
11.4.18 Data member SLOGDSN The member SLOGDSN contains DD names and the corresponding DSNs. The logon procedure SLOGON reads this member, looks for the already existing allocations by the same DDs and assembles a new structure in which the member referred to in SLOGDSN DSNs are respectively arranged in front of the existing DSNs of each affected DD. The program SLOGON then allocates this new structure using the REUSE option. This technique ensures that the DSNs specified by the user allocates in the file SLOGDSN BEFORE the previously existing DSNs in each affected DSN chain. DDs, which are not found in the existing allocations, will be allocated additionally. Program 11.1: Member SLOGDSN * DOC: SLOGDSN Control member used by the procedure SLOGON of SMART * DOC: utilities. *********************************************************************** * Description: * * This Member contains DD names and DSNs assigned to these DD names. * The DD names and their assigned DSNs are used by the logon * procedure SLOGON to allocate these elements in front of existing * library allocations. If this member is missing there are no * additional allocations possible. * Lines beginning with an asterisk are skipped by the SLOGON program. *********************************************************************** * The definitions have the following structure: * * DDNAMEN1 DSN1 ONLY * DSN2 * DSN3 * DDNAMEN2 DSN1 * DSN2 * DSN3 *---------------------------------------------------------------------* Special cases: * If the third word in a DD line is ONLY, then all existing * allocations for this DD are discarded and only the here defined DD * and its DSNs are allocated. * If the HLQ is &USERID the logon procedure replaces this with the * real user-ID. *********************************************************************** *SYSPROC SYSTEM.LOGON.CLIST SYSEXEC &userid.BOOK.REXX &userid.REXX SYSTEM.REXX
200 | 11 The SMART ISPF utilities
ISPPLIB
ISPMLIB
ISPLLIB ISPSLIB
&userid.BOOK.PANELS &userid.PANELS SYSTEM.PANELS &userid.MSGS &userid.BOOK.MSGS SYSTEM.MSGS &userid.LOAD SYSTEM.LOAD &userid.SKELS
11.4.19 Program SLOGON This is a personal logon procedure. It works as follows: 1. It reads all existing allocations of the TSO user and caches them all. 2. It reads the control file SLOGDSN containing the DSNs that must allocated before the already existing DSNs. The new DSN chains are in such a way assembled that the DSNs read from the member SLOGDSN stay before the existing DSNs. 3. When in the member SLOGDSN new DDs and their DSNs are contained that are not present in the previous allocations, these chains will added to the allocation stream. 4. SLOGON now performs the new allocations using the new allocation stream and the TSO ALLOC option REUSE. The REUSE option replaces the old allocations. For installing this logon procedure, see the section 11.5.2 Installation on page 204. 3 Note: If SLOGDSN contains DSNs of not existing data sets, a message displays during SLOGON, but the logon process continues anyway. This ensures that the logon process successfully implemented will and a working user environment created is. This is a very important advantage of the procedure SLOGON.
11.4.20 Program SPROFEDT Execute program SPROFVAR to store users ISPF profile environment variables into ISPF Profile. This program is by ISPF command SPROFVAR called.
11.4.21 ISPF variables load member SPROFVAR SPROFVAR defines and stores variable needed by the SMART ISPF utilities in the ISPF profile pool. Several SMART utility programs use these profile variables. The PF keys are also set. Each user can add his own profile variables as needed!
11.4 Program descriptions | 201
11.4.22 Program SSC Purpose: This program uses a model data set to perform some functions on this data set or to create a new data set based on the model data set. Smart Super Clone offers the following functions: Allocate a new data set with the same or different attributes as the model data set has with optionally copying the data. Restructure the model data set. Some attributes may be changed. Copy the data models into another data set. The target data set must exist. During this operation, the data set attributes cannot be changed. The source data set can be a PDS and the target data set can be sequential. In this case, the program writes the members continuously into the sequential data set. Only the following types of data sets can be with this program used: Generally data sets on DASD and Sequential, PDS, PDSE and VSAM. Note: A sequential data set cannot be copied into a PDS member.
Screen 11.5: SSC working screen SSCPP01 --------- SSC: data set Manager under ISPF / LANZ GmbH ---------------COMMAND ===> Dynpan = YES-VIO SysPlex = TESTPLX Sysid = TESTMVS Node = ZOS19 Model = LANZUSR.BOOK.REXX Compile state of SSC New = LANZUSR.BOOK.REXX NOT COMPILED FUNCT = NO DSN = 'LANZUSR.BOOK.CEXEC' 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
If the data set is a PDS all members are scanned!
= 'VARDAT',W = = = = = = = = =
PO = ASIS____________________________________________________________________ Fill in here more process options. Press PF1 for help and then select a theme by number or press ENTER to scroll thru pages down continuously. MSG1= Press PF1 for Help, press ENTER to execute the search.
11.5 Installation of SMART ISPF utilities | 203
3 Remarks: – The program SSS calls the ISPF standard super search utility ISRSUPC to perform the search. – The standard ISPF help facility for super search appears when PF1 is pressed on the SSS screen. – SSS saves the entered search parameters in lines 1 to 10 automatically in the ISPF profile and redisplays them at the next call of SSS. – The edit macro #SSS removes unnecessary output contents from the standard output list of the search before the list appears on the screen. The macro #SSS is indicated as initial macro when the editor is invoked for displaying the search results.
SSS special update function: SSS stores the optimized search results into a temporary data set and then displays this data set in the editor. This file can be edited by using the normal editor functions. If individual lines of the file are changed, these changes can restored into the individual members using the edit macro #SSSCH. See description of #SSSCH on page 194. This is one of the most important advantages of the program SSS.
11.5 Installation of SMART ISPF utilities To use the smart utilities, you must install them in your TSO/ISPF system. Before you start transferring programs and panels, you need to make an important decision: 3 Note: The REXX procedures of the SMART ISPF utilities contain all required panel definitions in their source code. Therefore, you do not have necessarily to transfer the panels to your ISPPLIB. The installation program SPROFVAR that stores the ISPF environment variables in the ISPF PROFILE POOL, contains the variable dynpan. If you set dynpan to YES before you execute SPROFVAR, then the REXX procedures uses imbedded panels when executed.
11.5.1 Download and unzip Perform the following steps to install the SMART utilities: 1. Download the SMART ISPF utilities ZIP file from the De Gruyter website www.degruyter.com. 2. Unzip the file to a folder in your PC. After unzipping the following data sets are in the folder: REXX The REXX program package. PANELS The ISPF panel package. SHOSTUNP REXX program to unpack REXX programs and ISPF PANELS into their libraries on z/OS host.
204 | 11 The SMART ISPF utilities
The two files REXX and PANELS contain all procedures and all panels of the SMART ISPF utilities in packed form. After transferring into the appropriate libraries on the z/OS/ISPF system, they must be unpacked using the REXX program SHOSTUNP. This REXX program is the only program that is usable to unpack the data sets because the packed data sets have a proprietary format. Upload and unpack the members to z/OS host: 1. Use the 3270 emulation software you have on your PC to upload the three members to the z/OS host into a PDS or PDS-E with RECFM=FB and LRECL=80. 2. Then use the program SHOSTUNP to extract the packed members into the appropriate libraries. Use the Command Shell (Menu 6) of ISPF to execute the program SHOSTUNP. The following screen shows these commands: Screen 11.7: Examples of unpack SMART ISPF utilities members Menu List Mode Functions Utilities Help --------------------------------------------------------------------------ISPF Command Shell Enter TSO or Workstation commands below: ===>
Place cursor on choice and press enter to Retrieve command => => => => =>
ex 'usrlanz.smart.rexx(shostunp)' 'usrlanz.smart.rexx(rexx)' ex 'usrlanz.smart.rexx(shostunp)' 'usrlanz.smart.panels(panels)' IND$FILE PUT 'usrlanz.book.rexx(shostunp)' ASCII CRLF IND$FILE PUT 'usrlanz.book.rexx(rexx)' ASCII CRLF IND$FILE PUT 'usrlanz.book.panels(panels)' ASCII CRLF
3 Note: The last three lines in the above panel show the commands automatically executed under TSO when the upload was running.
11.5.2 Installation For the installation of the SMART utilities, multiple scenarios concerning your TSO/ISPF user environment are possible: See chapter 3 The TSO/ISPF logon process on page 29. 1. You still have an own ISPF library environment with an own logon procedure. This is the ideal case. You can copy the REXX procedures of the SMART ISPF utilities directly into your SYSEXEC or SYSPROC library and unpack them there. If you want to use a panel library for the panels, you can copy the panels to the ISPPLIB chain. Additionally, you can decide whether you want to use the SLOGON proce-
11.5 Installation of SMART ISPF utilities | 205
dure of the SMART ISPF utilities together with the member SLOGDSN to make your logon process more variable and convenient. 2. You get the TSO READY prompt when you leave ISPF. In this case, you can call the logon procedure SLOGON at the READY PROMPT using the command EX 'dsn(SLOGON)'. First, you must only adjust the member SLOGDSN so that there the correct data set names are included. 3. Your TSO user is completely logged off when you leave ISPF and you have no chance to start an own logon procedure. In this case, you can still use the SMART utilities. However, the installation of the call environment is somewhat more complex. You can use the command ALTLIB. While there is a restriction that makes the process somewhat inconvenient: If you have performed an ALTLIB command, the calling environment thus created is always available only in the logical screen in which the ALTLIB command was executed. See the description of the ALTLIB command below.
11.5.3 ALTLIB command Excerpt from the IBM manual TSO-E Reference concerning ALTLIB: Use the ALTLIB command to: – Define alternative application-level libraries of REXX execs or CLISTs. – Indicate that user-, application-, and system-level libraries of REXX execs and CLISTs will searched. – Exclude one or more library levels (user, application, system) from being searched. – Reset the search order to the system level. – Obtain a display of the search order that is in effect. Using ALTLIB in ISPF: When you use ALTLIB when ISPF is active, you can define the libraries (user, application, and system) that are active for each application. Libraries that you define while running an application are in effect only while that application has control. When the application completes, the previous libraries (user, application, and system) will automatically reactivated. If you are in split-screen mode in ISPF and you issue the ALTLIB command from a one-screen session, the changes affect only that screen session. The ALTLIB search order is not valid across split screens.
206 | 11 The SMART ISPF utilities
Execute the ALTLIB command in the following way: Type in an ISPF command line: TSO ALTLIB ACT APPLICATION(EXEC) DSNAME('dsn') dsn is the data set where your REXX procedures reside. If you have installed the REXX procedures of SMART ISPF utilities into this dsn, the utilities are also executable. 1 Recommendation: Program a PF key with this ALTLIB call. If you do so, you can the command immediately execute when you open a new logical screen in ISPF.
Example: The following screen shows the assignment of keys PF18 and PF19 for the execution of the ALTLIB command. Screen 11.8: PF key setting to execute ALTLIB PF Key Definitions and Labels - Alternate Keys Command ===> Note: Definitions and labels below apply only to terminals with 24 PF keys. PF13 PF14 PF15 PF16 PF17 PF18 PF19 PF20 PF21 PF22 PF23 PF24 PF13 PF16 PF19 PF22
. . . . . . . . . . . .
. . . . . . . . . . . .
HELP SWAP LIST END RETURN TSO %SYSID tso altlib act application(exec) dsname('userid.rexx') tso altlib display DOWN #SPLJ #EDMEM RIGHT TSO %SCURSOR
label label label label
. . . .
. . . .
PF14 PF17 PF20 PF23
label label label label
. . . .
. . . .
PF15 PF18 PF21 PF24
label label label label
. . . .
. . . .
Press ENTER key to display primary keys. Enter END command to exit.
The command ALTLIB DISPLAY shows the current ALTLIB chain. After pressing PF18 and then PF19 the following display appears:
11.5 Installation of SMART ISPF utilities | 207
Screen 11.9: PF key settings to use the ALTLIB command PF Key Definitions and Labels - Alternate Keys Command ===> Note: Definitions and labels below apply only to terminals with 24 PF keys. PF13 PF14 PF15 PF16 PF17 PF18 PF19 PF20 PF21 PF22 PF23 PF24 PF13 PF16 PF19 PF22
. . . . . . . . . . . .
. . . . . . . . . . . .
HELP SWAP LIST END RETURN TSO %SYSID tso altlib act application(exec) dsname('LANZUSR.book1.rexx') tso altlib display DOWN #SPLJ #EDMEM RIGHT TSO %SCURSOR
label label label label
. . . .
. . . .
PF14 PF17 PF20 PF23
label label label label
. . . .
. . . .
PF15 PF18 PF21 PF24
label label label label
. . . .
. . . .
Press ENTER key to display primary keys. Enter END command to exit. Current search order (by DDNAME) is: Application-level EXEC DDNAME=SYS00278 System-level EXEC DDNAME=SYSEXEC System-level CLIST DDNAME=SYSPROC ***
I used DDLIST to find the DDNAME SYS00278 and found it in the following screen: Current Data Set Allocations Command ===>
Row 111 of 148 Scroll ===> CSR
Volume DMTCAT
Disposition Act DDname Data Set Name Actions: B E V M F C I Q SHR,KEEP > SYSTCPD CENTER.PARMLIB(DATA00) NEW,DEL > SYSTERM ---------- Allocated to the terminal -----DMTU08 SHR,KEEP > SYS00278 USERID.REXX -------------------------- End of Allocation List ----------------------------
Remarks concerning the ALTLIB command: – ALTLIB commands can occur in a stacked manner. – Only the procedures of the first level in a chain of stacked ALTLIB chains are reachable. – Use the command altlib deact application(exec) to remove the top level of the chain.
Example: I pressed PF18 four times and then I pressed PF19. The following chain appears: Current search order (by DDNAME) is: Application-level EXEC DDNAME=SYS00284 Stacked DDNAME=SYS00283 Stacked DDNAME=SYS00282 Stacked DDNAME=SYS00281 System-level EXEC DDNAME=SYSEXEC System-level CLIST DDNAME=SYSPROC ***
3
208 | 11 The SMART ISPF utilities
3 Note: The command ALTLIB DISPLAY shows in contrast to the command ISPLIBD only the DD names of the allocated data sets. If you want to see the corresponding DSNs, you can view them with the utility DDLIST as shown below.
NEW,DEL > SYSTERM ---------- Allocated to the terminal -----DMTU08 SHR,KEEP > SYS00281 USERID.SMART1.REXX DMTU08 SHR,KEEP > SYS00282 USERID.SMART1.REXX DMTU08 SHR,KEEP > SYS00283 USERID.SMART1.REXX DMTU08 SHR,KEEP > SYS00284 USERID.SMART1.REXX ------------------------- End of Allocation List ----------------------------
11.5.4 Make the SMART ISPF utilities ready to run Before you can use the SMART utilities, there are still some steps necessary: 1. If you can fully use an own logon procedure, you must adapt the members SLOGON and SLOGDSN and perhaps copy the procedure SLOGON into an appropriate library. See the section 11.5.2 Installation on page 204. 2. Edit the member SPROFVAR, perform the necessary changes and execute it using the edit macro ##. This program is executable without having to load the ISPF profile variables for the SMART utilities. The following profile variables are important to have appropriate values: account jobclass msgclass dynpan dynunit
= = = = =
"UNIVER" "A" "H" "YES" "VIO"
sortunit maclib sysproc sysexec steplib ispslib db2sys cexec storclas mgmtclas dataclas maclib1 maclib2 sortlib userlnk rexxload sysexec1 sysexec2 steplib1 AMT
= = = = = = = = = = = = = = = = = = = =
"VIO" 2 0 2 1 0 "" "NO" "USRBASE" "USRMGMT" " " "SYS1.MACLIB" "SYS1.MODGEN" "SYS1.LINKLIB" USERID()".LOAD" userid()".CEXEC" userid()".REXX" "ALLUSR.REXX" "ALLUSR.LOAD" "CSR"
/* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /*
Account number for job statement Job Run class Job message class Dynamic panel store indicator Unit to alloc dynamic panels data set. SYSDA or VIO SORT Workfile Unit Number of Maclibs Number of SYSPROCs Number of SYSEXECs Number of STEPLIBs Number of Skel-Libs Standard DB2 Server REXX compile YES|NO SMS:Standard Storage Class SMS:Standard Management Class SMS:Standard Data Class Assembler Maclib No 1 Assembler Maclib No 2 SORT Linklib User Linklib CEXEC library Execs Execs Steplibs
*/ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */
11.5 Installation of SMART ISPF utilities | 209
Conclusion: When you have performed all mentioned steps above, the SMART ISPF utilities should work fine and I wish you much success with it.
List of screens Screen 1.1: Screen 1.2: Screen 1.3: Screen 1.4: Screen 2.1: Screen 2.2: Screen 3.1: Screen 3.2: Screen 3.3: Screen 3.4: Screen 3.5: Screen 4.1: Screen 4.2: Screen 4.3: Screen 4.4: Screen 4.5: Screen 4.6: Screen 4.7: Screen 4.8: Screen 4.9: Screen 4.10: Screen 4.11: Screen 4.12: Screen 4.13: Screen 4.14: Screen 5.1: Screen 5.2: Screen 5.3: Screen 5.4: Screen 5.5: Screen 5.6: Screen 5.7: Screen 5.8: Screen 6.1: Screen 6.2: Screen 6.3: Screen 6.4: Screen 6.5: Screen 6.6: Screen 6.7: Screen 6.8: Screen 6.9: Screen 6.10: Screen 6.11: Screen 6.12: Screen 6.13:
ISPF tutorial help index | 11 ISPF help display of all ISPF commands | 11 Description of DSLIST command | 12 SDSF primary option menu | 13 Data set information panel of a PDS | 21 Data set information of a PDSE | 22 ISPF primary option menu showing the TSO logon procedure name | 31 TSO/E logon screen showing the TSO logon procedure name | 31 Display existing ISPF library allocations | 35 Display existing ALTLIB allocation | 35 ISPF profile data set information panel | 37 ISPF options setting | 48 POP UP panel with view warning | 51 Display a POP up help panel | 52 Help display of a panel | 53 Primary option menu with CUA line | 53 Primary option menu with unfolded Status CUA selection | 54 Primary option menu with calendar display | 54 ISPF task list with eight ISPF logical screens | 57 Function key definition panel | 59 Example for command PFSHOW ON | 60 Screen showing the PF key assignment | 60 Display the current KEYLIST | 62 The KEYLIST edit panel | 63 My PF key assignment in SDSF | 64 Command table utility | 72 Member list of ISPTABL library | 75 The command table utility panel | 76 Contents of the ISP command table | 76 SDSF command table update | 77 SICMD working panel | 79 Panel ISPUCMX – change ISPF commands | 80 Display a list of all ISPF user commands | 83 The data set list utility panel | 86 RefList pull down panel | 87 Personal data set list panel | 87 Pull down menu for DSLIST View selection | 88 Personal List Settings panel | 89 DSLIST display when additional qualifiers option is OFF | 90 DSLIST display when additional qualifiers option is ON | 91 DSLIST primary commands | 94 Member search in a DSLIST display | 95 Text string search using SRCHFOR | 96 Example of a SRCHFOR list output | 96 Table of DSLIST line commands | 97 Data set list actions | 98
212 | List of screens
Screen 6.14: Screen 6.15: Screen 6.16: Screen 6.17: Screen 6.18: Screen 6.19: Screen 6.20: Screen 6.21: Screen 6.22: Screen 6.23: Screen 6.24: Screen 6.25: Screen 6.26: Screen 6.27: Screen 6.28: Screen 6.29: Screen 6.30: Screen 7.1: Screen 7.2: Screen 7.3: Screen 7.4: Screen 7.5: Screen 7.6: Screen 8.1: Screen 8.2: Screen 8.3: Screen 8.4: Screen 8.5: Screen 8.6: Screen 8.7: Screen 8.8: Screen 8.9: Screen 8.10: Screen 9.1: Screen 9.2: Screen 9.3: Screen 9.4: Screen 9.5: Screen 9.6: Screen 9.7: Screen 9.8: Screen 10.1: Screen 10.2: Screen 11.1: Screen 11.2: Screen 11.3: Screen 11.4: Screen 11.5: Screen 11.6:
Example of a command call in a DSLIST display panel | 99 Options pull down menu in a DSLIST panel | 100 DSLIST options setting panel | 100 The edit/view entry panel | 102 The Reset Member Statistics panel | 103 PDS members list with enhanced option ON | 104 PDS members list with enhanced option OFF | 104 Confirm member delete panel | 105 Create a personal data set List | 106 SAVE AS confirmation panel | 107 Description of the DSLIST command | 109 Direct call of a DSLIST by name | 109 DSLIST command without parameters | 110 Display of SWAP LIST command | 111 Using the volume serial field in DSLIST panel | 111 Use REFLIST to start defining an own DSLIST | 113 Define ISPF command table entries using the program SICMD | 114 The ISPF workplace panel | 116 Call of a DSLIST from the ISPF workplace | 120 Call of DSLIST editor for a DSLIST of the workplace panel | 120 Select a DSN from the DSLIST editor panel | 121 Display the member list of a PDS from the workplace | 121 Display the data set information of a DSN from the workplace | 122 Edit and view settings | 130 Display the edit profile | 132 Edit color settings panel | 136 Looking for nonprintable characters | 148 Exclude all lines in an edit | 149 Display excludes lines selectively | 149 Example for the generation of a data set list using a DSLIST panel | 155 Overlay of many lines | 158 Setting CUT and PASTE defaults in EDSET panel | 161 Clipboard containing some entries | 163 DDLIST panel display | 166 DDLIST search example | 168 Use DDLIST to determine ENQs | 170 DDLIST shows inconsistent data set characteristics in a concatenated DD | 171 Display of the ISPSLIB chain when option SHORT is active | 172 DDLIST panel with display LONG set | 173 Parmlib display using DDLIST | 175 DDLIST LINKLIST display example | 177 General display of all DSLISTs | 184 TASID display screen | 186 Set activation of #IMACROA | 191 Panel IMACRO11 for edit macro #IMACRO1 | 192 SCURSOR selection panel | 197 SLE working panel | 198 SSC working screen | 201 SSS input panel | 202
List of JCL | 213
Screen 11.7: Examples of unpack SMART ISPF utilities members | 204 Screen 11.8: PF key setting to execute ALTLIB | 206 Screen 11.9: PF key settings to use the ALTLIB command | 207
List of programs Program 3.1: CLIST logon procedure | 37 Program 3.2: Logon procedure XYZLOGON | 39 Program 3.3: LOGON procedure example | 42 Program 5.1: TEST1: Simple program using the TSO environment only | 67 Program 5.2: TEST2: Simple program using the ISPF environment | 68 Program 10.1: Example to call DSLIST in a REXX program | 183 Program 10.2: REXX procedure to call TASID | 185 Program 11.1: Member SLOGDSN | 199
List of tables Table 1.1: Table 1.2: Table 1.3: Table 2.1: Table 2.2: Table 3.1: Table 3.2: Table 3.3: Table 4.1: Table 6.1: Table 6.2: Table 7.1: Table 7.2: Table 8.1: Table 8.2: Table 8.3: Table 8.4: Table 8.5: Table 9.1: Table 9.2 : Table 11.1:
ISPF reference books | 5 ISPF service groups | 7 3270 screen layouts | 9 Necessary data sets when ISPF starts | 25 Abbreviations concerning data sets | 27 All mandatory library allocations to start ISPF | 34 Important members in ISPPROF library | 36 ISPF start commands | 38 3270 screen layout selection | 47 Examples of DSLIST masks | 93 DSLIST action characters for data sets | 98 Workplace action commands to control the panel display | 118 Workplace action commands | 119 Edit primary commands | 125 Operands of edit primary commands | 128 Edit line command summary | 129 Proposals for last level qualifiers | 139 Definition of picture strings for FIND and CHANGE commands | 147 Table of DDLIST line commands | 167 Relationship size of TIOT and maximum number of DDs allowed | 176 List of SMART utility programs | 188
List of JCL JCL 2.1: JCL 2.2: JCL 3.1: JCL 3.2: JCL 3.3:
Copy job for concatenated data sets | 24 Example job to copy a chain of concatenated data sets to one data set | 27 JCL to start a TSO user | 32 JES2 start job | 32 TSO user start procedure | 33
214 | List of screens
JCL 5.1: JCL 5.2: JCL 8.1: JCL 8.2: JCL 9.1:
JCL to execute TEST1 in a native TSO environment | 69 JCL to execute TEST2 in a TSO/ISPF environment | 70 Example JCL of a TSO execution in batch | 162 Assembled job using clipboard entries | 163 JES2 start JCL | 174
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, SA227621 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
216 | Bibliography
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
Index # #IMACRO1 191, 192 #IMACRO2 192, 197 #IMACROA 191 #ISPFB 193 #LCH 193 #SPLJ 193 #SSS 194, 203 #SU 194 #TSOB 159
colored code 19 command line at bottom 48 command table names 74 Command table utility 72 compress 7 CONCATD 41, 42, 179, 180 CUA – line 9 – line status menu 53 CUT DISPLAY 163
$ $$DYNPAN 187 $DOC 197 $SLETAB 192, 197
D data set – abbreviation 27 – allocation 17 – concatenated 23 – information 21 – sequential 23 – sequential concatenated 26 – structure 17 – types 19 DDLIST 25, 26, 36, 44, 165, 208 – CHECK Option 171 – description 165 – determine ENQs 170 – free a data set 169 – inconsistent DS characteristics 170 – LINKLIST chain 177 – long option 171 – member search 168 – operation 167 – panel display 166 – parmlib 175 – short cut 169 – short option 171 – System ENQ Status Panel 170 DEQ 27 DFSMS 17 DOC line 197 DSLIST 27, 80, 85, 115, 120 – actions 98 – basics 105 – call in a program 182 – command 108 – command description 12 – Confirm member delete 105
& &USERID 199 &ZPARM 82 3 3270 – emulation 29 – full screen mode 9 – screen 8 – screen formats 47 – screen layout 9 A account 208 account number 31 action bar line 10 ALLOCxx parmlib member 174 ALTLIB 34, 35, 41, 205, 206 Always show split line 49 Application-level 207 APPLID 56 APPLID ISF 56 B BLKSIZE 24 C CICS 21 – NEWCOPY 21 CLIST logon procedure 37
218 | Index
– create 107 – Edit/View Entry Panel 102 – Extended View 88 – help panel 97 – ISPCMDS 110 – Line Commands 97 – MO, CO, RS Actions 103 – panel 155 – panel 9, 86 – panel fields 89 – RefList 86 – SCRNAME 110 – settings 89, 100 – settings examples 102 – Standard View 88 DSN 27 – examples 18 – HLQ 18 – HLQ alias 18 – LLQ 18 – member 18 – qualifier 18 – structure 17 – wrong names 18 dynpan 203, 208 dynunit 208 E EDIT 123 – #IMACROA 130 – =BNDS> 134 – =MASK> 134 – =TABS> 134 – AUTONUM 125 – AUTOSAVE 125 – BOUNDS 125, 129 – BROWSE 125 – CANCEL 125 – CAPS 125 – CAPS ON 133 – CHANGE 125 – CHANGE abbreviation 144 – change UNDO state 141 – color settings panel 136 – colored code 19 – COLS 129 – COPY 125 – copy command 157 – CRE 125
– CUT 125, 131, 159 – CUT default settings 161 – DELETE 156 – DELETE 125 – Delimited strings 146 – EDIT 125 – Edit and View Settings 130 – EDIT profile 132 – Edit Recovery 139 – EDITSET 125, 130 – EDSET 125, 130 – END 125 – EXCLUDE 155 – EXCLUDE 126, 149 – EXCLUDE abbreviation 144 – FIND 126 – FIND abbreviation 144 – FLIP 126 – HEX 126 – Highlight FIND strings 138 – HILITE 126, 134, 136, 137, 138 – IMACRO 126 – KEEP 164 – LOCATE 126 – MASK 129 – MODEL 126 – MOVE 126 – NONUMBER 126 – NOTES 126 – NULLS 126 – NUMBER 126 – OVERLAY 154 – PACK 126 – Parentheses matching 137 – PASTE 126, 131, 159, 164 – PASTE default settings 161 – PREFIX 128 – PRESERVE 126 – primary commands 123 – PROFILE 127 – PROFILE LOCK 134 – RCHANGE 127 – RECOVERY 127 – recovery data set 139 – RECOVERY ON 133 – RENAME 151 – RENUM 127 – REPLACE 127 – RESET 127
Index | 219
– RFIND 127 – SAVE 127 – SETUNDO 141 – SETUNDO 127, 134 – SHIFT line command 157 – SORT 127 – STATS 127 – SUB 127 – SUFFIX 128 – TABS 127, 129 – UNDO 127 – UNDO function 141 – UNDO not possible 143 – UNNUMBER 127 – VIEW 127 Edit/View entry panel 102 EDSET 191 Enhanced member list 104 ENQ 27 – Status 170 Examples for help display 52 EXEC – HASJES20 32, 174 – IDCAMS 24, 27, 132 – IEBCOPY 149, 150, 163 – IKJEFT01 33, 149, 150, 162, 163 – statement parm options 33 – XYZLOGON 32 EXECUTIL 164 F File Manager for z/OS 14 function 7 H HASJES20 174 Hex strings 147 High Level Qualifier 18 HLQ 18, 27 Host On Demand (HOD) 29 I IBM – Data Set Commander for z/OS 13 – Glossary 2 – knowledge center 2 IDCAMS 24, 132 – REPRO 27 – utility 27
IEBCOPY 149, 162, 163 IKJEFT01 29, 33, 162 IMACROA – activation 190 IMS 21 ISFCMDS 36, 77 ISFPROF 36 ISPCMDS 36, 74, 77 – DSLIST entry 110 ISPCONF 73 ISPEDIT 36 ISPF V, 38, 39 – application 7 – call 29 – command 7 – command delimiter 12 – command delimiter 50 – command delimiter character 71 – command overview 10 – Command Table Entry 80 – CUA line 9 – customizing 47 – dialog 7 – edit macros 5 – editor 123 – full screen technology 9 – function 7 – Help Panels 51 – how it runs 3 – interaction 8 – library 4 – line command 9 – logical screen 55 – manuals 4 – online help 10 – options setting 47 – Panels 50 – POP Up Windows 50 – primary command 9 – Primary Commands 71 – private logon Procedure 40 – reference books 5 – release changes 10 – service groups 6 – Settings 48 – Start Commands 38 – subsystems 12 – variables 7, 38 – Workplace 106
220 | Index
ISPFWORK 115, 122 ISPLIBD 34 ISPLLIB 25 ISPMLIB 25, 34 ISPPLIB 25, 33, 34, 50 ISPPROF 25, 34, 36, 37, 38, 39 ISPSLIB 25, 34 ISPSTART 38 ISPTABL 25, 34, 35, 36, 75, 77 ISPTLIB 25, 34, 35, 36, 75, 76, 77 ISPUCMX 79, 80 ISRCMDS 72, 74, 75 ISRDDN 165 ISRDSLST 113, 179, 182, 184 ISRFIND 165 ISRSUPC 203 J JES2 13, 32 jobclass 208 K KEYLIST 58, 61, 63 – display 61 – edit panel 63 L last 30 referenced data sets 87 LIBDEF 34, 41 libraries 22 LIBRARY 37, 122 LINKLIB 33 LINKLIST 173, 176 LISTCAT 19 LLQ 18, 19, 27, 192 logon procedure 24, 29, 30, 186 logon procedure name 30 long message in pop-up 49 LRECL 157 M Mainframe Session Manager 29 master catalog 18 – alias 19 Member – confirm delete 105 – reset statistics 103 – search 95 msgclass 208
mvsvar 39 O Object Name 115 P PANEL 203 Panel display CUA mode 49 Panels – HELP 51 – ISPUCMX 79 PARMLIB 173, 174 Partitioned Concatenated Data Sets 24 Partitioned Data Sets 20 PDF 38 PDS 19, 27 – compress 20 – Data set information 21 – description 20 – directory 20 – directory blocks 20 – DSORG 23 – extents 20 – LRECL 23 – members 20 – RECFM 23 – space parameter 20 PDSE 21, 22, 27 – advantages 22 – compress 22 – datset information 22 – disadvantages 22 – extents 21 – number of members 21 – performance 22 PDSFAST 20 personal data set lists 87 – basics 105 PF-Keys 3 – PF11 166 – PF15 58, 64 – PF18 207 – PF19 207 – PF9 55, 56, 58, 64 pfshow on 60 PFSHOW ON 59 PFSHOW TAILOR 59 POP up help panel 52 Primary Option Menu 53
Index | 221
PROC00 174 PROC99 174 PROCLIB 174 Publications – ISPF 4, 6 – TSO/E 215 – TSO/E 6 – z/OS 4 – z/OS MVS 215 R RACF 3 RECFM 24 RefList 86, 87, 106, 107 rename 157 REUSE 42 REXX 203 S savelist 82 Screen Splitting 55 SCURSOR 196 SDSF 13, 56, 77 Secret Programs 179 session manager 31 SHOSTUNP 203, 204 SICMD 78, 81 SICMD savelist 82 SLE 197 SLOGDSN 43, 44, 200, 205, 208 SLOGON 40, 42, 200, 204, 208 SMART ISPF utilities 5, 187 SMART utilities – ## 190 – #ALTXT 190 – #TSOB 154, 159 – DYNPAN 188 – DYNUNIT 188 – edit marco names 187 – installation 204 – last edit 52 – logon procedure 44 – naming conventions 187 – profile variables 188 – programs list 188 – SICMD 113 – SLOGON 44 – SPROFVAR 188 – the dynamic panel concept 187
SMS 19 SPLIT and JOIN 193 SPROFVAR 195, 203, 208 SRCHFOR – search 95 SSC 201 SSS 194, 202 SUBMIT 195 SWAP 55 SWAP LIST 56, 58 SWAP NEXT 55, 56, 57, 58 SYS1.PROCLIB(JES2) 174 SYSEXEC 33, 34, 204 SYSNAME 39 SYSOUT 163 SYSPRINT 163 SYSPROC 25, 29, 32, 33, 34, 204 – chain 32 SYSTSIN 163 SYSTSPRT 163 SYSUT1 163 SYSUT2 163 T Tab to action bar choices 49 Tab to point-and-shoot fields 49 TASID 179 – call 185 – display screen 186 – program 185 TSO V – ALLOC 42 – batch execution 162 – commands 6 – listalc 165 – processor 29 – READY prompt 30 – reference book 6 – rename command 157 – start 30 – start job 29 – user start job 32 – wikipedia 3 TSO ALLOC 200 TSO LOGOFF 40 TSO READY 40, 205 TSO/E 3 TSO/E LOGON 31
222 | Index
U URL – data set commander for z/OS 13 – IBM 3270 screen 8 – IBM glossary 2 – ISPF library 4 – MVS/QuickRef 15 – TSO wikipedia 3 – z/OS literature 4 user catalog 18 User Profile Library 36, 38 userid() 39 Using HELP panels 51 V VOLSER 27, 115 VSAM data sets 23 VTOC 112, 115 W Workplace 115 – action commands 118
– action commands 118 – DSLIST 119 – highlights 122 – Insert call in ISPCMDS 116 – ISPFWORK 122 – Object Name 117 – panel 116, 117 – start actions 117 X XXXCMDS 78 XYZLOGON 31, 32, 33, 39, 40 Z z/OS – basic information 2 – basic skills education 2 – literature 4 – user’s rights 3 ZPF variables 65 ZSCRMAX 55